8.7.1
Bug Fixes
- Fixed a python
ImportErrorfor the nameAnythat shows when installing MoveIt Pro.
ImportError for the name Any that shows when installing MoveIt Pro.Added support for multi-tip robots in the JTAC. This allows users to control robots with multiple end-effectors (tips) with different admittance properties for each tip / chain. This feature is only available when interfacing directly with the JTAC via ROS2 interfaces, and is not yet supported in MoveIt Pro Behaviors or Objectives.

The moveit_pro new config command allows you to quickly create robot configuration packages from a template.
This simplifies the process of setting up a new robot, automatically setting up the proper file structure and dependencies.

The moveit_pro update_acm command generates Allowed Collision Matrix (ACM) entries for SRDF files. This tool analyzes robot geometry and kinematics to identify link pairs that should have collision checking disabled. Can be run from inside the MoveIt Pro dev container or from the host, and works with both URDF and xacro files mounted in the user workspace.

IsObjectAttachedTo Behavior that returns success if the given collision object name is attached to the given link.SetupMTCConnectWithProRRT Behavior that sets up a MoveIt Task Constructor (MTC) Connect stage to connect the end state of the previous stage with the start state of the next stage using a freespace trajectory with the ProRRT planner. This Behavior exposes ProRRT-specific planning parameters for fine-tuned control and is intended to replace the less transparent SetupMTCConnectWithTrajectory Behavior.RemovePointsInBox Behavior to complement CropPointsInBox.ResetMujocoKeyframe Behavior that calls a service via the MuJoCo simulation API to reset the MuJoCo simulation state to a named keyframe. The keyframe must be defined in the MuJoCo scene model. This Behavior is available in the moveit_studio::behaviors::MujocoBehaviorsLoader plugin.GetOrientedBoundingBoxFromPointCloud Behavior that finds the oriented bounding box (OBB) of a point cloud. This can be used for point cloud processing tasks, such as localizing slice planes to the point cloud for GetContourFromPointCloudSlice, or for creating a bounding CollisionObject with CreateSolidPrimitiveBox and CreateCollisionObjectFromSolidPrimitive.StringToInt Behavior, which converts a string to an int.PlanCartesianPath and SetupMTCPathIK) now expose a max_optimizer_iterations parameter to control the maximum number of internal optimizer iterations performed at each path waypoint. A larger number of iterations can improve the accuracy of the solution and the nullspace response, at the cost of increased computation time.require_user_approval to the core Move to Pose Objective. Approval is enabled by default; set require_user_approval="false" to bypass the approval step.ServoTowardsPose and TeleoperateTwist Behavior have been deprecated in favor of PoseJog.GetGraspAndTwistSubframes and GetMoveAlongArcSubframes Behaviors have been deprecated for being too specialized and because similar functionality can be achieved with more granular Pose-manipulation Behaviors.InitializeMotionConstraints and AppendOrientationConstraint Behaviors have been deprecated in favor of orientation constraint ports built into planning behaviors.WriteCalibratedPoseToYaml Behavior has been deprecated in favor of SaveToYaml converter Behaviors.GenerateObjectsInBox Behavior has been deprecated as we wind down support for the GraspableObject type. Objects can be created directly in the simulated environment as needed.AddSubframeToObject Behavior has been deprecated as we wind down support for the GraspableObject type. Similar functionality can be achieved with PoseStamped-related Behaviors.mesh_name to the VisualizeMesh behavior, so we can reuse the same mesh by giving different names.kitchen_simResetVector, GetElementOfVector, GetSizeOfVector, InsertInVector, PushBackVector, RemoveFromVector, and ReplaceInVectorAttachURDF/DetachURDF behaviors instead of deprecated tool-specific behaviorsGenerateCuboidGraspPoses was using Y parameter as X parameter.MergePointClouds could miss points under certain conditions.CYCLONEDDS_URI to a value that is not a path on the host computer would crash the application with an unhelpful error message.The JTAC sensor_frame and ee_frame parameters have been deprecated in favor of sensor_frames and ee_frames, which accept a list of strings to support multi-tip robots.
The old parameters will still work but will be removed in a future release.
If you have a Joint Trajectory Admittance Controller configured in your ros2_control.yaml file, please update it to use the new parameters.
Here's an example of the new configuration, for a robot with a single tip:
sensor_frames: ["sensor_frame"]
ee_frames: ["ee_frame"]
The ~/zero_fts service name exposed by the JTAC to tare the force sensor has been updated to ~/zero_fts/sensor_name, where sensor_name is the name of each sensor as specified in the sensor_frames parameter.
This change allows for multiple force sensors to be used with the JTAC.
If you have any scripts or Behaviors that call this service, please update them accordingly.
The SetupMTCConnectWithTrajectory Behavior has been deprecated in favor of the new SetupMTCConnectWithProRRT Behavior, which provides more direct access to ProRRT-specific planning parameters.
Please switch to using the SetupMTCConnectWithProRRT Behavior in your applications.
The deprecated Behavior will still work but will be removed in a future release.
We’re excited to announce a new and easier way to build Behavior Trees in MoveIt Pro using Large Language Models. A built-in text prompt is now directly in the UI, that instantly generates complete Behavior Trees. This dramatically accelerates the creation of Objectives, reducing setup time and making it easier to prototype and deploy complex robotic workflows.

