MoveIt 2 Documentation

repository·main·Indexed 23 days ago

https://github.com/moveit/moveit2

An open-source motion planning framework for ROS 2 used for robotics manipulation, prototyping, and algorithm benchmarking. It includes MoveIt Core for kinematic models and collision detection, a variety of motion planners such as CHOMP and the Pilz Industrial Motion Planner, and kinematics plugins including IKFast and a Cached IK system to optimize inverse kinematics solver performance.

Tokens
11.6K
Snippets
20
Records
73
Agent score
84%

What's inside MoveIt 2

  1. Overview of MoveIt ROS components

    main

    The moveit_ros repository contains the ROS-integrated components of MoveIt. It acts as the integration layer that combines libraries from MoveIt Core with various plugins to provide high-level robotics functionality. Key functional areas included in this repository are:

    • planning: Core motion planning logic integrated with ROS.
    • planning interfaces: APIs and interfaces used to interact with planners.
    • benchmarking: Tools for evaluating planning performance.
    • visualization: ROS-based tools for visualizing robot states and trajectories.
  2. Overview of Pilz Industrial Motion Planner

    main
    The Pilz Industrial Motion Planner is a plugin for MoveIt that provides industrial-grade motion planning capabilities. It focuses on predictable, repeatable, and safe motion profiles suitable for industrial applications. For detailed algorithmic information regarding how motions are blended, refer to the MotionBlendAlgorithmDescription.pdf in the documentation directory.
  3. Overview of the MoveIt 2 Python Library

    main

    The moveit_py library provides a simplified Python interface for interacting with the core functionalities of MoveIt 2. It uses pybind11 to generate Python bindings for the underlying C++ core. The library is structured into several components:

    • moveit/: Contains Python library stubs and Python-level functionalities built on top of the bindings.
    • src/moveit/: Contains the pybind11 binding code.
    • docs/: Sphinx documentation.
    • test/: Unit and integration tests.
  4. Overview of MoveIt Planners

    main
    MoveIt Planners provides the standardized interfaces for various motion planning libraries used within the MoveIt ecosystem. These interfaces allow MoveIt to interact with different planning algorithms (such as OMPL, Pilz Industrial Motion Planner, etc.) through a unified API, enabling users to swap or configure different planners for robot motion tasks.
  5. Overview of MoveIt Core libraries

    main

    MoveIt Core provides the foundational libraries required for robot manipulation tasks. These libraries are designed to be independent of ROS (with the exception of ROS messages) and can be used in standalone applications. The core functionality includes:

    • Kinematic Models: Representation of robot kinematic models.
    • Collision Detection: Interfaces and specific implementations for collision detection.
    • Kinematic Solvers: Interfaces for integrating kinematic solver plugins.
    • Motion Planning: Interfaces for motion planning plugins.
    • Controllers and Sensors: Interfaces for interacting with robot controllers and sensors.
  6. Use MoveIt IKFast to generate kinematics plugins

    main

    MoveIt IKFast is a tool that generates a MoveIt kinematics plugin using C++ files produced by OpenRave. This allows for high-performance analytical inverse kinematics (IK) solutions within the MoveIt framework.

    Constraints and Compatibility

    • DOF Limit: This plugin works for 6-DOF and 7-DOF robot arm manipulators. It does not work with robots having more than 7 degrees of freedom.
    • ROS Compatibility: Tested on ROS Hydro and later versions using Catkin.
    • OpenRave Requirement: Requires OpenRave 0.8 for the generation process.
  7. Follow the logger naming convention

    main

    To ensure unique and descriptive logger names in MoveIt 2, use the following pattern: LIBRARY_NAME.SOURCE_FILE_NAME.

    • LIBRARY_NAME: Found in the add_library(LIBRARY_NAME ...) line of the library's CMakeLists.txt.
    • SOURCE_FILE_NAME: The name of the source file.
    • Note: If the source file name is identical or very similar to the library name, using only the source file name is sufficient.
  8. Use moveit_ros_control_interface::Ros2ControlManager

    main

    The Ros2ControlManager plugin interfaces with a single ros_control-driven node. It polls controllers via the list_controllers service at a 1 Hz rate.

    To use this plugin, you must specify the namespace of your ros_control node and provide a list of controllers. Note that all controller names will be prefixed by the ros_control_namespace. To ensure correct prefixing, controller names must not contain slashes (especially if the namespace is /).

    This manager supports automatic controller switching: it can stop conflicting controllers based on claimed resources when a new controller is started.

    ros_control_namespace: /ROS_CONTROL_NODE
    controller_service_call_timeout: 5.0
    controller_list:
      - name: /ROS_CONTROL_NODE/position_trajectory_controller
        action_ns: follow_joint_trajectory
        type: FollowJointTrajectory
        default: true
        joints:
          - joint_a1
          - joint_a2
          - joint_a3
          - joint_a4
          - joint_a5
          - joint_a6
          - joint_a7