Week 6:传感器介绍与 ROS2 KITTI 实验

本周复习命令行、VS Code、Git,并进入机器人传感器主题。实验部分使用 ROS2 发布 KITTI 数据,并通过 RViz / rqt 可视化。

课堂内容

  1. 复习终端、VS Code、Git。
  2. 介绍典型机器人传感器。
  3. 使用 ROS2 做传感器数据实验。
  4. 布置作业。

终端操作复习

cd 目标目录
pwd
ls
ls -a
ls -l

权限与文件操作:

sudo apt install 软件名
sudo reboot
su 用户名
sudo bash
mv 原地址 新地址
rm 文件
rm -r 文件夹

提醒:rm -rf 风险很高,使用前一定确认路径。

VS Code 的意义

VS Code 可以跨越虚拟机 / 服务器与物理机 / 操作机的界限,直接编辑 WSL 或远程服务器中的文件。

常见用途:

  • 编辑 Python、Markdown、ROS2 工作区文件。
  • 预览 Markdown。
  • 查看隐藏文件,例如 .gitignore

.gitignore 可以放在仓库根目录,用来告诉 Git 哪些文件或目录不要提交。

VS Code 连接远程环境与 Markdown 预览截图

Git 三板斧

cd 程序文件夹
git add .
git commit -m "描述提交代码的目的"
git push

版本管理的本质:程序文件夹根目录下的 .git 隐藏目录记录了分支和版本信息。

Week 6 课堂复习截图

典型机器人传感器

定位与导航中常见传感器:

  • 激光雷达:2D LiDAR / 3D LiDAR。
  • 声纳:常用于水中机器人。
  • 相机:单目、双目、深度相机、RGB-D 相机。
  • 触觉传感器。
  • IMU:惯性测量单元。
  • GPS / GNSS。

常见融合数据:

  • 点云 / 激光点云。
  • IMU + GPS + LiDAR,例如 LIO / LVI-SAM。

LiDAR

LiDAR 通过发射激光束并测量反射时间来计算距离。

2D LiDAR:

  • 只在单一平面扫描。
  • 常用于扫地机器人、室内 AGV、SLAM。

3D LiDAR:

  • 多线束扫描,例如 16 / 32 / 64 / 128 线。
  • 产生三维点云。
  • 是无人驾驶感知障碍物、形状和距离的重要传感器。

LiDAR 传感器示意图

相机

单目相机:

  • 成本低。
  • 无法直接获得深度信息,需要算法或深度学习估算。

双目相机:

  • 模拟人眼。
  • 通过左右相机视差计算深度。

RGB-D / 深度相机:

  • 结构光:例如 Kinect V1。
  • ToF:例如 Kinect V2。
  • 能直接输出 RGB 和 Depth 信息,但有效距离通常较短。

课堂例子:乐视体感相机。

相机和 RGB-D 深度相机示意图

IMU、GPS 与触觉传感器

IMU 通常包含三轴加速度计和三轴陀螺仪。

作用:

  • 提供高频角速度和加速度。
  • 通过积分推算位姿。

痛点:

  • 存在累计误差,长时间运行会漂移。

GPS / GNSS:

  • 提供全球绝对坐标。
  • RTK 可以将定位精度从米级提升到厘米级。
  • 在隧道、城市森林中容易丢失信号。

触觉 / 力传感器:

  • 常用于机器人灵巧手抓取。
  • 感知接触力、摩擦力和表面纹理。

IMU 与 GPS 定位说明图

触觉和力传感器示意图

点云与数据融合

点云是空间中大量点的集合,每个点至少包含:

x, y, z

也可能包含强度或颜色。

激光点云:

  • 距离远。
  • 受光照影响小。
  • 几何精度高。
  • 但稀疏,语义信息弱。

视觉点云:

  • 通过双目或 RGB-D 恢复。
  • 更稠密,带纹理。
  • 受光照影响较大,计算量较大。

典型融合方案:

IMU + GPS + LiDAR

IMU 提供高频补偿,LiDAR 用于特征匹配定位,GPS 用于全局纠偏。

点云数据说明图

IMU GPS LiDAR 数据融合说明图

KITTI 数据集

数据集地址:

https://www.cvlibs.net/datasets/kitti/

KITTI 是自动驾驶领域常用数据集,由德国卡尔斯鲁厄理工学院和丰田工业大学芝加哥分校联合赞助,包含图像、雷达扫描、高精度 GPS 和 IMU 等多模态数据。

传感器配置包括:

  • 2 个灰度相机。
  • 2 个彩色相机。
  • 64 线 Velodyne 旋转激光雷达。
  • OXTS RT3003 组合导航系统。

KITTI 数据集介绍截图

KITTI 数据采集车辆传感器配置图

ROS 可视化工具:RViz

RViz 是 ROS 标准 3D 可视化工具,可以显示:

  • 激光雷达点云。
  • 相机图像。
  • 地图。
  • 机器人模型。
  • 机器人状态、轨迹规划和环境模型。

打开配置文件示例:

/home/robot/ros2_ws/src/ros2_kitti_publishers/rviz/default.rviz

RViz 打开配置文件截图

ROS 可视化工具:rqt

rqt 是基于 Qt 的 GUI 工具框架,提供多种插件:

  • 话题数据可视化。
  • 参数查看和调节。
  • 图像视图。
  • 系统监控。

课堂中使用:

Plugins -> Visualization -> Image View

rqt Image View 插件截图

ROS2 KITTI 实验

代码仓库:

https://github.com/ai-robot-class/ros2_kitti_publishers.git

步骤:

  1. 下载代码。
  2. 选择分支:main 对应 Ubuntu 22,ubuntu24 对应 Ubuntu 24。
  3. 编译。
  4. 初始化环境。
  5. 运行发布节点。
  6. 用 RViz / rqt 读取和可视化数据。

数据路径

数据保存路径:

~/ros2_ws/data

注意:由于 Windows 11 WSL2 文件复制可能存在问题,建议先解压压缩文件,再复制 2011_09_26 文件夹到 VS Code 中打开的 data 目录下,注意目录层级。

KITTI 数据保存路径和复制提醒截图

编译、初始化与运行

cd ~/ros2_ws
colcon build --cmake-clean-cache
source ./install/setup.bash
ros2 run ros2_kitti_publishers kitti_publishers

ROS2 编译初始化和运行命令截图

作业

  1. 完成 GitHub push。
  2. https://cyber.shinhan.ac.kr/ 提交本次课不理解的问题。
  3. 如果 WSL2 Ubuntu 仍然无法使用,请及时反馈。

results matching ""

    No results matching ""