前面的文章有分析,Monitor 模块监控的内容分为 Hardware 和 Software 两位。
本篇分析硬件监控部分。
首先,可以观察一下 Apollo 官方文档给出的硬件连接图。
跟自动驾驶本身相关的无非是传感器和底盘。
当前 Monitor 系统支持的硬件类监控有 4 个:
- ESD CAN
- GPS
- Resource
- SOCKET CAN
监控 ESD CAN
ESD CAN 是一种 CanCard,在 Apollo 中通过 PCIe 接口连接到 6108 工控机上面,在 Apollo 1.0 版本的官方文档就有介绍过 ESD CAN 型号是 ESD CAN-PCIe/402-1。 它长这个样子:
ESD CAN 接收到的信号有 2 类:
- 线控底盘 CAN 信号
- 大陆毫米波雷达 CAN 信号
EsdCanMonitor
我在前面的文章中有写过,各类 xxxMonitor 其实是 RecurrentRunner 子类。
EsdMonitor 也是如此,它和 CameraMonitor 一样也是 RecurrentRunner 子类。
EsdCanMonitor 在初始化的时候设置了自己的模块名字和周期执行间隔,这里时间间隔是 3 秒,也就是 EsdCan 每 3 秒被监控 1 次。
我们也可以看到 EsdCanMonitor 的核心方法其实是 EsdCanTest。
在 EsdCanTest 中检测到的结果,最后会通过 SummaryMonitor.Es