Apollo 10.0
自动驾驶开放平台
apollo::cyber::NavMsgConverter类 参考

#include <nav_msg_converter.h>

类 apollo::cyber::NavMsgConverter 继承关系图:
apollo::cyber::NavMsgConverter 的协作图:

Public 成员函数

 NavMsgConverter ()
 
 ~NavMsgConverter ()
 
virtual bool ConvertMsg (InputTypes< RosNavMsgPtr > &, OutputTypes< BestPoseMsgPtr, InsStatMsgPtr > &)
 convert the message between ros and apollo
 
- Public 成员函数 继承自 apollo::cyber::RosApolloMessageConverter< InputTypes< RosNavMsgPtr >, OutputTypes< BestPoseMsgPtr, InsStatMsgPtr > >
 RosApolloMessageConverter ()
 
 RosApolloMessageConverter ()
 
 ~RosApolloMessageConverter () override
 
 ~RosApolloMessageConverter () override
 
bool Init () override
 
bool Init () override
 
- Public 成员函数 继承自 apollo::cyber::MessageConverter
 MessageConverter ()
 
virtual ~MessageConverter ()
 
bool IsInit () const
 

额外继承的成员函数

- Protected 成员函数 继承自 apollo::cyber::RosApolloMessageConverter< InputTypes< RosNavMsgPtr >, OutputTypes< BestPoseMsgPtr, InsStatMsgPtr > >
virtual bool ConvertMsg (const std::shared_ptr< InputTypes< RosNavMsgPtr > > &ros_msg0, const std::shared_ptr< OutputTypes< BestPoseMsgPtr, InsStatMsgPtr > > &ros_msg1, const std::shared_ptr< NullType > &ros_msg2, const std::shared_ptr< NullType > &ros_msg3, std::shared_ptr< NullType > &apollo_msg0, std::shared_ptr< NullType > &apollo_msg1, std::shared_ptr< NullType > &apollo_msg2, std::shared_ptr< NullType > &apollo_msg3)=0
 
virtual bool ConvertMsg (InputTypes &input, OutputTypes &output)=0
 
- Protected 成员函数 继承自 apollo::cyber::MessageConverter
bool LoadConfig (ConverterConf *config)
 
- Protected 属性 继承自 apollo::cyber::MessageConverter
std::atomic< bool > init_
 
std::unique_ptr< apollo::cyber::Nodecyber_node_
 
std::vector< std::shared_ptr< apollo::cyber::proto::RoleAttributes > > apollo_attrs_
 
std::vector< std::shared_ptr< apollo::cyber::ReaderBase > > apollo_readers_
 
std::vector< std::shared_ptr< apollo::cyber::WriterBase > > apollo_writers_
 
const std::string node_name_ = "converter_base"
 
ConverterConf converter_conf_
 

详细描述

在文件 nav_msg_converter.h55 行定义.

构造及析构函数说明

◆ NavMsgConverter()

apollo::cyber::NavMsgConverter::NavMsgConverter ( )
inline

在文件 nav_msg_converter.h59 行定义.

59{}

◆ ~NavMsgConverter()

apollo::cyber::NavMsgConverter::~NavMsgConverter ( )
inline

在文件 nav_msg_converter.h60 行定义.

60{}

成员函数说明

◆ ConvertMsg()

bool apollo::cyber::NavMsgConverter::ConvertMsg ( InputTypes< RosNavMsgPtr > &  in,
OutputTypes< BestPoseMsgPtr, InsStatMsgPtr > &  out 
)
virtual

convert the message between ros and apollo

参数
InputTypesinput message container
OutputTypesoutput message container
返回
result, true for success

在文件 nav_msg_converter.cc23 行定义.

25 {
26#ifdef ENABLE_ROS_MSG
27 auto ros_nav_ptr = std::get<0>(in.values);
28 auto& ros_nav = (*ros_nav_ptr);
29
30 auto best_pose_msg = std::get<0>(out.values);
31 auto ins_stat_msg = std::get<1>(out.values);
32
33 auto unix_msg_time =
34 ros_nav.header.stamp.sec + ros_nav.header.stamp.nanosec / 1e9;
35 best_pose_msg->mutable_header()->set_timestamp_sec(unix_msg_time);
36 best_pose_msg->mutable_header()->set_module_name("gnss");
37
38 ins_stat_msg->mutable_header()->set_timestamp_sec(unix_msg_time);
39 ins_stat_msg->mutable_header()->set_module_name("gnss");
40
41 best_pose_msg->set_measurement_time(unix_msg_time);
42 best_pose_msg->set_latitude(ros_nav.latitude);
43 best_pose_msg->set_longitude(ros_nav.longitude);
44 best_pose_msg->set_height_msl(ros_nav.altitude);
45 best_pose_msg->set_undulation(0);
46 best_pose_msg->set_datum_id(apollo::drivers::gnss::DatumId::WGS84);
47 best_pose_msg->set_latitude_std_dev(sqrt(ros_nav.position_covariance[4]));
48 best_pose_msg->set_longitude_std_dev(sqrt(ros_nav.position_covariance[0]));
49 best_pose_msg->set_height_std_dev(sqrt(ros_nav.position_covariance[8]));
50 if (ros_nav.status.status == -1) {
51 best_pose_msg->set_sol_status(
53 best_pose_msg->set_sol_type(apollo::drivers::gnss::SolutionType::NONE);
54 ins_stat_msg->set_pos_type(0);
55 } else if (ros_nav.status.status == 0) {
56 best_pose_msg->set_sol_status(
58 best_pose_msg->set_sol_type(apollo::drivers::gnss::SolutionType::SINGLE);
59 ins_stat_msg->set_pos_type(1);
60 } else if (ros_nav.status.status == 1) {
61 best_pose_msg->set_sol_status(
63 best_pose_msg->set_sol_type(apollo::drivers::gnss::SolutionType::WAAS);
64 ins_stat_msg->set_pos_type(2);
65 } else if (ros_nav.status.status == 2) {
66 best_pose_msg->set_sol_status(
68 best_pose_msg->set_sol_type(
70 ins_stat_msg->set_pos_type(2);
71 }
72
73#endif
74 return true;
75}

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