Migration to 4.0.0

Rebrand to MoveIt Pro

MoveIt Studio has been rebranded to MoveIt Pro. While several of the internal developer tooling still retains the moveit_studio prefix, the documentation and user install/launch scripts have been switched to moveit_pro.

Key things to highlight:

  • MoveIt Pro will now install to the ${HOME}/moveit_pro folder.
  • Launch commands now take the syntax ./moveit_pro <args>, for example ./moveit_pro run -v.
  • Local configuration now exists in the ${HOME}/.config/moveit_pro folder, and is symlinked to your user workspace source code.

If you are upgrading from a previous version, which has files installed in the ${HOME}/moveit_studio folder, ensure to uninstall those files as they will no longer be used as of version 4.0.0.

Core Docker image no longer contains robot-specific packages

In previous releases, all the necessary packages for running with Universal Robots were already included with the core MoveIt Pro Docker image. As the tool moves towards a robot-agnostic core, users are now required to Create Overlay Docker Images containing any additional dependencies specific to robot hardware.

Now, the ./moveit_pro command will locate your user workspace location using the STUDIO_HOST_USER_WORKSPACE environment variable and use the Dockerfile available in that workspace. This Dockerfile must define the additional operations to ensure any additional robot-specific dependencies are installed.

With these changes, the ./moveit_pro build command will now ensure that both your overlay Docker image and your user workspace packages are built. To run these steps individually, you can use ./moveit_pro build_docker and ./moveit_pro build_workspace, respectively.

Teleoperation changes

In previous releases, MoveIt Pro required two separate Teleoperate Joint Jog and Teleoperate Twist Objectives, for joint jogging and pose jogging, respectively. Additionally, other modes of teleoperation (such as moving to Waypoints, joint sliders, etc.) required starting new Objectives.

Starting with version 4.0.0, there is a single Teleoperate Objective that switches teleoperation modes based on state within the UI. This allows you to switch between different teleoperation modes without switching Objectives, which reduces latency in switching modes.

Additionally, you can now add a reusable Request Teleoperation Subtree to your custom Objectives to introduce teleoperation as part of an existing Objective. This includes the ability to provide prompts to display to operators, potentially instructing them on how to teleoperate their robot to achieve the intended task.

To include teleoperation in your custom Objectives, you can insert the following XML:

<SubTree ID="Request Teleoperation"
         enable_user_interaction="true"
         user_interaction_prompt="Your prompt goes here"
         initial_teleop_mode="3"
/>

Here, the initial_teleop_mode number is defined in this ROS message enumeration.

New Behavior Metadata format in tree_nodes_model.xml file

In upgrading to BehaviorTree.CPP 4.5.0, the way to express metadata has been standardized to automatically generate metadata fields from source code.

When switching to MoveIt Pro version 4.0.0, ensure these changes are implemented in your tree_nodes_model.xml files containing custom Behavior metadata.

Previous:

<Action ID="MyBehavior">
    <metadata subcategory="My Category"/>
</Action>

Updated:

<Action ID="MyBehavior">
    <MetadataFields>
        <Metadata subcategory="My Category"/>
    </MetadataFields>
</Action>

Servo Configuration Changes

MoveIt Servo has been updated to a new version that provides improved capabilities for position-controlled robots by accounting for maximum latency.

Starting with version 4.0.0, your MoveIt Servo configuration file can contain the following changes:

# New parameter: Delay between sending a command and the robot executing it
max_expected_latency: 0.1

# Previously existing smoothing plugin, and parameters
smoothing_filter_plugin_name: "online_signal_smoothing::ButterworthFilterPlugin"
low_pass_filter_coeff: 1.5

# Can instead choose the following new smoothing plugin, along with its parameters
smoothing_filter_plugin_name: "online_signal_smoothing::AccelerationLimitedPlugin"
acceleration_filter_update_period: 0.01  # Must match the publish_period parameter

Additionally, your config.yaml file in your configuration package now has a moveit_params.servo_joint_limits option that can specify different joint limits than motion planning. If this is omitted, the same joint limits as motion planning (defined in moveit_params.joint_limits) will be used.

moveit_params:
    # ... other configuration goes here
    servo:
        package: "picknik_ur_base_config"
        path: "config/moveit/ur_servo.yaml"
    servo_kinematics:
        package: "picknik_ur_base_config"
        path: "config/moveit/trac_ik_kinematics_speed.yaml"
    servo_joint_limits:
        package: "picknik_ur_base_config"
        path: "config/moveit/hard_joint_limits.yaml"

For more information on these changes, refer to the following MoveIt pull requests: