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
- 点击"Create New MoveIt Config Package"
- 浏览并选择
simple_robot.urdf文件 - 点击"Generate Package",名称设为
simple_robot_moveit_config,生成路径选择~/ros2_ws/src - 在"Planning Groups"中创建名为
arm的组,类型为Kinematic Chain,基座选择base_link,末端选择link2 - 点击"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标签内且名称引用正确