2. 创建第一个MoveIt2机器人模型

任务目标

本案例将使用URDF(Unified Robot Description Format)创建一个简单的两连杆机器人模型,并通过MoveIt2的Setup Assistant生成运动规划配置,最终在RViz中显示该机器人模型及其规划场景。

环境准备

确保已安装ROS2 Humble或更高版本,以及MoveIt2。若未安装MoveIt2,执行以下命令:

sudo apt install ros-${ROS_DISTRO}-moveit

创建URDF模型

首先创建ROS2包并编写URDF文件。该模型包含一个基座(base_link)和两个关节连杆(link1、link2),通过旋转关节连接。

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
ros2 pkg create --build-type ament_cmake simple_robot

在simple_robot/urdf目录下创建simple_robot.urdf文件:

<robot name="simple_robot">
  <link name="base_link">
    <visual>
      <geometry><box size="0.2 0.2 0.1"/></geometry>
      <material name="blue"/>
    </visual>
  </link>

  <link name="link1">
    <visual>
      <geometry><cylinder radius="0.05" length="0.3"/></geometry>
      <origin xyz="0 0 0.15"/>
      <material name="red"/>
    </visual>
  </link>

  <link name="link2">
    <visual>
      <geometry><cylinder radius="0.04" length="0.25"/></geometry>
      <origin xyz="0 0 0.125"/>
      <material name="green"/>
    </visual>
  </link>

  <joint name="joint1" type="revolute">
    <parent link="base_link"/>
    <child link="link1"/>
    <origin xyz="0 0 0.1"/>
    <axis xyz="0 0 1"/>
    <limit lower="-3.14" upper="3.14" effort="10" velocity="1.0"/>
  </joint>

  <joint name="joint2" type="revolute">
    <parent link="link1"/>
    <child link="link2"/>
    <origin xyz="0 0 0.3"/>
    <axis xyz="0 1 0"/>
    <limit lower="-1.57" upper="1.57" effort="10" velocity="1.0"/>
  </joint>

  <material name="blue"><color rgba="0.2 0.3 0.8 1.0"/></material>
  <material name="red"><color rgba="0.8 0.2 0.2 1.0"/></material>
  <material name="green"><color rgba="0.2 0.8 0.2 1.0"/></material>
</robot>

配置MoveIt2

使用MoveIt2 Setup Assistant生成运动规划配置包:

ros2 launch moveit_setup_assistant setup_assistant.launch.py
  1. 点击"Create New MoveIt Config Package"
  2. 浏览并选择simple_robot.urdf文件
  3. 点击"Generate Package",名称设为simple_robot_moveit_config,生成路径选择~/ros2_ws/src
  4. 在"Planning Groups"中创建名为arm的组,类型为Kinematic Chain,基座选择base_link,末端选择link2
  5. 点击"Generate Package"完成生成

编译与运行

cd ~/ros2_ws
colcon build --packages-select simple_robot simple_robot_moveit_config
source install/setup.bash

启动RViz并显示机器人模型:

ros2 launch simple_robot_moveit_config demo.launch.py

验证方法

启动后应观察到以下现象:

  • RViz窗口打开,中央显示蓝色基座、红色连杆1和绿色连杆2组成的机器人模型
  • 左侧Displays面板中"MotionPlanning"插件已加载,显示当前规划场景
  • 可通过拖拽"MotionPlanning"面板中的交互标记(球状滑块)来移动机器人末端,关节将随之运动
  • 在终端中执行ros2 topic echo /joint_states可看到关节角度实时更新

若模型正确显示且交互标记可拖动关节运动,则说明URDF模型创建成功并已正确集成到MoveIt2中。

常见问题

  • 模型不显示:检查URDF文件路径是否正确,确认demo.launch.py中加载的URDF路径与生成配置时一致
  • 关节无法拖动:确认Planning Group已正确配置,且关节类型为revolute并设置了合理的limit
  • 颜色不显示:确保material定义在robot标签内且名称引用正确