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

Public 成员函数

 AsensingCanParser (const config::Config &config)
 
void GetMessages (MessageInfoVec *messages) override
 
bool PrepareMessage () override
 
void FillGnssBestpos () override
 
void FillIns () override
 
void FillInsStat () override
 
void FillImu () override
 
void FillHeading () override
 
- Public 成员函数 继承自 apollo::drivers::gnss::AsensingBaseParser
 AsensingBaseParser ()
 
 AsensingBaseParser (const config::Config &config)
 
- Public 成员函数 继承自 apollo::drivers::gnss::Parser
virtual ~Parser ()
 
void Update (const uint8_t *data, size_t length)
 
void Update (const std::string &data)
 
virtual MessageType GetMessage (MessagePtr *message_ptr)
 
void GetMessagesByChannel (const uint8_t &channel, MessageInfoVec *messages)
 
virtual void GetMessages (const uint8_t &channel, MessageInfoVec *messages)
 
virtual bool GetInsStat (MessagePtr *message_ptr)
 

额外继承的成员函数

- 静态 Public 成员函数 继承自 apollo::drivers::gnss::Parser
static Parser * CreateNovatel (const config::Config &config)
 
static Parser * CreateHuaCeText (const config::Config &config)
 
static Parser * CreateAsensingBinary (const config::Config &config)
 
static Parser * CreateAsensingCan (const config::Config &config)
 
static Parser * CreateBroadGnssText (const config::Config &config)
 
static Parser * CreateParser (const config::Config &config)
 
static Parser * CreateRtcmV3 (bool is_base_station=false)
 
- Protected 成员函数 继承自 apollo::drivers::gnss::Parser
 Parser ()
 
- Protected 属性 继承自 apollo::drivers::gnss::AsensingBaseParser
SolutionStatus solution_status_ = SolutionStatus::INSUFFICIENT_OBS
 
SolutionType solution_type_ = SolutionType::NONE
 
double gps_sec_
 
GnssBestPose bestpos_
 
RateControl bestpos_ratecontrol_ {PERIOD_NS_1HZ}
 
Imu imu_
 
Heading heading_
 
Ins ins_
 
InsStat ins_stat_
 
bool auto_fill_gps_msg_
 
- Protected 属性 继承自 apollo::drivers::gnss::Parser
const uint8_t * data_ = nullptr
 
const uint8_t * data_end_ = nullptr
 

详细描述

在文件 asensing_can_parser.cc 第 112 行定义.

构造及析构函数说明

◆ AsensingCanParser()

apollo::drivers::gnss::AsensingCanParser::AsensingCanParser ( const config::Config &  config)
inlineexplicit

成员函数说明

◆ FillGnssBestpos()

void apollo::drivers::gnss::AsensingCanParser::FillGnssBestpos ( )
overridevirtual

实现了 apollo::drivers::gnss::AsensingBaseParser.

在文件 asensing_can_parser.cc 第 363 行定义.

363 {
364 bestpos_.set_measurement_time(adata_.gps_sec);
365 bestpos_.set_sol_status(solution_status_);
366 bestpos_.set_sol_type(solution_type_);
367 if (adata_.gps_latitude > 0) {
368 bestpos_.set_latitude(adata_.gps_latitude);
369 bestpos_.set_longitude(adata_.gps_longitude);
370 bestpos_.set_height_msl(adata_.gps_altitude);
371 bestpos_.set_latitude_std_dev(adata_.gps_lat_std);
372 bestpos_.set_longitude_std_dev(adata_.gps_lon_std);
373 bestpos_.set_height_std_dev(adata_.gps_alti_std);
374 } else {
375 bestpos_.set_latitude(adata_.latitude);
376 bestpos_.set_longitude(adata_.longitude);
377 bestpos_.set_height_msl(adata_.altitude);
378 bestpos_.set_latitude_std_dev(adata_.lat_std);
379 bestpos_.set_longitude_std_dev(adata_.lon_std);
380 bestpos_.set_height_std_dev(adata_.alti_std);
381 }
382 bestpos_.set_differential_age(adata_.differential_age);
383 // bestpos_.set_num_sats_tracked(0);
384 // bestpos_.set_num_sats_in_solution(0);
385 // bestpos_.set_num_sats_l1(0);
386 // bestpos_.set_num_sats_multi(0);
387}

◆ FillHeading()

void apollo::drivers::gnss::AsensingCanParser::FillHeading ( )
overridevirtual

实现了 apollo::drivers::gnss::AsensingBaseParser.

在文件 asensing_can_parser.cc 第 436 行定义.

436 {
437 heading_.set_solution_status(solution_status_);
438 heading_.set_position_type(solution_type_);
439 heading_.set_measurement_time(adata_.gps_sec);
440 if (adata_.gps_heading > -0.1) {
441 heading_.set_heading(adata_.gps_heading);
442 heading_.set_pitch(adata_.gps_pitch);
443 heading_.set_heading_std_dev(adata_.gps_yaw_std);
444 } else {
445 heading_.set_heading(adata_.heading);
446 heading_.set_pitch(adata_.pitch);
447 heading_.set_heading_std_dev(adata_.yaw_std);
448 }
449 heading_.set_pitch_std_dev(adata_.pitch_std);
450
451 // heading_.set_station_id("0");
452 // heading_.set_satellite_number_multi(0);
453 // heading_.set_satellite_soulution_number(0);
454}

◆ FillImu()

void apollo::drivers::gnss::AsensingCanParser::FillImu ( )
overridevirtual

实现了 apollo::drivers::gnss::AsensingBaseParser.

