Welcome to DiffBot Documentation
This project guides you on how to build an autonomous two wheel differential drive robot.
The robot can operate on a Raspberry Pi 4 B or NVIDIA Jetson Nano Developer Kit
running ROS Noetic or ROS Melodic middleware on Ubuntu Mate 20.04 and Ubuntu 18.04, respectively.
With a motor driver that actuates two brushed motors the robot can drive autonomously to a desired location while sensing its environment using sensors,
such as a laser scanner to avoid obstacles and a camera to detect objects. Odometry wheel encoders (also referred to as speed sensors)
combined with an inertial measurement unit (IMU) are used together with the laser scanner for localization in a previously stored map.
Unseen environments can be mapped with the laser scanner, making use of open source SLAM algorithms such as
gmapping.
The following video gives an overview of the robot's components:
The project is split into multiple parts, to address the following main aspects of the robot.
- Bill of Materials (BOM) and the theory behind the parts.
- Theory of (mobile) robots.
- Assembly of the robot platform and the components.
- Setup of ROS (Noetic or Melodic) on either Raspberry Pi 4 B or Jetson Nano, which are both Single Board Computers (SBC) and are the brain of the robot.
- Modeling the Robot in Blender and URDF to simulate it in Gazebo.
- ROS packages and nodes:
- Hardware drivers to interact with the hardware components
- High level nodes for perception, navigation, localization and control.
Use the menu to learn more about the ROS packages and other components of the robot.
Note
Using a Jetson Nano instead of a Raspberry Pi is also possible. See the Jetson Nano Setup section in this documentation for more details. To run ROS Noetic Docker is needed.
Source Code
The source code for this project can be found in the ros-mobile-robots/diffbot GitHub repository.
Remo Robot
You can find Remo robot (Research Education Modular/Mobile Open robot), a 3D printable and modular robot description package available at ros-mobile-robots/remo_description. The stl files are freely available from the repository and stored inside the git lfs (Git large file system) on GitHub. The bandwidth limit for open source projects on GitHub is 1.0 GB per month, which is why you might not be able to clone/pull the files because the quota is already exhausted this month. To support this work and in case you need the files immediately, you can access them through the following link:
Contributing
Contributions to the code and the documentation are welcome. The Contributing section explains how changes get in, the best practices the project follows, testing and debugging, the CI checks, and how these docs are written.
References
Helpful resources to bring your own robots into ROS are:
- Understand ROS Concepts
- Follow ROS Tutorials such as Using ROS on your custom Robot
- Books:
- Mastering ROS for Robotics Programming: Best practices and troubleshooting solutions when working with ROS, 3rd Edition (affiliate link) this book contains also a chapter about about Remo
- Introduction to Autonomous Robots (free book)
- Robot Operating System (ROS) for Absolute Beginners from Apress by Lentin Joseph
- Programming Robots with ROS A Practical Introduction to the Robot Operating System from O'Reilly Media
- Mastering ROS for Robotics Programming Second Edition from Packt
- Elements of Robotics Robots and Their Applications from Springer
- ROS Robot Programming Book for Free! Handbook from Robotis written by Turtlebot3 Developers
- Courses: