Skip to main content

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.

Quick Add Behaviors

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.

Ability to Move from Subtree Back to Parent Behavior Tree

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.

Track a Pose While Avoiding Obstacles

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 the SwitchController Behavior, which provides more flexibility in managing controller activation / deactivation. Please switch to using the SwitchController 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 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 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 the SwitchController Behavior, which provides more flexibility in managing controller activation / deactivation. Please switch to using the SwitchController 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 to controller_names="joint_trajectory_controller". This change will be enforced in the next breaking release (9.0).