5.1.0
· 6 min read
Key Changes
- MoveIt Pro no longer automatically launches RealSense cameras defined in the
cameras.yaml. To better support different hardware configurations,cameras.yamlis no longer required and you must launch your camera drivers yourself. We’ve included an easy migration script to convert yourcameras.yamlto acameras.launch.xml!- Added an
ExecuteTrajectoryWithAdmittancebehavior to allow use of the MoveIt Pro Joint Trajectory Admittance Controller- This controller has no dynamic memory allocation during execution to improve safety and reliability.
- This controller takes admittance parameters as part of the command, as opposed to a separate ROS 2 parameter interface, which makes it easier to use.
- This controller implements ‘stop-on-contact’ functionality and smooth stop trajectories.
- This controller has no dynamic memory allocation during execution to improve safety and reliability.
- Added new Behaviors and UI functionality for operator input,
RequestTextFromPromptsandAdjustPoseWithIMarker - Major SubTree usability enhancements in the Objective Builder
- Added an
Configuration Improvements
- Removed
cameras.yamlfrom MoveIt Pro’s configuration parser and launcher (see Key Changes section)- Fixed many issues with stale configurations that were caused by persistent
~/.config/moveit_pro directories. This directory is now ephemeral, and all changes persist back to your site configuration’s source directory. moveit_pro setup_workspacenow supports cloning SSH / git@ repositories- Corrected ~ expansion in User workspace path (
{STUDIO_HOST_USER_WORKSPACE})
- Fixed many issues with stale configurations that were caused by persistent
New User Interface Features
- MoveIt Pro’s URDF visualizer now supports Planar and Floating joints.
- Using the
AdjustPoseWithIMarkerbehavior, an Objective can now request that an operator adjust a pose within the 3D scene using an interactive marker. For example, verifying a candidate grasp pose in a user-in-the-loop pick-and-place. - Using the
RequestTextFromPromptsbehavior, an Objective can now request that an operator input textual content into a form. This enables, for example, including operator-driven prompting of an ML model within your Objective. - Improved display of SubTree descriptions in the Objective Builder
- Modifications to SubTree ports are now saved as defaults within the SubTree. Subsequent uses of the SubTree will automatically populate the ports with default values
- Visual clarity improvements to crosshair when selecting points on an image feed
- Replaced port directionality arrows in the Objective Builder with color-coded text to improve glanceability
- SubTrees are now collapsed by default in the Objective Builder, to make editing large, highly-composed Objectives less unwieldy. Manually expanding them will still keep them expanded between sessions.
- Bug fixes and performance improvements, especially for teleoperating robots without grippers
- Using the
Behavior Changes
- Behaviors added to support grasp candidate adjustment in the UI:
AdjustPoseWithIMarkerpublishes a candidate pose and returns the adjusted pose from the UIGetSyncedImagessynchronizes two camera topics, most useful for synchronizing RGB data with depth data to generate a pose from a pixel coordinate
- Added the
RequestTextFromPromptsbehavior to display textual forms in the UI - Removed internal-only
GetPoseFromUserandGetIntFromUserbehaviors - Added template behaviors
AddToVector<T>andResetVector<T>which can be implemented to allow composing vectors during Objective runtime - Error message improvement to
ActionClientBehaviorBase:- The
ActionClientBehaviorBasebehavior template now exposes agetAbortedMessagefunction that returns a string. The string will be displayed in the MoveIt Studio error toast message if the action is aborted. TheExecuteFollowJointTrajectoryandExecuteTrajectoryWithAdmittancebehaviors now provide useful hints if they are aborted.
- The
- Added
ExecuteTrajectoryWithAdmittance(see Key Changes section) SetupMTCUpdateGroupCollisionRulebehavior's parameters are no longer read in from a YAML file using theLoadObjectiveParametersbehavior. The behavior parameters are set as input ports.- Added
GetMeshNormalPosebehavior to calculate the surface normals of a visual mesh in the robot model - Added
PublishMarkersbehavior to publish a MarkerArray to the UI/RViz. - Added
SolveIKQueriesbehavior to determine if the robot can reach a list of target poses. - New “load from YAML” and “save to YAML” behaviors for:
OctonionVector3TransformTransformStampedTime(builtin_interfaces)Waypoint(moveit_studio_agent_msgs)UnorderedMap<String, Waypoint>
Controller Changes
- Added a
stop_accelerationsport to the MoveIt Pro Joint Trajectory Admittance Controller to allow specifying per-joint decelerations to use when halting trajectory execution, in the event of force threshold being met or other exit criteria.- Apply a second-order Butterworth filter and deadband to the force/torque sensor signal in the Trajectory Admittance Controller.
Planner Changes
- The default joint-space interpolation planner is now exclusively RRTConnect, instead of both RRTConnect and Pilz PTP, to reduce the number of required configuration files for most users.
Other Enhancements
- Improvements to MoveIt Pro’s Docker configuration to allow better interoperability with EtherCAT-based hardware
- Numerous improvements to error messaging in the
moveit_proscript and the included launchfiles - The MoveIt Pro installer will now attempt to version-match a requested configuration download against the installed version of Pro.
- Numerous improvements to error messaging in the
Migration Guide
Launch Changes
The Docker service when you start MoveIt Pro will now launch the agent_bridge.launch.xml file located in your configuration package. Ensure it exists and contains the following launch files to bring up the necessary MoveIt Pro packages:
<launch>
<include file="$(find-pkg-share moveit_studio_agent)/launch/studio_agent_bridge.launch.xml"/>
<include file="$(find-pkg-share moveit_studio_rest_api)/launch/rest_api.launch.xml"/>
</launch>
An example launch file can be found in our UR workspace.
Removed cameras.yaml
- MoveIt Pro no longer automatically launches RealSense cameras defined in a cameras.yaml. Camera drivers can be launched by including a ROS 2 launch file in agent_bridge.launch.xml. MoveIt Pro provides an migration script to automatically generate a cameras.launch.xml launch file and add it to agent_bridge.launch.xml if your site config uses camera.yaml file for RealSense cameras.
- The ROS 2 Realsense packages no longer comes installed in MoveIt Pro by default. Remember to add this dependency to your package.xml and perform a moveit_pro build to install the additional dependency in your MoveIt Pro Docker overlay image.
Add the following to your package.xml
<exec_depend>realsense2_description</exec_depend>
<exec_depend>realsense2_camera</exec_depend>
Removed deprecated GetXFromUser behaviors
Behaviors GetPoseFromUser and GetIntFromUser have been removed. The AdjustPoseWithIMarker behavior can be used for the same intent
Behavior port changes
- SetupMTCUpdateGroupCollisionRule behavior no longer reads in parameters from a YAML file. It can be directly set in the behavior’s ports
- Objectives that contain unset (default value) ports should no longer be used in your behavior XML files unless you explicitly intend to use an empty string. Any behaviors that contain a port_key="" within the XML tag should have the key and value removed. Defaults are set in the behavior implementation.
Waypoint changes
- Waypoints now support multiple joint groups. If all your previous waypoints are for a single joint group, add the following to each entry in you waypoints.yaml:
joint_group_names:
- your_joint_group
In the UR configuration, the joint group is called manipulator and the addition can be seen here
- MoveToWaypoint no longer exists as a behavior node, it can be used as a subtree: : Remove <Action ID="MoveToWaypoint" planning_group_name="manipulator" ... and replace it with <SubTree ID="Move to Named Pose" joint_group_name="manipulator" ...
To reference the changes made to the example workspace between 5.0.1 and 5.1.0, visit the reference workspace.