Apollo 10.0
自动驾驶开放平台
apollo::drivers::gnss::NovatelParser类 参考
类 apollo::drivers::gnss::NovatelParser 继承关系图:
apollo::drivers::gnss::NovatelParser 的协作图:

Public 成员函数

 NovatelParser ()
 
 NovatelParser (const config::Config &config)
 
virtual MessageType GetMessage (MessagePtr *message_ptr)
 
virtual void GetMessages (MessageInfoVec *messages)
 
virtual bool GetInsStat (MessagePtr *message_ptr)
 
- Public 成员函数 继承自 apollo::drivers::gnss::Parser
virtual ~Parser ()
 
void Update (const uint8_t *data, size_t length)
 
void Update (const std::string &data)
 

额外继承的成员函数

- 静态 Public 成员函数 继承自 apollo::drivers::gnss::Parser
static ParserCreateNovatel (const config::Config &config)
 
static ParserCreateHuaCeText (const config::Config &config)
 
static ParserCreateAsensing (const config::Config &config)
 
static ParserCreateBroadGnssText (const config::Config &config)
 
static ParserCreateEnbroad (const config::Config &config)
 
static ParserCreateForsenseText (const config::Config &config)
 
static ParserCreateParser (const config::Config &config)
 
static ParserCreateRtcmV3 (bool is_base_station=false)
 
- Protected 成员函数 继承自 apollo::drivers::gnss::Parser
 Parser ()
 
- Protected 属性 继承自 apollo::drivers::gnss::Parser
const uint8_t * data_ = nullptr
 
const uint8_t * data_end_ = nullptr
 

详细描述

在文件 novatel_parser.cc86 行定义.

构造及析构函数说明

◆ NovatelParser() [1/2]

apollo::drivers::gnss::NovatelParser::NovatelParser ( )

在文件 novatel_parser.cc186 行定义.

186 {
187 buffer_.reserve(BUFFER_SIZE);
188 ins_.mutable_position_covariance()->Resize(9, FLOAT_NAN);
189 ins_.mutable_euler_angles_covariance()->Resize(9, FLOAT_NAN);
190 ins_.mutable_linear_velocity_covariance()->Resize(9, FLOAT_NAN);
191
192 if (1 != init_raw(&raw_)) {
193 AFATAL << "memory allocation error for observation data structure.";
194 }
195}
#define AFATAL
Definition log.h:45
constexpr size_t BUFFER_SIZE
constexpr float FLOAT_NAN

◆ NovatelParser() [2/2]

apollo::drivers::gnss::NovatelParser::NovatelParser ( const config::Config config)
explicit

在文件 novatel_parser.cc197 行定义.

197 {
198 buffer_.reserve(BUFFER_SIZE);
199 ins_.mutable_position_covariance()->Resize(9, FLOAT_NAN);
200 ins_.mutable_euler_angles_covariance()->Resize(9, FLOAT_NAN);
201 ins_.mutable_linear_velocity_covariance()->Resize(9, FLOAT_NAN);
202
203 if (config.has_imu_type()) {
204 imu_type_ = config.imu_type();
205 }
206
207 if (1 != init_raw(&raw_)) {
208 AFATAL << "memory allocation error for observation data structure.";
209 }
210}

成员函数说明

◆ GetInsStat()

bool apollo::drivers::gnss::NovatelParser::GetInsStat ( MessagePtr message_ptr)
virtual

重载 apollo::drivers::gnss::Parser .

在文件 novatel_parser.cc732 行定义.

732 {
733 *message_ptr = &ins_stat_;
734 return true;
735}

◆ GetMessage()

MessageType apollo::drivers::gnss::NovatelParser::GetMessage ( MessagePtr message_ptr)
virtual

重载 apollo::drivers::gnss::Parser .

在文件 novatel_parser.cc212 行定义.

212 {
213 if (data_ == nullptr) {
214 return MessageType::NONE;
215 }
216
217 while (data_ < data_end_) {
218 if (buffer_.empty()) { // Looking for SYNC0
219 if (*data_ == novatel::SYNC_0) {
220 buffer_.push_back(*data_);
221 }
222 ++data_;
223 } else if (buffer_.size() == 1) { // Looking for SYNC1
224 if (*data_ == novatel::SYNC_1) {
225 buffer_.push_back(*data_++);
226 } else {
227 buffer_.clear();
228 }
229 } else if (buffer_.size() == 2) { // Looking for SYNC2
230 switch (*data_) {
232 buffer_.push_back(*data_++);
233 header_length_ = sizeof(novatel::LongHeader);
234 break;
236 buffer_.push_back(*data_++);
237 header_length_ = sizeof(novatel::ShortHeader);
238 break;
239 default:
240 buffer_.clear();
241 }
242 } else if (header_length_ > 0) { // Working on header.
243 if (buffer_.size() < header_length_) {
244 buffer_.push_back(*data_++);
245 } else {
246 if (header_length_ == sizeof(novatel::LongHeader)) {
247 total_length_ = header_length_ + novatel::CRC_LENGTH +
248 reinterpret_cast<novatel::LongHeader*>(buffer_.data())
249 ->message_length;
250 } else if (header_length_ == sizeof(novatel::ShortHeader)) {
251 total_length_ =
252 header_length_ + novatel::CRC_LENGTH +
253 reinterpret_cast<novatel::ShortHeader*>(buffer_.data())
254 ->message_length;
255 } else {
256 AERROR << "Incorrect header_length_. Should never reach here.";
257 buffer_.clear();
258 }
259 header_length_ = 0;
260 }
261 } else if (total_length_ > 0) {
262 if (buffer_.size() < total_length_) { // Working on body.
263 buffer_.push_back(*data_++);
264 continue;
265 }
266 MessageType type = PrepareMessage(message_ptr);
267 buffer_.clear();
268 total_length_ = 0;
269 if (type != MessageType::NONE) {
270 return type;
271 }
272 }
273 }
274 return MessageType::NONE;
275}
const uint8_t * data_
Definition parser.h:138
const uint8_t * data_end_
Definition parser.h:139
#define AERROR
Definition log.h:44

◆ GetMessages()

void apollo::drivers::gnss::NovatelParser::GetMessages ( MessageInfoVec messages)
virtual

重载 apollo::drivers::gnss::Parser .

在文件 novatel_parser.cc277 行定义.

277 {
278 std::set<MessageType> s;
279 while (cyber::OK()) {
280 MessageInfo message_info;
281 message_info.type = GetMessage(&message_info.message_ptr);
282 if (message_info.type == MessageType::NONE) {
283 break;
284 }
285 if (s.find(message_info.type) == s.end()) {
286 messages->push_back(std::move(message_info));
287 s.insert(message_info.type);
288 }
289 }
290}
virtual MessageType GetMessage(MessagePtr *message_ptr)
bool OK()
Definition state.h:44

该类的文档由以下文件生成: