实用指南:机器人描述文件xacro(urdf扩展)
一、定义
通俗来说,xacro 就是 urdf 文件的一种“进阶版”,它是用来简化和优化机器人的描述文件,使得多个机器人可以共享同样的部件和结构,避免重复编写相同的代码。
假设你有很多机器人,它们的结构相似,比如都有轮子、传感器、臂部等部件。每次你需要为这些机器人写 urdf 文件时,都要重复描述每个部件(比如轮子、关节、传感器等)。这样写非常繁琐且容易出错。
xacro 的作用 :就是通过封装和参数化这些部件,使得你可以更方便地重用已有的结构,只需要少量的修改就可以生成不同机器人的 urdf 文件。类似C语言中函数的封装。
二、xacro 文件常见组成部分
1. 命名空间声明
该命名空间的定义使得文件中的 xacro 特性能够正常工作,让你在模型中使用宏和其他 xacro 相关的功能。
2. 定义宏
宏用于封装可复用的结构,例如机器人关节、链接等。你可以定义一个宏并在多个地方调用它,宏可以带有参数,这样就可以创建不同配置的部件。
<xacro:macro name="wheel" params="name x_offset y_offset">
<!-- 定义轮子的link和joint -->
</xacro:macro>
3. 调用宏
宏定义完成后,可以在 xacro 文件的任意位置调用宏来生成相应的部件。调用时,可以传递参数值来定制生成的部件。
4. 定义参数
你可以在 xacro 文件中定义变量(参数),这些变量可以在宏中使用,也可以传递给其它部分。这使得配置变得更加灵活和动态。
在这个例子中,wheel_radius 是一个参数,表示轮子的半径。在后续的代码中,可以直接使用这个参数。
5. 条件语句
xacro 支持条件语句,你可以根据不同的条件生成不同的机器人模型或某些部件。例如,如果你希望某个部件只有在某个参数为 true 时才创建,你可以使用 xacro:if 和 xacro:else。
6. 转换 xacro 文件为 urdf
你可以使用 ROS 提供的工具来将 xacro 文件转换为 URDF 文件,生成的 URDF 文件可以直接用于机器人仿真、控制等。
rosrun xacro xacro mybot.xacro > mybot.urdf
7. gazebo标签
在 XACRO 文件中,<gazebo> 标签用于定义与 Gazebo 仿真环境 相关的设置和插件。Gazebo 是一个强大的仿真工具,用于模拟机器人、传感器以及与环境的交互。当你在 XACRO 中使用 gazebo 标签时,通常是为了控制仿真中的物理属性、传感器和控制插件。
三、代码示例
1. gazebo标签使用(仿真参数配置)
功能:用于描述一些物体以及传感器在gazebo仿真中的一些数据,例如摩擦系数、速度等等。
mybot_gazebo.xacro
Gazebo/DarkGrey
0.5
0.5
500000.0
10.0
0.001
1.0
1 0 0
Gazebo/DarkGrey
0.5
0.5
500000.0
10.0
0.001
1.0
1 0 0
Gazebo/FlatBlack
0.1
0.1
500000.0
100.0
0.001
1.0
Gazebo/FlatBlack
true
$(arg imu_visual)
Gazebo/FlatBlack
cmd_vel
odom
odom
world
true
base_footprint
false
true
true
false
30
left_wheel_joint
right_wheel_joint
0.180
0.05
10
100
na
true
imu
imu
imu
imu_service
0.0
0
gaussian
0.0
2e-4
0.0000075
0.0000008
0.0
1.7e-2
0.1
0.001
Gazebo/FlatBlack
0 0 0 0 0 0
$(arg laser_visual)
7
720
0.5
0.0
6.28319
0.120
12.0
0.015
gaussian
0.0
0.01
scan
base_laser_link
true
$(arg camera_visual)
1.085595
640
480
R8G8B8
0.03
100
true
30.0
/
base_camera_link
image_raw
camera_info
0.07
0.0
0.0
0.0
0.0
0.0
2. 引用仿真配置并定义机器人模型(结构)
功能:这段代码描述了一个机器人(mybot)的 物理模型和结构,代码通过定义多个链接(link)和关节(joint)来描述机器人的组成部分,包括主体、轮子、支撑轮、激光雷达等。当我们构建不同的机器人模型时,都可以引用之前的仿真配置。
注意:这两个文件中的 <robot name="mybot" xmlns:xacro="http://ros.org/wiki/xacro"> 中的 name 字段应该一致。
mybot1.xacro
四、加载仿真模型(含传感器的机器人)
1. 编写launch文件
最终我们运行的mybot1.xacro ,里面包含了机器人的模型和仿真配置文件。编写launch文件来启动仿真模型。
simulation_robot.launch
注意:

2. 实际效果


浙公网安备 33010602011771号