Skip to main content

8.4.0

· 7 min read

Major Features

A ton of exciting new UI features are included in this release!

Support for multiple planning groups in IMarker Teleoperation

The Interactive Marker (IMarker) teleoperation panel now supports multiple planning groups and end effectors, allowing users to select which planning group to teleoperate.

Switching between planning groups in IMarker

Disable Subsections of your Behavior Tree

A long requested feature during development and testing cycles, you can now comment and uncomment individual Behaviors, including entire subtrees of functionality. This aids in easier and faster debugging and development.

Disable Subsections of your Behavior Tree

View All Behavior Ports

By default MoveIt Pro hides ports beyond the top 5, in order to keep the Behavior Tree compact and more viewable. However there are use cases, such as when searching with Ctrl+F or creating documentation, where you might want to expand all ports on each Behavior. You can now use the checkbox to "Show All Ports" in the Behavior Tree editor menu!

View All Behavior Ports

Use Quaternions Easier with RPY

Quaternions are not intuitive for humands, but roll pitch yaw is. We've added a popup UI dialog that allows you to enter orientation values instead of Quaternions.

Use Quaternions Easier with RPY

Inline Documentation for Subtree Ports

When adding and editing sub-trees, the port descriptions and port types are now UI-visible for sub-tree remapped ports. This makes working with subtrees much more intuitive.

Inline Documentation for Subtree Ports

Show/Hide URDFs and Point Clouds

It's now possible to hide the URDF robot model and any visualized point clouds from the visualizer from the newly renamed "View" menu.

Show/Hide URDFs and Point Clouds

Edit Behavior Tree Comments in UI

You can now edit comments directly in Behavior Tree editor, improving the readability and in-line documentation capabilities of MoveIt Pro.

Edit Behavior Tree Comments in UI

Enhancements

  • When launching the example workspace after an upgrade, you will now be prompted if you want to upgrade the example workspace.

Other UI Changes

  • Added a pin button to keep the objectives sidebar open during objective execution.
  • The Expand/Collapse All button in the behavior tree sidebar now automatically hides during search operations and reappears when the search is cleared, providing a cleaner and more focused search experience.
  • Increases clickable area of sidebar buttons
  • Points in a visualized point cloud will be slightly larger now, making the point cloud more visible.
  • Add UID display to node names in Behavior Tree status view for better correlation with Blackboard viewer
  • Add clearer warning to inform users they must build after creating a new Behavior

Reference Application Changes

  • New example configs: Franka FR3 Single Arm and Dual Arm (formerly the "Panda" robot)
  • Adds "ML Auto Grasp Object from Clicked Point" example Objective for using machine learning grasp inference with click based image and point cloud segmentation.

New Behaviors

  • Added GetContourFromPointCloudSlice, which creates a planar contour that is offset around a point cloud slice. This can be used to generate tool paths for surface treatment operations.
  • Added ReversePoseStampedVector to reverse the direction of a vector of poses, such as a Cartesian path.
  • Added CropPosesInBox to filter a vector of poses, such as a Cartesian path, based on a bounding box.

Behavior Changes

  • Enhanced VisualizePath to accept a name input to visualize multiple paths at once, and to optionally show the poses with orientation axes in addition to the path line.
  • Removed non-functional GetMasks2DAction, ShapeCompletionAction, and CalibratePoseAction behaviors.
  • The MergePointClouds Behavior now exposes an option to align the point clouds using ICP when merging them. This can be used to incrementally register multiple point clouds to each other and minimize the alignment error.
  • The SolveIKQueries Behavior has been updated to use our most recent IK pipeline, and now exposes a new port called check_collisions to enable or disable collision checking during IK solving.
  • Adds a publisher timeout parameter to the GetImage behavior to configure how long to wait for an image publisher to advertise.
  • SaveToYaml behaviors now have an optional overwrite port that users can set to false in order to append to existing YAML files. Previously, these behaviors would always overwrite the file.
  • The Joint Trajectory Admittance Controller (JTAC) can now control chains that don't start at the URDF root. This required adding a new planning_group_name configuration parameter to the JTAC config, with the name of the planning group that the JTAC will control. This planning group name must be a valid group defined in the SRDF file. The joints config parameter is no longer required, since the JTAC will automatically determine the joints from the planning group.
  • The JTAC can now control non-serial chains when admittance is disabled, such as 2 robot arms mounted to a mobile base.

Documentation Improvements

  • Added How-To guide on using GetGraspPoseFromPointCloud to automatically infer grasp poses using machine learning from point clouds.
  • Expanded "Runtime SDK & Extensions" tutorial and moved it to Tutorial 2.
  • Expanded "Motion Planning" tutorial with more detail including table on all types of planners and solvers
  • Added heartbeat info to SDK tutorial
  • Added documentation for moveit_pro_ci and moveit_pro_lint
  • Update mujoco migration guide for mobile base
  • Reorder and improve 'Tool changing' docs to make it more clear how it works and how it can be used for vacuum grippers

Other Improvements

  • Hardware acceleration for Radeon GPUs is enabled by default. The digital twin simulation engine will use discrete graphics cards (NVIDIA or AMD) when available, otherwise all computation is done on the CPU.

Bug Fixes

  • Fixed a number of bugs relating to specifying objective parameters in the UI. Reminder: LoadObjectiveParameters is deprecated and is planned for removal in 9.0.
  • SwitchController should no longer time out on service discovery on slower machines.
  • It is no longer possible to edit built-in MoveIt Pro Objectives that core functionality depends upon. If you would like to create your own version, duplicate the objective.
  • Improved performance of the SetAdmittanceParameters and AppendOrientationConstraint behaviors' interactive parameter editors in the UI.
  • Fixed bug where SaveToYaml behaviors overwrite YAML files instead of appending to them when a namespace is specified.
  • Fixed a UI crash that could occur if a custom C++ behavior included invalid HTML in its description field.
  • Fixes deadlock seen with GetImage by allowing halting.
  • Failure to look up the Objectives directory of your config package while creating an Objective now contains more useful information.
  • Fixed a bug related to undoing and redoing changes to objectives in the Build tab while also adding nodes via the add button.

Migration Guide

  • The Joint Trajectory Admittance Controller (JTAC) config now accepts a planning_group_name parameter, which is the name of the planning group that the JTAC will control. The joints and base_frame parameters are now deprecated. If your ros2_control.yaml file defines a Joint Trajectory Admittance Controller, please update it to include the planning_group_name parameter. The deprecated joints and base_link parameters will be removed in the next major release.
  • Reminder: LoadObjectiveParameters is deprecated and is planned for removal in 9.0.

8.3.1

· One min read

Bug Fixes

  • Fixed a handful of bugs in the satellite servicing simulation example.
  • Fixed a UI crash that could occur if a custom C++ behavior included invalid HTML in its description field.

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).

8.2.0

· 4 min read

Major Features

Multi-Window Support

Feeling crunched on screen space, but have multiple monitors? There is now a "New Window" option in the settings menu that opens MoveIt Pro in a new tab. This is useful, for example, in having one screen for editing and monitoring large Behavior Trees, and a second screen for monitoring camera feeds and visualizations. Note: it is recommended that you don't have the same view pane type open on multiple windows, as there are currently some known limitations.

Multi-Window Support

Full Screen Mode

There is now a button to switch between full screen and windowed mode in the settings menu, allowing for more screen space and enhancing usage as a robot operator terminal.

Full Screen Mode

Enhancements

Behavior Changes

  • GeneratePointToPointTrajectory can now take a target_state that contains a subset of the joints in the planning group. The positions and velocities of all joints not included in the target_state will be set to the start_state values.
  • Add a configurable timeout parameters to the CallTriggerService Behavior.
  • Make waitForServerAvailableTimeout configurable in ServiceClientBehaviorBase through optional getWaitForServerAvailableTimeout function.

Other Improvements

  • Added a new spline trajectory fitting class that fits piecewise splines to a set of points using convex optimization, and ensures no dynamic memory allocation during optimization or evaluation.
  • Added support for retrieving metadata from ONNX models, including custom metadata entries and model version information.
  • Added moveit_pro_ml::DiffusionPolicy to the moveit_pro_ml package. This class exposes an interface for running a diffusion policy to generate trajectories.
  • Reduces peak VRAM memory consumption when running ML models
  • Bump ROS 2 Humble snapshot to 2025-05-16.
  • The version number for MoveIt Pro is printed to the terminal when moveit_pro run is called.

Bug Fixes

  • Fixed caching problem causing updated server-side meshes not to appear in the UI.
  • Fixed an issue where deleting a subtree and undoing only adds back the node without its edges.
  • Fixed an issue in the CreateJointState behavior where the created RobotJointState did not contain the names the user specified on the 'names' input port.
  • Fixed an issue where extra binaries were being installed and overwriting parts of our source build, breaking the moveit_core and moveit_ros_planning targets. No migration is required.
  • Fixed large stack traces caused by unhandled exceptions in launch files.
  • The Velocity Force Controller (VFC) now can control chains that don't start at the URDF root. This required adding a new planning_group_name configuration parameter to the VFC config, with the name of the planning group that the VFC will control. This planning group name must be a valid group defined in the SRDF file. The joints config parameter is no longer required, since the VFC will automatically determine the joints from the planning group.
  • Fixed some performance issues in simulation which resulted in TFs being published at a slower rate.
  • Timestamps for image and point cloud messages from simulation cameras are more accurate.
  • Fixed an issue where commands in the MoveIt Pro shell can overwrite characters in the terminal prompt.
  • Fixed an issue where deleting the build artifacts would leave the install artifacts, resulting in a broken state.
  • Fixed an issue where the Rest API failed to format objective XML files and printed "Error formatting XML file..." in the terminal.
  • Fixed issue of marker not appearing in the UI when being added immediately after a marker delete message.
  • Fixed issue where toasts would not immediately clear with dismiss button
  • Fixed zram-config breaking installation despite not being a required package, marking it properly as a recommended package.
  • Fixed Teleoperate settings button in Waypoint control mode - button is now properly disabled and grayed out while remaining visible.
  • RecordJointTrajectory uses the incoming message header for time stamps instead of system time.
  • Fixed issue where keepout zone IMarker would sometimes stop dragging

Migration Guide

  • The Velocity Force Controller (VFC) config now accepts a planning_group_name parameter, which is the name of the planning group that the VFC will control. The joints and base_link parameters are now deprecated. If your ros2_control.yaml file defines a Velocity Force Controller, please update it to include the planning_group_name parameter. The deprecated joints and base_link parameters will be removed in the next major release.

7.7.3

· One min read
info

This hotfix was released on July 30, 2025.

Bug Fixes

  • Fill in PlanCartesianPath debug solution only if output port is set.

6.5.3

· One min read

Bug Fixes

  • Fixed an issue where ROS dependencies aren't being installed due to an expired key.

7.7.2

· One min read

Bug Fixes

  • Fixed an issue where ROS dependencies aren't being installed due to an expired key.

8.1.1

· One min read

Bug Fixes

  • Fixed an issue where ROS dependencies aren't being installed due to an expired key.

8.1.0

· 4 min read

In this release we focused on stability fixes and burning down a lot of "tech debt."

Major Features

Full Screen View Pane

A new button was added that fullscreens each view pane to allow zooming in.

Fullscreen button

Camera Calibration Procedure

New Behaviors, Objectives, and how-to guide were added to support camera pose calibration.

Calibrating a camera with a Kinova arm in the space_satellite_sim example config.

Model Predictive Control (MPC) Now Available

