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: