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.yaml
is no longer required and you must launch your camera drivers yourself. We’ve included an easy migration script to convert yourcameras.yaml
to acameras.launch.xml
!- Added an
ExecuteTrajectoryWithAdmittance
behavior 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,
RequestTextFromPrompts
andAdjustPoseWithIMarker
- Major SubTree usability enhancements in the Objective Builder
- Added an
Configuration Improvements
- Removed
cameras.yaml
from 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_workspace
now 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
AdjustPoseWithIMarker
behavior, 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
RequestTextFromPrompts
behavior, 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:
AdjustPoseWithIMarker
publishes a candidate pose and returns the adjusted pose from the UIGetSyncedImages
synchronizes two camera topics, most useful for synchronizing RGB data with depth data to generate a pose from a pixel coordinate
- Added the
RequestTextFromPrompts
behavior to display textual forms in the UI - Removed internal-only
GetPoseFromUser
andGetIntFromUser
behaviors - Added template behaviors
AddToVector<T>
andResetVector<T>
which can be implemented to allow composing vectors during Objective runtime - Error message improvement to
ActionClientBehaviorBase
:- The
ActionClientBehaviorBase
behavior template now exposes agetAbortedMessage
function that returns a string. The string will be displayed in the MoveIt Studio error toast message if the action is aborted. TheExecuteFollowJointTrajectory
andExecuteTrajectoryWithAdmittance
behaviors now provide useful hints if they are aborted.
- The
- Added
ExecuteTrajectoryWithAdmittance
(see Key Changes section) SetupMTCUpdateGroupCollisionRule
behavior's parameters are no longer read in from a YAML file using theLoadObjectiveParameters
behavior. The behavior parameters are set as input ports.- Added
GetMeshNormalPose
behavior to calculate the surface normals of a visual mesh in the robot model - Added
PublishMarkers
behavior to publish a MarkerArray to the UI/RViz. - Added
SolveIKQueries
behavior to determine if the robot can reach a list of target poses. - New “load from YAML” and “save to YAML” behaviors for:
Octonion
Vector3
Transform
TransformStamped
Time
(builtin_interfaces)Waypoint
(moveit_studio_agent_msgs)UnorderedMap<String, Waypoint>
Controller Changes
- Added a
stop_accelerations
port 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_pro
script 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.