【ROS2】【机器人导航navigation】URDF文件详解(更新中)

一、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>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小羊君爱摸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值