ROS2学习(16)------ URDF 机器人建模方法
- 操作系统:ubuntu22.04
- IDE:Visual Studio Code
- 编程语言:C++11
- ROS版本:2
在 ROS 2 中使用 URDF(Unified Robot Description Format)进行机器人建模是一个常见的做法。URDF 是一种 XML 格式的文件,用于描述机器人的连杆、关节、视觉外观以及碰撞属性等信息。以下是创建和使用 URDF 文件的基本步骤:
1. 创建 URDF 文件
首先,在你的 ROS 2 工作空间中为你的机器人模型创建一个包,并添加 URDF 文件。
示例步骤:
- 在 src 目录下创建一个新的包,比如叫做 my_robot_description。
cd ~/ros2_ws/src/
ros2 pkg create my_robot_description --build-type ament_cmake
- 在该包内创建一个目录来存放 URDF 文件,例如 urdf/。
mkdir my_robot_description/urdf
- 创建一个 .urdf 文件,如 my_robot.urdf.xacro 或直接 .urdf 文件。
示例 URDF 文件内容:
<?xml version="1.0"?>
<robot name="my_robot"><link name="base_link"><visual><geometry><box size="1 1 1"/></geometry></visual></link>
</robot>
这里定义了一个简单的立方体作为机器人的基座。
2. 使用 Xacro 增强 URDF
Xacro (XML Macros) 是 URDF 的扩展,允许你编写更简洁的 URDF 文件,通过宏定义重用代码片段。推荐使用 .xacro 后缀名。
示例 Xacro 文件内容:
<?xml version="1.0"?>
<robot name="blue_cylinder" xmlns:xacro="http://www.ros.org/wiki/xacro"><!-- 定义 base_link,作为整个模型的根 link --><link name="base_link"><visual><geometry><cylinder radius="0.2" length="0.6"/></geometry><material name="blue"><color rgba="0 1 1 1"/></material></visual></link><!-- 添加一个球形 link --><link name="top_link"><visual><geometry><sphere radius="0.1"/></geometry><material name="red"><color rgba="1 0 0 1"/></material></visual></link><!-- dummy link --><link name="dummy_link"/><!-- 球形 link 的固定关节 --><joint name="top_joint" type="fixed"><parent link="base_link"/><child link="top_link"/><origin xyz="0 0 0.5" rpy="0 0 0"/></joint><!-- dummy link 的固定关节 --><joint name="dummy_joint" type="fixed"><parent link="base_link"/><child link="dummy_link"/><origin xyz="0 0 0" rpy="0 0 0"/></joint></robot>
3. 加载 URDF/Xacro 文件到参数服务器
为了能够在 RViz 中显示你的机器人模型,你需要将 URDF 文件加载到参数服务器上。
创建一个启动文件:
在 launch 目录下创建一个 Python 脚本,例如 display.launch.py。
from launch import LaunchDescription
from launch_ros.actions import Node
from ament_index_python.packages import get_package_share_directory
import osdef generate_launch_description():urdf_file = os.path.join(get_package_share_directory('my_robot_description'), 'urdf', 'my_robot.urdf.xacro')return LaunchDescription([Node(package='robot_state_publisher',executable='robot_state_publisher',output='screen',arguments=[urdf_file]),Node(package='joint_state_publisher_gui',executable='joint_state_publisher_gui',output='screen'),Node(package='rviz2',executable='rviz2',output='screen')])
4. 运行并查看模型
确保所有更改都已保存后,构建你的工作空间,并运行刚刚创建的启动文件。
colcon build --packages-select my_robot_description
source install/setup.bash
ros2 launch my_robot_description display.launch.py
这将会打开 RViz 并显示你的机器人模型:
默认打不开模型,需要设置一下参数,才能看到模型
(1).确保 RViz 正确加载 RobotModel
- 打开 RViz 后,点击 Add → RobotModel。
- 在 RobotModel 的 Description Topic 确保是 /robot_description(默认值)。
(2) 检查坐标系 (TF)
- 在 RViz 中添加 TF 显示,检查是否有base_link 或 dummy_link 的坐标系。
- 如果没有 TF 数据,可能是 robot_state_publisher 没有正确发布。
(3) 检查显示设置
- 确保 Global Options → Fixed Frame 设置为 base_link(取决于你的 URDF)。
然后就会看到模型正确加载了: