All Projects → TimboKZ → caltech_samaritan

TimboKZ / caltech_samaritan

Licence: MIT license
🚁〰️ Drone SLAM project for Caltech's ME 134 Autonomy class.

Programming Languages

python
139335 projects - #7 most used programming language
CMake
9771 projects

Projects that are alternatives of or similar to caltech samaritan

Contextily
Context geo-tiles in Python
Stars: ✭ 254 (+625.71%)
Mutual labels:  mapping
scale
📦 Toolkit for mapping abstract data into visual representation.
Stars: ✭ 53 (+51.43%)
Mutual labels:  mapping
JuliaAutonomy
Julia sample codes for Autonomy, Robotics and Self-Driving Algorithms.
Stars: ✭ 21 (-40%)
Mutual labels:  mapping
leafmap-apps
Interactive web apps created using leafmap and streamlit
Stars: ✭ 30 (-14.29%)
Mutual labels:  mapping
Papart-examples
Papart examples
Stars: ✭ 29 (-17.14%)
Mutual labels:  mapping
omnimapper
A Modular Multimodal Mapping Framework
Stars: ✭ 86 (+145.71%)
Mutual labels:  mapping
Ekylibre
Farm management Information System - Connecting farms to the world
Stars: ✭ 246 (+602.86%)
Mutual labels:  mapping
earthengine-apps
A collection of Earth Engine Apps created using geemap, voila, and heroku
Stars: ✭ 20 (-42.86%)
Mutual labels:  mapping
Spatial-Analysis-Mapping-Projects
Project Documentation, Best Practices & Procedures for Spatial Analysis and Mapping Projects
Stars: ✭ 15 (-57.14%)
Mutual labels:  mapping
mageri
MAGERI - Assemble, align and call variants for targeted genome re-sequencing with unique molecular identifiers
Stars: ✭ 19 (-45.71%)
Mutual labels:  mapping
xplorerr
Shiny apps for interactive data analysis, visualization and modeling.
Stars: ✭ 33 (-5.71%)
Mutual labels:  exploration
ase exploration
Planning for robotic exploration based on forward simulation
Stars: ✭ 82 (+134.29%)
Mutual labels:  exploration
gridviz
visualization of gridded statistics
Stars: ✭ 108 (+208.57%)
Mutual labels:  mapping
maptiles
Map tile generator. Converts an image into map tiles using ImageMagick. Map tiles can be used in Google Maps, Leaflet and other map rendering software.
Stars: ✭ 52 (+48.57%)
Mutual labels:  mapping
nmt
Network mapping tool
Stars: ✭ 16 (-54.29%)
Mutual labels:  mapping
Chisel.prototype
Work in progress prototype for the Chisel Level Editor, for Unity
Stars: ✭ 247 (+605.71%)
Mutual labels:  mapping
osm-extracts
Each day, OSM Extracts by Interline mirrors the entire OpenStreetMap planet and creates city and region sized extracts
Stars: ✭ 34 (-2.86%)
Mutual labels:  mapping
WinDirStat.Net
A WPF implementation of WinDirStat.
Stars: ✭ 55 (+57.14%)
Mutual labels:  mapping
deck.gl-time-series-widget
A React Time Slider implementation for DECK.GL - (non)temporal data - by CPU filtering ⌛
Stars: ✭ 19 (-45.71%)
Mutual labels:  mapping
ufomap
UFOMap: An Efficient Probabilistic 3D Mapping Framework That Embraces the Unknown
Stars: ✭ 117 (+234.29%)
Mutual labels:  mapping

Caltech Samaritan

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.

Demo

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
3D occupancy grid of an indoor environemnt 3D occupancy grid of an outdoor environemnt

Prerequisites

This project was developed for ROS Kinetic (Ubuntu 16.04). The following packages are required:

  1. Drone simulation is done using hector_quadrotor and Gazebo. This page contains the instructions for installing hector_quadrotor on ROS Kinetic.

  2. 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.

  3. 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.

  4. 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).

  5. 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.

  6. 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.

Usage

  1. Make sure you have the prerequisites installed.
  2. Clone this repo into your catkin workspace, e.g. into ~/catkin_ws/src/caltech_samaritan/.
  3. Source appropriate ROS files in your Bash instance, i.e. run source /opt/ros/kinetic/setup.bash and source ~/catkin_ws/devel/setup.bash.
  4. Run catkin_make in ~/catkin_ws/ and source ~/catkin_ws/devel/setup.bash again.
  5. Start the simulation using roslaunch caltech_samaritan full_indoors.launch. This launch file will:
    1. Initialize Gazebo with a sample indoors environment (if you want to try outdoors, use full_outdoors.launch),
    2. Spawn a simulated quadrotor with a Kinect attached to it and activate its motors,
    3. Launch RViz with a custom config,
    4. Start an OctoMap server, generating occupancy grid in real time, and
    5. Initialise the navigation stack.
  6. (Optional) If you want to control the drone manually, you can use the script mentioned in the previous section. Alternatively, you can use roslaunch caltech_samaritan teleop.launch but it requires pynput package to be installed.
  7. (Optional) If you want to test the navigation stack manually, you can do the following: First, using teleop instructions from the step above, fly around for a bit to make sure the navigation stack has something to work with; Second, start the hover script using rosrun caltech_samaritan force_hover.py. Now you can issue "2D Nav Goals" using rviz interface to see the navigation stack in action.
  8. Start the exploration script with rosrun caltech_samaritan start_exploration.py.
  9. ???
  10. Profit!
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].