Software drop - April 18, 2025

Hey all,

Here’s a quick round-up of some of the new software that’s been released for Stretch these past few weeks.

Firebase networking for the web interface

image

When you call your robot using the web interface, you’re using a protocol called WebRTC. This streams the robot’s cameras, microphone, and carries button presses (movement commands) back to the robot. WebRTC connects the two “peers”, your browser and the robot, using a process called signaling. We’ve supported local signaling for a while, which is why Ngrok (i.e. tunneling) is required when calling your robot over the internet. We’re introducing a new method of signaling, based on Google’s Firebase; specifically using Firebase’s realtime database feature. This will enable better error handling and connectivity with the robot, and eliminates the need for a dedicated signaling server if you’re looking to use Stretch in long-term deployments.

Implementation details can be found in the source code. The default is still local signaling. If you’re interested in the Firebase signaling, please reach out!

New login & homepages in the web interface

In the same vein, we’ve introduce two new pages to the web interface that should make it easier to deploy the web interface safely to the internet. The Login page uses Firebase Auth to authenticate users against a database of invited users. The Homepage allows the users to call their robots using the aforementioned signaling approach. Additionally, if a robot is already in use by another operator, it appears as “occupied” in the homepage.

These pages should be considered “alpha” code (i.e. work in-progress). Details can be found in the source code.

Better OS upgrades

When using Stretch Install to upgrade to a new Stretch Operating System, Harish at UIUC discovered some bugs around file permissions and parameter migration. Thanks to Harish’s work to report the bugs and propose fixes, these edge cases are now fixed. In particular, we found a very difficult bug around UNIX file permissions where calibration data copied off a USB can sometimes be missing the READ permission. Therefore, files don’t get copied and other parts of the upgrade fail. Big props to Harish for working on this! His code contributions can be found here.

Shoulder CAD

CAD files for the Stretch shoulder can be found on the tool share. Drawing of the hardware mounting points have been added to the Extending Stretch with Additional Hardware guide.

Fix trajectory mode in ROS2

Stretch’s ROS2 driver has a “trajectory mode” that can track waypoint trajectory splines. In this fix, we’ve fixed a bug where the hardware would start to track the trajectory, but fail within the first second. Details can be found in the PR.

For examples on using trajectory mode, check out the unit tests here.

Tutorial for debugging in ROS2

The new Debugging in ROS tutorial explains how to use GDB and the VS Code ROS extension to debug ROS2 nodes in the IDE. Furthermore, it shows how to run unit tests through Colcon’s testing framework.

Fix for action server timeouts in ROS2

Stretch’s ROS2 action server enables motion commands for each of the robot’s joints to be initiated and monitored to completion programmatically. For the wrist pitch joint in particular, there was a bug around the success criteria for whether the joint had completed its motion, and in turn, the action server would report that the joint failed the goal. Details on the fix here.

Get the fix by updating your ROS workspace.

Many small fixes in Stretch’s Python libraries

See each PR for details:

Get the fixes by updating your Python libraries.

Many small fixes in ROS2 packages

See each PR for details:

Get the fixes by updating your ROS workspace.

2 Likes