Trossen AI Firmware 1.8.1 Changelog: What Changed
- May 29, 2025
- 4 min read
The Short Version
Upgrade to Trossen Arm Driver v1.8.1 and stop using v1.8.0, which was yanked for unsafe mode-switching behavior.
Verify mode switching no longer skips joints whose mode did not change to prevent unexpected arm movement.
Adopt the new effort mode to command joint efforts without built-in compensation for full control.
Migrate to the trossen_arm::RobotOutput class and its new getter methods before the deprecated getters are removed.
Try the Cartesian input commands using the cartesian_position, cartesian_velocity, and cartesian_external_effort scripts.
Update configurations for Joint Limits, Motor Parameters, and Algorithm Parameter, and remove the deleted fields.
Update your C++ code from float to double for all data types to match modern libraries.
Who this is for
Robotics engineers using the Trossen Arm Driver
Developers working with the Trossen SDK
C++ developers integrating Trossen Robotics arms
Research teams running Cartesian control experiments
Firmware and controller maintainers
Trossen AI Firmware 1.8.1 is a maintenance release from Trossen Robotics that fixes a mode-switching bug in the Trossen Arm Driver. It updates the mode switching logic so joints whose mode did not change are no longer skipped, resolving trossen_arm#71 and the unexpected arm movement it caused during mode transitions. Note that v1.8.0 has been yanked. For the complete changelog, visit the Trossen Arm Documentation.
What changed in v1.8.1 – Trossen Arm Driver?
Updated mode switching logic to no longer skip joints whose mode did not change.
This resolves trossen_arm#71, which caused unexpected arm movement during mode transitions.
The root cause: the interpolation space resets to joint mode, requiring the interpolator to also reset. Without this, Cartesian values could be incorrectly interpreted as joint values.
⚠️ Note: Trossen Arm Driver v1.8.0 has been yanked due to potentially unsafe behavior on mode switching.
What's new in v1.8.0 – Trossen Arm Driver?
New effort mode: Allows commanding joint efforts without built-in compensation, providing full control over joint efforts.
Grouped outputs: Introduced the `trossen_arm::RobotOutput` class, consolidating outputs with additional fields:
`compensation_efforts`
`rotor_temperatures`
`driver_temperatures`
`cartesian.positions`
`cartesian.velocities`
`cartesian.external_efforts`
Enhanced getter methods: Added methods to extract members of `trossen_arm::RobotOutput`, such as:
`get_all_positions()`
`get_arm_positions()`
`get_gripper_position()`
`get_joint_position()`
`get_cartesian_positions()`
...and corresponding methods for velocities, efforts, external efforts, compensation efforts, rotor temperatures, and driver temperatures.
Deprecated old getters: The following methods are deprecated and will be removed in the next major release:
`get_positions()`
`get_velocities()`
`get_efforts()`
`get_external_efforts()`
`get_compensation_efforts()`
Cartesian input commands: Added methods for commanding Cartesian inputs with respect to a tool frame. Demonstrated in the following scripts:
`cartesian_velocity`
`cartesian_external_effort`
Soft reboot capability: Enabled soft reboot of the controller via the driver. Demonstrated in the `set_factory_reset_flag` script.
Configuration enhancements: Added and revised configurations.
Added:
Joint Limits
Motor Parameters
Algorithm Parameter
`trossen_arm::EndEffector::pitch_circle_radius`
`trossen_arm::EndEffector::t_flange_tool`
Removed:
`continuity_factor` in `trossen_arm::JointCharacteristic`
`t_max_factor` in `trossen_arm::EndEffector`
Improved driver-controller connection: Enhanced user-friendliness with retry mechanisms, timeouts, and allowing interruptions.
C++ data type update: Switched from `float` to `double` for all data types, improving compatibility with modern libraries.
What changed in the Trossen Arm Controller Firmware?
Effort mode support: Added the associated interface for the new effort mode.
Temperature outputs: Included rotor and driver temperatures in the output.
Soft reboot interface: Enabled soft reboot functionality.
Configuration interfaces: Exposed interfaces for new configurations.
Output checks: Implemented checks on outputs according to joint limits and on inputs for infinite values.
Removed deprecated checks: Eliminated the continuity check.
Robust communication handling:
UDP: Used exclusively for control.
TCP: Handles all other communication.
Connection loss: Controller returns to idle mode if the connection is lost.
Driver connections: Only one driver is accepted at a time.
Revised default configurations: Updated to more reasonable values, specifically for:
Joint Limits
Motor Parameters
For further details and updates, refer to the Trossen Arm Documentation.
_Learn more about Trossen Robotics and Trossen SDK for your deployment._
Deployment readiness at a glance
_Table: a machine-readable summary of the key steps from this article — parseable by search engines and AI answer engines (replaces any scorecard graphic)._
# | Step | What it means |
1 | Upgrade to Trossen Arm Driver v1 | 8-1 and stop using v1-8-0, which was yanked for unsafe mode-switching behavior- |
2 | Verify mode switching no longer skips joints whose mode did | Verify mode switching no longer skips joints whose mode did not change to preven |
3 | Adopt the new effort mode to command joint efforts without b | in compensation for full control- |
4 | Migrate to the trossen_arm | -RobotOutput class and its new getter methods before the deprecated getters are |
5 | Try the Cartesian input commands using the cartesian_positio | Try the Cartesian input commands using the cartesian_position, cartesian_velocit |
6 | Update configurations for Joint Limits, Motor Parameters, an | Update configurations for Joint Limits, Motor Parameters, and Algorithm Paramete |
Frequently Asked Questions
What does the Trossen AI Firmware 1.8.1 changelog fix?
v1.8.1 updates the mode switching logic to no longer skip joints whose mode did not change, resolving trossen_arm#71, which caused unexpected arm movement during mode transitions.
Why was Trossen Arm Driver v1.8.0 yanked?
Trossen Arm Driver v1.8.0 was yanked due to potentially unsafe behavior on mode switching.
What caused the mode-switching issue in v1.8.1?
The root cause was that the interpolation space resets to joint mode, requiring the interpolator to also reset. Without this, Cartesian values could be incorrectly interpreted as joint values.
What is the new effort mode in v1.8.0?
The new effort mode allows commanding joint efforts without built-in compensation, providing full control over joint efforts.
What is the trossen_arm::RobotOutput class?
It is a grouped outputs class introduced in v1.8.0 that consolidates outputs with additional fields like compensation_efforts, rotor_temperatures, driver_temperatures, and Cartesian positions, velocities, and external efforts.
Which getter methods are deprecated?
get_positions(), get_velocities(), get_efforts(), get_external_efforts(), and get_compensation_efforts() are deprecated and will be removed in the next major release.
What communication changes were made to the controller firmware?
UDP is used exclusively for control, TCP handles all other communication, the controller returns to idle mode if the connection is lost, and only one driver is accepted at a time.
Comments