Skip to main content

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 your cameras.yaml to a cameras.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.
    • Added new Behaviors and UI functionality for operator input, RequestTextFromPrompts and AdjustPoseWithIMarker
    • Major SubTree usability enhancements in the Objective Builder

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})

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

Behavior Changes

  • Behaviors added to support grasp candidate adjustment in the UI:
    • AdjustPoseWithIMarker publishes a candidate pose and returns the adjusted pose from the UI
      • GetSyncedImages 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 and GetIntFromUser behaviors
    • Added template behaviors AddToVector<T> and ResetVector<T> which can be implemented to allow composing vectors during Objective runtime
    • Error message improvement to ActionClientBehaviorBase:
      • The ActionClientBehaviorBase behavior template now exposes a getAbortedMessage function that returns a string. The string will be displayed in the MoveIt Studio error toast message if the action is aborted. The ExecuteFollowJointTrajectory and ExecuteTrajectoryWithAdmittance behaviors now provide useful hints if they are aborted.
    • Added ExecuteTrajectoryWithAdmittance (see Key Changes section)
    • SetupMTCUpdateGroupCollisionRule behavior's parameters are no longer read in from a YAML file using the LoadObjectiveParameters 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.

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.