If you use this code in an academic context, please cite the following
Qin, Chao, Qiuyu Yu, HS Helson Go, and Hugh H-T. Liu. "Perception-Aware Image-Based Visual Servoing of Aggressive Quadrotor UAVs." IEEE/ASME Transactions on Mechatronics (2023).
Bibtex:
@article{qin2023perception,
title={Perception-Aware Image-Based Visual Servoing of Aggressive Quadrotor UAVs},
author={Qin, Chao and Yu, Qiuyu and Go, HS Helson and Liu, Hugh H-T},
journal={IEEE/ASME Transactions on Mechatronics},
year={2023},
publisher={IEEE}
}
This IBVS control algorithm is designed for aggressive quadrotors to ensure target visibility during agile flight.
Authors: Chao Qin, QIuyu Yu, Helso Go, and Hugh H.-T. Liu from FSC lab
Paper: Perception-Aware Image-Based Visual Servoing of Aggressive Quadrotor UAVs, Qin, Chao; Yu, Qiuyu; Go, Shing Hei Helson; Liu, Hugh H. -T., in IEEE/ASME Transactions on Mechatronics, 2023
Video Links: youtube
This framework is based on the Robot Operating System (ROS) and you therefore first need to install it (Desktop-Full Install) by following the steps described in the ROS Installation.
Get catkin tools with the following commands:
sudo apt-get install python-pip
sudo pip install catkin-tools
Create a catkin workspace with the following commands by replacing <ROS VERSION>
with the actual version of ROS you installed:
cd
mkdir -p catkin_ws/src
cd catkin_ws
catkin config --init --mkdirs --extend /opt/ros/$ROS_DISTRO --merge-devel --cmake-args -DCMAKE_BUILD_TYPE=Release
cd src
git clone https://github.com/catkin/catkin_simple
git clone https://github.com/ethz-asl/eigen_catkin
git clone https://github.com/ethz-asl/mav_comm
git clone https://github.com/ethz-asl/rotors_simulator
git clone https://github.com/FSC-Lab/fsc_aggressive_ibvs
mv fsc_aggressive_ibvs/utils/mav_fpv_sensor.gazebo rotors_simulator/rotors_description/urdf
We modify the weight of the simulated camera to zero for better visualization. At the <!-- VI-Sensor Macro -->
insrc/rotors_simulator/rotors_description/urdf/component_snippets.xacro
change <mass value="0.13" />
to <mass value="0.0" />
cd ..
catkin build
The source file to generetate MPC C codes using acados can be found in utils/pose_track_mpc.cpp
source devel/setup.bash
roslaunch fsc_autopilot run_autopilot_rotors_planning.launch
Click feature track to switch the control from position control to our IBVS
Specify the desired distance
And you will see the resulting flight trajectory in rviz. From the image in the left corner, we can see that our controller strives to maintain the target visual feature within the specified rectangular image bound.
Our implementation is based on rpg_quadrotor_control and rpg_mpc.
We use ACADO as our NMPC solver.
We use RotorS for quadrotor simulation.