The Joint Trajectory Admittance Controller now supports time scaling, allowing users to adjust the speed of trajectory execution dynamically.
This feature can be used to slow down or speed up the execution of trajectories during execution, even pausing it completely if needed.
The time scaling is controlled using the joint_trajectory_admittance_controller node parameter named time_scale_percentage, which accepts values between 0.0 and 100.0, where 100.0 means full speed (no time scaling), and 0.0 means stop.
Values in between will slow down the trajectory execution proportionally.

Added a new behavior SetupMTCPathIK that allows users to set up a MoveIt Task Constructor (MTC) Path IK stage, which computes a joint-space trajectory to follow a specified path in Cartesian space.
This stage can be used to perform Cartesian motions along a path defined by a vector of PoseStamped messages, and combine it with other MTC stages for more complex behaviors.

You can now manually adjust the width and height of the various panes and sidebars in MoveIt Pro, allowing you to better fit your camera feed dimenetions and other data sources on the screen.

Annoyed at having to tediously delete every node in your Behavior Tree? Now when you delete a parent node, all its children are automatically deleted also (with the exception of Subtrees).

Wanted to better see how your port variables and data flows through your Behavior Tree? Automatic port highlighting makes this easier to see visually!

Two new example pick and place Objectives have been added to the factory_sim robot configs, as easy to use reference applications. They are called Pick Brackets from Left Bin and Pick and Place Brackets from Left Bin. These Objectives demonstrate basic examples of picking automotive brackets from a bin, placing them precisely on a jig, waiting until a task is completed, and then picking and dropping them in another bin.

file_path information to Edit Objective formSetupMTCPathIK: Sets up a MoveIt Task Constructor (MTC) Path IK stage to compute a joint-space trajectory to follow a specified path in Cartesian space.
This is the equivalent of PlanCartesianPath for MTC tasks.Track Moving Frame that can be used in Objectives to track a moving frame in Cartesian space.
This can be helpful for applications like data collection (e.g. tracking a remote controller pose) or visual servoing.
See our Meta Quest Teleoperation Hardware Guide.ConvertTransformStampedToPoseStamped: Converts a TransformStamped message into a PoseStamped message. Handy for the GetLatestTransform Behavior.CreateSolidPrimitiveBox: Creates a box-shaped shape_msgs::msg::SolidPrimitive message.CreateCollisionObjectFromSolidPrimitive: Creates a moveit_msgs::msg::CollisionObject from a shape_msgs::msg::SolidPrimitive, pose, and object ID./verify_xml that allows verifying the content of a Behavior Tree XML file against your currently-loaded Behaviors and Objectives.BreakpointSubscriber behavior from the "Control Flow" category to the "User Input" category to better reflect its purpose as a user interaction tool for controlling breakpoint flow during Objective execution.RegisterPointClouds behavior can be used and what transform steps are required.moveit_pro_fanuc_config workspacemoveit_pro_ur_config workspacePoseJog Behavior instead of the deprecated ServoTowardsPose, featuring the space_satellite_sim configuration with a real-world satellite grappling example.moveit_pro dev are now removed automatically, saving disk space.objectives/ as opposed to respecting the relative_path field in the objective_library_paths section of a config's config.yaml file.ServoTowardsPose Behavior has been marked as deprecated and will be fully removed in a future release.
Users should migrate to the PoseJog Behavior, which provides safer Cartesian motion with collision avoidance and singularity handling.SetupMTCMoveToNamedState has been deprecated and will be removed in a future release.
Please use RetrieveWaypoint and SetupMTCMoveToJointState to achieve the same functionality.MoveIt Pro can now collect teleoperation data using the Meta Quest. Check out the Hardware Guide.

Added general vector operations that work on vectors on the blackboard of any type, including GetElementOfVector, GetSizeOfVector, InsertInVector, RemoveFromVector, ReplaceInVector, add ResetVector Behaviors. Uses type BT::Any.

It's now easier to access the popup forms for new Behaviors and Objectives, with a combined "+" button accessible from both sidebar modes.

InitializeMTCTask now accepts a timeout parameter to set an overall timeout for the MTC Task, in seconds.
This is useful for ensuring that the MTC Task does not run indefinitely and can be used to control the execution time of the task.AddTool → AddURDF (deprecated AddTool still available)AttachTool → AttachURDF (deprecated AttachTool still available)DetachTool → DetachURDF (deprecated DetachTool still available)RemoveToolFromScene → RemoveURDFFromScene (deprecated RemoveToolFromScene still available)AddURDF behaviorToolChangingCapability to URDFPlanningSceneCapabilitymoveit_studio_agent_msgs/srv/AddTool → moveit_studio_agent_msgs/srv/AddURDFmoveit_studio_agent_msgs/srv/AttachTool → moveit_studio_agent_msgs/srv/AttachURDFmoveit_studio_agent_msgs/srv/DetachOrRemoveTool → moveit_studio_agent_msgs/srv/DetachOrRemoveURDFadd_tool_to_scene → add_urdf_to_sceneattach_tool → attach_urdfdetach_tool → detach_urdfremove_tool_from_scene → remove_urdf_from_scenetool_name → urdf_nametool_urdf → urdf_stringtool_pose → urdf_poseobjective_library_paths from the config.yaml for saving new objectives, allowing flexible configuration of where objectives are stored.Enhanced Visualize Pose behavior to display text information in Marker messages for improved debugging and visualization.

MoveIt Pro now supports executing trajectories that make 180 degree turns, which is common in MTC solutions.
So you can now use ConvertMtcSolutionToJointTrajectory and execute the resulting trajectories with ExecuteFollowJointTrajectory, even if those contain 180 degree turns.

april_tag_sim configuration.ValidateTrajectoryPlanCartesianPath now properly include the start scene.A ton of exciting new UI features are included in this release!
The Interactive Marker (IMarker) teleoperation panel now supports multiple planning groups and end effectors, allowing users to select which planning group to teleoperate.

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.

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!

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.

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.

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

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

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.ReversePoseStampedVector to reverse the direction of a vector of poses, such as a Cartesian path.CropPosesInBox to filter a vector of poses, such as a Cartesian path, based on a bounding box.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.GetMasks2DAction, ShapeCompletionAction, and CalibratePoseAction behaviors.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.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.GetImage behavior to configure how long to wait for an image publisher to advertise.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.GetGraspPoseFromPointCloud to automatically infer grasp poses using machine learning from point clouds.LoadObjectiveParameters is deprecated and is planned for removal in 9.0.SetAdmittanceParameters and AppendOrientationConstraint behaviors' interactive parameter editors in the UI.GetImage by allowing halting.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.LoadObjectiveParameters is deprecated and is planned for removal in 9.0.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.

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.

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.

LoggerROS class.MPCPointCloudClearance Behavior tracks a pose while avoiding a point cloud using model predictive control.ForEachUntilSuccess for iterating through vectors and until the subtree succeeds on an element.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.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.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.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.LogMessage behavior don't show as expected in the UI.SetupMTCMoveAlongFrameAxis would throw an exception under some conditions.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 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).