abelmeadows / scoutrobot

We have successfully implemented the autonomous navigation of UAV with our custom python node using LiDAR ; 2D mapping with Hector SLAM and 3D mapping using Octomap algorithms in the ROS simulation environment. We also implemented an algorithm to manage the battery life of the UAV though which the UAV can use to return home when the battery-level drops down to a certain percentage.
52 stars 15 forks source link

scoutrobot - Simulation of Autonomous Navigation in a GPS-Denied Environment, 2D and 3D Mapping and Battery Management in ROS, Gazebo and RViz.

A project by Abel Stephen Olumide, Adeolu Akinwa and Dr. Ahmed A .Ahmed; Computer Science Department, College of Engineering, Prairie View A&M University, Texas, United States

We have successfully implemented the autonomous navigation of UAV with our custom python node (scoutrobot_control.py) using scan data from LiDAR and kinect sensor; 2D mapping with Hector SLAM and 3D mapping using Octomap algorithms in the ROS simulation environment. We also implemented an algorithm to manage the battery life of the UAV which the UAV can use to return home when the battery-level drops down to a certain percentage. We added a takeoff and land override to the ROS teleop_twist keyboard

This pacakges is built on the existing hector_SLAM, octomap and cvg_sim_gazebo packages

BASIC SETUP:

  1. Install ROS Kinectic: http://wiki.ros.org/kinetic/Installation

  2. Install Gazebo-ROS packages: sudo apt-get install ros-kinetic-gazebo-ros-pkgs ros-kinetic-gazebo-ros-control

  3. Create a workspace for your project:

$ mkdir -p ~/scoutrobot_ws/src $ cd ~/scoutrobot_ws/ $ catkin_make

  1. Install all octomap dependencies: sudo apt-get install ros-kinetic-octomap*

  2. cd ~/scoutrobot_ws/src

  3. Clone this repository which already contains the modified cvg_sim_gazebo, hector_mapping and octomap_mapping, modified teleop_twist to ~/scoutrobot_ws/src.

  4. Build the workspace again by: $ cd ~/scoutrobot_ws/ $ catkin_make

  5. Edit octomap_mapping.launch in octomap_server package to suit your

  6. Run source devel/setup.bash

LAUNCH COMMAND:

SOURCE CATKIN WORKSPACE: cd catkin_ws source devel/setup.bash

GAZEBO CUSTOM WORLD and RVIZ: roslaunch cvg_sim_gazebo scoutrobot_world_1.launch (it launches octomap so you don't need to launch it separately)

roslaunch hector_mapping mapping_default.launch (it rviz octomap so you don't need to launch it separately)

CONTROL NODE: rosrun scoutrobot_control scoutrobot_control.py

KEYBOARD: rosrun teleop_twist_keyboard teleop_twist_keyboard_custom.py

OCTOMAP (optional) roslaunch octomap_server octomap_mapping.launch

Packages:

• Ardrone_simulator_gazebo7: This is an open source ROS package used as a base library for the ScoutRobot simulation. We have modified it by adding kinect sensor and a number of custom worlds. It contains Gazebo object and sensor models, quadrotor models, test fly world and launch files for each objects and empty environments.

• Scoutrobot_control: This package contains the pyhon ROS node that implements the ScoutRobot Algorithm. It is the control center for the ScoutRobot.

• Teleop_twist_keyboard: We modified the generic keyboard control package for ROS to include a TAKEOFF and LAND hotkeys. This has been modified with some custom commands to suit the objectives of the project

• hector_slam: Another open source metapackage that contains nodes for implementing algorithm for performing SLAM by translating continuous laser scans to 2D maps.It learns the map of the environment and simultaneously estimates the UAV pose at laser scanner frame rate.

• Octomap_mapping: a package for implementing 3D occupancy grid from pointcloud generated by the depth camera (kinect sensor) on the UAV. It is an open source package that has been modified to work with other ScoutRobot packages.