8.0.1
Bug Fixes
- Fixed an issue where the behavior tree status visualizer would throw an error when loaded.
We're proud to announce our latest major release - 8.0!
A reminder that our major releases typically include more complex migration steps for your robot_config, so that we can evolve the capabilities of MoveIt Pro and reduce technical debt. We promise to release major versions no more than 4 times per year, or about once per quarter.
A totally reimagined Pose Jog teleoperation mode that replaces the old MoveIt Servo TeleoperateTwist Behavior.
PoseJog offers several improvements over the previous implementation, such as better behavior at singularities, improved collision avoidance and recovery, and support for multiple groups. The new PoseJog can be used beyond teleoperation, for instance in any application that requires streaming Cartesian velocities to the robot. More details here, and also check out the Migration Guide, below, for how to migrate from the old TeleoperateTwist Behavior to the new PoseJog Behavior.

GetGraspPoseFromPointCloud uses the Learning to Grasp AI model to produce grasp poses for objects from point clouds.
PlanCartesianPath can now solve the path Inverse Kinematics for multiple end-effectors moving synchronously along a path.
Check out the Multi-tip Path IK Example Objective in the multi_arm_sim config for an example of this feature.

MoveIt Pro now includes the Fuse state estimation framework out of the box, and has a new guide on how to utilize it in your custom MoveIt Pro configuration.

