学习笔记搜索

10|系统整合:时间、通信与控制权也是算法的一部分

一条报文要经历三个解释层

UART 提供字节流,CAN 提供总线帧和仲裁,MAVLink 定义消息;它们都不能替代物理量语义。驱动先解决半包、粘包、长度和校验,再解释单位、坐标、采样时间和有效状态。DVL 无底锁与有效零速度必须区分:前者没有测量,后者测量到静止,二者会让估计器做完全不同的事。

发布给估计器的对象可以理解为 value、frame、reference_point、sample_time、covariance、validity。消费者获得的是某时刻的状态快照,而不是一个永远有效的最新数字。接收时间有助于诊断链路,采样时间决定观测应与哪一刻预测比较。

闭环调度要防止慢任务拖住快任务

图像推理、网络等待和磁盘写入不应阻塞姿态/速度控制。使用有界队列和不可变快照,控制循环按预算读取当前可用信息;视觉可以异步更新参考,内环持续工作。端到端时延包括所有队列,不只包括某个函数执行时间。通信恢复后优先使用最新有效运动目标,而不是补发一串已过期的历史命令。

状态机管理任务,仲裁器管理唯一控制权

SEARCH 找候选,CONFIRM 检查身份持续性,FOLLOW/ORBIT 运行任务,LOST 管理目标消失,MANUAL 交给人工。进入条件与退出条件采用滞回,可避免一帧好一帧坏造成抖动。人工接管时撤销自主发布权,避免下一轮自动线程又覆盖人工目标;重新进入自主时重建参考和必要积分状态,实现无突变切换。

任务状态不是飞控模式本身。任务输出的位置、速度或姿态参考,需要映射到飞控支持的相应接口。消息发出、被解析、被采纳和机器人实际运动是连续几个不同环节;理解这些环节是为了定位控制行为,而不是把通信成功误当成闭环成功。

综合算例:航点导航切换视觉环绕

导航阶段由三维路径产生受限速度参考,深度与姿态环一直运行。目标连续可见后进入 CONFIRM,并缓慢降低接近速度;目标几何和身份稳定后,将平移参考所有权交给视觉任务,环绕径向项平滑接入,切向速度从零渐增。目标短时丢失时减少视觉任务权重或进入受限等待;导航状态退化时不继续使用依赖精确水平速度的任务。切换时清除过期指令并让新旧参考连续,比简单切换一个 mode 字符串更完整。

课程收束实验

做一个综合软件场景:恒横流、一个障碍、一个目标、一次 DVL 缺测和一次视觉遮挡。先只运行导航,再加入视觉切换,最后加入扰动观测器或 MPC。每次观察异常从哪一层产生、怎样传到下一层。走完这条链,你掌握的是一个完整机器人系统,而不只是几个分散算法。

通信阅读入口:MAVLink 时间同步 https://mavlink.io/en/services/timesync.html ,命令协议 https://mavlink.io/en/services/command.html ,序列化 https://mavlink.io/en/guide/serialization.html 。

仅保存在当前浏览器,可在学习记录页导出。