Hello Stretch Community!
It has been a productive last few months at Hello Robot in terms of furthering our ROS 2 support!
Just as a recap, we began the port to ROS 2 by adding support for MoveIt 2. To make the ROS 2 offering self-sufficient, we added support for Stretch Calibration and the visual sensors, RPLIDAR A1 and D435i. As a means to onboard more users, we released ROS 2 tutorials on our official documentation website.
Now, to extend the stretch_ros2 stack, we are rolling out support for Nav2!
The Nav2 stack is a motion planning and control framework for the mobile base. Stretch has a differential drive mobile base that enables navigation. However, before Stretch can navigate, it must be able to generate a map, localize itself in the environment and plan a path between points. This is challenging when the environment could present challenges such as static or dynamic obstacles that can get in the robot’s way, or floor surfaces with different frictional properties that can trip the controller.
Fortunately, the Nav2 stack enables these capabilities through various packages and provides a simple Python API to interact with them. Let’s take a quick tour!
It is possible to generate a 2D map of your environment using the slam_toolbox package. For you, it is as easy as teleoperating Stretch in your home, laboratory, or office. Stretch does the rest.
Once a map has been generated, Stretch can localize and plan its way to navigate in the environment. Just point on the map and Stretch will get there, without your help.
Simple Commander Python API:
Thanks to the Python API, it is as simple to interact with Nav2 programmatically. For example, have a look at this neat patrol demo.
As always, we want you to be able to interact with these updates as soon as they are rolled out. Have a look at these tutorials to explore the above capabilities on your own Stretch! If you stumble upon something unexpected, please let us know.
If you plan to use ROS 2 in your next project, feel free to get in touch!
Until next time!