OrtCudnnConvAlgoSearchHeuristic configuration for the CUDA ONNX runtime provider, which improves first time inference speed up to 2x faster.SwitchController Behavior which allows you to use the ros2_control API to switch controllers.IsAnyObjectAttached, IsCollisionObjectInPlanningScene, and WhichObjectIsAttached Behaviors to better introspect a PlanningScene.ComputeLinkPoseForwardKinematics Behavior to compute the cartesian pose of a link given joint states.AsyncBehavior base class is now an option when generating custom behaviors from the UI. Take a look here for some examples of behaviors that inherit from AsyncBehaviorBase.ActivateControllers and InitializeMTCTask Behaviors now require a list of controller names separated by semicolons instead of spaces.
This makes it more consistent with how arrays of objects are handled in other Behaviors.SetupMTCPickFromPose, SetupMTCPickObject and SetupMTCPlaceFromPose have been removed, since similar functionality can now be achieved with more granular MTC Behaviors.PlanCartesianPath Behavior can now solve for multiple end-effectors.
Therefore the tip_link input port has been renamed to tip_links, which can now accept a list of tip links.SetupMTCCurrentState port skip_collision_check is removed (the port was deprecated in 7.5.0).PublishMask2D can now publish bounding boxes around masks when given a class label or annotations."clear_visual_markers_at_start": False.CalculatePoseOffset now returns the offset as a geometry_msgs/PoseStamped message instead of a geometry_msgs/Pose message, to make it compatible with the rest of Behaviors that use PoseStamped messages. The frame_id of the returned pose will match the frame_id of the 'source' pose.
TransformPoseFromYaml has been deprecated and will be removed in a future release. It is recommended to use LoadPoseStampedFromYaml and TransformPoseWithPose instead.ik_group port to SetupMTCBatchPoseIK, enabling users to specify the group for which inverse kinematics should be solved.CreateStampedPose Behavior will now fail if the input quaternion is of zero length and cannot be normalized.AddPoseStampedToVector will now send a descriptive error message to the UI if the user attempts to run the behavior without setting the required input port.ignition_resources volume, only relevant to Gazebo, has been removed from the default docker-compose file.moveit_pro dev service now has the nvidia runtime set by default on NVIDIA machines, matching the environment in the full application.docker-compose.yaml can now be used to override the runtime: nvidia parameter for more advanced users on NVIDIA machines.-c option to moveit_pro configure command to specify the configuration package.-w option to moveit_pro configure, moveit_pro build, moveit_pro build user_image and moveit_pro build user_workspace commands to specify the location of the user workspace.moveit_pro_test_utils package to test objectives in a robot config./switch_primary_view service call if the view was already visible - even though it wasn't primary.moveit_pro configure is run.version into /opt/moveit_pro instead of /etc/moveit_pro.The TeleoperateTwist Behavior has been replaced with the new PoseJog Behavior.
This required changes in the way the UI communicates with the backend, and therefore the UI after 8.0.0 is not compatible with the old TeleoperateTwist Behavior.
You will need to update your Request Teleoperation Objective to use the new PoseJog Behavior, and include a PoseJog config file. Please check out this configuration guide for details.
moveit_studio::behaviors::BehaviorContext shared_resources is now accessed via the
pointer transform_buffer_ptr. The pointer field replaces the old value type named transform_buffer. Additionally,
transform_listener_ptr and transform_broadcaster_ptr replaced transform_listener and transform_broadcaster.ActivateControllers or InitializeMTCTask in Objectives need to be updated to include the list of controllers as controller names separated by semicolons, instead of spaces, in case multiple controllers are listed. For example:<Action
ID="ActivateControllers"
controller_names="controller_one;controller_two"
/>
<Action
ID="InitializeMTCTask"
controller_names="controller_one;controller_two"
/>
PlanCartesianPath now accepts a list of tip links instead of a single tip link.
The input port tip_link has been renamed to tip_links, and the input type has changed from string to string[].
For example:<Action
ID="PlanCartesianPath"
...
tip_links="grasp_link" # Separate multiple tips with semicolons, e.g. "link_one;link_two"
...
/>
All references to the skip_collision_check port in SetupMTCCurrentState should be removed
DetectApriltags now takes in all AprilTag detection parameters on ports rather than by parsing YAML input. Users
can now delete the deprecated LoadObjectiveParameters behavior in their objectives that use DetectApriltags and
transfer the parameters from the .yaml file to the ports of DetectApriltags. Also note: the z_up parameter is no
longer accepted for AprilTag detections and tags will always be detected with the detection pose z axis facing up, out
of the tag and towards the camera. If you were previously setting the z_up parameter to false, you can use the
TransformPose behavior with the detected pose on the input_pose port and the quaternion_xyzw port set to
1;0;0;0.
FindSingularCuboids now takes in all cuboid detection parameters on ports rather than by parsing YAML input. Users
can now delete the deprecated LoadObjectiveParameters behavior in their objectives that use FindSingularCuboids and
transfer the parameters from the .yaml file to the ports of FindSingularCuboids.
Several breaking changes were made to the IsConstraintSatisfied Behavior:
IsVisibilityConstraintSatisfied for disambiguation.IsVisibilityConstraintSatisfied now takes in all visibility constraint parameters on ports rather than by parsing
YAML input as was done with IsConstraintSatisfied. Users can now delete the deprecated LoadObjectiveParameters
behavior in their objectives that used IsConstraintSatisfied and transfer the parameters from the .yaml file to
the ports of IsVisibilityConstraintSatisfied.IsVisibilityConstraintSatisfied now takes in a planning_scene_msg port to reduce the overhead of managing a
planning scene monitor within the behavior. Users can use the GetCurrentPlanningScene Behavior to get the
planning_scene_msg object needed as an input port to IsVisibilityConstraintSatisfied.CalculatePoseOffset now returns the offset as a geometry_msgs/PoseStamped message.
Any Objectives using this Behavior should be updated to use its output as geometry_msgs/PoseStamped instead of geometry_msgs/Pose.
SetupMTCBatchPoseIK now requires the ik_group input port to be specified which informs the solver of the planning group for which inverse kinematics should be solved.
For example:
<Action
ID="SetupMTCBatchPoseIK"
...
ik_group="manipulator"
...
/>
GetPointsFromUser, GetImage, GetPointCloud, GetSyncedImageAndPointCloud, and GetSyncedImages have had their default parameters for certain ports updated:
GetPointsFromUser
view_name: /wrist_mounted_camera/color/image_raw -> /wrist_camera/colorGetImage
topic_name: /wrist_mounted_camera/color/image_raw -> /wrist_camera/colorGetPointCloud
topic_name: /wrist_mounted_camera/depth/color/points -> /wrist_camera/pointsGetSyncedImages
image_1_topic_name: /wrist_mounted_camera/color/image_raw -> /wrist_camera/colorcamera_info_1_topic_name: /wrist_mounted_camera/color/camera_info -> /wrist_camera/camera_infoimage_2_topic_name: /wrist_mounted_camera/depth/image_raw -> /scene_camera/colorcamera_info_2_topic_name: /wrist_mounted_camera/depth_registered/camera_info -> /scene_camera/camera_infoGetSyncedImageAndPointCloud
point_cloud_topic_name: /wrist_mounted_camera/depth/color/points -> /wrist_camera/pointsrgb_image_topic_name: /wrist_mounted_camera/color/image_raw -> /wrist_camera/colorrgb_camera_info_topic_name: /wrist_mounted_camera/color/camera_info -> /wrist_camera/camera_infoWe have switched to a trimmed down version of the MoveIt library. The following plugins and APIs will no longer be available in the default installation for their use in configs and Behaviors. Please contact us if you were using any of these APIs in your custom Behaviors.
KDL, FastIK, Srv have been removed from the default installation.
Please switch to PoseIK.sudo apt-get install ros-humble-moveit-setup-assistant.MoveGroupCartesianPathService, MoveGroupExecuteService, MoveGroupExecuteTrajectoryAction, MoveGroupMoveAction, MoveGroupPlanService, MoveGroupQueryPlannersService, MoveGroupStateValidationService, TfPublisher.chomp and pilz.
stomp is still available for anyone needing an optimization-based planner.
Use of pilz should be replaced with MoveIt Pro Cartesian planning capabilities.Please contact support if you were using any of the above features and need help migrating.
SetupMTCPickFromPose, SetupMTCPickObject and SetupMTCPlaceFromPose have been removed.
If you were using any of these Behaviors, please take a look at the Pick from Pose and Place at Pose Subtrees in lab_sim for an example of how to achieve similar functionality by combining other more granular Behaviors, or contact support for help.GetDoorHandle has been removed.
It is now recommended to use the new Machine Learning Behaviors for more granularity.
We recommend creating a subtree that has the Behaviors GetMasks2DFromTextQueryInterface with door handle as the object, GetMasks3DFromMasks2D to convert the 2D masks to 3D masks, GetPointCloudFromMask3D to create the point cloud for the segmented door handle, and GetGraspPoseFromPointCloud to get the grasp pose for the door handle.A small release before the upcoming 8.0 release...
multi_arm_sim example robot_configPlanToJointGoal and its MTC-equivalent SetupMTCPlanToJointState now have a new port called seed that allows you to specify the seed for the random number generator used during path planning.
The same seed number will generate the same results for the same input parameters.
This can be used to explore other solutions if the one found by the planner with the default seed is not satisfactory.SetupMTCGraspAndTwistThenMoveAlongArcPush and SetupMTCGraspThenMoveAlongArcPull Behaviors.
These can be replicated as Objectives using existing Behaviors.SetupMTCApproachGrasp, SetupMTCConnectWithTrajectory, SetupMTCMoveToJointState, SetupMTCMoveToNamedState, SetupMTCMoveToPose, SetupMTCPickFromPose, SetupMTCPickObject, and SetupMTCPlaceFromPose to use ProRRT by default.SetupMTCApproachGrasp now exposes link_padding as a parameter for use with ProRRT.moveit_pro dev after changing the workspace Dockerfile doesn't use an updated version of the image.
MoveIt Pro now supports computing Inverse Kinematics for multiple end-effectors simultaneously using the ComputeInverseKinematics behavior. This feature is useful for robots with multiple arms or end-effectors that need to reach multiple goals at the same time.

