Migration to 5.0.0

New installation: MoveIt Pro Debian Package

Starting with version 5.0.0, MoveIt Pro is now available as a Debian package. The installer will make the moveit_pro command available in your terminal, which can be used to run the MoveIt Pro tool.

MoveIt Pro is now installed system-wide, and the user workspace is located in the ${HOME}/moveit_pro folder.

Removed .env file

The .env file has been removed from the MoveIt Pro tool in version 5.0.0.

You can configure your MoveIt Pro installation with help of the moveit_pro configure command, which will ask you for the necessary information and write it to the configuration file. You can also manually edit the configuration file located at ${HOME}/.config/moveit_pro/moveit_pro_config.yaml.

Removed tree_nodes_model.xml

The tree_nodes_model.xml file that previously had to be manually created and maintained for all Behaviors is now auto-generated. The auto-generated file is located at ${HOME}/.config/moveit_pro/${STUDIO_CONFIG_PACKAGE}/auto-created/generated_tree_nodes_model.xml.

Behaviors now need the following to ensure they’re a part of generated_tree_nodes_model.xml:

  • a static BT::KeyValueVector metadata() method needs to be added to the Behavior class’ public API.
  • in static BT::PortsList providedPorts(), add a default value and port description for each port definition.

Here is an example c++ implementation for a Behavior called MyBehavior, which has the following ports:

  • input port named text_in of type std::string
  • output port named num_out of type int
BT::KeyValueVector MyBehavior::metadata()
{
  return { { "subcategory", "Custom Behaviors" }, { "description", "This is a Behavior that takes in a string and outputs an int." } };
}

BT::PortsList MyBehavior::providedPorts()
{
  return { BT::InputPort<std::string>("text_in", "default value for port text_in", "Description of port text_in"),
           BT::OutputPort<int>("num_out", 5, "Description of port num_out") };
}

Dependency Changes for Debian Users

For RTPC Debian machine users running into a runtime moveit-pro : Depends: python3-typer error, enabling bulleseye-backports will resolve the issue:

echo "deb http://deb.debian.org/debian bullseye-backports main contrib non-free" | sudo tee -a /etc/apt/sources.list

Multiple core Behavior plugins

Core Behaviors have been separated out into multiple plugins that can be added or removed depending on the user needs.

The config.yaml file in a configuration package used to contain:

# Configuration for loading behaviors and objectives.
objectives:
  behavior_loader_plugins:
    # This plugin will load the core MoveIt Pro Behaviors.
    # Add additional plugin loaders as needed.
    core:
      - "moveit_studio::behaviors::CoreBehaviorsLoader"

In version 5.0.0, MTC, Vision, and Servo Behaviors are grouped into separate plugins. To include all MoveIt Pro behaviors add the following plugins:

# Configuration for loading behaviors and objectives.
objectives:
  behavior_loader_plugins:
    # This plugin will load the core MoveIt Pro Behaviors.
    # Add additional plugin loaders as needed.
    core:
      - "moveit_studio::behaviors::CoreBehaviorsLoader"
      - "moveit_studio::behaviors::MTCCoreBehaviorsLoader"
      - "moveit_studio::behaviors::ServoBehaviorsLoader"
      - "moveit_studio::behaviors::VisionBehaviorsLoader"

Changes in input ports affecting Behaviors and Objectives

Input ports of numerical types (e.g. int, double) can no longer be initialized with empty strings. You may have Objectives coming from previous releases that need to be updated. For instance, an old Objective may call the RetrievePoseParameter Behavior with an empty string on the timeout_sec port:

<!-- No longer valid: an empty string can't be converted to a numerical type. -->
<Action ID="RetrievePoseParameter" timeout_sec="" pose="{target_pose}"/>

Numerical ports now need to contain a valid numerical value, or not be specified at all:

<!-- Valid: 'timeout_sec' will be an input port without a value. -->
<!-- The Behavior needs to handle the case where the port is not set. -->
<Action ID="RetrievePoseParameter" pose="{target_pose}"/>

<!-- Valid: 'timeout_sec' will contain value -1. -->
<Action ID="RetrievePoseParameter" timeout_sec="-1" pose="{target_pose}"/>

moveit_pro command improvements

In previous releases, the MoveIt Pro tool was launched from the installation directory by running the ./moveit_pro or ./moveit_studio command. Starting with version 5.0.0, the tool is now launched by running the moveit_pro command in your terminal from any directory.

One significant change is that ./moveit_pro build_workspace has been replaced by moveit_pro build user_workspace.

Type moveit_pro --help for additional guidance on command line usage or moveit_pro COMMAND --help for details specific to each command.

To reference the changes made to the example workspace between 4.0.1 and 5.0.0, visit https://github.com/PickNikRobotics/moveit_studio_ur_ws/compare/4.0.1…5.0.0.