Skip to content

Welcome to DiffBot Documentation

This project guides you on how to build an autonomous two wheel differential drive robot. image 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.

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

Remo (Research Education Modular/Mobile Open robot) is a 3D printable, modular robot. Its robot description is in ros-mobile-robots/remo_description, which has empty placeholders for the STL files. To print Remo, get the files in one of two ways:

  • Buy the STL files


    A one-time payment on Gumroad. You download all of Remo's STL files and can start printing, and the purchase supports this project.

    Get the Remo STL files

  • Sponsor and get Remo Insiders


    From $10 a month on GitHub Sponsors. You get Remo Insiders, a private Git repository with the STL files that you clone and pull, and new features first.

    Become a sponsor

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: