机器人学习笔记

一份覆盖机器人完整知识点的学习笔记。从运动学到 SLAM,从传感器到通信协议,重点讲"为什么这么设计"(费曼式 📌 讲解),配代码实例和 RyBOS 项目真实案例。

怎么用这份笔记

  1. 学习/复习 → 顺序看正文,重点看 📌 类比和"为什么"
  2. 查术语 → 翻 附录 A 速查表
  3. 找模块 → 查 附录 B RyBOS 模块矩阵,直接定位代码
  4. 落地 → 跟 附录 C 实战项目做一遍

图表在 /机器人学习笔记/diagrams/ 目录。图注名即原图文件名,看图注就能直接找到原图用 draw.io 编辑。


1 · 机器人概述

1.1 什么是机器人

机器人 = 感知 + 决策 + 执行 的自主或半自主机器系统。ISO 8373 定义:一种可编程的、具备两个或更多自由度的机构,能够在其环境中自主运动以完成预定任务。

TIP

📌 打个比方:机器人像一个"有身体的人"。计算机只有大脑(算力),机器人多了"眼睛耳朵"(传感器)、"大脑"(控制器)、"手脚"(执行器)。它不仅要思考,还要在物理世界中行动并承受后果——思考错了可以重来,行动错了可能撞墙。

1.2 机器人系统架构

图 1 \xb7 机器人系统架构

层 作用 例子
感知层 获取环境与自身状态信息 激光雷达、相机、IMU、编码器、GPS
决策层 理解环境、规划行为 SLAM、路径规划、避障、行为树
控制层 将决策转化为具体运动指令 PID 控制、运动学逆解、力控
执行层 物理执行运动 电机、舵机、液压缸、轮子、机械臂关节
通信层 模块间数据传输 ROS 话题/服务、串口帧协议、CAN 总线
TIP

📌 为什么分层而不是写成一坨?和 Linux 分层一样的道理——解耦。传感器换了不影响决策算法,电机升级了不影响感知逻辑。每一层有清晰的输入输出契约,团队可以并行开发。

1.3 机器人分类

类型 特点 典型应用
移动机器人 在环境中移动 AGV、扫地机、无人车、无人机
机械臂 固定基座,多关节 工业装配、焊接、搬运
人形机器人 拟人形态 服务、研究(Atlas、Tesla Bot)
特种机器人 特殊环境作业 水下、太空、排爆、巡检
协作机器人 与人共处 装配线辅助、康复训练

1.4 本项目中的机器人案例

  • 地图上传下载工具 — 通过 IP 连接机器人,上传/下载 xmap 格式地图文件
  • RoadInspection 道路巡检系统 — 车载巡检机器人,串口读取 GPS/IMU、实时视频采集、CORS 差分定位
  • RieboCapture 无人机采集 — 地面站软件,实时监控无人机航拍状态,TCP 连接相机、视频流解码
  • CommandProtocol 模块 — 从相机通信协议提炼的通用命令帧工具库,适用于机器人串口/USB 通信

2 · 坐标系与空间变换

2.1 为什么需要坐标系

机器人的一切运动和感知都发生在三维空间中。要描述"机器人在哪""手臂伸到哪""障碍物在哪",必须建立统一的坐标参考系。

TIP

📌 打个比方:坐标系就是"给空间贴格子标签"。没有坐标系,你说"往前走两步"毫无意义——谁的"前"?哪个"两步"?有了坐标系,一切位置和方向都有了精确的数值描述。

2.2 常用坐标系

图 2 \xb7 坐标系与空间变换

坐标系 定义 用途
世界坐标系 (World/Map) 全局固定参考系 地图、路径规划的全局目标
机器人坐标系 (Base/Body) 机器人本体原点 机械臂基座、车辆中心
传感器坐标系 (Sensor) 传感器安装位置 雷达扫描数据原始坐标
关节坐标系 (Joint) 每个关节的局部系 机械臂运动学链
工具坐标系 (Tool/EE) 末端执行器 抓取目标位姿
相机坐标系 (Camera) 光心为原点 视觉测量、3D 重建

2.3 齐次变换矩阵

将旋转和平移统一为一个 4×4 矩阵:

