首先Novatel的组合惯导价格昂贵,非批量的价格好像在20万左右(一年前的报价);
其次,由于早期使用了国产广州导元电子的组合惯导550D ,使用起来也还不错。因此懒得换成最近百度新支持的几款设备了。
原来GPS 的驱动都是同事写的,最近我开始加入coding因此开始了解具体过程。
Apollo官方给了一个如何添加教程GPS 的教程。这个教程主要包含如下步骤:
- 通过继承基类“Parser”,实现新GPS接收器的数据解析器
- 在Parser类中为新GPS接收器添加新接口
- 在文件config.proto中, 为新GPS接收器添加新数据格式
- 在函数create_parser(见文件data_parser.cpp), 为新GPS接收器添加新解析器实例
这个教程中主要还是教我们如何做解析,似乎没有告知如何把数据接入。apollo原生支持的数据是从串口进行读取的,但我们的GPS数据是通过CAN 总线来传输数据,那是不是我首先得去读对应端口的CAN报文呢?
因此有两个待学习的点:
- [ 1 ] 如何读?
查看底层驱动是如何读取数据的,分别分析Apollo源代码中车辆CAN总线和GPS的USB串口的数据传输方案。
在apollo/modules/driver/gnss目录下,有多个通信方式的函数如serial,TCP,UDP ,但没看到如何通过can来读取数据的方法。可以理解为apollo在设计之初没有考虑通过can接口协议来读取GPS 的数据。