在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

Apollo系统中怎么添加新的GPS接收器

191次阅读
没有评论

共计 3390 个字符,预计需要花费 9 分钟才能阅读完成。

丸趣 TV 小编给大家分享一下 Apollo 系统中怎么添加新的 GPS 接收器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

简介

GPS 接收器是一种从 GPS 卫星上接收信息,然后根据这些信息计算设备地理位置、速度和精确时间的设备。这种设备通常包括一个接收器,一个 IMU(Inertial measurement unit,惯性测量单元),一个针对轮编码器的接口以及一个将各传感器获取的数据融合到一起的融合引擎。

Apollo 系统中默认使用 Novatel 板卡,该说明详细介绍如何添加并使用一个新的 GPS 接收器。

添加新 GPS 接收器的步骤

请按照下面的步骤添加新的 GPS 接收器:

通过继承基类“Parser”,实现新 GPS 接收器的数据解析器

在 Parser 类中为新 GPS 接收器添加新接口

在文件 config.proto 中, 为新 GPS 接收器添加新数据格式

在函数 create_parser(见文件 data_parser.cpp), 为新 GPS 接收器添加新解析器实例

下面让我们用上面的方法来添加 u -blox GPS 接收器。

步骤一

通过继承类“Parser”,为新 GPS 接收器实现新的数据解析器:

class UbloxParser : public Parser {
public:
 UbloxParser();
 virtual MessageType get_message(MessagePtr  message_ptr);
private:
 bool verify_checksum();
 Parser::MessageType prepare_message(MessagePtr  message_ptr);
 // The handle_xxx functions return whether a message is ready.
 bool handle_esf_raw(const ublox::EsfRaw* raw, size_t data_size);
 bool handle_esf_ins(const ublox::EsfIns* ins);
 bool handle_hnr_pvt(const ublox::HnrPvt* pvt);
 bool handle_nav_att(const ublox::NavAtt *att);
 bool handle_nav_pvt(const ublox::NavPvt* pvt);
 bool handle_nav_cov(const ublox::NavCov *cov);
 bool handle_rxm_rawx(const ublox::RxmRawx *raw);
 double _gps_seconds_base = -1.0;
 double _gyro_scale = 0.0;
 double _accel_scale = 0.0;
 float _imu_measurement_span = 0.0;
 int _imu_frame_mapping = 5;
 double _imu_measurement_time_previous = -1.0;
 std::vector uint8_t  _buffer;
 size_t _total_length = 0;
 ::apollo::drivers::gnss::Gnss _gnss;
 ::apollo::drivers::gnss::Imu _imu;
 ::apollo::drivers::gnss::Ins _ins;
};

步骤二

在 Parser 类中,为新 GPS 接收器添加新的接口:

在 Parser 类中添加函数‘create_ublox‘:

class Parser {
public:
 // Return a pointer to a NovAtel parser. The caller should take ownership.
 static Parser* create_novatel();
 // Return a pointer to a u-blox parser. The caller should take ownership.
 static Parser* create_ublox();
 virtual ~Parser() {}
 // Updates the parser with new data. The caller must keep the data valid until get_message()
 // returns NONE.
 void update(const uint8_t* data, size_t length) {
 _data = data;
 _data_end = data + length;
 }
 void update(const std::string  data) { update(reinterpret_cast const uint8_t* (data.data()), data.size());
 }
 enum class MessageType {
 NONE,
 GNSS,
 GNSS_RANGE,
 IMU,
 INS,
 WHEEL,
 EPHEMERIDES,
 OBSERVATION,
 GPGGA,
 };
 // Gets a parsed protobuf message. The caller must consume the message before calling another
 // get_message() or update();
 virtual MessageType get_message(MessagePtr  message_ptr) = 0;
protected:
 Parser() {}
 // Point to the beginning and end of data. Do not take ownership.
 const uint8_t* _data = nullptr;
 const uint8_t* _data_end = nullptr;
private:
 DISABLE_COPY_AND_ASSIGN(Parser);
Parser* Parser::create_ublox() { return new UbloxParser();
}

步骤三

在 config.proto 文件中, 为新的 GPS 接收器添加新的数据格式定义:

在配置文件(modules/drivers/gnss/proto/config.proto)中添加 UBLOX_TEXT and UBLOX_BINARY

 enum Format {
 UNKNOWN = 0;
 NMEA = 1;
 RTCM_V2 = 2;
 RTCM_V3 = 3;
 NOVATEL_TEXT = 10;
 NOVATEL_BINARY = 11;
 UBLOX_TEXT = 20;
 UBLOX_BINARY = 21;
 }
... ...

步骤四

在函数 create_parser(见 data_parser.cpp), 为新 GPS 接收器添加新解析器实例. 我们将通过添加处理 config::Stream::UBLOX_BINARY 的代码实现上面的步骤,具体如下。

Parser* create_parser(config::Stream::Format format, bool is_base_station = false) { switch (format) {
 case config::Stream::NOVATEL_BINARY:
 return Parser::create_novatel();
 case config::Stream::UBLOX_BINARY:
 return Parser::create_ubloxl();
 default:
 return nullptr;
 }
}

以上是“Apollo 系统中怎么添加新的 GPS 接收器”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计3390字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 伊人久久精品一区二区三区 | 强开小婷嫩苞又嫩又紧视频 | 岛国一级毛片 | 免费看毛片网站 | 亚洲国产美女精品久久 | 天天综合亚洲色在线精品 | 中文字幕a∨在线乱码免费看 | 精品熟女少妇av免费观看 | 日本毛片免费看 | 91在线视频观看 | 亚洲精品成人一区二区 | 成人欧美一区二区三区视频 | 一级毛片在线不卡直接观看 | 猫咪免费人成网站在线观看 | 亚洲精品久久久久久久蜜桃 | 欧美a网站 | 成人免费高清视频网址 | 婷婷丁香五月激情综合 | 亚洲精品在线视频 | 中文字幕人成无码免费视频 | 久久久久久久久人体 | 色狠狠狠狠狠香蕉 | 欧美色图 亚洲 | 久色精品| 4虎影院在线观看 | 在线中文字幕视频 | 日本操操操 | 性猛交╳xxx乱大交 性猛交ⅹxxx富婆视频 | 黄色软件在线免费看 | av无码专区亚洲avl在线观看 | 成人激情五月天 | 青木玲中文字幕一区二区 | 午夜一区二区福利视频在线 | 国产无遮挡无码视频免费软件 | 久久精品国产亚洲av麻豆图片 | 女人被狂躁的高潮免费视频 | 精品丝袜人妻久久久久久 | 亚洲精品无码高潮喷水在线 | 欧美视频一区二区三区 | 日本一区二区高清不卡 | 狠狠色丁香婷婷综合潮喷 |