T = [ R(3×3) t(3×1) ] R = 旋转矩阵 t = 平移向量 [ 0(1×3) 1 ]
TIP

📌 为什么用 4×4 而不是 3×3 + 3×1 分开写?因为变换的复合可以用矩阵乘法一步完成。T_total = T_1 × T_2 × T_3,从基座到末端的总变换就是各关节变换的连乘。齐次坐标的精髓:在 n 维坐标末尾加一个 1,用 (n+1)×(n+1) 矩阵统一处理旋转和平移。

基本变换(Python / NumPy)

import numpy as np

def translation(x, y, z):
    T = np.eye(4); T[:3, 3] = [x, y, z]; return T

def rotz(theta):
    c, s = np.cos(theta), np.sin(theta)
    return np.array([[c,-s,0,0],[s,c,0,0],[0,0,1,0],[0,0,0,1]])

# 复合变换:先绕Z转90°,再沿X前进1米
T = translation(1, 0, 0) @ rotz(np.pi/2)

2.4 欧拉角 vs 四元数 vs 旋转矩阵

表示法 参数数 优点 缺点
欧拉角 3 直观(roll/pitch/yaw) 万向节锁
四元数 4 无万向锁、插值平滑 不直观
旋转矩阵 9 无歧义、直接运算 冗余(6个约束)
TIP

📌 万向节锁:欧拉角按固定顺序旋转(如 ZYX),当中间轴旋转到 ±90° 时,第一个和第三个旋转轴重合,丢失一个自由度。四元数不依赖旋转顺序,多出一个维度正是为了避免奇异性。这就是为什么机器人姿态控制几乎都用四元数。

from scipy.spatial.transform import Rotation
# 欧拉角 → 四元数
q = Rotation.from_euler('ZYX', [yaw, pitch, roll]).as_quat()
# 四元数 → 欧拉角
euler = Rotation.from_quat(q).as_euler('ZYX')

2.5 RyBOS 中的坐标变换

cpp/GeodeticConverter 处理 WGS84↔UTM↔CGCS2000,cpp/GeoTransform 做空间坐标系变换,JianYunWei/AttitudeCorrection2.0 实现了欧拉角旋转顺序转换和四元数运算。


3 · 运动学

3.1 正运动学 vs 逆运动学

图 3 \xb7 运动学模型

正运动学 (FK) 逆运动学 (IK)
输入 各关节角度 末端目标位姿
输出 末端位姿 各关节角度
唯一性 唯一解 可能多解、无解
计算 直接矩阵连乘 解析或数值求解
TIP

📌 打个比方:正运动学像"你告诉手臂每个关节弯多少度,我算出手指尖在哪"。逆运动学像"你告诉手指尖要去哪,我算出每个关节该弯多少度"——可能有多条路径都能到达目标,也可能目标太远够不着。

3.2 DH 参数(Denavit-Hartenberg)

每个关节 4 个参数:d(沿z平移)、θ(绕z旋转)、a(沿x平移)、α(绕x旋转)。

T_i = Rotz(θ_i) · Transz(d_i) · Transx(a_i) · Rotx(α_i) T_total = T_1 × T_2 × ... × T_n
TIP

📌 DH 参数的精髓:任何两个相邻关节的相对位姿,都可以用恰好 4 个参数描述。3D 空间中两个坐标系之间有 6 个自由度,但关节的机械约束消去了 2 个,剩下 4 个——就是 DH 四参数。

3.3 移动机器人运动学 — 差速驱动

v = (v_R + v_L) / 2 线速度 ω = (v_R - v_L) / L 角速度(L=两轮间距) ẋ = v·cos(θ) 运动方程 ẏ = v·sin(θ) θ̇ = ω

3.4 雅可比矩阵

ẋ = J(q)·q̇ 末端速度 = 雅可比 × 关节速度

当 det(J)=0 时为奇异配置,末端某些方向无法运动(如手臂完全伸直时无法径向移动)。


4 · 动力学

4.1 运动学 vs 动力学

运动学 动力学
关注 位置/速度/加速度 力/质量/惯性
不关心 力从哪来 运动轨迹
方程 几何关系 牛顿-欧拉 / 拉格朗日
TIP

📌 打个比方:运动学告诉你"方向盘转多少度车走什么弧线",动力学告诉你"要以多大力气转方向盘才能在2秒内转到那个角度"。前者是几何,后者是物理。

4.2 牛顿-欧拉法 vs 拉格朗日法

方法 思路 适用
牛顿-欧拉 对每个连杆列力/力矩平衡方程 递归计算、数值仿真
拉格朗日 基于能量(动能-势能)推导 解析表达式、控制器设计

4.3 PID 控制

机器人最常用的控制策略:

u(t) = Kp·e(t) + Ki·∫e(t)dt + Kd·de(t)/dt Kp = 比例增益(当前误差,越大响应越快但易超调) Ki = 积分增益(累积误差,消除稳态误差但增加超调) Kd = 微分增益(误差变化率,抑制超调但放大噪声)
TIP

📌 PID 为什么这么常用:它不需要知道系统的精确数学模型——只要能测量误差就能控制。大多数工业机器人关节级控制用 PID 就够了。只有需要高精度力控或高速运动时才需要更高级的控制策略(如计算力矩控制、阻抗控制)。


5 · 传感器体系

5.1 传感器分类

图 4 \xb7 传感器体系

5.2 核心传感器对比

传感器 原理 精度 范围 频率 成本 适用
激光雷达 TOF飞时测距 ±2cm 100m 10-20Hz 高 SLAM/避障
相机(单目) 被动光学 依赖算法 无限制 30-60fps 低 目标识别
深度相机 结构光/TOF ±1-3cm 0.5-10m 30-60fps 中 抓取/导航
IMU MEMS加速度+陀螺 漂移累积 短时精准 100-1000Hz 低 姿态估计
GPS/RTK 卫星三角 GPS:米级 RTK:cm 全球 1-10Hz 中-高 室外定位
编码器 光电/磁电计数 高精度 本体关节 高频 低 轮式里程计

5.3 IMU 与航迹推算(Dead Reckoning)

IMU 包含加速度计(测线性加速度)和陀螺仪(测角速度)。通过积分可得速度和位置:

速度 = ∫加速度 dt 位置 = ∫速度 dt 姿态 = ∫角速度 dt
TIP

📌 为什么 IMU 不能单独用于长期定位:积分会累积误差——加速度计的微小偏差经过两次积分后变成位置误差,且随时间平方增长。所以 IMU 必须与 GPS/视觉/激光等绝对位置传感器融合使用。这就是"多传感器融合"的根本原因。

5.4 RyBOS 传感器相关模块

  • qt/VideoPlayer — GPU加速视频流播放(FFmpeg低延迟解码,D3D11/VAAPI硬件加速)
  • qt/CameraComm — 相机通信控制(串口/TCP命令帧协议)
  • qt/ImageMetadata — 图像元数据解析(EXIF/GNSS位置信息提取)
  • cpp/Serial — 串口通信(传感器数据读取常用接口)
  • RieboPPK — GNSS PPK后处理(载波相位差分,厘米级定位)

6 · 计算机视觉基础

6.1 相机模型

针孔相机模型:3D 点 → 2D 像素的投影关系:

[u] [fx 0 cx] [X] [v] = [0 fy cy]·[Y] (Z=1 归一化) [1] [0 0 1] [Z] fx, fy = 焦距(像素) cx, cy = 主点(图像中心)

畸变:真实镜头有径向畸变(桶形/枕形)和切向畸变,需要标定后校正。

6.2 特征点法 vs 直接法

特征点法 直接法
提取 角点/描述子(ORB, SIFT) 不提取,直接用像素灰度
匹配 描述子距离匹配 光流跟踪/灰度误差最小化
精度 高(亚像素) 中(依赖光度一致性)
速度 中 快
代表 ORB-SLAM DSO, LSD-SLAM

6.3 AprilTag 视觉基准标记

AprilTag 是一种类似二维码的视觉基准标记,用于:

  • 位姿估计:已知标记大小,单目相机即可估计6DoF位姿
  • 机器人导航:在地面/墙面贴标记,作为绝对定位参考
  • 机械臂抓取:标记贴在物体上,视觉伺服定位

RyBOS 的 intserv 项目集成了 AprilTag 库用于视觉基准标记检测。


