The changes between releases of Stretch Body are documented here.
0.7.13 - May 7, 2024
- This PR robot process protection to multi-user setup. Currently, if you have an ongoing connection to the robot, and attempt to launch another application that needs to connect to the USB hardware, the second attempt will not connect and will let the user know that an ongoing connection already exists. This is because only one connection to the hardware can safely communicate at a time. Therefore, this protects the first connection from experiencing dropouts or interruptions. The warning also informs the user that they can kill the first connection using the
stretch_free_robot_process.py
CLI. - All of the above protections work well on single user set-ups, which is the default Stretch ships with. However, it's common in developer teams that are sharing the robot to want to create multiple Unix users on the robot. This PR enables all of the same protections and CLIs that worked previously to now work with multi-user setups.
0.7.11 - Feburary 20, 2024
- Introduce the
stretch_configure_tool.py
tool (pr #287)- This PR introduces a new CLI called stretch_configure_tool.py. It eliminates a pain point around changing the robot.tool parameter and updating the URDF (and exported URDF).
- This tool supports all three models, all officially supported tools, Ubuntu 20.04 and 22.04.
- Add "Tool" section to the system check
- Add the ability to change the formatter for the logging params
0.7.2 - January 26, 2024
- Fix for wait_command() timeout not being respected (issue #255)
- Improvements to the System Check tool, including:
- Check if hello stepper self recognize correctly
- Check if OV9782 camera seen for Stretch 3s
- Update pip recommendations
- Hide verbose printout
- Add battery section to hardware check
0.7.0 - January 25, 2024
- Introduces P5 firmware protocol support
- Revamped system check tool
- Revamped wrist/tool management system
- Started development on a self collision avoidance system
- Utilities and CLI to introspect UVC cameras
- Support for Dex Wrist 3
0.6.8 - December 7, 2023
- Deprecate
robot.is_calibrated()
and introducerobot.is_homed()
to match homing nomenclature used elsewhere (details) - Added a
robot.wait_command()
method to easily block process execution until motion is completed (details) - Added Dex Wrist URDF visualization to the
stretch_robot_urdf_visualizer.py
tool - Automatic checking for updates in background while homing + user notification about out-of-date software in
stretch_robot_system_check.py
(details) - Add mutex locking on Stretch Body + introduce
stretch_free_robot_process.py
tool (details)
0.6.2 - September 11, 2023
- Introduces the new set of Gamepad modules to teleop stretch using the provided physical gamepad or any other UI input devices. This gamepad controller primarily uses velocity control.
- The stretch_gamepad_teleop.py tool is added and we are deprecating the old position control based stretch_xbox_teleop_controller.py
- The new controller now has a precision mode, allowing users to make fine-grain robot motions.
0.6.0 - October 7, 2023
This is the initial productioon release that supports Prince batch.
- Introduces the P4 firmware protocol support
- Adds Prince batch params and new pimu IMU support
0.5.0 - July 11, 2023
- Introduces the use_asyncio mode that will enable using asynchronous IO call methods to perform robot push/pull commands and RPC transactions with the help of
asyncio
to speed up the USB device communications. This mode can be toggled back to use the regular non-async IO calls by changing the stretch paramsuse_asyncio
. - By default, the asyncio mode is enabled.
- Adds the P3 protocol support for all the Arduino devices (stepper, pimu, wacc).
- Also, for the asynchronous transport layer to work, the devices firmware will need to support V1 transport protocol that is supported with firmware only above v0.5.0p3 for all hello-* arduino devices. For older firmwares, the
async_io
would be disabled automatically - The DXLStatusThread of robot class is now separated into two threads: DXLHeadStatusThread and DXLEndofArmStatusThread (Both threads run at 15Hz).
- Now the robot monitor, trace, sentry, and collision manager handles stepping is moved out of the NonDXLStatusThread. Instead, it is moved to a new separate thread called SystemMonitorThread is used to step these handles, which also runs at 25Hz.
- The Robot class can be
startup()
with the optional parameters to turn off some threads to save system resources. - Added status_aux pull status RPCs feature for all the devices.
motor_sync_cnt
andmotor_sync_queues
status messages are populated with AUX pull status - Now the RPC transactions queues is deprecated, instead
do_pull_transaction_vX()
anddo_push_transaction_vX()
methods are used from the SyncTransactionHandler. - Asynchournous RPC transactions are handled by AsyncTransactionHandler that create analougus async methods to the one present in SyncTransactionHandler.
0.4.8 - Sept 14, 2022
This is the initial production release that supports the Stretch RE2 (Mitski batch).
-
This includes the
robot_params_RE2V0.py
which are the initial robot settings for the RE2 version of the product. -
It introduces the PrismaticJoint class which consolidates the common Arm and Lift functionality.
-
It changes the units for guarded contact motion from approximate Newtons (suffix _N) to
effort_pct
- the pecentage [-100,100] of maximum current (A) that a joint should stop at. This change requires RE1 users to migrate their code and robot parameters. See the forum post for more details. -
It introduces
mkdocs.yaml
to support serving the repository documenation via MKDocs.
It introduces several new features and fixes several bugs, notably:
- Adds
wait_until_at_setpoint()
to the Arm and Lift classes - Adds use of argparse with all tools
- Moves Robot thread rates to YAML
- Cleans up the splined trajectory interface, enables velocity controlled splined trajectories for the Dynamixels
- Flags a warning for users incorrectly setting the homing offset on DXL servos
0.3.4 - July 20, 2022
Release to add minor features and fix minor bugs:
- Add a
range_pad_t
parameter to allow for padding of hardstops for joint homing - Clean up tools and warnings to more consistent and legible #140
0.3.0 - June 21, 2022
This release moves Stretch Body to use a new parameter management format. This change will require older systems to migrate their parameters to the new format. For systems that haven't yet migrated, Stretch Body will exit with a warning that they must migrate first by running RE1_migrate_params.py
. See the forum post for more details.
Features:
0.2.1 - January 6, 2022
Release to fix two bugs:
- Fix goto commands in the head jog tool #128 - Fixes goto commands in the head jog tool
- Fix port_handler location #121 - Fixes dxl buffer resetting under a serial communication failure
0.2.0 - December 28, 2021
This release brings support for waypoint trajectories into master. Support for waypoint trajectories was built up over the last year in the feature/waypoint_trajectories_py3 branch, however, this branch couldn't be merged because the new functionality had flaky performance due to subtle bugs. This branch also attempted to introduce support for Python3 and timestamp synchronization. Support for Python3 and other features were merged in v0.1.0. The remaining features from this branch have been broken into 7 PRs, each targeting a specific device and squashing any previous bugs through functional and performance testing. They are:
- Introduce waypoint trajectory RPCs #98
- Add individual device threading #105
- Trajectory management classes #106
- Lift and arm trajectories #110
- Dynamixel trajectories #113
- Mobile base trajectories #114
- Whole body trajectories #115
This release also fixes several bugs. They are:
Testing:
Each PR in this release was tested on multiple robots, but was primarily tested on G2, on Python 2.7/Ubuntu 18.04.
0.1.11 - October 4, 2021
This release gives Stretch Body the ability to support multiple firmware protocols, which at this moment is P0 and P1 firmware. P1 firmware builds on P0 to add waypoint trajectory support and a refactoring of controller functionality into classes. Additionally, this PR fixes how Dynamixel motors calculate velocity from encoder ticks.
Features:
Bugfixes:
0.1.10 - September 23, 2021
This release introduces 3 features:
- #68 and #95: Introduces two new Jupyter notebooks that can be used to interactively explore working with Stretch. See forum post for details.
- #94: Introduces Github Action files and docs. Will be enabled in the future to automatically test PRs.
- #66: Improves the statistics captured on Stretch Body's performance. Will be used to measure improvements to Stretch Body's communication with low level devices.
Bugfixes:
- #90: Patches a bug where triggering
pimu.trigger_motor_sync()
at to high of a rate puts the robot into Runstop mode. - #101: Fixes bugs on startup of Dynamixel devices, ensures status is populated on startup of all devices, and add bool to
robot.startup()
Testing:
All unit tests run on Python 2.7.17 on Ubuntu 18.04 on a Stretch RE1.
0.1.6 - August 26, 2021
This release introduces these features:
- Revised soft limits and collision avoidance
- Added velocity interfaces for arm and lift
Bugfixes:
- Better error handling for DXL servos and their tools
- Fix bug where dxls maintain previous motion profile
0.1.4 - July 20, 2021
This release introduces six features and several bugfixes. The features are:
- Robot self-collision model and tutorial
- Add ability to runstop individual DXL servos
- Merged py2 and py3 tools
- Added instructions for developing/testing Stretch Body
- Collision avoidance tutorial
- Improve realsense visualizer
Bugfixes:
0.1.0 - May 30, 2021
This release introduces eight major features and several bugfixes. The features are:
- Python param management
- Configurable baud rate/GroupRead on Dynamixels
- Pluggable end effector tools
- Pluggable end effector support in Xbox Teleop
- Python logging
- Soft motion limit
- Self collision management
- Unit testing framework - as part of each PR
Bugfixes:
- Multiturn enable_pos bug (#12) & unit tests
- Misc bugs
- Other - as part of the features
Testing:
All unit tests run on Python 2.7.17 on Ubuntu 18.04 on a Stretch RE1.