一、URDF文件树
- link:轮子,车身等机器人的组成部分的物理模型,里面可能包括:
- 外观:visual
- 物理性质:inertial
- 重心:origin
- 质量:mass
- 惯性矩阵:inertia
- 碰撞体:collision
<link name="base_link">
<inertial>
<mass value="0.07862944645"/>
<inertia
ixx="0.00002035985530754"
ixy="0"
ixz="0"
iyy="0.00002035985530754"
iyz="0"
izz="0.00003945961663220"
/>
</inertial>
<visual>
<geometry>
<mesh filename="/mnt/e/nav2_ws/src/sam_bot_description/mesh/base.stl"/>
</geometry>
<material name="base_material">
<color rgba="1 1 1 1"/>
</material>
</visual>
<collision>
<geometry>
<mesh filename="/mnt/e/nav2_ws/src/sam_bot_description/mesh/base.stl"/>
</geometry>
</collision>
</link>
- joint:两个组成部分之间的关节。里面可能包括:
- 两个组成部分之间的坐标变换:
- 父link:parent
- 子link:child
- 子相对于父的坐标系旋转:axis
- 子相对于父的坐标系平移:origin
- 关节的活动类型:type
<joint
name="base_joint"
type="fixed"
>
<parent link="base_footprint"/>
<child link="base_link"/>
<axis xyz="0 0 1"/>
<origin xyz="0 0 0.01905"/>
</joint>
- gazebo:用于gazebo仿真的插件,里面可能包括:
- 依附的link:reference
- 模拟传感器:sensor,里面可能包括:
- 传感器类型:type
- 激活状态:always_on
- 更新频率:update_rate
- 可视化:visualize
- 传感器参数:与type传递的参数一致
- 插件参数:plugin。里面可能包括
- 要打开的插件:filename
- 插件的映射话题:remapping
- 输出的消息类型:output_type
- 依附的坐标系:frame_name
<gazebo reference="lidar_link">
<sensor name="lidar" type="ray">
<always_on>true</always_on>
<visualize>true</visualize>
<update_rate>5</update_rate>
<ray>
<scan>
<horizontal>
<samples>360</samples>
<resolution>1.000000</resolution>
<min_angle>0.000000</min_angle>
<max_angle>6.280000</max_angle>
</horizontal>
</scan>
<range>
<min>0.120000</min>
<max>3.5</max>
<resolution>0.015000</resolution>
</range>
<noise>
<type>gaussian</type>
<mean>0.0</mean>
<stddev>0.01</stddev>
</noise>
</ray>
<plugin name="scan" filename="libgazebo_ros_ray_sensor.so">
<ros>
<remapping>~/out:=scan</remapping>
</ros>
<output_type>sensor_msgs/LaserScan</output_type>
<frame_name>lidar_link</frame_name>
</plugin>
</sensor>
</gazebo>
二、关节类型详解
- fixed:固定关节,表示连接的两个链接在相对位置和方向上不变,不能进行旋转和移动。
- revolute:旋转关节,表示连接的两个链接可以在一个轴向上绕固定点旋转。
- continuous:连续旋转关节,与旋转关节相似,但是旋转不受限制,可以无限旋转。
- prismatic:移动关节,表示连接的两个链接可以沿着一个方向上移动。
- floating:浮动关节,表示连接的两个链接可以在三维空间中旋转和移动,具有 6 个自由度。
- planar:平面关节,表示连接的两个链接可以在一个平面内旋转和移动,具有 3 个自由度。
- fixed 和 floating 类型的关节没有关节参数(如旋转轴、限位等),而其他类型的关节都有特定的参数。
三、传感器类型详解:
- camera:相机传感器,用于获取图像数据。
- depth:深度传感器,用于获取深度信息。
- imu:IMU传感器,用于获取机器人的姿态和加速度等信息。
- gps:GPS传感器,用于获取机器人的GPS定位信息。
contact:接触传感器,用于检测机器人与外界的接触情况。 - ray:光线传感器,用于模拟机器人的激光雷达或红外传感器等。
- force_torque:力矩传感器,用于获取机器人的力和力矩信息。
- joint_state:关节状态传感器,用于获取机器人的关节角度、速度和加速度等信息。
- contact_sensor:接触传感器,用于检测机器人与外界的接触情况。
- ft_sensor:力矩传感器,用于获取机器人的力和力矩信息。
- ray_sensor:光线传感器,用于模拟机器人的激光雷达或红外传感器等。
- sensor_plugin:传感器插件,用于自定义传感器的类型和功能。
3.1 IMU:里程计插件
- angular_velocity:表示角速度的噪声模型配置,包括x、y、z三个轴向的配置。
- x、y、z:表示x、y、z三个轴向的噪声模型配置。
- noise:表示噪声的类型,这里是高斯噪声模型。
- mean:表示噪声的均值,这里是0.0。
- stddev:表示噪声的标准差,这里是2e-4。
- bias_mean:表示噪声的偏移均值,这里是0.0000075。
- bias_stddev:表示噪声的偏移标准差,这里是0.0000008。
- linear_acceleration:表示线性加速度的噪声模型配置,包括x、y、z三个轴向的配置。
<imu>
<angular_velocity>
<x>
<noise type="gaussian">
<mean>0.0</mean>
<stddev>2e-4</stddev>
<bias_mean>0.0000075</bias_mean>
<bias_stddev>0.0000008</bias_stddev>
</noise>
</x>
<y>
<noise type="gaussian">
<mean>0.0</mean>
<stddev>2e-4</stddev>
<bias_mean>0.0000075</bias_mean>
<bias_stddev>0.0000008</bias_stddev>
</noise>
</y>
<z>
<noise type="gaussian">
<mean>0.0</mean>
<stddev>2e-4</stddev>
<bias_mean>0.0000075</bias_mean>
<bias_stddev>0.0000008</bias_stddev>
</noise>
</z>
</angular_velocity>
<linear_acceleration>
<x>
<noise type="gaussian">
<mean>0.0</mean>
<stddev>1.7e-2</stddev>
<bias_mean>0.1</bias_mean>
<bias_stddev>0.001</bias_stddev>
</noise>
</x>
<y>
<noise type="gaussian">
<mean>0.0</mean>
<stddev>1.7e-2</stddev>
<bias_mean>0.1</bias_mean>
<bias_stddev>0.001</bias_stddev>
</noise>
</y>
<z>
<noise type="gaussian">
<mean>0.0</mean>
<stddev>1.7e-2</stddev>
<bias_mean>0.1</bias_mean>
<bias_stddev>0.001</bias_stddev>
</noise>
</z>
</linear_acceleration>
</imu>
3.2 RAY雷达插件
- scan:子标签,用于描述激光雷达扫描的属性。
- horizontal:子标签,用于描述激光雷达水平方向的属性。
- samples:子标签,表示激光雷达扫描的样本数量,这里为360个。
- resolution:子标签,表示激光雷达扫描的分辨率,这里为1.0。
- min_angle:子标签,表示激光雷达扫描的最小角度,这里为0。
- max_angle:子标签,表示激光雷达扫描的最大角度,这里为6.28。
- range:子标签,用于描述激光雷达的测量范围。
- min:子标签,表示激光雷达的最小测量范围,这里为0.12。
- max:子标签,表示激光雷达的最大测量范围,这里为3.5。
- resolution:子标签,表示激光雷达的测量分辨率,这里为0.015。
- noise:子标签,用于描述激光雷达的噪声。
- type:子标签,表示激光雷达噪声的类型,这里为高斯噪声。
- mean:子标签,表示激光雷达噪声的均值,这里为0。
- stddev:子标签,表示激光雷达噪声的标准差,这里为0.01。
<ray>
<scan>
<horizontal>
<samples>360</samples>
<resolution>1.000000</resolution>
<min_angle>0.000000</min_angle>
<max_angle>6.280000</max_angle>
</horizontal>
</scan>
<range>
<min>0.120000</min>
<max>3.5</max>
<resolution>0.015000</resolution>
</range>
<noise>
<type>gaussian</type>
<mean>0.0</mean>
<stddev>0.01</stddev>
</noise>
</ray>