Skip to main content

5.0.0

· 7 min read

Major version increase.

Major UI Enhancements

  • Web UI Modifications: The Web UI now automatically retrieves the generated end effector URDF, enhancing integration and reducing manual configuration efforts.
    • Enhanced Jog Interface: The UI dynamically queries the servo system to identify joggable joints, streamlining user interaction.
    • Request Points from User: Your objective can now request that an operator click location(s) on an image stream, to help you build supervised autonomous workflows.
    • UI Bug Fixes and Improvements:
      • Resolved various UI issues including constraints editor malfunctions, sidebar layout fixes, and enhanced scroll interactions in multiple UI components.
        • Enhanced Error Handling and User Interface Adjustments: Improved error feedback mechanisms and refined user interface elements to enhance the user experience.

Behavior Development and Enhancements

  • Behavior Server Updates: Objective Server now supports automatic generation of tree_nodes_model.xml for Behavior plugins, significantly simplifying behavior management.
    • New Behaviors Introduced:
      • Servo Towards Pose: Allows more intuitive point-and-move operations. Enables Visual Servoing applications.
        • User Interactive Behaviors: Enhanced capabilities for user interaction, including getting points and poses from pixel coordinates.
    • Behavior Stability: Significant stability enhancements and refactoring across various behaviors to improve reliability and performance.
    • Behavior Refactoring: Complex behaviors have been converted to behavior tree objectives using a collection of simpler behaviors, adding further insight and adaptability to existing capabilities.

URDF and SRDF Updates

  • Enhancements to streamline the handling of robot descriptions and semantics.
    • Centralized fetching of robot descriptions ensures consistent application settings.
    • Gripper configurations are now directly integrated from SRDF, improving setup accuracy.

Documentation and Tutorials

  • Added comprehensive guides on using Visual Servoing and implementing pick and place operations, fostering a deeper understanding and broader application of MoveIt Studio functionalities.

MTC (MoveIt Task Constructor) Enhancements

  • Enhanced Debugger Features:
    • Solution Introspection: The MTC solution can be inspected by clicking the bug icon on the PlanMTCTask node in the behavior tree after it gets ticked. Each stage of the MTC task is labelled with a pass/fail indicator as well as time to compute and number of valid solutions.
      • Runtime Metrics: Run times are now displayed in the MTC debugger, providing immediate feedback on task execution durations.
      • Advanced Visualization Overlays: Introduced visualization overlays in the MTC debugger to enhance the clarity of task planning.
    • Visualization and User Interface Optimizations: Improved Error Displays. Collision information is now displayed when MTC plans fail, providing detailed feedback for troubleshooting.
    • Backend Enhancements and Error Handling:
      • Data Storage Enhancements: Task descriptions and statistics are now stored in the backend, enabling better tracking and historical analysis of MTC operations.

Installer and Launcher Updates

  • New Installer: Transitioned to a Debian package-based installer, facilitating a smoother installation process.
    • Launcher Enhancements: Improved the moveit_pro launch script for enhanced user experience starting and managing sessions.

Dependency Management

  • ROS and Ubuntu Snapshot Updates: Current to the latest February 2024 snapshots, ensuring compatibility and performance.
    • BehaviorTree.CPP Upgrade: Updated to version 4.5.2, leveraging new functionalities and performance improvements. This update is part of broader enhancements in package management and dependency declarations, ensuring the system remains robust and efficient.
    • MoveIt 2 Servo Updates: Updated to fix collision checking with attached objects, significantly improving motion planning reliability.

Other improvements

  • Reduce memory usage, improve load times, data consistency and network efficiency.
    • Stability Improvements: Multiple fixes and validations added to enhance the overall stability and reliability of the application framework.

Migration Guide

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 the reference workspace.