7 · 点云与三维感知

7.1 点云处理流程

图 5 \xb7 点云处理流程

7.2 点云格式

格式 说明 RyBOS 模块
LAS/LAZ LiDAR 行业标准 cpp/LasFile · cpp/Las3DTiles · cpp/LasSampler
PCD PCL 框架原生格式 cpp/PcdFile · cpp/Pcd3DTiles · cpp/PcdSampler
PLY 通用3D格式,支持网格+点云 cpp/PlyFile (ASCII+Binary, 流式写入)

7.3 3D Tiles 转换流水线

RyBOS 提供完整的点云 → 3D Tiles 转换链:

  • OSGB → 3D Tiles:倾斜摄影模型 → Web 可视化(cpp/Osgb3DTiles)
  • LAS/PCD → 3D Tiles:点云 → 层级 LOD 瓦片(cpp/Las3DTiles · cpp/Pcd3DTiles)
  • 点云裁剪与采样:cpp/PointCloudClipper · cpp/LasSampler · cpp/PcdSampler

7.4 关键算法

算法 用途
ICP 配准 两片点云对齐:找最近点对→计算变换→迭代收敛
NDT 配准 点云转高斯分布集合,概率优化对齐,比ICP快
体素滤波 空间划分网格,每格取重心→降采样
RANSAC 地面分割 随机采样一致性拟合最大平面=地面,剩余=障碍物

8 · 多传感器融合

8.1 为什么需要融合

单一传感器各有局限:IMU 短期精准但长期漂移,GPS 全局定位但频率低、室内不可用,激光雷达精度高但成本高、无色彩信息。

TIP

📌 打个比方:就像人同时用眼睛(视觉)+ 内耳前庭(IMU)+ 脚底触觉(里程计)来感知运动。闭眼走路会偏(只有IMU会漂移),在黑暗中靠触觉走得慢(只有里程计会累积误差),多感官融合才能又快又准。

8.2 卡尔曼滤波(Kalman Filter)

最经典的传感器融合算法:

预测: x̂ = F·x + B·u 状态转移 P = F·P·Fᵀ + Q 协方差预测 更新: K = P·Hᵀ·(H·P·Hᵀ + R)⁻¹ 卡尔曼增益 x̂ = x̂ + K·(z - H·x̂) 状态修正 P = (I - K·H)·P 协方差更新
变量 含义
x 状态向量(位置、速度、姿态等)
F 状态转移矩阵(运动模型)
P 状态协方差(不确定性)
Q 过程噪声协方差
R 测量噪声协方差
K 卡尔曼增益(预测与测量的信任比例)
TIP

📌 卡尔曼增益的直觉:K 决定"信预测还是信测量"。如果测量噪声 R 很小(传感器很准),K 接近 1,更信测量;如果 R 很大(传感器不准),K 接近 0,更信预测。这就是融合的核心——根据各传感器的不确定性自动分配信任权重。

8.3 EKF 与 UKF

方法 特点
KF 线性系统
EKF (Extended KF) 非线性系统,一阶泰勒展开线性化
UKF (Unscented KF) 非线性系统,Sigma点采样,不需求雅可比

8.4 实际应用:GPS + IMU 融合

RyBOS 项目中的 RoadInspection 使用串口读取 GPS + IMU 数据,配合 CORS 差分定位实现组合导航。RieboPPK 实现 GNSS PPK 后处理,达到厘米级定位精度。


9 · SLAM 同步定位与建图

9.1 SLAM 核心思想

图 6 \xb7 SLAM 原理

同时解决两个问题:定位(知道自己在地图中的位置)+ 建图(构建周围环境的地图)。鸡生蛋问题:定位需要地图,建图需要定位 → 用迭代优化同时求解。

9.2 SLAM 分类

类型 代表算法 特点
2D 激光 Gmapping · Cartographer · Karto 精度高、计算量适中
3D 激光 LOAM · LeGO-LOAM · LIO-SAM 3D建图、户外大场景
单目视觉 ORB-SLAM · VINS-Mono 信息丰富、成本低、尺度不确定
RGBD RTAB-Map · ElasticFusion 直接深度信息、室内场景
双目 ORB-SLAM2 Stereo · VINS-Fusion 恢复尺度、室外可用

