机器人传感器

语法

Posted by LXG on July 7, 2026

惯性测量单元(IMU,Inertial Measurement Unit)

机器人的惯性测量单元(IMU,Inertial Measurement Unit)是一种用于感知机器人自身运动状态的传感器,主要测量机器人的:

  1. 加速度(Acceleration)
  2. 角速度(Angular Velocity)
  3. 磁场方向(Magnetometer)
传感器 测量量 作用
三轴加速度计 X/Y/Z 方向线加速度 感知平移运动、重力方向
三轴陀螺仪 X/Y/Z 轴角速度 感知旋转
三轴磁力计(可选) 地磁方向 辅助判断航向

机器人为什么还需要 IMU?

因为 IMU 有几个巨大优势:

高频率

传感器 频率
摄像头 30Hz
激光雷达 10Hz
GPS 1~10Hz
IMU 100~1000Hz

不依赖环境

  • 摄像头:需要看到东西
  • 激光:需要反射
  • GPS:室内失效
  • IMU:机器人内部自己测量

全球 IMU 芯片供应格局

高性能工业/机器人级

公司 代表产品 定位
Analog Devices ADIS系列 工业、高端机器人
STMicroelectronics LSM6系列 工业、消费
Bosch BMI系列 机器人、汽车
TDK InvenSense ICM系列 消费、机器人
Murata Manufacturing IMU模块 工业

中国供应链情况

公司 方向
美新半导体 MEMS惯性
芯动联科 高性能MEMS惯性器件
矽睿科技 MEMS传感器
敏芯股份 MEMS传感器

市场价格

等级 典型 IMU 芯片/品牌 单价范围(人民币) 应用
玩具/入门 MPU6050 MPU6050 5~20 元 Arduino、小车教学
入门机器人 ICM-42688、LSM6系列 TDK ICM-42688-P 10~50 元(芯片) ROS实验、小型机器人
中端机器人 BMI088 Bosch BMI088 50~200 元(模块) AGV、无人车、无人机
工业机器人 ADIS16470 Analog Devices ADIS16470 2500~4000 元 工业移动机器人
高端 MEMS ADIS165xx Analog Devices ADIS16550 5000~8000 元 高可靠无人系统
战术级 IMU iMAR、KVH、Honeywell 工业导航级 1万~10万元 无人车、航空
导航级 光纤陀螺 IMU Honeywell等 10万~百万 军工、航空

BMI088

bmi088

bosch_bmi088

立创商城单价:80元

OAK相机

OAK-D系列 + Factor Perception SDK 套装

oak_camera

Factor Perception Kit硬件包括OAK-D系列相机,软件包含Factor Perception SDK。

OAK-D相机输出20 FPS的图像数据及200 Hz的9轴IMU数据。相机内置神经网络加速芯片,可让HF-Net达到20 Hz的推理性能。

Factor-VIO使用HF-Net输出的局部特征与9轴IMU数据,实现高精度和高鲁棒性的视觉惯导里程计。系统还能够生成不同维度的地图,包括2D Map、2.5D Map和3D Map,以适应不同的应用需求。此外,系统还涉及多种坐标转换,以确保数据的一致性和准确性。

Factor Perception Kit通过结合深度学习的视觉和惯性测量单元(IMU)数据,利用Factor-VIO和RTAB-Map技术,实现了高效的,高精度,高环境适应性,高鲁棒性的SLAM(同步定位与地图构建)功能。并且所有的深度学习加速功能在OAK系列相机内置的VPU中完成,无需带强大GPU算力的主控制器。

相机内置IMU和独立IMU区别

项目 OAK-D 内置 IMU 独立机器人 IMU
核心目标 帮助视觉 SLAM 感知机器人自身运动
服务对象 Camera / VIO 整个机器人系统
典型输出 Camera Pose Robot Pose
安装位置 相机内部 车体中心
使用方式 Factor-VIO 内部融合 EKF/LIO/VIO 多源融合
典型场景 室内VSLAM AGV、无人车、工业机器人

为什么不能简单替代独立 IMU?

原因 OAK-D 内置 IMU 的限制 独立机器人 IMU 的优势 对机器人影响
1. 安装位置不同(外参问题) IMU 固定在相机内部,测量的是相机运动 可安装在机器人质心附近,测量车体真实运动 转弯、加减速时位置估计更准确,减少坐标误差
2. 振动环境不同 相机通常安装在顶部,容易受到结构振动影响 可安装在减震位置,并针对机器人振动优化 提高轮式机器人、AGV、电机环境下稳定性
3. 温漂和零偏稳定性 消费/视觉级 IMU 通常温度补偿能力有限 工业 IMU 有温度模型、出厂标定、零偏补偿 长时间运行漂移更小,地图和定位更稳定
4. 多模块共享需求 主要服务 OAK-D 自身 VIO 可以同时提供给 VIO、EKF、LIO、控制系统 整车定位架构更统一,方便融合
5. 高动态运动能力 面向相机运动估计,动态范围和抗冲击有限 针对高速、振动、冲击设计 高速无人车、户外机器人可靠性更高

IMU 的 ROS数据格式


lxg@lxg:~/code/xt/gitlab/rtabmap_sim_ws$ ros2 topic info /imu/data
Type: sensor_msgs/msg/Imu
Publisher count: 1
Subscription count: 1


lxg@lxg:~/code/xt/gitlab/rtabmap_sim_ws$ ros2 topic echo /imu/data --once
header:
  stamp:
    sec: 841
    nanosec: 150000000
  frame_id: imu_link
orientation:
  x: 0.10183535710347644
  y: 0.13500032919915794
  z: -0.5935394682689227
  w: 0.7868388467575625
orientation_covariance:
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
angular_velocity:
  x: -9.48948602207296e-05
  y: 1.4777435846821568e-05
  z: 3.903990956833951e-05
angular_velocity_covariance:
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
linear_acceleration:
  x: -3.2605459625094686
  y: -0.005220726614542285
  z: 9.228159450029091
linear_acceleration_covariance:
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
---

参数 数值 含义
时间 841.15s Gazebo仿真运行时间
坐标系 imu_link IMU安装位置
姿态 q=(0.102,0.135,-0.594,0.787) 机器人有明显旋转
角速度X -0.000095 rad/s 几乎静止
角速度Y 0.000015 rad/s 几乎静止
角速度Z 0.000039 rad/s 几乎静止
加速度X -3.26 m/s² 存在倾斜导致重力投影
加速度Y -0.005 m/s² 接近0
加速度Z 9.23 m/s² 接近重力

激光雷达

蓝海激光雷达LDS-E200

激光雷达(LiDAR,Light Detection And Ranging)的核心思想非常简单:

发射激光 → 激光遇到物体反射 → 接收回波 → 根据光传播时间计算距离 → 旋转扫描形成环境地图

LDS-E100-R

激光雷达数据结构


LaserScan

├── header
│    ├── timestamp
│    └── frame_id
│
├── angle参数
│
├── range参数
│
├── ranges[]
│
└── intensities[]


lxg@lxg:~/code/xt/gitlab/rtabmap_sim_ws$ ros2 topic echo /scan --once
header:
  stamp:
    sec: 1774
    nanosec: 700000000
  frame_id: laser_link
