Hey all,
Here’s a quick round-up of some of the new software that’s been released for Stretch these past few weeks.
Homing Button in the Web Interface
Stretch goes through a homing sequence when it’s powered on; typically using the stretch_robot_home.py
CLI. However, SSH-ing into the robot and running a CLI can be a tough user experience for those who are not developers. Now, the web interface shows a “Home” button that looks like this:
Afterwards, the alert disappears and you can teleoperate the robot as usual. Update your ROS workspace to get this feature.
Loose Charge-plug Safety Feature
For Stretch 3 robots, a new safety feature has been added to the firmware that can prevent heat damage to your robot’s charge-port by letting you know when the charger cable is loose in the charger port. If the cable is loosely plugged in, the status LED bar will flash red to let you know.
Simply, unplug the cable and plug it back in firmly. Update your firmware to get this safety feature.
Fix for ROS2 Callback groups
Stretch’s ROS2 driver had a bug where its topics would cease to publish when the driver was performing certain actions. For example, calling the driver’s /home_the_robot
service would cause its /is_homed
//mode
/etc. topics to stop publishing messages until the homing sequence completed. The reason behind this bug was the driver’s callback groups were set up incorrectly. In the ROS2 world, you must choose your executor and callback group architecture carefully to ensure performance and avoid deadlocks. Details on how the architecture was changed can be found in the PR. Update your ROS workspace to get this fix.
Fix for Wheel Whine in ROS2 Velocity Control
When a velocity goal is sent to Stretch’s ROS2 driver, the wheels attempt to achieve it using PID controllers in the firmware. The controller tries to close the error between the commanded position and the current one, but this isn’t always possible. For example, if the goal requires the robot to be within an obstacle, the controller will push against the obstacle, making no progress, and emitting a whining noise from the wheel motors. Or another example, on carpet, the controller will find it difficult to achieve the goal exactly, due to the soft flooring. Unable to close the small error, but trying all the same, the wheel motors emit a noise. Tuning the PID parameters is no good because what works well on carpet will overshoot on hardwood, and vice versa.
In this fix, we relax the controller 0.5 sec after the user stops sending velocity commands, eliminating the wheel noise. So applications building on the /cmd_vel
velocity interface (e.g. Navigation2) will see this annoying wheel whine disappear. Update your ROS workspace to get this fix.
Fixes for FUNMAP Numpy Incompatibility Bugs
Recently, Stretch has switched to using a newer version of Numpy across its software stack. In the Stretch FUNMAP package, there were a few instances of older Numpy API that began to raise deprecation errors. Details can be found in these PRs: 1, 2, 3. Update your ROS workspace to get these fixes.
QoL Updates in Web Teleop
Two quality-of-life (QoL) updates for developers recently merged into Web Teleop. They include:
- A
tsconfig.json
to help IDEs like VS Code correctly resolve all paths and modules within the Web Teleop codebase - Disabling the Lidar driver if Nav2 isn’t being used. This makes the console log easier to parse and doesn’t start spinning the Lidar sensor.
Update your ROS workspace to get these updates.