-
Notifications
You must be signed in to change notification settings - Fork 437
Robust UAV State Estimation
This page explains how to reproduce the results presented in the paper.
To run the experiments you will need to install the huberya/reinitialization branch of rovio (https://github.com/ethz-asl/rovio) as well as the feature/fault_tolerant_fusion branch of this repository into the same catkin workspace. To setup a catkin workspace as well as installation of ros dependencies see: https://github.com/ethz-asl/mav_tools/wiki/Install-the-ASL-MAV-framework
Clone both repositories into the catkin workspace and build them using the catkin build command. The parameter files are located in ethzasl_msf/msf_updates/params/IROS and the launch files in ethzasl_msf/msf_updates/launch/IROS. For a description of the parameters see Parameter Files.
To create the plots you will additionally need to clone the msf_plotting_utility repository (https://gitlab.ethz.ch/huberya/msf_plotting_utility) not inside the catkin workspace.
The datasets used are available here: https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets The Vicon Hall 1 01 was used as the training set. The plots were create using the Vicon Hall 1 03 dataset.
For more comprehensive description on running from rosbag files see the Setup for GPS and ROVIO page, especially the running from rosbag section. To reproduce the results from the paper:
- Make sure the code is compiled sucessfully.
- Start a roscore service
roscore
- Tell ros to use simulation time
rosparam set /use_sim_time true
- Start playback of your rosbag file USE --clock option
rosbag play ~/V1_03_difficult.bag --clock --pause
- Switch into your catkin workspace and start MSF, Rovio and other nodes needed using a launch file. The launch files name are somewhat descriptive, so you should be able to choose the corresponding launch file for a given plot.
roslaunch msf_updates launchfile.launch
- In a seperate terminal switch to the msf_plotting_utility and start recording all topics.
cd msf_plotting_utility/
./record_all.sh
- Unpause your rosbag playback (using "space") until MSF recieved at least one measurement from each sensor (it will generate an output once it did) and pause playback again
- Start the dynamic reconfigure server and use the "init" service call
rosrun rqt_reconfigure rqt_reconfigure
in the GUI go to your_sensor_name->position_pose_sensor and click on core_init_filter - Unpause the rosbag playback. Now the system should run.
- Once completed, stop recording and use the plotting tools using the recorded bag.
python pyplot_rosbag_positions.py recordings/recordedbag.bag