angle_min: -3.1415927410125732                   # 360°全扫描
angle_max: 3.1415927410125732
angle_increment: 0.017501909285783768            # 角度分辨率: 每隔约1度测量一个点
time_increment: 0.0
scan_time: 0.0
range_min: 0.11999999731779099                   # 最小距离:12cm  近距离盲区
range_max: 12.0                                  # 最大距离:12m   最大测距 
ranges:
- .inf
- .inf                                         # 这个角度方向没有障碍物
- .inf
- .inf
- .inf
- .inf
- .inf
- 2.523970603942871                             # 每个角度对应的距离 -180 + 7x1 = -173° 对应距离 2.52m
- 2.4337852001190186
- 2.4216372966766357
- 2.419962167739868
- 2.428184747695923
- 2.4495182037353516
- 2.494112491607666
- .inf
- - -
- .inf
- 8.27077579498291
- 8.23367977142334
- 8.198226928710938
- 8.16444206237793
- 3.5678393840789795
- 3.555220127105713
- 3.543372631072998
- 3.532304048538208
- 3.5220236778259277
- 3.512537717819214
- 3.4959802627563477
- 3.4889206886291504
- 3.482682228088379
- 3.477268695831299
- 3.4726860523223877
- 3.468937635421753
- 3.466026544570923
- 3.4627280235290527
- 3.4623444080352783
- 3.46280574798584
- 3.4641125202178955
- 3.466264247894287
- 3.4692606925964355
- 3.4730992317199707
- 3.477778911590576
- 3.4896483421325684
- 3.1868886947631836
- 2.901165246963501
- 2.6640214920043945
- 2.464170217514038
- 2.2935667037963867
- 2.146324634552002
- 1.9053350687026978
- 1.8056074380874634
- 1.7167916297912598
- 1.637239933013916
- 1.5656192302703857
- 1.4420033693313599
- 1.3883590698242188
- 1.3392786979675293
- 1.2942302227020264
- 1.2144817113876343
- 1.1790590286254883
- 1.146202802658081
- 1.0872122049331665
- 1.0606629848480225
- 1.0125986337661743
- 0.9907974600791931
- 0.970318615436554
- 0.9329102039337158
- 0.9157975316047668
- 0.8843640685081482
- 0.8562138080596924
- 0.8432274460792542
- 0.8191904425621033
- 0.7974575757980347
- 0.78736412525177
- '...'
intensities:                # 激光反射强度, 这里仿真都是0
- 0.0
- 0.0
- 0.0
- - -
- 0.0
- '...'
---

Header 数据

字段 含义
sec 1774 ROS时间秒
nanosec 700000000 0.7秒
时间 1774.7s 当前扫描时间
frame_id laser_link 雷达坐标系

ranges数据含义

含义
正常数字 检测到障碍
inf 没有返回
NaN 无效数据

intensities 激光反射强度


白墙:
2000

黑色物体:
300

玻璃:
50

激光雷达产业链分析

零部件


              激光雷达
                  |
 ------------------------------------------------
 |          |           |          |            |
激光器     探测器       光学       芯片       软件

技术 中国状态
2D激光雷达 ✅ 基本自主
车载半固态LiDAR ✅ 全球领先
机械式LiDAR ✅ 成熟
1550nm高性能光源 ⚠️ 部分依赖
SPAD芯片 ⚠️ 有差距
高端ADC/TDC ⚠️ 有差距

激光雷达波长

指标 905nm 1550nm
成本
产业成熟度 ★★★★★ ★★★★
人眼安全 一般 优秀
最大距离 100~250m 300~500m
激光功率 受限
探测器 Si APD InGaAs APD
机器人 非常适合 较少
高速自动驾驶 一般 优势

深度相机

orbbec_gemini_335

结构


              深度相机

        ┌──────────────┐
        │   RGB Camera │
        ├──────────────┤
        │ IR Projector │  ← 红外投射
        ├──────────────┤
        │ IR Left      │
        │ IR Right     │  ← 红外接收
        ├──────────────┤
        │ IMU          │
        └──────────────┘

orbbec_gemini_335

深度相机 VS 激光雷达

  深度相机 激光雷达
波长 红外940nm等 905/1550nm
测距方式 面阵 点扫描
输出 深度图 点云
视场 较集中
距离 0.2~10m 10~300m
精度 毫米~厘米 厘米级
环境光 影响较大 较稳定
价格 几百~几千 几百~几万元

数据格式

彩色图像


