🚁〰️ Drone SLAM project for Caltech's ME 134 Autonomy class.
Autonomous SLAM & exploration using drones, a project for Caltech's ME 134
Autonomy class.
CS134_Final_Project_Report.pdf
contains a
detailed description of the project and the approach used. This repository can
be cloned as a ROS package.
There are two videos showing the whole setup in action: exploring indoor environment and exploring outdoor environment. Images of the final 3D occupancy grid can be seen below.
Indoor environment | Outdoor environment |
---|---|
This project was developed for ROS Kinetic (Ubuntu 16.04). The following packages are required:
Drone simulation is done using
hector_quadrotor and Gazebo. This
page
contains the instructions for installing hector_quadrotor
on ROS Kinetic.
OctoMap is used to generate the 3D occupancy
grid. octomap_server
is used to interface OctoMap with ROS, both can be
installed via apt
as ros-kinetic-octomap
and ros-kinetic-octomap-ros
.
You'll need to install the OctoMap RViz
plugin via apt
as
ros-kinetic-octomap-rviz-plugins
. Without it, occupancy grid
visualisations in RViz will not work.
To control the drone manually, you might need to install the
ros-kinetic-teleop-twist-keyboard
package and then run
teleop_twist_keyboard teleop_twist_keyboard.py
. There is a better tool described in the next section, but it
requires pynput Python package to be installed (and available to ROS).
Robot navigation is handled using the standard ROS navigation stack, namely move_base
, so make sure you have that
installed. Additionally, TEB local planner is used, which can be installed
via apt
as ros-kinetic-teb-local-planner
. Make sure you have ros-kinect-pointcloud-to-laserscan
installed for
costmaps to work correctly.
The scripts in this repo are written in Python 2.7 (default version for ROS
Kinetic). Packages pynput, numpy are required for Python
scripts to work, all of which can be installed using pip
. ros_numpy
is also required, it can be installed via
apt
as ros-kinetic-ros-numpy
.
~/catkin_ws/src/caltech_samaritan/
.source /opt/ros/kinetic/setup.bash
and source ~/catkin_ws/devel/setup.bash
.catkin_make
in ~/catkin_ws/
and source ~/catkin_ws/devel/setup.bash
again.roslaunch caltech_samaritan full_indoors.launch
. This launch file will:
full_outdoors.launch
),roslaunch caltech_samaritan teleop.launch
but it requires pynput
package to be installed.rosrun caltech_samaritan force_hover.py
. Now you can issue "2D Nav Goals"
using rviz interface to see the navigation stack in action.rosrun caltech_samaritan start_exploration.py
.