MoveIt 配置

为您的机器人配置 MoveIt 的推荐方法是创建一个包含 MoveIt 配置的 colcon 包。

假设您想为某个名为“my_robot”的机器人创建配置包。 为此,您可以创建一个名为“my_robot_moveit_config”的 colcon 包,其结构如下:

my_robot_moveit_config
    config/
        kinematics.yaml
        joint_limits.yaml
        *_planning.yaml
        moveit_controllers.yaml
        moveit_cpp.yaml
        sensors_3d.yaml
        ...
    launch/
    .setup_assistant
    CMakeLists.txt
    package.xml

您可以手动创建这样的包,或者使用 MoveIt 设置助手 根据机器人描述文件 (URDF 或 xacro) 自动生成它。

请参阅 moveit_resources 存储库,获取 MoveIt 配置包的工作示例。

配置文件概述

MoveIt 配置包的 config/ 文件夹包含几个文件,这些文件描述了 MoveIt 各种功能的参数。

请注意,这些文件中有几个是可选的,具体取决于运行时所需的功能。

机器人描述

这是 MoveIt 配置包中最重要的信息。

此文件夹中必须有一个 URDF 和 SRDF 文件来描述机器人运动学、规划组、碰撞规则等。 要了解有关这些文件的更多信息,请参阅:doc:URDF/SRDF 概述 </doc/examples/urdf_srdf/urdf_srdf_tutorial>。

关节限制

URDF 文件规范允许设置关节位置和速度限制。 但是,您可能希望使用 MoveIt 定义不同的关节限制以进行运动规划,而无需修改底层机器人描述文件。 此外,MoveIt 中的某些功能使用其他类型的关节限制,例如加速度和急动限制,这些限制无法在 URDF 中指定。

此文件的默认位置位于“config/joint_limits.yaml”中。

以下是具有两个关节的简单机器人的关节限制文件的示例片段:

joint_limits:
    joint1:
        has_velocity_limits: true
        max_velocity: 2.0
        has_acceleration_limits: true
        max_acceleration: 4.0
        has_jerk_limits: false
    panda_joint2:
        has_velocity_limits: true
        max_velocity: 1.5
        has_acceleration_limits: true
        max_acceleration: 3.0
        has_jerk_limits: false

逆运动学 (IK) 解算器

MoveIt 中的许多运动规划应用都需要求解逆运动学。

使用的 IK 解算器插件及其参数均通过默认位置为 config/kinematics.yaml 的文件进行配置。

有关更多信息,请参阅:doc:运动学配置

运动规划配置

对于 MoveIt 中可用的每种类型的运动规划器插件,都有一个相应的 config/*_planning.yaml 文件来描述其配置。 例如,可以同时使用:doc:OMPL 和:doc:Pilz Industrial Motion Planner 的机器人将具有以下文件夹结构:

my_robot_moveit_config
    config/
        ompl_planning.yaml
        pilz_industrial_motion_planner_planning.yaml
        ...
    ...

默认情况下,将加载与此 config/*_planning.yaml 模式匹配的所有参数文件。 如果 OMPL 配置为规划管道,则这将是默认管道;否则,它将是列表中的第一个管道。

要了解有关各个规划配置文件内容的更多信息,请参阅这些规划器的配置文档。

轨迹执行配置

MoveIt 通常将机械手运动命令发布到 JointTrajectoryController。 要了解更多信息,请参阅 Low Level Controllers 部分。

轨迹执行信息的默认位置位于``config/moveit_controllers.yaml``中。

MoveItCpp 配置

如果您使用的是:doc:MoveItCpp,则可以定义一个包含所有必要参数的文件。

此文件的默认位置位于``config/moveit_cpp.yaml``中。

3D 感知配置

如果您使用的是能够生成 3D 点云进行运动规划的感知传感器,则可以为 MoveIt 配置这些设置。 有关更多信息,请参阅:doc:感知管道教程

此文件的默认位置为“config/sensors_3d.yaml”。

将配置参数加载到启动文件中

为了轻松地从 MoveIt 配置包中加载参数以用于您的 ROS 2 启动文件,MoveIt 提供了一个“MoveItConfigsBuilder”实用程序。 要从您的“my_robot_moveit_config”包中加载配置参数:

from moveit_configs_utils import MoveItConfigsBuilder

moveit_config = (
    MoveItConfigsBuilder("my_robot")
    .to_moveit_configs()
)

然后,您可以在启动节点时使用完整的配置参数集:

from launch_ros.actions import Node

my_node = Node(
    package="my_package",
    executable="my_executable",
    parameters=[moveit_config.to_dict()],
)

或者您可以按如下方式包含选定的子组件:

from launch_ros.actions import Node

my_node = Node(
    package="my_package",
    executable="my_executable",
    parameters=[
        moveit_config.robot_description,
        moveit_config.robot_description_semantic,
        moveit_config.robot_description_kinematics,
    ],
)

请注意,上述语法将自动查找与本文档中描述的默认文件命名模式匹配的配置文件。 如果您有不同的命名约定,可以使用“MoveItConfigsBuilder”中提供的函数直接设置文件名。 例如,要使用非默认的机器人描述和 IK 解算器文件路径,并配置规划管道:

from moveit_configs_utils import MoveItConfigsBuilder

moveit_config = (
    MoveItConfigsBuilder("my_robot")
    .robot_description(file_path="config/my_robot.urdf.xacro")
    .robot_description_kinematics(file_path="config/my_kinematics_solver.yaml")
    .planning_pipelines(
        pipelines=["ompl", "pilz_industrial_motion_planner"],
        default_planning_pipeline="pilz_industrial_motion_planner",
    )
    .to_moveit_configs()
)

现在您已经阅读了此页面,您应该能够更好地理解整个 MoveIt 2 教程中以及在遇到其他 MoveIt 配置包时可用的启动文件。