Software drop - August 23, 2024

Hey all,

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

New features in Stretch Web Teleop

Stretch’s web interface has received a plethora of upgrades and bugfixes throughout the summer. Some highlight features include

  • click-to-pregrasp: an autonomous behavior that greatly reduces the teleop burden on the operator to pickup & grasp objects
  • robot-to-operator audio streaming: which gives operators the ability to hear everything going on around the robot
  • operator-to-robot text-to-speech: which gives operators the ability to talk through the robot, simply by typing out what they want the robot to say
  • tablet end-effector: replaces the gripper with a 10" tablet, and enables the operator to orient the tablet portrait or landscape, while using the autonomous show tablet behavior to present the tablet to users

More details can be found in Amal and Matt’s end of internship posts.

Streaming Mode in ROS2 Driver

Stretch’s ROS2 driver now includes a new streaming mode, as an alternative to the Follow Joint Trajectory (FJT) action server. Joint goals can be streamed to the /joint_pose_cmd topic as Float64MultiArray messages. The mode can be used in conjunction with “position” and “navigation” modes, but cannot accept commands from the FJT and the streaming topic simultaneously. More details on using this mode can be found here.

Fix for FJT Thread Starvation Bug

Stretch’s ROS2 driver includes a Follow Joint Trajectory (FJT) action server for commanding motion goals. There’s a particular kind of use-case that can cause the driver to stall motion execution for up to 10 seconds (the timeout for the driver). If you’re frequently changing driver modes while sending motion commands, a race condition can occur where the driver gets locked up until the FJT server times out. More details here.

The fix has been released! Update your ROS workspace to begin using it.

Fix for Splined Trajectory Tracking with Stretch 3

Stretch’s API has a “waypoint trajectory” mode, where you can give the robot a series of spline-defining waypoints, with velocity and acceleration constraints, and it will track the trajectory. With Stretch 3, the firmware for tracking the trajectory was being interrupted by guarded contacts because of several issues in other parts of the firmware. More details here.

The fix has been released! Update your firmware to begin using it.

Fix for FJT Exiting Bug

On Ctrl-C-ing out of Stretch’s ROS2 driver, you may have seen exceptions appear when the shutdown logic executed. This exception can be confusing when you’d expect the program to end quietly. It has been fixed in this PR.

This fix has been released! Update your ROS workspace to begin using it.

Fix for conflicting Pip dependencies

When updating Stretch’s Python libraries through pip, or installing other Python packages that conflict with Stretch’s pip dependencies, you might see errors related to numpy or trimesh. Most commonly, you might need a newer version of numpy, than the version being used by Stretch’s Python libraries. When these errors appear, it’s the pip package manager leaves finding a solution to the user. To avoid these errors, we’ve updated the pinned version of Python dependencies, and removed pins where-ever we could. More details can be found in this PR.

The fix has been released! Update your Python libraries to begin using it.