lxg@lxg:~/code/xt/gitlab/rtabmap_sim_ws$ ros2 topic echo /camera/color/camera_info --once
header:
  stamp:
    sec: 3836
    nanosec: 316000000
  frame_id: camera_rgb_optical_frame
height: 240                          # 图像尺寸 424 × 240
width: 424 
distortion_model: plumb_bob          # 表示镜头畸变模型
d:                                   # 5个畸变系数 仿真相机没有模拟镜头畸变
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
k:                                   # 相机内参矩阵(Camera Intrinsic Matrix)
- 367.27854724500173
- 0.0
- 212.0
- 0.0
- 367.2785472450017
- 120.0
- 0.0
- 0.0
- 1.0
r:                                  # 旋转矩阵
- 1.0
- 0.0
- 0.0
- 0.0
- 1.0
- 0.0
- 0.0
- 0.0
- 1.0
p:                                 # 投影矩阵
- 367.27854724500173
- 0.0
- 212.0
- 0.0
- 0.0
- 367.2785472450017
- 120.0
- 0.0
- 0.0
- 0.0
- 1.0
- 0.0
binning_x: 0
binning_y: 0
roi:
  x_offset: 0
  y_offset: 0
  height: 0
  width: 0
  do_rectify: false
---

# RGB彩色图

lxg@lxg:~/code/xt/gitlab/rtabmap_sim_ws$ ros2 topic echo /camera/color/image_raw --once
header:
  stamp:
    sec: 3844
    nanosec: 632000000
  frame_id: camera_rgb_optical_frame
height: 240
width: 424
encoding: rgb8       # 每个像素3个字节
is_bigendian: 0
step: 1272           # width × 通道数 = 424 x 3 = 1272
data:
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- 54
- 77
- 67
- '...'
---

深度图


lxg@lxg:~/code/xt/gitlab/rtabmap_sim_ws$ ros2 topic echo /camera/depth/camera_info --once
header:
  stamp:
    sec: 200
    nanosec: 640000000
  frame_id: camera_rgb_optical_frame
height: 240
width: 424
distortion_model: plumb_bob
d:
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
k:
- 367.27854724500173
- 0.0
- 212.0
- 0.0
- 367.2785472450017
- 120.0
- 0.0
- 0.0
- 1.0
r:
- 1.0
- 0.0
- 0.0
- 0.0
- 1.0
- 0.0
- 0.0
- 0.0
- 1.0
p:
- 367.27854724500173
- 0.0
- 212.0
- 0.0
- 0.0
- 367.2785472450017
- 120.0
- 0.0
- 0.0
- 0.0
- 1.0
- 0.0
binning_x: 0
binning_y: 0
roi:
  x_offset: 0
  y_offset: 0
  height: 0
  width: 0
  do_rectify: false
---

lxg@lxg:~/code/xt/gitlab/rtabmap_sim_ws$ ros2 topic echo /camera/depth/image_raw --once
header:
  stamp:
    sec: 265
    nanosec: 388000000
  frame_id: camera_rgb_optical_frame
height: 240
width: 424
encoding: 32FC1     # 与彩色图区别之处  32位浮点
is_bigendian: 0
step: 1696
data:
- 179
- 237
- 119
- 64
- 39
- 182
- 119
- 64
- 176
- 126
- 119
- 64
- 84
- 71
- 119
- 64
- 20
- 16
- 119
- 64
- 232
- 216
- 118
- 64
- 214
- 161
- 118
- 64
- 222
- 106
- 118
- 64
- 252
- 51
- 118
- 64
- 53
- 253
- 117
- 64
- 134
- 198
- 117
- 64
- 236
- 143
- 117
- 64
- 109
- 89
- 117
- 64
- 7
- 35
- 117
- 64
- 182
- 236
- 116
- 64
- 129
- 182
- 116
- 64
- 96
- 128
- 116
- 64
- 90
- 74
- 116
- 64
- 106
- 20
- 116
- 64
- 146
- 222
- 115
- 64
- 210
- 168
- 115
- 64
- 43
- 115
- 115
- 64
- 154
- 61
- 115
- 64
- 33
- 8
- 115
- 64
- 192
- 210
- 114
- 64
- 119
- 157
- 114
- 64
- 68
- 104
- 114
- 64
- 40
- 51
- 114
- 64
- 36
- 254
- 113
- 64
- 55
- 201
- 113
- 64
- 96
- 148
- 113
- 64
- 161
- 95
- 113
- 64
- '...'
---

