Skip to content

I use no airborne cameras or computers to land a UAV.

License

Notifications You must be signed in to change notification settings

HKPolyU-UAV/ALAN

Repository files navigation

ALAN ("A"utonomous "L"anding using "A" "N"on-Robocentric Framework)

Experimental Non-Robocentric Dynamic Landing of Quadrotor UAVs with On-Ground Sensor Suite

Abstract

This research addresses the problem of a quadrotor UAV landing on a ground vehicle. Yet, unlike most existing literature, we transfer most sensing and computing tasks to the ground vehicle, designing the landing system in a non-robocentric fashion. Such a framework greatly alleviates the payload burden, allowing more resource allocation for the quadrotor UAV. To validate the proposed framework, the implementation starts with relative pose estimation through detection and tracking of LED markers on an aerial vehicle. The 6 DoF orientation and position information is then returned through a PnP-based algorithm. Successively, by considering the visibility and dynamic constraints, the motion planning module computes an optimized landing trajectory, such that the aerial vehicle stays within a safety corridor and performs the landing mission. Through experiments, we demonstrate the applicability of this research work, in which a quadrotor could be guided remotely and landed on a moving ground vehicle smoothly without the support from any airborne exteroceptive sensors and computers.

Video

IMAGE ALT TEXT HERE

Software Installation

Pre-Requisite

# we tested on system with ubuntu 18.04 and 20.04 
# install Ubuntu 18.04 || 20.04
# install ROS
# install OpenCV (should come along with ROS)

This repo utilize some third-party libraries,

  • OSQP to solve the convex optimization problem for trajectory generation.
  • OSQP-Eigen for using OSQP with Eigen. Much much much convinient.
  • DecompUtil to pass and visualize safety corridor.

Therefore, under your workspace folder

mkdir -p {name alan}_ws/src
cd {name alan}_ws && mkdir alan_third_party

# install third party



sudo apt install ros-noetic-sophus

(if neccessary)
cd /usr/include
sudo ln -sf eigen3/Eigen Eigen

cd alan_third_party

git clone --recursive https://github.com/pattylo/osqp.git && \
git clone https://github.com/pattylo/osqp-eigen.git && \
git clone https://github.com/catkin/catkin_simple.git && \
git clone https://github.com/sikang/DecompUtil.git

#for the above package, please do

mkdir build && cd build && cmake .. && make -j8 && sudo make install
#then do compilation
cd ~/{name alan}_ws
catkin_make


# If you are using scount_ros, feel free to use our scount_ros package
mkdir -p {name scout}_ws/src
cd {name scout}_ws/src
git clone https://github.com/HKPolyU-UAV/scout_ros
catkin_make

For scout_ros, click here to know more. They have done a fantastic job on packaging their hardware platform.

The above packages salute the contribution of the following academic paper:

@article{stellato2020osqp,
  title={OSQP: An operator splitting solver for quadratic programs},
  author={Stellato, Bartolomeo and Banjac, Goran and Goulart, Paul and Bemporad, Alberto and Boyd, Stephen},
  journal={Mathematical Programming Computation},
  volume={12},
  number={4},
  pages={637--672},
  year={2020},
  publisher={Springer}
}

@article{liu2017planning,
  title={Planning dynamically feasible trajectories for quadrotors using safe flight corridors in 3-d complex environments},
  author={Liu, Sikang and Watterson, Michael and Mohta, Kartik and Sun, Ke and Bhattacharya, Subhrajit and Taylor, Camillo J and Kumar, Vijay},
  journal={IEEE Robotics and Automation Letters},
  volume={2},
  number={3},
  pages={1688--1695},
  year={2017},
  publisher={IEEE}
}

Further details will be released once the manuscript is accepted.