/abot

ABot is a differential drive mobile robot based on Robot Operating System (ROS). Its tested on Ubuntu 18.04 and 20.04 with ROS melodic and noetic

Primary LanguageCMake

ABot

ABot is a differential drive mobile robot based on Robot Operating System (ROS). Its tested on Ubuntu 18.04 with ROS Melodic and Ubuntu 20.04 with ROS Noetic

Capabilities:

  • Manual teleop control.
  • SLAM with Gmapping using teleop and explore_lite.
  • Goal Point Navigation using dwa_local_planner and teb_local_planner.
  • Coverage Planning with Boustrophedon Decomposition.
  • Configured Behavior Tree
  • Added Intel Realsense D435
  • RTAB-Map
  • Add GPS
  • Add manipulator arm

Use ABot

To run the ABot simulation in Gazebo, clone the package in your catkin workspace, and use the launch file below.

    cd ~/catkin_ws/src
    git clone https://github.com/KamalanathanN/abot.git
    cd ~/catkin_ws
    catkin_make
    source devel/setup.bash

Launch ABot in Gazebo

    roslaunch abot_gazebo robot_house_gazebo.launch

ABot Simulation Model

ABot Gmapping using teleop

    roslaunch abot_slam abot_gmapping.launch
    roslaunch abot_teleop abot_teleop_key.launch

ABot Gmapping with explore_lite

    sudo apt install ros-noetic-explore-lite
    roslaunch abot_slam abot_gmapping.launch
    roslaunch abot_navigation move_base.launch
    roslaunch explore_lite explore.launch

ABot Navigation in Gazebo and Rviz

By default navigation uses dwa_local_planner with argument TEB:=true loads teb_local_planner.

Read if using teb_local_planner
The default teb_local_planner pkg did not show goal reached success. Due to this multi goal sequence was not possible. Temporary fix is to remove the installed teb_local_planner and clone this modified repo : https://github.com/KamalanathanN/teb_local_planner inside the workspace.
    roslaunch abot_navigation abot_navigation.launch

ABot Path Coverage implementation with Boustrophedon Decomposition

    roslaunch abot_path_coverage abot_path_coverage.launch

Abot Behavior Tree Demo

Below is a simple goal points looping behaviour tree with an interrupt action to go to charge port location.

  • In future, interrupt action can be used by battery monitoring node to perform auto charge behavior.
  • Also planning to include camera feedback actions like object detection for other exiting behaviors :)

Runtime Behahivor Tree monitoring with Groot

abot_BT.mp4

Run the below commands in seperate terminals after launching robot_house_gazebo.launch and abot_navigation.launch

    rosrun groot Groot # select Monitor option and Start

    roslaunch abot_behavior_tree goal_points_looping.launch

Notice the STATE of each node in tree gets highlighted with Cyan(IDLE) Yellow(RUNNING) Green(SUCCESS) Red(FAILURE)

To provide interrput

    rostopic pub /interrupt_event std_msgs/String "data: 'Charge_port'"

ABot RTAB-Map

  • Install and setup RTAB-Map from this link
  • Clone the realsense gazebo plugin to your workspace's /src and catkin_make
    git clone https://github.com/pal-robotics/realsense_gazebo_plugin 

Run the below commands in seperate terminals after launching robot_house_gazebo.launch

Mapping

    roslaunch abot_rtabmap rtab_minimal.launch args:="--delete_db_on_start"
  • Make sure to give proper save path for rtabmap.db inside launch file.
  • Make sure your world is not monotonous, have good textural variances in walls and have variety of objects.
  • Use teleop_twist_keyboard or explore_lite for map creation.
  • To save the map just close the terminal running the mapping node : ctrl+c

Navigation

First load the rtabmap.db in localization mode:

    roslaunch abot_rtabmap rtab_minimal.launch localization:=true

Now launch the navigation with desired local planner:

    roslaunch abot_navigation abot_navigation_rtabmap.launch TEB:=true

References

path_coverage_ros

Groot with ROS

Contributions

Your contributions are most welcomed.