Skip to main content

4.0.0

· 5 min read

Changes in This Release

Major version increase and rebrand to MoveIt Pro.

  • Updated Terms and Conditions.
  • Several user commands and folder locations have changed from moveit_studio to moveit_pro.
  • MoveIt Pro core Docker image no longer contains robot-specific packages, which changes user workflows.
  • Major refactor of teleoperation:
    • Switched to single Teleoperate Objective that allows user to move between different teleoperation modes without switching Objectives.
      • Added reusable Request Teleoperation Subtree that allows adding teleoperation in your custom Objectives, with configurable prompts to guide operators.
  • New Behaviors:
    • FitLineSegmentToMask3D - Fits a line segment to a 3D point cloud fragment.
      • LoadPoseStampedFromYaml - Loads a stamped pose ROS message from a YAML file.
  • Developer tooling:
    • Modifications to Objectives and Waypoints in the UI are now synced to user workspace source code, and vice versa.
      • New metadata format in tree_nodes_model.xml to categorize your Behaviors.
      • Added SendMessageToTopicBehaviorBase class to create Behaviors that publish to a ROS topic.
      • Improved error messages when Behavior ports are set incorrectly.
  • Universal Robots (UR) example workspace:
    • Repository renamed to moveit_studio_ur_ws for clarity.
      • Removed the camera-aligned manual_grasp_link frame from robot description, in favor of the gripper-aligned grasp_link frame.
  • Improved servoing for position-controller robots, which requires changes in MoveIt Servo configuration.
  • New ./moveit_pro logs command to open a log viewer.
  • Documentation:
    • Tutorials on creating Behaviors that interact with ROS services and actions.
      • New reference application pages on Object Registration and ML Segmentation.
      • Added ability to provide user feedback on documentation pages. Please share your feedback with us!
  • UI Updates:
    • Simplified interface: smaller logo, manual control options appear only when teleoperating.
      • Improved validation for misconfigured ports and unconnected Behaviors.

Migration Guide

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: