8.0.0
Major Features
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.
Revamped Pose Jog Teleoperation
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.
Learning to Grasp
GetGraspPoseFromPointCloud
uses the Learning to Grasp AI model to produce grasp poses for objects from point clouds.
Multi-tip Path IK
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.
Integration of Fuse
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.
Enhancements
- We now use the
OrtCudnnConvAlgoSearchHeuristic
configuration for the CUDA ONNX runtime provider, which improves first time inference speed up to 2x faster.
UI Changes
- Adds a sidebar for the IMarker, moves the reset button there
- Improved the visibility and usability of the Auto Layout button.
- Sidebar now auto-closes during objective execution to maximize workspace visibility.
- Changed the toast message for out of date software versions from an error to a warning.
- When a Subtree is expanded in the editor, the entire graph will layout to avoid nodes overlapping
- Fixed inconsistent styling of primary and secondary buttons.
- Improved UX alignment: Prevented the search bar from shifting when switching between Build and Run tabs.
- Removed unnecessary confirmation screens to improve user experience and usability.
- Added a button to expand/collapse Behavior/Objective sidebar categories for improved navigation.
- Changed keep-out zones to green to make them easier to distinguish from collision spheres.
- Removed the click handler from "Run" tab objectives list to increase safety. Require users to use the action buttons on the right.
- Removes Teleoperation mode top bar and relocates all functionality to the sidebar
- Consolidates favorited waypoints to appear at the top of the waypoints sidebar list
- A Subtree used in other objectives can now be deleted. First showing a confirm modal with the list of objectives it is being used in
- Removes behavior search popover in favor of filtering down listed behaviors in sidebar
Reference Application Changes
- Improve ML example behaviors to include bounding boxes visualization of segment image
- Add new Objectives category called "ML - Applications" that clarifies which Objectives leverage ML models and likely require GPUs
- Add kinova_gen3_site_config for kinova hardware
- Add fuse grappling example to space_satellite_sim config
Other New Behaviors
- Added a
SwitchController
Behavior which allows you to use theros2_control
API to switch controllers. - Added
IsAnyObjectAttached
,IsCollisionObjectInPlanningScene
, andWhichObjectIsAttached
Behaviors to better introspect aPlanningScene
. - Added a
ComputeLinkPoseForwardKinematics
Behavior to compute the cartesian pose of a link given joint states. - The
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 fromAsyncBehaviorBase
.
Behavior Changes
- The
ActivateControllers
andInitializeMTCTask
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. - The Behaviors
SetupMTCPickFromPose
,SetupMTCPickObject
andSetupMTCPlaceFromPose
have been removed, since similar functionality can now be achieved with more granular MTC Behaviors. - The
PlanCartesianPath
Behavior can now solve for multiple end-effectors. Therefore thetip_link
input port has been renamed totip_links
, which can now accept a list of tip links. SetupMTCCurrentState
portskip_collision_check
is removed (the port was deprecated in 7.5.0).- The AsyncBehaviorBase template class and all its dependents now have clearer error messages in the UI when they fail.
PublishMask2D
can now publish bounding boxes around masks when given a class label or annotations.- Visual markers are deleted before running an objective. The default behavior can be switched off by setting the configuration parameter
"clear_visual_markers_at_start": False
. CalculatePoseOffset
now returns the offset as ageometry_msgs/PoseStamped
message instead of ageometry_msgs/Pose
message, to make it compatible with the rest of Behaviors that usePoseStamped
messages. Theframe_id
of the returned pose will match theframe_id
of the 'source' pose.TransformPoseFromYaml
has been deprecated and will be removed in a future release. It is recommended to useLoadPoseStampedFromYaml
andTransformPoseWithPose
instead.- Added the
ik_group
port toSetupMTCBatchPoseIK
, enabling users to specify the group for which inverse kinematics should be solved. - The
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.
Documentation Improvements
- New concepts page: Deployment, Commissioning, and Fleet Management
- Heavy rework of tutorials 1 and 2
- Add Kinova Gen3 7DoF Hardware Setup Guide
Other Improvements
- Submodules are now downloaded in parallel, speeding up download times for the example workspace repository.
- Switched to a trimmed down version of the MoveIt library to reduce code maintenance. See the Migration Guide section below for details.
- The
ignition_resources
volume, only relevant to Gazebo, has been removed from the default docker-compose file. - The
moveit_pro dev
service now has thenvidia
runtime set by default on NVIDIA machines, matching the environment in the full application. - The user workspace
docker-compose.yaml
can now be used to override theruntime: nvidia
parameter for more advanced users on NVIDIA machines. - The Velocity/Force Controller (VFC) now supports both joint position and velocity interfaces, and can rename the commanded joint names to support layered controllers.
- Added
-c
option tomoveit_pro configure
command to specify the configuration package. - Added
-w
option tomoveit_pro configure
,moveit_pro build
,moveit_pro build user_image
andmoveit_pro build user_workspace
commands to specify the location of the user workspace. - Error messages when creating a new objective from the UI are now more clear.
- Added new pytest fixture in the
moveit_pro_test_utils
package to test objectives in a robot config. - MoveIt Pro now installs a recommended zram configuration on Ubuntu by default, to make memory-intensive use cases like compiling large configurations or running ML models more consistent.
Bug Fixes
- Fixed documentation admonition stating wrong version.
- Fixed an issue where the UI would not respond to a
/switch_primary_view
service call if the view was already visible - even though it wasn't primary. - Fixes issue where opening / closing gripper buttons would change teleoperation sidebar unnecessarily
- Fixed an issue where the UI would incorrectly show an objective as "loading" when it had already completed or failed.
- Fixed crash that occurs frequently when running Pro with FastDDS during destruction of behaviors that inherit from the GetMessageFromTopicBehaviorBase class.
- Fixed launcher script prompting for configuration package twice.
- Fixed issue causing Debian package uninstall to read configuration files from the root folder instead of user folder.
- Fixed dead DDS doc link that is printed when
moveit_pro configure
is run - Fixes issue where "Run" button would stay after an objective was changed to non-runnable
- Fixed a bug where some nodes other than Sequence nodes could erroneously be converted to SubTrees in the Build tab.
- The Debian package now installs
.version
into/opt/moveit_pro
instead of/etc/moveit_pro
.
Migration Guide
Pose Jog Teleoperation
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.
C++ API Changes
- The TF buffer for the
moveit_studio::behaviors::BehaviorContext
shared_resources is now accessed via the pointertransform_buffer_ptr
. The pointer field replaces the old value type namedtransform_buffer
. Additionally,transform_listener_ptr
andtransform_broadcaster_ptr
replacedtransform_listener
andtransform_broadcaster
.
Behavior API Changes
- References to
ActivateControllers
orInitializeMTCTask
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 porttip_link
has been renamed totip_links
, and the input type has changed fromstring
tostring[]
. 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 inSetupMTCCurrentState
should be removed -
DetectApriltags
now takes in all AprilTag detection parameters on ports rather than by parsing YAML input. Users can now delete the deprecatedLoadObjectiveParameters
behavior in their objectives that useDetectApriltags
and transfer the parameters from the.yaml
file to the ports ofDetectApriltags
. Also note: thez_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 thez_up
parameter to false, you can use theTransformPose
behavior with the detected pose on theinput_pose
port and thequaternion_xyzw
port set to1;0;0;0
. -
FindSingularCuboids
now takes in all cuboid detection parameters on ports rather than by parsing YAML input. Users can now delete the deprecatedLoadObjectiveParameters
behavior in their objectives that useFindSingularCuboids
and transfer the parameters from the.yaml
file to the ports ofFindSingularCuboids
. -
Several breaking changes were made to the
IsConstraintSatisfied
Behavior:- The Behavior has been renamed to
IsVisibilityConstraintSatisfied
for disambiguation. IsVisibilityConstraintSatisfied
now takes in all visibility constraint parameters on ports rather than by parsing YAML input as was done withIsConstraintSatisfied
. Users can now delete the deprecatedLoadObjectiveParameters
behavior in their objectives that usedIsConstraintSatisfied
and transfer the parameters from the.yaml
file to the ports ofIsVisibilityConstraintSatisfied
.IsVisibilityConstraintSatisfied
now takes in aplanning_scene_msg
port to reduce the overhead of managing a planning scene monitor within the behavior. Users can use theGetCurrentPlanningScene
Behavior to get theplanning_scene_msg
object needed as an input port toIsVisibilityConstraintSatisfied
.
- The Behavior has been renamed to
-
CalculatePoseOffset
now returns the offset as ageometry_msgs/PoseStamped
message. Any Objectives using this Behavior should be updated to use its output asgeometry_msgs/PoseStamped
instead ofgeometry_msgs/Pose
. -
SetupMTCBatchPoseIK
now requires theik_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
, andGetSyncedImages
have had their default parameters for certain ports updated:GetPointsFromUser
view_name
:/wrist_mounted_camera/color/image_raw
->/wrist_camera/color
GetImage
topic_name
:/wrist_mounted_camera/color/image_raw
->/wrist_camera/color
GetPointCloud
topic_name
:/wrist_mounted_camera/depth/color/points
->/wrist_camera/points
GetSyncedImages
image_1_topic_name
:/wrist_mounted_camera/color/image_raw
->/wrist_camera/color
camera_info_1_topic_name
:/wrist_mounted_camera/color/camera_info
->/wrist_camera/camera_info
image_2_topic_name
:/wrist_mounted_camera/depth/image_raw
->/scene_camera/color
camera_info_2_topic_name
:/wrist_mounted_camera/depth_registered/camera_info
->/scene_camera/camera_info
GetSyncedImageAndPointCloud
point_cloud_topic_name
:/wrist_mounted_camera/depth/color/points
->/wrist_camera/points
rgb_image_topic_name
:/wrist_mounted_camera/color/image_raw
->/wrist_camera/color
rgb_camera_info_topic_name
:/wrist_mounted_camera/color/camera_info
->/wrist_camera/camera_info
MoveIt Library Changes
We 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.
- Kinematics plugins:
KDL
,FastIK
,Srv
have been removed from the default installation. Please switch to PoseIK. - MoveIt Setup Assistant is no longer available within the MoveIt Pro container.
You can still install the package in your host system via apt-get if needed, e.g.
sudo apt-get install ros-humble-moveit-setup-assistant
. - Trajectory cache (a C++ API to cache motion plans).
- Some MoveGroup capabilities that are not used in MoveIt Pro:
MoveGroupCartesianPathService
,MoveGroupExecuteService
,MoveGroupExecuteTrajectoryAction
,MoveGroupMoveAction
,MoveGroupPlanService
,MoveGroupQueryPlannersService
,MoveGroupStateValidationService
,TfPublisher
. - The Hybrid Planning pipeline.
- Planners unused in MoveIt Pro:
chomp
andpilz
.stomp
is still available for anyone needing an optimization-based planner. Use ofpilz
should be replaced with MoveIt Pro Cartesian planning capabilities. - The Bullet collision checker, since FCL has been used by default in all the configs.
Please contact support if you were using any of the above features and need help migrating.
Behaviors removed
SetupMTCPickFromPose
,SetupMTCPickObject
andSetupMTCPlaceFromPose
have been removed. If you were using any of these Behaviors, please take a look at thePick from Pose
andPlace at Pose
Subtrees inlab_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 BehaviorsGetMasks2DFromTextQueryInterface
withdoor handle
as the object,GetMasks3DFromMasks2D
to convert the 2D masks to 3D masks,GetPointCloudFromMask3D
to create the point cloud for the segmented door handle, andGetGraspPoseFromPointCloud
to get the grasp pose for the door handle.