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
- 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
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
roslaunch abot_gazebo robot_house_gazebo.launch
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
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
roslaunch abot_path_coverage abot_path_coverage.launch
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 :)
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)
rostopic pub /interrupt_event std_msgs/String "data: 'Charge_port'"
- Install and setup RTAB-Map from this link
- Clone the realsense gazebo plugin to your workspace's
/src
andcatkin_make
git clone https://github.com/pal-robotics/realsense_gazebo_plugin
Run the below commands in seperate terminals after launching robot_house_gazebo.launch
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
orexplore_lite
for map creation. - To save the map just close the terminal running the mapping node :
ctrl+c
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
Your contributions are most welcomed.