深度图(Depth Image)的数据结构和 RGB 彩色图非常类似,在 ROS2 里面它们甚至使用同一个消息类型:

sensor_msgs/msg/Image

区别只是:

  • RGB图:每个像素存颜色
  • Depth图:每个像素存距离
  RGB图 Depth图 2D雷达
ROS类型 Image Image LaserScan
数据结构 像素矩阵 像素矩阵 距离数组
一个元素 RGB 距离Z 距离
维度 2D 2D 1D
输出空间 需要转换 需要转换 直接距离
典型用途 识别 三维重建 导航避障

深度相机产业链


上游核心器件
        |
        ↓
深度相机模组
        |
        ↓
SDK / 算法 / AI视觉
        |
        ↓
机器人、工业、消费电子、医疗

深度测距技术路线

双目视觉 Stereo(机器人最常见)


左相机          右相机

  |              |
  |              |

     物体

计算视差

↓

深度

结构光 Structured Light


红外投影

● ● ● ● ●

↓

物体

↓

摄像头观察变形

↓

计算距离

ToF(Time of Flight)


红外光

 ↓

物体

 ↓

返回

 ↓

计算时间

gemini 335 相机深度图


                Gemini 335

        IR Camera        IR Camera
            |                |
            |                |
            ↓                ↓

          左红外图像       右红外图像

                +
                
          IR Pattern Projector
          红外纹理投影器

                +

             RGB Camera

                +

              IMU

部件 作用
左IR摄像头 采集左红外图
右IR摄像头 采集右红外图
IR投影器 给环境增加纹理
RGB摄像头 彩色图
IMU 运动信息

RtabMap 仿真

rtabmap_sim

带编码器的减速电机


             ┌──────────────┐
             │   编码器      │
             │ Encoder      │
             └──────┬───────┘
                    │
电源 → DC电机 → 减速箱 → 输出轴
                    │
                  车轮

编码器通常安装在:

电机后轴编码器(常见)

       编码器
          ↓
[电机转子]──[减速箱]──[轮子]

测量:

  • 电机转速
  • 电机旋转角度

硬件结构图


                 ROS主机
          (Jetson/RK3588/工控机)
                    |
               CAN / UART
                    |
                    ↓
             底盘控制单片机
              (STM32)
                    |
          ┌─────────┴─────────┐
          |                   |
       PWM/方向            Encoder AB
          |                   ↑
          ↓                   |
     电机驱动器               |
    (H桥/MOSFET)              |
          |                   |
          ↓                   |
    ┌───────────────┐         |
    │ 减速电机       │─────────┘
    │ + 编码器       │
    └───────────────┘
          |
          ↓
        车轮

控制链路:


ROS2
 |
 | /cmd_vel
 ↓
STM32
 |
 | PWM + DIR
 ↓
电机驱动板
 |
 ↓
电机转动
 |
 ↓
车轮运动

反馈链路:


车轮转动
    |
    ↓
编码器产生脉冲
    |
    ↓
STM32读取AB相
    |
    ↓
计算:
  转速
  里程
  方向
    |
    ↓
发布 odom
    |
    ↓
ROS2

odom 数据

差速轮机器人里程计(wheel odometry)



lxg@lxg:~/code/xt/gitlab/rtabmap_sim_ws$ ros2 topic echo /odom --once
header:
  stamp:
    sec: 1922
    nanosec: 100000000
  frame_id: odom
