赞
踩
接上一篇文章《【Apollo】【driver】【gnss】模块调试与分析》,这篇主要讲如何在gnss中适配新的gps设备与遇到的问题总结。
一般的步骤要以文件docs/howto/how_to_add_a_gps_receiver.md
,这里多介绍踩过的坑和相关经验
新的设备需要有新的xxxx_stream.cpp
和xxxx_parser.cpp
。
raw_stream机制:每次read 一条完整的信息然后将此信息publish给data_parser。
这里就会出现问题:以司南为例,使用的是usb转com通信,虽然stream中提供了serial通信方式serial_stream.cpp
,但由于serial通信中有可能出现一次读取多条或半条数据的情况,需要在基于serial通信方式上在再做一定的处理,使其符合一次size_t length = _data_stream->read(_buffer, BUFFER_SIZE);
操作返回一条完整的数据.
data_parser机制:每次sub收到的一条信息后,进行解析,解析后publish出去
由于apollo适配的novatel设备,因此data_parser模块中的自用到的proto数据类型和发布出去topic数据类型,和novatel反馈回来的数据强相关。这就需要适配新的设备的数据到原始的xxxx.proto上面。
以司南为例,返回的都是NMEA-0183
格式的数据:
- GPGGA : 经纬度信息,经纬度格式为ddmm.mmmmmm(度分格式)
- GPTRA &
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。