Your robots can now plan motions by simulating how they’d move in the real world—before actually moving. This is thanks to a new predictive control feature powered by a high-fidelity physics engine. The result? Smarter, safer, and more adaptive robot behavior in real time. A new base MoveIt Pro Behavior class named MPCBehaviorBase was added to provide the necessary tools and Behaviors to implement MPC in your applications. The added functionality is demonstrated in a new behavior called MPCPoseTracking, which can be used to track a moving pose with MPC.

Enhancements

UI Changes

  • Attempting to save a planning scene to an existing filename now prompts the user to overwrite, instead of overwriting silently.
  • The "Suggested Nodes" menu in the builder has been removed due to lack of use, to conserve screen space.

New Behaviors

  • Add GenerateVacuumGraspPoses Behavior which will replace SetupMTCGenerateVacuumGrasps as an alternative that no longer depends on the deprecated LoadObjectiveParameters Behavior.
  • Add GenerateCuboidGraspPoses Behavior which will replace SetupMTCGenerateCuboidGrasps as an alternative that no longer depends on the deprecated LoadObjectiveParameters Behavior.
  • Add AveragePoseStampedVector Behavior to average a vector of PoseStamped.
  • Add CalibrateCameraPose to calibrate a camera optical pose using AprilTag poses of a calibration tool held by the robot end effector.
  • Add SavePoseForUrdf to save a PoseStamped in xyz rpy URDF format to file.
  • Add MPCPoseTracking for tracking a moving pose with MPC.

Deprecated Behaviors

  • LoadObjectiveParameters has been deprecated.
  • SetupMTCGenerateVacuumGrasps has been deprecated in favor of the new GenerateVacuumGraspPoses Behavior.
  • SetupMTCGenerateCuboidGrasps has been deprecated in favor of the new GenerateCuboidGraspPoses Behavior.
  • SetupMTCApproachGrasp and SetupMTCRetractFromGrasp have been deprecated in favor of SetupMTCMoveAlongFrameAxis.

Behavior Changes

  • The WaitForUserTrajectoryApproval Behavior now includes a port to specify a list of link names to draw their Cartesian path in the preview. This list defaults to end effector grasp_links in our example configs, but it supports any link.
  • The SwitchController Behavior now has an automatic_deactivation port (default: true) that will automatically deactivate any active controllers that are in conflict with the controllers being activated.

Documentation Improvements

  • New Tutorial: Developer Platform Usage

  • New Guide: Basic Troubleshooting

  • New Guide: Interacting with the Planning Scene

  • Errors logged during an objective executed through the DoObjectiveSequence action are collected and returned in the error_message of the result if the objective fails.

Bug Fixes

  • Fixed an issue where the teleoperation sidebar would not automatically appear when using RequestTeleoperation inside objectives other than Teleoperate.
  • Fixed a bug where VisualizeMesh could cause the entire robot visualization to reset briefly.
  • Added a visual spinner when cloning a user workspace to indicate the launcher has not frozen.
  • Added "Open Gripper" and "Close Gripper" stub objectives to the core MoveIt Pro objective library to fix Teleoperate not working out of the box for custom robots that do not have grippers.
  • In an objective's xml description is incorrect and there does not exist a BehaviorTree element with the same ID as what is set in the main_tree_to_execute root attribute, it will appear in the builder view under the "Parsing Error" category. Previously, such objectives would not appear at all.
  • Fixed a bug where the PoseJog marker would not be removed when the PoseJog Behavior was stopped.
  • Fixed a bug causing the Reset Marker not to work the second time it is pressed.
  • Fixed a bug where the allowed_collision_links in the AttachTool Behavior were not being set.
  • Fixed an issue where the initial_teleop_mode port in the RequestTeleoperation subtree was not being respected by the UI.
  • Fix a bug where the default tool_pose port of the AddToolToScene Behavior had a JSON string value instead of a blackboard value.

8.0.1

· One min read

Bug Fixes

  • Fixed an issue where the behavior tree status visualizer would throw an error when loaded.