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 Setup Assistant 根据机器人描述文件(URDF 或 xacro)自动生成。
请参阅 moveit_resources 仓库,获取 MoveIt 配置包的工作示例。
配置文件概览
Section titled “配置文件概览”MoveIt 配置包的 config/ 文件夹包含若干文件,用于描述 MoveIt 各项功能的参数。
注意,其中部分文件是可选的,具体取决于运行时需要用到哪些功能。
这是 MoveIt 配置包中最重要的信息。该文件夹中必须包含 URDF 和 SRDF 文件,用于描述机器人的运动学、规划组、碰撞规则等。要了解更多信息,请参阅 URDF/SRDF 概述。
URDF 规范允许设置关节位置和速度限制。但你可能希望在不修改底层机器人描述文件的情况下,为 MoveIt 的运动规划定义不同的关节限制。此外,MoveIt 中的某些功能使用额外类型的关节限制,例如加速度和加加速度(jerk)限制,这些无法在 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) 求解器
Section titled “逆运动学 (IK) 求解器”MoveIt 中的许多运动规划应用都需要求解逆运动学。
所使用的 IK 求解器插件及其参数通过一个文件进行配置,该文件的默认位置是 config/kinematics.yaml。
更多信息,请参阅 运动学配置。
运动规划配置
Section titled “运动规划配置”对于 MoveIt 中可用的每种运动规划器插件类型,都有一个对应的 config/*_planning.yaml 文件描述其配置。例如,一台既可以使用 OMPL 又可以使用 Pilz 工业运动规划器 的机器人将具有以下目录结构:
my_robot_moveit_config config/ ompl_planning.yaml pilz_industrial_motion_planner_planning.yaml ... ...默认情况下,所有匹配 config/*_planning.yaml 模式的参数文件都会被加载。如果 OMPL 被配置为规划管线,那么它将是默认管线;否则将使用列表中的第一条管线。
要了解各规划配置文件的内容,请参阅相应规划器的配置文档。
轨迹执行配置
Section titled “轨迹执行配置”MoveIt 通常将机械臂运动命令发布到 JointTrajectoryController。要了解更多信息,请参阅 低层控制器 部分。
轨迹执行信息的默认位置是 config/moveit_controllers.yaml。
MoveItCpp 配置
Section titled “MoveItCpp 配置”如果你正在使用 MoveItCpp,可以定义一个包含所有必要参数的文件。
该文件的默认位置是 config/moveit_cpp.yaml。
3D 感知配置
Section titled “3D 感知配置”如果你使用的感知传感器能够为运动规划生成 3D 点云,可以为 MoveIt 配置这些设置。更多信息,请参阅 感知管线教程。
该文件的默认位置是 config/sensors_3d.yaml。
将配置参数加载到启动文件中
Section titled “将配置参数加载到启动文件中”为了方便地从 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 配置包。