8.3.0
· 4 min read
Major Features
Quick Add Behaviors
Introducing a more streamlined way to build Behavior Trees using a “+” button directly next to applicable Behaviors, like Sequences
. This button opens a searchable dialog for quickly adding behaviors inline, reducing the need to manually drag nodes in.
Ability to Move from Subtree Back to Parent Behavior Tree
You can now easily navigate back to a parent Behavior Tree after drilling into a subtree. Users previously found it unintuitive to use the browser back button.
Track a Pose While Avoiding Obstacles
The new MPCPointCloudClearance
Behavior tracks a pose in real-time while avoiding a point cloud using model predictive control (MPC). An example Objective is now available in lab_sim
.
Enhancements
UI Changes
- Improved the appearance of errors, warnings, and info messages that are published to the UI from the
LoggerROS
class.
Behaviors
New Behaviors
- The
MPCPointCloudClearance
Behavior tracks a pose while avoiding a point cloud using model predictive control. - Adds Decorator
ForEachUntilSuccess
for iterating through vectors and until the subtree succeeds on an element.
Behavior Changes
- The
ActivateControllers
Behavior has been deprecated in favor of theSwitchController
Behavior, which provides more flexibility in managing controller activation / deactivation. Please switch to using theSwitchController
Behavior in your applications. - A new
Joint Velocity Controller
allows for the control of robot joints using velocity setpoints. It takes as input desired joint velocities in acontrol_msgs/JointJog
message and computes the next joint positions and velocities to send to the robot, while respecting the robot's joint velocity and acceleration constraints. This controller can be used for collecting ML teleoperation training data, or in conjunction with higher-level closed-loop controllers such as visual servoing or learned policies.
Documentation Improvements
- Improved the Tool Changing guide to describe how it can be used for other tools like vacuum grippers.
- Added a troubleshooting item for ros2 cli verbs reporting incorrect output.
Other Improvements
- This release includes a new controller, the Joint Velocity Controller, which allows for the control of robot joints using velocity setpoints.
It takes as input desired joint velocities in a
control_msgs/JointJog
message and computes the next joint positions and velocities to send to the robot, while respecting the robot's joint velocity and acceleration constraints. This controller can be used for teleoperation or in conjunction with higher-level closed-loop controllers such as visual servoing or learned policies. - Deleting a port from an objective will also remove the port everywhere the objective is used as a subtree.
PlanCartesianPath
and other Behaviors using Path IK (e.g.SetupMTCMoveAlongFrameAxis
) now support tip links that are not in the planning group, but are descendants of it.
Bug Fixes
- Fixes bug where sometimes changing an Objective's name would toast an error that it is not found.
- Fixed a bug where a list of IP addresses passed to the CycloneDDS configuration generator script could include extraneous whitespace.
- Fixed a bug where logs generated by the
LogMessage
behavior don't show as expected in the UI. - FollowJointTrajectoryWithAdmittance action calls will populate the feedback time_from_start with the trajectory point's desired time_from_start.
- Fixed a bug where it was possible to crash the objective editor by adding an objective to itself as a subtree.
- Fixed a bug where a MarkerArray that included multiple markers with the same namespace and id would not display correctly. Note: that we're not sure allowing multiple markers with the same namespace and ID is deliberate in RViz, but we ensured that we now have the same behavior.
- Fixed a few visual and performance issues in the AppendOrientationConstraint interactive constraint builder.
- The blackboard viewer now displays type information for types without a registered JSON serializer in BehaviorTree.CPP.
- Fixed an issue where
SetupMTCMoveAlongFrameAxis
would throw an exception under some conditions. - Fixed some performance issues with the UI parsing Nav2 map updates.
Migration Notes
- The
ActivateControllers
Behavior has been deprecated in favor of theSwitchController
Behavior, which provides more flexibility in managing controller activation / deactivation. Please switch to using theSwitchController
Behavior in your applications. - Controller names given as input to Subtrees and Behaviors (e.g. in a
controller_names
port) no longer need to be prefixed with a slash. Existing pipelines will still work with the old format for backwards compatibility, but it is recommended to use the new format for consistency, e.g.controller_names="/joint_trajectory_controller"
should be changed tocontroller_names="joint_trajectory_controller"
. This change will be enforced in the next breaking release (9.0).