├── doc ├── imgs │ ├── tree.PNG │ ├── navigation.PNG │ ├── rviz_back.PNG │ ├── rviz_front.PNG │ ├── rviz_left.PNG │ ├── rviz_orbit.PNG │ ├── rviz_right.PNG │ ├── rviz_top.PNG │ ├── gazebo_world.PNG │ ├── jetbot_slam.PNG │ ├── jetbot_sonar.PNG │ ├── rviz_bottom.PNG │ ├── rviz_camera.PNG │ ├── jetbot_collage.PNG │ ├── jetbot_pointcloud.PNG │ ├── jetbot_realsense.PNG │ ├── jetbot_all_sensors.PNG │ ├── jetbot_lidar_sonar.PNG │ ├── jetbot_rplidar_rviz.PNG │ ├── jetbot_willow_garage.PNG │ ├── jetbot_rplidar_gazebo.PNG │ ├── jetbot_rviz_pointcloud.PNG │ ├── jetbot_rviz_realsense.PNG │ └── jetbot_realsense_rplidar.PNG └── maps │ ├── house.pgm │ ├── jetbot_map.pgm │ ├── house.yaml │ └── jetbot_map.yaml ├── .gitmodules └── README.md /doc/imgs/tree.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/imgs/tree.PNG -------------------------------------------------------------------------------- /doc/maps/house.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/maps/house.pgm -------------------------------------------------------------------------------- /doc/imgs/navigation.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/imgs/navigation.PNG -------------------------------------------------------------------------------- /doc/imgs/rviz_back.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/imgs/rviz_back.PNG -------------------------------------------------------------------------------- /doc/imgs/rviz_front.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/imgs/rviz_front.PNG -------------------------------------------------------------------------------- /doc/imgs/rviz_left.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/imgs/rviz_left.PNG -------------------------------------------------------------------------------- /doc/imgs/rviz_orbit.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/imgs/rviz_orbit.PNG -------------------------------------------------------------------------------- /doc/imgs/rviz_right.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/imgs/rviz_right.PNG -------------------------------------------------------------------------------- /doc/imgs/rviz_top.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/imgs/rviz_top.PNG -------------------------------------------------------------------------------- /doc/maps/jetbot_map.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/maps/jetbot_map.pgm -------------------------------------------------------------------------------- /doc/imgs/gazebo_world.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/imgs/gazebo_world.PNG -------------------------------------------------------------------------------- /doc/imgs/jetbot_slam.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/imgs/jetbot_slam.PNG -------------------------------------------------------------------------------- /doc/imgs/jetbot_sonar.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/imgs/jetbot_sonar.PNG -------------------------------------------------------------------------------- /doc/imgs/rviz_bottom.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/imgs/rviz_bottom.PNG -------------------------------------------------------------------------------- /doc/imgs/rviz_camera.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/imgs/rviz_camera.PNG -------------------------------------------------------------------------------- /doc/imgs/jetbot_collage.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/imgs/jetbot_collage.PNG -------------------------------------------------------------------------------- /doc/imgs/jetbot_pointcloud.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/imgs/jetbot_pointcloud.PNG -------------------------------------------------------------------------------- /doc/imgs/jetbot_realsense.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/imgs/jetbot_realsense.PNG -------------------------------------------------------------------------------- /doc/imgs/jetbot_all_sensors.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/imgs/jetbot_all_sensors.PNG -------------------------------------------------------------------------------- /doc/imgs/jetbot_lidar_sonar.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/imgs/jetbot_lidar_sonar.PNG -------------------------------------------------------------------------------- /doc/imgs/jetbot_rplidar_rviz.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/imgs/jetbot_rplidar_rviz.PNG -------------------------------------------------------------------------------- /doc/imgs/jetbot_willow_garage.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/imgs/jetbot_willow_garage.PNG -------------------------------------------------------------------------------- /doc/imgs/jetbot_rplidar_gazebo.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/imgs/jetbot_rplidar_gazebo.PNG -------------------------------------------------------------------------------- /doc/imgs/jetbot_rviz_pointcloud.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/imgs/jetbot_rviz_pointcloud.PNG -------------------------------------------------------------------------------- /doc/imgs/jetbot_rviz_realsense.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/imgs/jetbot_rviz_realsense.PNG -------------------------------------------------------------------------------- /doc/imgs/jetbot_realsense_rplidar.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/issaiass/jetbot_diff_drive/HEAD/doc/imgs/jetbot_realsense_rplidar.PNG -------------------------------------------------------------------------------- /doc/maps/house.yaml: -------------------------------------------------------------------------------- 1 | image: house.pgm 2 | resolution: 0.050000 3 | origin: [-51.224998, -51.224998, 0.000000] 4 | negate: 0 5 | occupied_thresh: 0.65 6 | free_thresh: 0.196 7 | 8 | -------------------------------------------------------------------------------- /doc/maps/jetbot_map.yaml: -------------------------------------------------------------------------------- 1 | image: jetbot_map.pgm 2 | resolution: 0.050000 3 | origin: [-10.000000, -10.000000, 0.000000] 4 | negate: 0 5 | occupied_thresh: 0.65 6 | free_thresh: 0.196 7 | 8 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "jetbot_control"] 2 | path = jetbot_control 3 | url = https://github.com/issaiass/jetbot_control.git 4 | [submodule "jetbot_description"] 5 | path = jetbot_description 6 | url = https://github.com/issaiass/jetbot_description.git 7 | [submodule "jetbot_desktop"] 8 | path = jetbot_desktop 9 | url = https://github.com/issaiass/jetbot_desktop.git 10 | [submodule "jetbot_gazebo"] 11 | path = jetbot_gazebo 12 | url = https://github.com/issaiass/jetbot_gazebo.git 13 | [submodule "jetbot_navigation"] 14 | path = jetbot_navigation 15 | url = https://github.com/issaiass/jetbot_navigation.git 16 | [submodule "jetbot_robot"] 17 | path = jetbot_robot 18 | url = https://github.com/issaiass/jetbot_robot.git 19 | [submodule "jetbot_simulator"] 20 | path = jetbot_simulator 21 | url = https://github.com/issaiass/jetbot_simulator.git 22 | [submodule "jetbot_twist_keyboard"] 23 | path = jetbot_twist_keyboard 24 | url = https://github.com/issaiass/jetbot_twist_keyboard.git 25 | [submodule "jetbot_twist_viz"] 26 | path = jetbot_twist_viz 27 | url = https://github.com/issaiass/jetbot_viz.git 28 | [submodule "jetbot_viz"] 29 | path = jetbot_viz 30 | url = https://github.com/issaiass/jetbot_viz.git 31 | [submodule "jetbot_slam"] 32 | path = jetbot_slam 33 | url = https://github.com/issaiass/jetbot_slam 34 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Jetbot_Diff_Drive 2 | 3 | 4 | For the previous version files, download this repo and inside the folder do ***git checkout cd8f47e*** 5 | 6 | 7 |
8 | Brief Review 9 | 10 | 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. 11 | 12 | At this point we have several algorithms for SLAM and Navigation that you will explore below like gmapping, karto, hector. 13 | 14 | I based the structure of this repository using [husky](https://github.com/husky/husky), [turtlebot3](https://github.com/ROBOTIS-GIT/turtlebot3) and [Raymon Wijnands](https://github.com/Rayman/turtlebot3_mbf) for move_base_flex repos mainly. Other repositories like Intel and PAL Robotics are mentioned below. 15 | 16 | Several sensors are included in the simulation like: 17 | - 1 x RGB Camera 18 | - 1 x Intel Realsense Depth Camera D435 19 | - 1 x RPLIdar Laser Scan 20 | - 8 x Sonar 21 | - 1 x GPS 22 | - 1 x IMU 23 | - 1 x Odometry (see issues at the end of the document) 24 | 25 | All sensors excluding the jetbot camera could be enabled or disabled visually. 26 | 27 | NOTE: 28 | - For the realsense you will need to make the plugin first that is included [here](https://github.com/issaiass/realsense_gazebo_plugin) 29 | - For the IMU, GPS, Odometry and sonar you will need folder hector_gazebo_plugins from [here](https://github.com/tu-darmstadt-ros-pkg/hector_gazebo/tree/kinetic-devel/hector_gazebo_plugins) or [here](https://github.com/issaiass/hector_gazebo_plugins) 30 | - Several dependencies will be needed, see the *package.xml* dependencies of each one. 31 | 32 | The robot is a WaveShare Jetbot AI Kit and its main goal is navigation. 33 | 34 | Below a few image examples of the outcome. 35 | 36 |

37 | 38 | 39 | 40 | 41 | 42 |

43 | 44 | The project tree: 45 | 46 |

47 | 48 |

49 | 50 | The project is now divided in several folders and now you can easily excecute effectively each file. 51 | 52 |
53 | 54 |
55 | Using Jetbot Differential Drive Package 56 | 57 | NOTE: By default, all sensors are visually enabled. 58 | 59 | - Put the *ball* folder from *jetbot_diff_drive/model* folder inside *~/.gazebo/models* folder to load also the soccer ball. 60 | - See prerequisites on the *package.xml* of each package. 61 | - Create a ROS ros workspace and compile an empty package: 62 | ~~~ 63 | cd ~ 64 | mkdir -p catkin_ws/src 65 | cd catkin_ws 66 | catkin_make 67 | ~~~ 68 | - Open the `.bashrc` with nano: 69 | ~~~ 70 | nano ~/.bashrc 71 | ~~~ 72 | - Insert this line at the end of the `~/.bashrc` file for sourcing your workspace: 73 | ~~~ 74 | source ~/catkin_ws/devel/setup.bash 75 | ~~~ 76 | - Clone this repo in the `~/catkin_ws/src` folder by typing: 77 | ~~~ 78 | cd ~/catkin_ws/src 79 | git clone https://github.com/issaiass/jetbot_diff_drive --recursive 80 | git clone https://github.com/issaiass/realsense_gazebo_plugin 81 | git clone https://github.com/issaiass/hector_gazebo_plugins 82 | cd .. 83 | ~~~ 84 | - Go to the root folder `~/catkin_ws` and make the folder running `catkin_make` to ensure the application compiles. 85 | - Now you can test in several ways the packages 86 | - For just only the robot description 87 | ~~~ 88 | # 1st terminal - mount only the robot description 89 | roslaunch jetbot_description description.launch 90 | # 2nd terminal (optional) - get the robot description 91 | rosparam get /robot_description 92 | ~~~ 93 | - Visualizing only the robot 94 | - You could enable more parameters if tab is pressed 95 | ~~~ 96 | # visualize the robot in rviz 97 | roslaunch jetbot_viz view_model.launch 98 | # example... visualize the robot in rviz and disable intel realsense 99 | roslaunch jetbot_viz view_model.launch realsense_enable:=false 100 | ~~~ 101 | - For just view gazebo simulation (no control) 102 | - There are more parameters for enabling sensors 103 | - Press tab if you want to see all parameters list 104 | - Basic spawning of the robot 105 | ~~~ 106 | # spawn jetbot model in gazebo in turtlebot3_world 107 | roslaunch jetbot_gazebo spawn_jetbot.launch 108 | # example... spawn jetbot model in gazebo, other world 109 | roslaunch jetbot_gazebo spawn_jetbot.launch world_name:= 110 | ~~~ 111 | - For controlling the jetbot in gazebo and visualize in rviz 112 | ~~~ 113 | # launch the jetbot to control it in gazebo and visualize in rviz simultaneously 114 | roslaunch jetbot_control control.launch 115 | # OR 116 | # Same as above but with multiple terminals (4 terminals to launch) 117 | roslaunch jetbot_gazebo spawn_jetbot.launch 118 | roslaunch jetbot_viz view_model.launch 119 | roslaunch jetbot_control jetbot_controller_manager.launch 120 | roslaunch jetbot_rqt_robot_steering.launch 121 | 122 | Finally, control the robot with the rqt steering controller 123 | ~~~ 124 | - For robot navigation (it is not fine tuned at this checkpoint): 125 | ~~~ 126 | # 1st terminal, launch gazebo 127 | roslaunch jetbot_gazebo spawn_jetbot.launch 128 | # 2nd terminal, launch navigation node (dynamic window approach or time elastic band) 129 | #