|| A ROS package of the WaveShare Jetbot AI Kit. A Differential Drive Robot ||
For the previous version files, download this repo and inside the folder do git checkout cd8f47e
This project includes all necessary files reproduce a simulation of the waveshare Jetbot AI Kit model in rviz and gazebo to visualize the camera, control and navigate the differential drive robot.
At this point we have several algorithms for SLAM and Navigation that you will explore below like gmapping, karto, hector.
I based the structure of this repository using husky, turtlebot3 and Raymon Wijnands for move_base_flex repos mainly. Other repositories like Intel and PAL Robotics are mentioned below.
Several sensors are included in the simulation like:
All sensors excluding the jetbot camera could be enabled or disabled visually.
NOTE:
The robot is a WaveShare Jetbot AI Kit and its main goal is navigation.
Below a few image examples of the outcome.
The project tree:
The project is now divided in several folders and now you can easily excecute effectively each file.
NOTE: By default, all sensors are visually enabled.
cd ~
mkdir -p catkin_ws/src
cd catkin_ws
catkin_make
.bashrc
with nano: nano ~/.bashrc
~/.bashrc
file for sourcing your workspace: source ~/catkin_ws/devel/setup.bash
~/catkin_ws/src
folder by typing: cd ~/catkin_ws/src
git clone https://github.com/issaiass/jetbot_diff_drive --recursive
git clone https://github.com/issaiass/realsense_gazebo_plugin
git clone https://github.com/issaiass/hector_gazebo_plugins
cd ..
~/catkin_ws
and make the folder running catkin_make
to ensure the application compiles. # 1st terminal - mount only the robot description
roslaunch jetbot_description description.launch
# 2nd terminal (optional) - get the robot description
rosparam get /robot_description
# visualize the robot in rviz
roslaunch jetbot_viz view_model.launch
# example... visualize the robot in rviz and disable intel realsense
roslaunch jetbot_viz view_model.launch realsense_enable:=false
# spawn jetbot model in gazebo in turtlebot3_world
roslaunch jetbot_gazebo spawn_jetbot.launch
# example... spawn jetbot model in gazebo, other world
roslaunch jetbot_gazebo spawn_jetbot.launch world_name:=<your_world>
# launch the jetbot to control it in gazebo and visualize in rviz simultaneously
roslaunch jetbot_control control.launch
# OR
# Same as above but with multiple terminals (4 terminals to launch)
roslaunch jetbot_gazebo spawn_jetbot.launch
roslaunch jetbot_viz view_model.launch
roslaunch jetbot_control jetbot_controller_manager.launch
roslaunch jetbot_rqt_robot_steering.launch
Finally, control the robot with the rqt steering controller
# 1st terminal, launch gazebo
roslaunch jetbot_gazebo spawn_jetbot.launch
# 2nd terminal, launch navigation node (dynamic window approach or time elastic band)
# <option> = teb or dwa
roslaunch jetbot_navigation jetbot_navigation.launch local_planner:=<option>
# 2nd terminal, or launch navigation node (dynamic window approach only)
# <option> = 0 or 1, 0 = move_base 1 = move_base_flex
# Let's say we want move_base_flex, then the argument is 1
roslaunch jetbot_navigation jetbot_navigation.launch move_base_flex:=<option>
# 1st terminal, launch gazebo
roslaunch jetbot_gazebo spawn_jetbot.launch
# 2nd terminal, launch slam node
# <option>: gmapping, hector or karto
roslaunch jetbot_navigation jetbot_slam.launch slam_methods:=<option>
# 3rd terminal, launch a controller (option 1)
roslaunch jetbot_control jetbot_rqt_control_steering.launch
# 3rd terminal, launch a controller (option 2)
rosrun jetbot_twist_keyboard teleop_twist_keyboard.py
# 4rt terminal, save the map when finished
rosrun map_server map_saver -f <path_and_name_of_map>
roscore
and all configurations loading succesfully.
You could see the results on this youtube video.
Last video update - Jetbot AI Kit Karto SLAM:
Jetbot AI Kit move_base_flex and dwa planner
Navigation Stack with DWA and TEB Planners
Realsense and PCL Demo in gazebo and rviz
ROS Controllers and Camera Plugin in gazebo and rviz
The video only shows the application running, not the explanation of the code.
I will try my best for making an explanatory video of the application as in this youtube video.
Last video update - Explaining Jetbot AI Kit Karto SLAM:
Previous videos list:
Explaining Jetbot AI Kit Hector SLAM
Explaining Jetbot AI Kit move_base_flex and dwa planner
Explaining Jetbot AI Kit gmapping SLAM
Explaining Navigation Stack with DWA and TEB Planners
Explaining how to solve Model Sinking, not moving or drifting
Explanation Realsense and PCL in gazebo and rviz
Explanation ROS COntrollers and Camera Plugin in gazebo and rviz
Planning to add to this project:
Your contributions are always welcome! Please feel free to fork and modify the content but remember to finally do a pull request.