SkyDrop is an automated UAV delivery system designed for a specific apartment building. This system allows parcels to be delivered from the apartment gate/security room to the destination apartment balcony by a UAV.
The complete system consist of an autonomous UAV system and a dashboard to send commands to the UAV. This repository contains the implementation related to the autonomous UAV system.
Technologies: Gazebo Simulator | Ardupilot | ROS | Dronekit Python | C++
This work is based on the work done by Brunner et al., 201912. In our project, we are trying to improve their work further more by considering the suggestions mentioned by them in their research paper along with our own ideas.
The following tools and softwares should be installed in the local machine.
- Operating System: Ubuntu 18.04 LTS Bionic Beaver
- ROS Melodic Morenia (Desktop-Full Install) (ROS installation instructions)
- Gazebo 9.0 (Comes as the default Gazebo version when installing ROS Melodic Morenia)
- Ardupilot & SITL (Ardupilot installation instructions | Setting up SITL on Linux)
- Gazebo with SITL (Gazebo with SITL installtion instructions)
- MAVROS (MAVROS installation instructions)
- QGroundControl (QGroundControl installation instructions)
- Dronekit-python library (Dronekit installation instructions)
- ROS: ROS Wiki Tutorials
- Gazebo: Gazebo Tutorials
- Dronekit: Dronekit-python Documentation
Step 01: Create a catkin workspace. (We can skip this step as we already created a workspace when we installed MAVROS).
For more delatis visit ROS wiki: create a ROS workspace using catkin_make
.
Here we use catkin build
instead of catkin_make
.
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin init
catkin build
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
Step 02: Clone the project inside the src
directory of the catikin workspace.
cd ~/catkin_ws/src
git clone [email protected]:SkydropDroneDeliveries/skydrop_drone.git
Step 03: Rename the directory from skydrop_drone to skydrop.
mv skydrop_drone skydrop
Step 04: Set model path for Gazebo models.
echo "export GAZEBO_MODEL_PATH=${GAZEBO_MODEL_PATH}:$HOME/catkin_ws/src/skydrop/models" >> ~/.bashrc
Step 05: Build the project.
cd ~/catkin_ws
catkin build
Step 06: Update the global variables.
source ~/.bashrc
We need multiple terminals to run the project.
Terminal 01: Launch the Gazebo world
roslaunch skydrop <requiredWorldsLaunchFileName>.launch
Replace the <requiredWorldsLaunchFileName> with the launch file name of the world that you wish to open in Gazebo.
Terminal 02: Launch the Ardupilot SITL
roscd skydrop
cd scripts
./startsitl.sh
Terminal 03: Start MAVROS to get telemetry data from the Flight Control Unit (FCU).
NOTE: Wait until startsitl.sh
script completes its work before starting the MAVROS.
roslaunch skydrop apm.launch
Footnotes
-
Research Paper of Brunner et al. work: Link to the research paper
Brunner, G., Szebedy, B., Tanner, S. and Wattenhofer, R., 2019, June. The urban last mile problem: Autonomous drone delivery to your balcony. In 2019 international conference on unmanned aircraft systems (icuas) (pp. 1005-1012). IEEE. ↩ -
GitHub Repository of Brunner et al. work: Link to the repository ↩