9.3 视觉 SLAM 通用流程

  1. 传感器数据读取 — 相机图像 / IMU / 激光
  2. 前端视觉里程计 (VO) — 特征提取→匹配→运动估计→位姿
  3. 后端优化 — Bundle Adjustment / 因子图优化(g2o / Ceres / GTSAM)
  4. 回环检测 — 词袋模型(BoW)→检测重访→消除累积漂移
  5. 建图 — 稀疏点云 / 稠密网格 / OctoMap
TIP

📌 回环检测为什么关键:前端 VO 逐帧估计运动,误差不断累积(漂移)。如果机器人回到曾经去过的地方(回环),后端可以用"我以前在这里"的约束来修正整条轨迹。没有回环检测,SLAM 就退化成纯里程计,长时间运行后位置估计完全不可信。

9.4 RyBOS 中的 SLAM 关联

  • intserv — 分布式AI任务调度(COLMAP三维重建 + Ceres优化 + CGAL/Metis网格处理)
  • RoadInspection — 车载GPS/IMU串口读取 + CORS差分定位
  • 地图上传下载工具 — 机器人 xmap 地图文件传输(SLAM建图后的地图管理)

10 · 路径规划

10.1 全局 vs 局部规划

图 7 \xb7 路径规划与避障

全局规划 局部规划
目标 已知地图上找 A→B 最优路径 实时避障 + 跟踪全局路径
算法 A* · Dijkstra · RRT · RRT* DWA · TEB · VFH
频率 低(地图变化时重规划) 高(每帧/每周期)

10.2 A* 算法

f(n) = g(n) + h(n) g(n) = 从起点到 n 的实际代价 h(n) = 从 n 到目标的启发式估计(曼哈顿/欧氏距离)
TIP

📌 A 为什么比 Dijkstra 快*:Dijkstra 向所有方向均匀扩展(无方向性),A* 的 h(n) 像一个"指南针"引导搜索朝目标方向偏移。只要 h(n) 不超过实际代价(可采纳性),A* 保证找到最优解且搜索量更少。

10.3 RRT (快速随机扩展树)

  1. 随机采样空间点 q_rand
  2. 找树上最近节点 q_near
  3. 向 q_rand 方向扩展一步 → q_new
  4. 碰撞检测通过 → 加入树
  5. 重复直到接近目标

适合高维空间,但路径不平滑。RRT* 改进版可渐近最优。

10.4 DWA (动态窗口法)

在速度空间 (v, ω) 中采样 → 模拟轨迹 → 评分(目标距离 + 障碍距离 + 速度)→ 选最优执行。


11 · 运动控制

11.1 控制层次

层级 频率 任务
轨迹规划 1-10Hz 生成全局参考轨迹
轨迹跟踪 50-100Hz 跟踪参考轨迹(Pure Pursuit / MPC)
底层控制 100-1000Hz 关节级 PID / 力矩控制

11.2 Pure Pursuit(纯跟踪)

几何跟踪方法:以前瞻距离 l_d 在参考轨迹上取目标点,控制转向使车头朝向目标点。

δ = arctan(2·L·sin(α) / l_d) δ = 前轮转向角 L = 轴距 α = 目标点相对车头方向角

11.3 MPC(模型预测控制)

在每个控制周期:预测未来 N 步状态 → 优化控制序列使代价最小 → 执行第一步 → 滚动重复。

TIP

📌 MPC 为什么比 PID 强:MPC 能"看到未来"——它基于运动模型预测未来轨迹,同时考虑约束(速度上限、转角极限、障碍物)。PID 只对当前误差做反应,无法预判。代价是计算量大,需要快速求解优化问题。


12 · ROS 机器人操作系统

12.1 ROS 是什么

ROS (Robot Operating System) 不是真正的操作系统,而是运行在 Linux 上的机器人中间件框架。提供进程间通信、软件包管理、工具链和生态。

12.2 核心概念

概念 说明
Node 进程,执行特定功能(如激光雷达驱动节点)
Topic 发布/订阅消息总线(异步通信)
Service 请求/响应同步调用
Action 带反馈的长时任务(如导航到目标点)
Bag 录制/回放话题数据(调试利器)
URDF 机器人模型描述(关节、连杆、传感器)

