当前位置: 首页 > news >正文

ros2--urdf--IMU

IMU基础

urdf添加IMU

案例(来自小鱼)

<gazebo reference="imu_link">
      <sensor name="imu_sensor" type="imu">
      <plugin filename="libgazebo_ros_imu_sensor.so" name="imu_plugin">
          <ros>
            <namespace>/</namespace>
            <remapping>~/out:=imu</remapping>
          </ros>
          <initial_orientation_as_reference>false</initial_orientation_as_reference>
        </plugin>
        <always_on>true</always_on>
        <update_rate>100</update_rate>
        <visualize>true</visualize>
        <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>
      </sensor>
    </gazebo>

1,link和IMU传感器绑定

<gazebo reference="imu_link">
  <sensor name="imu_sensor" type="imu">
  • <gazebo reference="imu_link">
    将传感器绑定到 URDF 中名为 imu_link 的连杆上,确保传感器位姿与物理模型同步。

  • <sensor name="imu_sensor" type="imu">
    定义一个名为 imu_sensor 的 IMU 类型传感器,用于测量角速度和线加速度。

2. ROS 插件配置

<plugin filename="libgazebo_ros_imu_sensor.so" name="imu_plugin">
  <ros>
    <namespace>/</namespace>
    <remapping>~/out:=imu</remapping>
  </ros>
  <initial_orientation_as_reference>false</initial_orientation_as_reference>
</plugin>
  • <plugin>
    加载 Gazebo 的 ROS 接口插件 libgazebo_ros_imu_sensor.so,命名为 imu_plugin

  • <namespace>/</namespace>
    指定 ROS 命名空间为根目录(/),话题将发布为 /imu

  • <remapping>~/out:=imu</remapping>
    将插件内部话题 ~/out 重映射到标准 ROS 话题 /imu(类型为 sensor_msgs/Imu)。

  • <initial_orientation_as_reference>false</initial_orientation_as_reference>

    • false:IMU 数据相对于世界坐标系(默认)。

    • true:以传感器初始化时的方向为参考坐标系(消除初始倾斜影响)。

3. 传感器通用参数

<always_on>true</always_on>
<update_rate>100</update_rate>
<visualize>true</visualize>
  • <always_on>true</always_on>
    传感器始终启用,即使没有订阅者。

  • <update_rate>100</update_rate>
    数据发布频率为 100 Hz(每秒更新 100 次)。

  • <visualize>true</visualize>
    在 Gazebo 的 3D 界面中显示传感器模型(可视化检测方向)。

4. IMU 噪声模型配置

IMU的噪声

urdf中噪声的类型

高斯噪声(Gaussian)

  • type="gaussian"
    描述:最常用的噪声模型,符合正态分布(钟形曲线)。
    适用场景:模拟传感器随机噪声(如 IMU、激光雷达)。

均匀噪声(Uniform)

  • type="uniform"
    描述:噪声值在指定范围内均匀分布。
    适用场景:模拟量化误差或简单随机干扰。

自定义噪声(Custom)

  • type="custom"
    描述:用户自定义噪声分布(需通过插件实现)。
    适用场景:特殊噪声模型(如脉冲噪声、非线性噪声)。

类型分布形状典型应用是否需要<stddev>
gaussian钟形曲线(对称)IMU、激光雷达噪声
uniform矩形(均匀)量化误差、简单干扰
custom用户定义特殊传感器模型可选
none无噪声理想环境测试

无噪声(None)

  • type="none"
    描述:禁用噪声,输出理想数据。
    适用场景:调试或理想环境仿真。

(1) 角速度噪声(陀螺仪)

<angular_velocity>
  <x>
    <noise type="gaussian">
      <mean>0.0</mean>               <!-- 噪声均值(通常为0) -->
      <stddev>2e-4</stddev>          <!-- 随机噪声标准差(rad/s) -->
      <bias_mean>0.0000075</bias_mean> <!-- 零偏均值(固定偏移) -->
      <bias_stddev>0.0000008</bias_stddev> <!-- 零偏波动标准差 -->
    </noise>
  </x>
  <!-- y/z 轴配置相同 -->
</angular_velocity>

噪声均值:

