Giter VIP home page Giter VIP logo

vibhav_internship's Introduction

Mapping, planning and control of single and multiple robots

This repository consists of the code to:-

  1. Run a single robot and explore an area using
    1. Hector Slam
    2. GMapping
    3. Cartographer
  2. Run multiple robots and explore an area using
    1. Hector Slam
    2. GMapping
    3. Cartographer
  3. Run RRT based frontier exploration with a single robot and map an area using
    1. Hector Slam
    2. GMapping
    3. Cartographer

Important Packages

The launch files have been developed and tested on Ubuntu LTS 18.04 and ROS Melodic with Gazebo 9 and RViz. The important ROS packages that must be installed are:-

Multi robot map merge (link)

This package is already present in the repository.

Cartographer (link)

An important resource on this package can be found here. To install this package, use:-

sudo apt-get install ros-melodic-cartographer ros-melodic-cartographer-ros ros-melodic-cartographer-ros-msgs ros-melodic-cartographer-rviz

Teleop twist keyboard (link)

sudo apt-get install ros-melodic-teleop-twist-keyboard

RRT Frontier Exploration (link)

This package is already present in the repository.


Launch commands

Before running any of the below commands, navigate to the run

cd ~/multibot_ws
catkin_make
source ~/multibot_ws/devel/setup.bash

Single robot with controlled by a user

These commands launch the robot in a predefined world with different types of mapping algorithms. I order to control the robot, the teleop-twist-keyboard command needs to be launched.

roslaunch mb_navigation nav_tut_hectorslam.launch
roslaunch mb_navigation nav_tut_gmapping.launch
roslaunch mb_navigation nav_tut_carto.launch
rosrun teleop_twist_keyboard teleop_twist_keyboard.py

Autonomous Single Robot Exploration

In this section, the commands run autonomous exploration of a single robot where goals are periodically (every 10 seconds) assigned to a single robot.

roslaunch mb_navigation autexpl_hector_slam.launch
roslaunch mb_navigation autexpl_gmapping.launch
roslaunch mb_navigation autexpl_cartographer.launch

Autonomous Multiple Robot Exploration

In this section, the commands run autonomous exploration of a single robot where goals are periodically (every 10 seconds) assigned to multiple robots seperately. Thus there is a non coordinated movement of robots in the arena.

roslaunch multi_robot multirobot_arena_gmapping.launch

Single robot RRT Frontier Exploration

A frontier is defined as the region seperating a known from an unkown area. First, an RRT (Rapidly expanding random tree) algorithm detects points on the frontier region. The frontier regions are clustered and the filtered points are sent to an assigner node. At the assigner node the robot is assigned goal positions based on the distance of the goal from the robot and an estimated amount of unexplored area that it can discover. Finally, the robot uses a dijkstras planning method to plan its path to the goal position that is assigned to it.

The original algorithm however does not take care of many corner cases and therefore the following temporary modifications have been made:-

  1. Frontiers are cleared up before being published on the map
  2. A 5 cycle loop cunter is given to reset the goals
  3. A goal is given 0.5m lesser is both X and Y axis from the assigned goal.

To launch the original RRT exploration algorithm along with GMapping, run:

roslaunch multi_robot nav_tut_gmapping_single_rrt.launch

To launch the RRT exploration algorithm with GMapping and the first modification, run:

roslaunch multi_robot nav_tut_gmapping_single_mod_rrt.launch

To launch the RRT exploration algorithm with Hector SLAM and with the first modification, run:

roslaunch multi_robot nav_tut_hectorslam_single_mod_rrt.launch

To launch the RRT exploration algorithm with Hector SLAM and with the first, second and third modification, run:

roslaunch multi_robot nav_tut_hectorslam_single_rrt_algo_edit.launch

vibhav_internship's People

Contributors

ikvibhav avatar rekabot avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.