06传感器选型与数据采集
传感器:机器人的感知系统
传感器(Sensors)是机器人的五官。本章将介绍如何让机器人“看见”世界,包括传感器的分类、通信协议以及数据处理的基础算法。
1. 传感器分类体系
1.1 本体感知 (Proprioceptive)
测量机器人自身的状态。
•
编码器 (Encoder):测量电机旋转角度和速度。分为增量式(断电位置丢失)和绝对式(断电位置记忆)。
•
IMU (惯性测量单元):包含加速度计(测线性加速度/重力方向)和陀螺仪(测角速度)。是平衡车、无人机核心传感器。

图1: 光电编码器原理
1.2 环境感知 (Exteroceptive)
测量外部环境。
•
激光雷达 (LiDAR):
◦
2D LiDAR:扫描一个平面,输出距离点云。用于 SLAM 建图。
◦
3D LiDAR:多线扫描,用于自动驾驶。
◦
原理:ToF (飞行时间) 或 三角测距。
•
视觉相机 (Camera):
◦
RGB:普通彩色图像。
◦
RGB-D (深度相机):如 RealSense, Kinect。能同时输出色彩和像素距离。
•
超声波/毫米波:用于近距离避障或穿透烟雾。

图2: 激光雷达三角测距原理
2. 硬件接口与通信协议
传感器选型不仅看性能,还要看接口是否匹配开发板(如树莓派、RDK-X5)。
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
代码块
Plain Text
mindmap
root((传感器接口))
低速总线
I2C (IMU, 气压计)
UART (GPS, 蓝牙)
高速总线
SPI (编码器, 屏幕)
CAN (工业电机, 车辆OBD)
多媒体/大数据
MIPI-CSI (树莓派摄像头)
USB 3.0 (深度相机)
Ethernet (多线雷达)
3. 信号处理:从噪声到真值
传感器数据永远包含噪声。直接使用原始数据会导致机器人抖动甚至失控。
3.1 常见噪声处理
•
低通滤波 (Low-pass Filter):去除高频抖动。
•
卡尔曼滤波 (Kalman Filter):最优估计,融合预测值和观测值。
•
互补滤波 (Complementary Filter):常用于 IMU 姿态解算(融合加速度计和陀螺仪)。
3.2 互补滤波原理
•
加速度计:低频特性好(长期准,指示重力方向),但高频震动大。
•
陀螺仪:高频特性好(动态响应快),但有温漂,长期积分会漂移。
•
公式:
4. Python 实战:IMU 数据融合 (互补滤波)
本示例模拟生成带噪声的传感器数据,并使用互补滤波融合出稳定的姿态角。
代码块
Python
import numpy as np
import matplotlib.pyplot as plt
def complementary_filter_demo():
# 1. 模拟真实角度 (正弦波运动)
t = np.linspace(0, 10, 1000)
dt = t[1] - t[0]
true_angle = 10 * np.sin(2 * np.pi * 0.5 * t) # 真实角度
# 2. 模拟传感器读数 (添加噪声)
# 陀螺仪测的是角速度 (真实角度的导数) + 漂移 + 噪声
true_gyro = 10 * 2 * np.pi * 0.5 * np.cos(2 * np.pi * 0.5 * t)
gyro_reading = true_gyro + 0.5 # 模拟漂移 bias