在文件 asensing_can_parser.cc 第 428 行定义.

428 {
429 rfu_to_flu(adata_.acc_x, adata_.acc_y, adata_.acc_z,
430 imu_.mutable_linear_acceleration());
431 rfu_to_flu(adata_.gyro_x, adata_.gyro_x, adata_.gyro_z,
432 imu_.mutable_angular_velocity());
433 imu_.set_measurement_time(adata_.ins_gps_sec);
434}
void rfu_to_flu(double r, double f, double u, ::apollo::common::Point3D *flu)

◆ FillIns()

void apollo::drivers::gnss::AsensingCanParser::FillIns ( )
overridevirtual

实现了 apollo::drivers::gnss::AsensingBaseParser.

在文件 asensing_can_parser.cc 第 389 行定义.

389 {
390 ins_.mutable_euler_angles()->set_x(adata_.roll * DEG_TO_RAD);
391 ins_.mutable_euler_angles()->set_y(-adata_.pitch * DEG_TO_RAD);
392 ins_.mutable_euler_angles()->set_z(azimuth_deg_to_yaw_rad(adata_.heading));
393
394 ins_.mutable_position()->set_lon(adata_.longitude);
395 ins_.mutable_position()->set_lat(adata_.latitude);
396 ins_.mutable_position()->set_height(adata_.altitude);
397 ins_.mutable_linear_velocity()->set_x(adata_.ve);
398 ins_.mutable_linear_velocity()->set_y(adata_.vn);
399 ins_.mutable_linear_velocity()->set_z(-adata_.vd);
400 rfu_to_flu(adata_.acc_x, adata_.acc_y, adata_.acc_z,
401 ins_.mutable_linear_acceleration());
402 rfu_to_flu(adata_.gyro_x, adata_.gyro_y, adata_.gyro_z,
403 ins_.mutable_angular_velocity());
404 ins_.set_measurement_time(adata_.ins_gps_sec);
405 ins_.mutable_header()->set_timestamp_sec(cyber::Time::Now().ToSecond());
406
407 switch (solution_type_) {
412 ins_.set_type(Ins::GOOD);
413 break;
415 ins_.set_type(Ins::CONVERGING);
416 break;
417 default:
418 ins_.set_type(Ins::INVALID);
419 break;
420 }
421}
static Time Now()
get the current time.
Definition time.cc:57
constexpr double DEG_TO_RAD
constexpr double azimuth_deg_to_yaw_rad(double azimuth)

◆ FillInsStat()

void apollo::drivers::gnss::AsensingCanParser::FillInsStat ( )
overridevirtual

◆ GetMessages()

void apollo::drivers::gnss::AsensingCanParser::GetMessages ( MessageInfoVec *  messages)
overridevirtual

重载 apollo::drivers::gnss::AsensingBaseParser .

在文件 asensing_can_parser.cc 第 150 行定义.

150 {
151 if (data_ == nullptr) {
152 return;
153 }
155
156 if (cur_can_id_ == FRAME_gps_latitude_longitude) {
158 messages->push_back(MessageInfo{MessageType::BEST_GNSS_POS,
159 reinterpret_cast<MessagePtr>(&bestpos_)});
160 return;
161 } else if (cur_can_id_ == FRAME_gps_heading_and_pitch) {
162 FillHeading();
163 messages->push_back(MessageInfo{MessageType::HEADING,
164 reinterpret_cast<MessagePtr>(&heading_)});
165 return;
166 } else if (cur_can_id_ != FRAME_ins_height_and_time) {
167 return;
168 }
169
170 FillImu();
171 FillIns();
172 FillInsStat();
173 if (auto_fill_gps_msg_ && adata_.gps_latitude < 0 &&
176 messages->push_back(MessageInfo{MessageType::BEST_GNSS_POS,
177 reinterpret_cast<MessagePtr>(&bestpos_)});
178 }
179 if (auto_fill_gps_msg_ && adata_.gps_heading < -0.1) {
180 FillHeading();
181 messages->push_back(MessageInfo{MessageType::HEADING,
182 reinterpret_cast<MessagePtr>(&heading_)});
183 }
184 messages->push_back(
185 MessageInfo{MessageType::IMU, reinterpret_cast<MessagePtr>(&imu_)});
186
187 messages->push_back(
188 MessageInfo{MessageType::INS, reinterpret_cast<MessagePtr>(&ins_)});
189 messages->push_back(MessageInfo{MessageType::INS_STAT,
190 reinterpret_cast<MessagePtr>(&ins_stat_)});
191}
const uint8_t * data_
Definition parser.h:145
::google::protobuf::Message * MessagePtr
Definition parser.h:34
constexpr uint32_t FRAME_ins_height_and_time
constexpr uint32_t FRAME_gps_heading_and_pitch
constexpr uint32_t FRAME_gps_latitude_longitude

◆ PrepareMessage()

bool apollo::drivers::gnss::AsensingCanParser::PrepareMessage ( )
overridevirtual

实现了 apollo::drivers::gnss::AsensingBaseParser.

在文件 asensing_can_parser.cc 第 193 行定义.

193 {
194 auto can_frame =
195 reinterpret_cast<const apollo::drivers::canbus::CanFrame *>(data_);
196 ADEBUG << "Received can frame: " << can_frame->CanFrameString();
197 Decode(*can_frame);
198 cur_can_id_ = can_frame->id;
199 return true;
200}
#define ADEBUG
Definition log.h:41
The class which defines the information to send and receive.
Definition can_client.h:48
std::string CanFrameString() const
CanFrame string including essential information about the message.
Definition can_client.h:69

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