# Software drop - April 18, 2025

**URL:** <https://forum.hello-robot.com/t/software-drop-april-18-2025/1332>\
**Category:** Announce\
**Created:** [April 18, 2025, 4:31pm UTC](https://forum.hello-robot.com/t/software-drop-april-18-2025/1332 "2025-04-18T16:31:30Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![bshah](https://yyz2.discourse-cdn.com/flex030/user_avatar/forum.hello-robot.com/bshah/32/55_2.png) [@bshah](https://forum.hello-robot.com/u/bshah)\
**Post date:** [April 18, 2025, 4:31pm UTC](https://forum.hello-robot.com/t/software-drop-april-18-2025/1332/1 "2025-04-18T16:31:30Z")

</div>

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](https://canada1.discourse-cdn.com/flex030/uploads/hello_robot2/original/1X/5568e6fbd878084484a121b06199b4bce6bcb6d2.jpeg)](https://github.com/hello-robot/stretch_web_teleop/)

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](https://en.wikipedia.org/wiki/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](https://github.com/hello-robot/stretch_web_teleop/pull/103). The default is still local signaling. If you’re interested in the Firebase signaling, please reach out!

## New login & homepages in the web interface

| Login | Homepage |
| --- | --- |
| ![image](https://canada1.discourse-cdn.com/flex030/uploads/hello_robot2/original/1X/dc5e7dbdbd3c62d5d4d34f55b9ab5a4c7bc7b61a.png) | ![image](https://canada1.discourse-cdn.com/flex030/uploads/hello_robot2/original/1X/fa3520d87d74cb5a3a2146c70872075dbaff7d75.png) |

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.

 ![image](https://canada1.discourse-cdn.com/flex030/uploads/hello_robot2/original/1X/c891f2ccfb1ad6c9057a3157ebfb09cae2045fcd.png)

These pages should be considered “alpha” code (i.e. work in-progress). Details can be found in the [source code](https://github.com/hello-robot/stretch_web_teleop/pull/115).

## Better OS upgrades

When using Stretch Install to upgrade to a [new Stretch Operating System](https://docs.hello-robot.com/0.3/installation/robot_install/), 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](https://github.com/hello-robot/stretch_install/pull/89).

## Shoulder CAD

 ![image](https://canada1.discourse-cdn.com/flex030/uploads/hello_robot2/original/1X/e7b109ad5961a7ce72a44bdd9f40d976a90ceea9.jpeg)

CAD files for the Stretch shoulder can be found on the [tool share](https://github.com/hello-robot/stretch_tool_share/tree/master/tool_share/stretch_shoulder). Drawing of the hardware mounting points have been added to the [Extending Stretch with Additional Hardware](https://docs.hello-robot.com/0.3/extending_stretch/extending_stretch_additional_hardware/#shoulder) 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](https://github.com/hello-robot/stretch_ros2/pull/184).

For examples on using trajectory mode, check out the [unit tests here](https://github.com/hello-robot/stretch_ros2/blob/humble/stretch_core/test/test_action_trajectory_mode.py).

## Tutorial for debugging in ROS2

 ![image](https://canada1.discourse-cdn.com/flex030/uploads/hello_robot2/original/1X/d3d881f5ee915ad1d0333667f4e0b139ee4ae5ae.png)

The new [Debugging in ROS](https://github.com/hello-robot/stretch_ros2/blob/humble/docs/tutorial_ros_debugging.md) 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](https://github.com/hello-robot/stretch_ros2/pull/187).

Get the fix by [updating your ROS workspace](https://docs.hello-robot.com/0.3/installation/ros_workspace/).

## Many small fixes in Stretch’s Python libraries

See each PR for details:

- [Added docstrings to enable\_sync\_mode and disable\_sync\_mode to explain what they do. by hello-robot-shehab · Pull Request #363 · hello-robot/stretch\_body · GitHub](https://github.com/hello-robot/stretch_body/pull/363)
- [base.status['effort'] is now updated in \_\_update\_status() by hello-robot-shehab · Pull Request #371 · hello-robot/stretch\_body · GitHub](https://github.com/hello-robot/stretch_body/pull/371)
- [Added a null-check on the output of get\_wheel\_segments() to avoid an unhandled exception. by hello-robot-shehab · Pull Request #372 · hello-robot/stretch\_body · GitHub](https://github.com/hello-robot/stretch_body/pull/372)
- [Base::stop\_trajectory() now resets the wheel positions to allow follow\_trajectory() to be called again. by hello-robot-shehab · Pull Request #369 · hello-robot/stretch\_body · GitHub](https://github.com/hello-robot/stretch_body/pull/369)
- [Disallow 1M baud for dxl\_set\_baud CLI by hello-binit · Pull Request #101 · hello-robot/stretch\_factory · GitHub](https://github.com/hello-robot/stretch_factory/pull/101)

Get the fixes by [updating your Python libraries](https://docs.hello-robot.com/0.3/software/updating_software/#python-libraries).

## Many small fixes in ROS2 packages

See each PR for details:

- [Update manipulation planning gripper links mapping by hello-fazil · Pull Request #195 · hello-robot/stretch\_ros2 · GitHub](https://github.com/hello-robot/stretch_ros2/pull/195)
- [Set QT Plugin path from Streth Driver launch by hello-fazil · Pull Request #191 · hello-robot/stretch\_ros2 · GitHub](https://github.com/hello-robot/stretch_ros2/pull/191)
- [Default to uncalibrated urdf / params by hello-binit · Pull Request #186 · hello-robot/stretch\_ros2 · GitHub](https://github.com/hello-robot/stretch_ros2/pull/186)
- [Remove Unused Teleop Type Param in Mapping Launches by hello-vinitha · Pull Request #183 · hello-robot/stretch\_ros2 · GitHub](https://github.com/hello-robot/stretch_ros2/pull/183)
- [Remove Teleop Twist Joystick in Mapping Launches by hello-fazil · Pull Request #165 · hello-robot/stretch\_ros2 · GitHub](https://github.com/hello-robot/stretch_ros2/pull/165)

Get the fixes by [updating your ROS workspace](https://docs.hello-robot.com/0.3/installation/ros_workspace/).
