The repository is associated with our RAL + IROS 2022 submission Visibility-Aware Navigation with Batch Projection Augmented Cross-Entropy Method over a Learned Occlusion Cost.
- JAX
- bebop_simulator
- ACADO (If you want to run Nägeli et al implementation)
- odom_visualizer (If you need the RViz visualization)
After installing the dependencies, you can build our propsed MPC package as follows:
cd your_catkin_ws/src
git clone https://github.com/Houman-HM/cem_batch_projection_vis_planner
cd .. && catkin build
source your_catkin_ws/devel/setup.bash
In order to run the MPC for tracking a target in a world with 6 obstacles, follow the procedure below:
roslaunch cem_vis_planner 6_wall_world.launch
This launches a Gazebo environment with 6 walls spawned.
rosrun cem_vis_planner main_base_line.py
rosrun cem_vis_planner main_projection.py
There are two bag files available for moving the target with speeds of 0.5 and 1 m/s in the 6_wall environment. You can play either of them to test the algorithms.
roscd cem_vis_planner && cd target_trajectory_bag_files
rosbag play 6_wall_target_vel_05.bag // or
rosbag play 6_wall_target_vel_1.bag
You can also start teleoperating the target by publishing velocities on /target/cmd_vel
topic. The drone should start following it as you are teleoperating the target.
Algorithm 1:
Parameter | Occlusion weight | CEM batch size | Target tracking weight | Smoothness weight | Velocity bound weight | Acceleration bound weight |
---|---|---|---|---|---|---|
Value | 10000 | 500 | 100 | 10 | 1 | 1 |
Algorithm 2:
Parameter | Occlusion weight | CEM batch size | projection batch size | ρ | Smoohtness weight |
---|---|---|---|---|---|
Value | 10000 | 500 | 100 | 1 | 10 |
- Edit global variables in
test.c
: maker position, obstacles initial position and velocity, quadrotor's initial position, weights - Run
make clean all
only for the first time otherwise justmake
followed by./test
. - To visualize, run
python quad_plot.py
Look into code_gen.cpp file for acado settings, cost terms, constraints, etc.