Skip to content

Latest commit

 

History

History
200 lines (140 loc) · 16.6 KB

CHANGELOG.md

File metadata and controls

200 lines (140 loc) · 16.6 KB

Changelog

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 introduce robot.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 params use_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 and motor_sync_queues status messages are populated with AUX pull status
  • Now the RPC transactions queues is deprecated, instead do_pull_transaction_vX() and do_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:

0.3.4 - July 20, 2022

Release to add minor features and fix minor bugs:

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:

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:

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:

  1. #68 and #95: Introduces two new Jupyter notebooks that can be used to interactively explore working with Stretch. See forum post for details.
  2. #94: Introduces Github Action files and docs. Will be enabled in the future to automatically test PRs.
  3. #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:

  1. #90: Patches a bug where triggering pimu.trigger_motor_sync() at to high of a rate puts the robot into Runstop mode.
  2. #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:

Bugfixes:

0.1.0 - May 30, 2021

This release introduces eight major features and several bugfixes. The features are:

  1. Python param management
  2. Configurable baud rate/GroupRead on Dynamixels
  3. Pluggable end effector tools
  4. Pluggable end effector support in Xbox Teleop
  5. Python logging
  6. Soft motion limit
  7. Self collision management
  8. Unit testing framework - as part of each PR

Bugfixes:

  1. Multiturn enable_pos bug (#12) & unit tests
  2. Misc bugs
  3. Other - as part of the features

Testing:

All unit tests run on Python 2.7.17 on Ubuntu 18.04 on a Stretch RE1.