ROLAND: Robust Landing of UAV on Moving Platform using Object Detection and UWB based Extended Kalman Filter
ChanYoung Kim, EungChang Mason Lee, JunHo Choi, JinWoo Jeon, SeokTae Kim, and Hyun Myung, "ROLAND: Robust Landing of UAV on Moving Platform using Object Detection and UWB based Extended Kalman Filter," in Proc. of International Conference on Control, Automation and System (ICCAS), 2021.
Result video
[click to see]
- (Optional)
Joystick
, I usedsony dualshock4
OpenCV
upper than 4.4.0 for OpenCV-DNN-YOLO, and alsocv_bridge
OpenCV
,cv_bridge
manual build refer here
- ROS and Gazebo
- refer here
$ sudo apt install ros-<distro>-desktop-full
robot-pose-ekf
package, refer here
$ sudo apt install ros-<distro>-robot-pose-ekf
- PX4-SITL: here
- Installation: here
- This repo, which is including submodules as belows:
- uwb gazebo plugin
- uwb ROS msg
tf_to_trajectory
pacakge from here (myself)
$ git clone --recursive https://github.com/engcang/ROLAND
or
$ git clone https://github.com/engcang/ROLAND
$ cd ROLAND
$ git submodule update --init --recursive
- [Important] Set gazebo model path
$ cd ROLAND/gazebo_maps
$ tar -xf bounding_wall_world.tar.xz
$ tar -xf common_models.tar.xz
$ cd ROLAND/gazebo_maps
$ echo "export GAZEBO_MODEL_PATH=:$(pwd)/bounding_wall_world:$(pwd)/common_models:$(pwd)/drone_package_for_gazebo:$GAZEBO_MODEL_PATH" >> ~/.bashrc
$ cd ~/your_workspace
$ echo "export LD_LIBRARY_PATH=:$(pwd)/devel/lib:$LD_LIBRARY_PATH" >> ~/.bashrc
$ . ~/.bashrc
- For VINS-Fusion,
$ echo "export MALLOC_CHECK_=0" >> ~/.bashrc
$ source ~/.bashrc
[click to see]
- ROS-YOLO using OpenCV/OpenVINO code: from here (myself)
- Jackal Gazebo model: from here
- Drone and Jackal controll joystick code: from here (myself), also refer here
- UWB Gazebo sensor plugin and message from uwb gazebo plugin and uwb ROS msg
- VINS-Fusion
frame_id
andOpenCV
edited version from herecamera_models
package is edited to be compatible withOpenCV4
- Gazebo map (myself)
[click to see]
- launch gazebo world
$ roslaunch ekf_landing world.launch
- start
kalman filter node
$ roslaunch ekf_landing kalman.launch
- move around the drone / jackal: control
joystick
- start
autolanding node
$ rosrun ekf_landing autolanding_node