12.3 ROS1 vs ROS2

ROS1 ROS2
中间件 自研 TCPROS DDS (工业标准)
实时性 不支持 支持 (RT)
多机 需要 master 去中心化发现
安全 无 DDS 安全层
平台 Linux 为主 Linux/Windows/RTOS
TIP

📌 为什么 ROS2 用 DDS:ROS1 的自研通信协议在实时性、安全性和跨平台方面都有短板。DDS 是工业级发布/订阅中间件,支持 QoS(服务质量)、多播、安全认证。ROS2 站在 DDS 巨人的肩膀上,直接获得了工业级通信能力。


13 · 通信协议与帧设计

13.1 命令帧格式

图 8 \xb7 通信协议与帧设计

RyBOS cpp/CommandProtocol 模块定义的帧格式:

发送帧: [FA FA] [cmd_data...] [CRC16] [AF AF] 帧头 命令数据 校验和 帧尾 接收帧: [FA FA] [len_hi len_lo] [fixed_fields + payload] 帧头 长度(大端) 总长 = 13 + payload_length

13.2 CRC 校验

发送方: 计算数据的CRC16 → 附在数据末尾 接收方: 重新计算CRC → 比对 → 不匹配则丢弃

RyBOS: cpp/CRC(CRC8/16/32)+ cpp/CommandProtocol(CRC16/XMODEM,初始值可配置)

13.3 流式帧解析

串口/网络数据是字节流,一帧可能分多次到达。FrameParser 实现:

  • 缓冲区累积 + 帧边界检测
  • 找到帧头 → 读取长度 → 验证CRC → 提取完整帧
  • 支持 FAFA / FBFB 双帧头

13.4 通信方式对比

方式 特点 RyBOS 模块
串口 点对点·简单可靠 cpp/Serial
TCP 可靠传输·有连接 cpp/TcpSocket
UDP 快速无连接·实时 cpp/UdpSocket
WebSocket Web控制界面 cpp/WebSocket
CAN 多主竞争·实时性强 (未提取)

13.5 CommandProtocol 代码示例

#include "CommandProtocol.h"

// 1. 构建命令帧
auto frame = RyB::FrameBuilder::buildFromHex("0001000000A10AFF");

// 2. 验证 CRC
bool valid = RyB::FrameUtils::verifySendFrame(frame);

// 3. 解析接收数据
RyB::FrameParser parser;
parser.setFrameCallback([](const std::vector<uint8_t>& frame) {
    std::cout << "收到帧: " << RyB::HexUtils::toHex(frame, true, ' ') << "\n";
});
parser.feed(receivedBytes);

// 4. 执行命令序列
RyB::CommandSequence seq;
seq.add("0001000000A10AFF", 200, "获取固件版本");
seq.add("00010000009A00FF", 100, "获取SN");
seq.execute(sendFunction, delayFunction);

14 · 机器人安全

14.1 功能安全

标准 领域
ISO 13849 机械安全控制系统
ISO 10218 工业机器人安全要求
ISO/TS 15066 协作机器人安全

14.2 常见安全机制

  • 急停 (E-Stop):硬件级切断电源,最高优先级
  • 安全光幕:人手进入危险区域时停机
  • 力限制:协作机器人碰撞检测,超力立即停止
  • 速度限制:人在附近时降速运行
  • 安全控制器:冗余通道,独立于主控

14.3 通信安全

机器人通信协议需要考虑:

  • CRC 校验:防止数据传输错误导致误动作
  • 命令认证:防止未授权控制指令
  • 心跳机制:通信中断时安全停机

RyBOS 的 cpp/CommandProtocol 内置 CRC-16 校验,cpp/Crypto 提供 AES 加密。


15 · 部署与运维

15.1 AI 推理部署

RyBOS 项目中的 AI 推理部署架构:

  • intserv — 分布式 AI 任务调度服务

    • 设备注册与心跳机制
    • GPU/CPU 资源分配
    • 任务队列与优先级调度
    • Docker 容器化部署
    • CUDA + TensorRT 推理加速
  • crackservicenew — 道路裂缝 AI 检测

    • TensorRT 模型加载与推理
    • HTTP 推理服务架构
    • 图像预处理/后处理管道

15.2 机器人软件更新

RyBOS 项目中的自动更新架构(来源:CameraToolBox):

  • 状态机驱动:检查→下载→校验→安装→回滚
  • 文件变更列表差量更新
  • 固件升级与软件升级分离
  • 断点续传和错误恢复

附录 A · 术语速查表

术语 英文 说明
自由度 DOF (Degrees of Freedom) 独立运动维度数
正运动学 FK (Forward Kinematics) 关节角→末端位姿
逆运动学 IK (Inverse Kinematics) 末端位姿→关节角
齐次变换 Homogeneous Transform 4×4矩阵统一旋转+平移
四元数 Quaternion 4参数无万向锁的旋转表示
雅可比 Jacobian 关节速度→末端速度的映射矩阵
奇异配置 Singularity det(J)=0,丢失自由度
SLAM Simultaneous Localization and Mapping 同步定位与建图
回环检测 Loop Closure 检测重访以消除漂移
ICP Iterative Closest Point 点云配准算法
RANSAC RANdom SAmple Consensus 随机采样一致性(模型拟合)
PID Proportional-Integral-Derivative 比例积分微分控制
MPC Model Predictive Control 模型预测控制
EKF Extended Kalman Filter 扩展卡尔曼滤波
DDS Data Distribution Service ROS2 通信中间件标准
TOF Time of Flight 飞时测距
RTK Real-Time Kinematic 实时动态差分定位
PPK Post-Processed Kinematic 事后差分定位
VO Visual Odometry 视觉里程计
BA Bundle Adjustment 光束法平差(全局优化)

附录 B · RyBOS 机器人相关模块矩阵

类别 模块 说明
坐标变换 cpp/GeodeticConverter WGS84↔UTM↔CGCS2000
cpp/GeoTransform 空间坐标系变换
点云读写 cpp/LasFile LAS 格式读写
cpp/PcdFile PCD 格式读写
cpp/PlyFile PLY 格式读写(ASCII+Binary)
点云处理 cpp/LasSampler · cpp/PcdSampler 点云降采样
cpp/PointCloudClipper (+GUI) 点云裁剪
3D Tiles cpp/Las3DTiles · cpp/Pcd3DTiles 点云→3D Tiles
cpp/Osgb3DTiles OSGB→3D Tiles
通信协议 cpp/CommandProtocol 命令帧构建/解析/CRC
cpp/CRC CRC8/16/32 校验
传输层 cpp/Serial 串口通信
cpp/TcpSocket · cpp/UdpSocket 网络通信
cpp/WebSocket WebSocket 通信
视觉 qt/VideoPlayer GPU加速视频流播放
qt/CameraComm 相机通信控制
qt/ImageMetadata 图像EXIF/GNSS元数据
定位 RieboPPK GNSS PPK后处理
AI推理 intserv 分布式AI任务调度
crackservicenew TensorRT道路裂缝检测
应用 RoadInspection 车载巡检系统
RieboCapture 无人机地面站
地图上传下载工具 机器人地图文件传输

附录 C · 实战项目

C.1 串口通信命令帧系统

使用 cpp/CommandProtocol + cpp/Serial 构建机器人串口通信系统:

  1. 用 FrameBuilder 构建命令帧
  2. 通过 Serial 发送到机器人
  3. 用 FrameParser 流式解析返回数据
  4. CRC 校验确保数据完整性

C.2 点云处理与 3D 可视化

使用 RyBOS 点云模块链:

  1. LasFile / PcdFile 读取原始点云
  2. LasSampler / PcdSampler 降采样
  3. PointCloudClipper 裁剪感兴趣区域
  4. Las3DTiles / Pcd3DTiles 转 3D Tiles
  5. Web 端加载 3D Tiles 可视化

C.3 GPS + IMU 组合导航

参考 RoadInspection 架构:

  1. Serial 读取 GPS NMEA 报文 + IMU 数据
  2. 卡尔曼滤波融合(EKF)
  3. GeodeticConverter 转换坐标系
  4. 输出机器人在地图坐标系中的位姿
本页目录