You can now assign categories to objectives, as well as create new categories, from within the UI.

Our example workspace fanuc_sim is now factory_sim and contains new assets and example objectives for planar and mesh based reachability analysis.

Creates a new d-pad for pose jog in the sidebar rather than overlaying it on visualization pane
/objective_server_heartbeat ROS topic with the currently running process runtime, current objective name, and the status of the objective. This topic publishes the moveit_studio_agent_msgs/msg/ObjectiveServerStatus message.moveit_pro_objectives package) that can be inherited in any robot config or workspace to speed up development time and increase consistency.ComputeInverseKinematics behavior to compute IK for multiple end-effectors simultaneously.-l and --list options to moveit_pro run verb to list all available configuration packages in the current user workspace.--browser (default) and --no-browser options to prevent the application to launch a new browser window on startup.PublishMask2D exposes opacity as an input port to change the translucency of the overlaid masks.InitializeMTCTask has a new port called trajectory_monitoring. If it is set to true, every subtrajectory of that task is going to be collision checked against the most recent planning scene right before it is executed. The default value of the port is False since this additional collision check is only necessary if anything other than the robot state in the planning scene has changed.LoadObjectiveParameters has been deprecated. Please migrate to declaring ports directly on behaviors, or to specializations of the LoadFromYaml template behavior.--browser (default) and --no-browser options to prevent the application to launch a new browser window on startup.--browser (default) and --no-browser options to prevent the application to launch a new browser window on startup.MetadataFields element is being stripped from an objective's xml file resulting in objectives becoming uncategorized and "subtree only" objectives becoming runnable.hangar_sim that have large URDFs should now properly do first-time setup of the camera stream layout in the UI.runnable metadata field in an objective xml file is now the source of truth for specifying "subtree only" objectives. If the _subtreeOnly BehaviorTree attribute exists in an objective file and runnable is not set, MoveIt Pro will respect the old BehaviorTree attribute and automatically migrate to runnable on the next update to the objective.BreakpointSubscriber behavior would cause the "Stop Motion" button to disappear.PlanToJointGoal where if the given target robot state message was missing values for some joints in the group, the planner would assume those values were zero.
Now the planner will use the current robot state for those missing joints.moveit_studio::behaviors::createTrajectoryFromWaypoints -> cartesian_planning::createTrajectoryFromWaypointsmoveit_studio::behaviors::collisionValidationFunction -> pro_rrt::collisionValidationFunctionmoveit_studio::behaviors::planTrajectoryToJointGoal -> pro_rrt::planTrajectoryToJointGoaldocker-compose.yaml in the example user workspace for those with NVIDIA hardware.
MoveIt Pro now includes a new tool for decimating meshes to increase performance of collision checking and simulation. See the Simulation Troubleshooting Guide for usage details.

The joint control spinner user inputs are now always present and don't require a click to enter into them. They are also refreshed with updated styling and they have been moved into the side bar.

You can now publish text markers in our visualizer, to better help understand and debug your robotics system.
RecordJointTrajectory Behavior which allows you to record the joint states of a given planning group as a JointTrajectory message./studio_breakpoint to /moveit_pro_breakpointSwitchUIPrimaryView behavior no longer throws an error when a topic does not exist yet, and instead displays a placeholder while waiting for the topic to become available.SetupMTCCurrentState no longer makes a collision check. Planners downstream in the pipeline are responsible for this.
The skip_collision_check input port is kept for backwards compatibility, but it is now ignored and will be fully removed in the next major release.moveit_pro configure, users will be asked to re-enter the name if the package cannot be found.