<mean>0.0</mean>

  • 作用:设置噪声的均值(期望值)。

  • 典型值:通常为 0.0,表示噪声围绕真实值对称波动。

  • 示例

    • mean=0.0,噪声会在真实值上下波动。

    • mean=0.1,噪声整体偏向真实值的一侧(如加速度计零偏)。

标准差:

  • stddev:决定噪声的“抖动”幅度,值越大数据越分散。
    示例:stddev=2e-4 表示陀螺仪噪声约 ±0.0002 rad/s 波动。

零偏的固定偏移:

什么零偏:

零偏是长期存在的固定偏差。

<bias_mean>0.1</bias_mean>

  • 作用:设置零偏(Bias)的固定偏移量,模拟传感器的系统误差。

  • 物理意义

    • 零偏是长期存在的固定偏差,无法通过单次校准消除。

    • 例如:加速度计的 z 轴理论输出应为 +9.81 m/s²,但实际可能为 9.81 + bias_mean

  • 示例

    • bias_mean=0.1 表示加速度计存在 +0.1 m/s² 的固定偏移。

    • 陀螺仪的 bias_mean=0.0000075 表示角速度存在微小固定偏差。

零偏的随机波动:

<bias_stddev>0.001</bias_stddev>

  • 作用:设置零偏的随机波动范围(零偏本身的变化程度)。

  • 物理意义

    • 零偏并非完全固定,可能随时间或温度缓慢漂移。

    • bias_stddev 描述这种漂移的波动幅度。

  • 示例

    • bias_stddev=0.001 表示零偏会在 bias_mean ± 0.001 范围内随机变化。

    • bias_mean=0.1,实际零偏可能在 [0.099, 0.101] 之间波动。

(2) 线加速度噪声(加速度计)

<linear_acceleration>
  <x>
    <noise type="gaussian">
      <mean>0.0</mean>
      <stddev>1.7e-2</stddev>        <!-- 随机噪声标准差(m/s²) -->
      <bias_mean>0.1</bias_mean>     <!-- 零偏均值(如校准误差) -->
      <bias_stddev>0.001</bias_stddev> <!-- 零偏波动 -->
    </noise>
  </x>
  <!-- y/z 轴配置相同 -->
</linear_acceleration>

http://www.dtcms.com/a/107038.html

相关文章:

  • uperMap GIS基础产品FAQ集锦(20250402)
  • 「2025最新版React+Ant Design+Router+TailwindCss全栈攻略:从零到实战,打造高颜值企业级应用
  • [ 3分钟算法 ] | 递归搜索题目 : 合并两个有序链表(递归版)
  • C++虚继承及其它特性
  • 智谱发布AI Agent“AutoGLM沉思”,开启AI“边想边干”新时代
  • k8s之Ingress讲解
  • 定制化自己的 RAG 框架:结合 LlamaIndex 与自定义优化
  • c加加学习之day01
  • 解锁Azure Speech “通话转录音分析”功能,驶向服务升级高速路
  • 深度解析 Hive Reduce 数量配置:优化原则与计算公式实战指南
  • TISAX认证是什么?如何获得TISAX认证?对企业发展的好处
  • 尚硅谷shell脚本学习
  • DeepSeek+SpringAI家庭AI医生
  • 高压线防外破警示灯:让隐患无处遁形!/ 恒峰智慧科技
  • mapbox基础,加载hillshade山体阴影图层
  • Docker内网部署前后端分离项目-Windows环境下
  • 代码调试:VS调试实操
  • 民安智库:物业满意度调查是了解业主需求的关键工具
  • spring boot集成reids的 RedisTemplate 序列化器详细对比(官方及非官方)
  • 谷粒微服务高级篇学习笔记整理---thymeleaf
  • Kafka、RocketMQ、Pulsar对比
  • Linux 文件系统超详解
  • Java中的LocalDate类
  • 关于登录鉴权session、cookie和token
  • KMstation商品库存监控下单
  • neo4j+django+deepseek知识图谱学习系统对接前后端分离前端vue
  • angular实现连连看
  • 蓝桥杯练习:二叉树的最大深度
  • 系统与网络安全------Windows系统安全(6)
  • niuhe插件, 在 go 中渲染网页内容