第一章:传感器基础与Jetson平台概览
各位同学,欢迎来到《Jetson传感器数据融合与同步实战》的第一课。
说实话,每次带新人入门,我都要先问一个问题:你手头有什么传感器?你准备用哪块Jetson板子?这两个问题搞不清楚,后面的数据融合、时间同步全是空中楼阁。今天我们就先把地基打牢。
1.1 常见传感器类型:你得知道它们是什么脾气
做机器人或者自动驾驶,传感器就是我们的眼睛和耳朵。我这些年摸过的传感器少说也有几十种,但真正常用的,其实就四大类。
1.1.1 IMU(惯性测量单元)
IMU这玩意儿,说白了就是测量加速度和角速度的。它由加速度计和陀螺仪组成,有的还带磁力计。加速度计告诉你「我现在是平躺还是竖着」,陀螺仪告诉你「我在往哪个方向转」。
关键参数:
- 采样率:常见的有100Hz、200Hz、400Hz。我建议做数据融合时,IMU采样率至少200Hz以上,否则姿态解算会滞后。
- 量程:加速度计一般±2g到±16g,陀螺仪±250°/s到±2000°/s。做无人机选大量程,做AGV小车选小量程就行。
- 零偏稳定性:这个参数很关键。我踩过坑——有一次用了个便宜的IMU,零偏漂移严重,卡尔曼滤波怎么调都压不住,最后换了传感器才解决。
1.1.2 GPS(全球定位系统)
GPS提供绝对位置信息,但精度嘛……看价格。民用单频GPS误差在2-5米,RTK(实时动态差分)可以做到厘米级。
关键点:
- 更新率:普通GPS是10Hz,RTK能做到20Hz。但注意,GPS更新率远低于IMU,所以融合时要用IMU做高频预测,GPS做低频修正。
- 信号遮挡:我在隧道、高架桥下吃过亏——GPS信号一丢,位置直接飞掉。所以一定要和IMU、轮速计做组合导航。
- 坐标系:GPS输出的是WGS-84经纬度,要转成UTM或者局部笛卡尔坐标系才能用。这个后面章节会细讲。
1.1.3 激光雷达(LiDAR)
激光雷达是现在自动驾驶和机器人的标配。它通过发射激光束测量距离,生成点云数据。
常见类型:
- 单线激光雷达:比如RPLIDAR A1/A2,只扫一个平面,适合做SLAM建图和避障。便宜,几百块。
- 多线激光雷达:比如Velodyne VLP-16(16线)、Ouster OS1(64线)。能扫出3D点云,但价格感人,动辄几万。
- 固态激光雷达:比如Livox Mid-40,没有旋转部件,寿命长,但视场角小一些。
1.1.4 摄像头
摄像头提供最丰富的视觉信息,但也是最难处理的传感器。光照变化、运动模糊、遮挡……问题一大堆。
关键参数:
- 分辨率:640x480够用,1920x1080更好。但分辨率越高,处理延迟越大。我一般用1280x720做视觉SLAM,平衡了精度和速度。
- 帧率:30fps是底线,60fps更好。做目标检测时,帧率太低会导致漏检。
- 快门类型:全局快门比卷帘快门好。卷帘快门在快速运动时会产生果冻效应,IMU和图像时间戳对不齐,融合起来很头疼。
1.2 Jetson系列硬件对比:选对板子,事半功倍
Jetson是NVIDIA推出的嵌入式AI计算平台。我这些年用过Nano、TX2、Xavier NX,到现在的Orin系列。每个型号都有自己的定位。
| 型号 | AI算力 | 内存 | 功耗 | 适用场景 |
|---|---|---|---|---|
| Jetson Nano | 472 GFLOPS | 4GB | 5-10W | 入门学习、简单视觉处理 |
| Jetson TX2 | 1.33 TFLOPS | 8GB | 7.5-15W | 无人机、小型机器人 |
| Jetson Orin NX | 70 TOPS | 8/16GB | 10-25W | 多传感器融合、实时SLAM |
| Jetson Orin AGX | 275 TOPS | 32/64GB | 15-60W | 自动驾驶、高端机器人 |
我的建议:
- 如果你是学生或者刚入门,买一块Jetson Nano就够了。跑跑ROS2、调调IMU和摄像头,完全够用。别一上来就上Orin,浪费钱。
- 如果你要做多传感器融合(IMU+GPS+LiDAR+摄像头),至少上Orin NX 16GB。Nano的内存太小,跑个点云处理就爆了。
- 如果你要做自动驾驶或者高端机器人,直接上Orin AGX。算力管够,省心。
1.3 Jetson系统环境初始化:从零开始搭环境
拿到一块新的Jetson板子,第一件事就是刷系统。我习惯用NVIDIA官方的SDK Manager,省事。
1.3.1 刷机步骤
- 下载并安装NVIDIA SDK Manager(需要Ubuntu主机)。
- 用USB线连接Jetson板子和主机,给板子上电(进入强制恢复模式)。
- 在SDK Manager中选择对应的Jetson型号和JetPack版本。
- 选择要安装的组件:我一般全选——CUDA、cuDNN、TensorRT、OpenCV、ROS2(如果支持的话)。
- 点击安装,等20-30分钟。嗯,去喝杯咖啡吧。
1.3.2 安装ROS2
我们这门课主要用ROS2(Humble或Foxy版本)。Jetson上安装ROS2有两种方式:
- 方法一:用SDK Manager直接勾选ROS2组件。最简单,但版本可能不是最新的。
- 方法二:手动安装。我推荐这个,因为可以自己控制版本和依赖。
手动安装命令如下:
# 设置locale
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
# 添加ROS2源
sudo apt install software-properties-common
sudo add-apt-repository universe
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
# 安装ROS2 Humble
sudo apt update
sudo apt install ros-humble-desktop
# 设置环境变量
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
1.3.3 验证环境
装完之后,跑个小例子验证一下:
# 终端1:启动talker
ros2 run demo_nodes_cpp talker
# 终端2:启动listener
ros2 run demo_nodes_py listener
如果能看到「I heard: Hello World」之类的输出,恭喜你,环境搭好了。
colcon build --symlink-install从源码编译。我编译过几次,虽然慢,但都能成功。
1.4 本章小结
这一章我们聊了四大传感器的脾气秉性,对比了Jetson各型号的定位,最后手把手搭好了开发环境。说白了,传感器是硬件基础,Jetson是计算核心,ROS2是软件框架——这三样搞定了,后面的数据融合才有得玩。
下一章,我们会深入IMU的数据读取和预处理。到时候我会分享一个我踩过的坑——IMU的零偏校准没做好,导致整个融合系统发散。嗯,到时候细说。
- 列出你手头有的传感器类型和型号。
- 在Jetson上完成ROS2安装,并运行talker/listener示例。
- 思考:如果你的项目需要同时使用IMU和摄像头,你会如何选择Jetson型号?为什么?
好了,今天就到这里。有问题随时交流。