child_frame_id: base_footprint
pose:
  pose:
    position:                        # 当前机器人位置
      x: -2.8643931448133566
      y: 2.515656759483256
      z: 0.0
    orientation:
      x: 0.0
      y: 0.0
      z: 0.030609243832747806
      w: -0.9995314273158136
  covariance:
  - 0.0
  - 0.0
  - - -
  - 0.0
twist:                                  # twist 速度
  twist:
    linear:
      x: 5.049294315995212e-11
      y: 0.0
      z: 0.0
    angular:
      x: 0.0
      y: 0.0
      z: -0.9999999986035707
  covariance:                # 正常编码器是有误差的       
  - 0.0
  - 0.0
  - - -
  - 0.0
  - 0.0
---


差速底盘


             前方

       ○                 ○
      万向轮            万向轮


          ┌─────────┐
          │         │
          │   车体   │
          │         │
          └─────────┘


       O                 O
      驱动轮            驱动轮
      +编码器          +编码器


       ○                 ○
      万向轮            万向轮


             后方

两个中间/后侧大轮:

  • 电机驱动
  • 带编码器
  • 提供动力和转向

四个万向轮:

  • 不提供动力
  • 只负责支撑重量和保持稳定

无人车电机选择

类型 成本 可靠性 适合无人车
有刷减速电机+编码器 ★★★★ ⭐⭐⭐⭐⭐
BLDC减速电机 ★★★★★ ⭐⭐⭐⭐⭐
伺服电机 ★★★★★ ⭐⭐⭐
舵轮驱动 ★★★★★ ⭐⭐⭐⭐
轮毂电机 中高 ★★★★ ⭐⭐⭐
步进电机 ★★

轮毂电机结构

机械结构


        轮胎
    ┌─────────┐
    │         │
    │  电机   │
    │         │
    └─────────┘
         |
       轴承
         |
       底盘

电气结构


             轮毂电机

        ┌────────────┐
        │            │
        │   BLDC     │
        │            │
        └────────────┘
             |
     ┌───────┴────────┐
     │                │
  动力线             霍尔线
     │                │
     ↓                ↓

  U/V/W            VCC
 三相线            GND
                  Hall A
                  Hall B
                  Hall C
                  

        霍尔插头

        红  ---- 5V

        黑  ---- GND

        黄  ---- Hall A

        绿  ---- Hall B

        蓝  ---- Hall C

霍尔传感器的主要作用是:检测电机转子磁场位置,让控制器知道转子转到了哪里,从而正确驱动三相绕组;同时可以用于估算转速和方向。

整机通信架构


                     互联网
                       |
                       |
                 MQTT Broker
              (云端服务器)
                       |
                       |
              ----------------
              |              |
            手机APP        ROS2主机
                           (RK3588)
                              |
                              |
                     局域网 MQTT Broker
                              |
                              |
                           MCU
                      (STM32/ESP32)
                              |
                              |
                                   电机驱动
                              |
                                    电机


ROS2 主机和单片机通信方式对比

项目 micro-ROS MQTT
MCU身份 ROS节点 外部设备
通信协议 DDS XRCE MQTT TCP
ROS透明度 ⭐⭐⭐⭐⭐ ⭐⭐
开发难度
实时性 较好 一般
云连接
资源占用 较高
工业普及 少量 较多

micro-ROS

micro-ROS 是 ROS 2 官方推出的面向微控制器(MCU)的 ROS 2 版本,目标是让资源有限的设备(如 STM32、ESP32、Arduino 等)也能加入 ROS 2 通信体系。


                ROS2主机

          Nav2 / SLAM / RViz

                  |
                  |
              DDS通信

                  |
        micro-ROS Agent

                  |
            XRCE-DDS协议

                  |
              STM32

        micro-ROS Client

                  |
              电机/IMU/IO

组件 作用
micro-ROS Client 运行在MCU
micro-ROS Agent 运行在Linux
DDS-XRCE 通信协议
rclc MCU版ROS客户端库