Apollo 10.0
自动驾驶开放平台
apollo::hdmap::PoseCollectionAgent类 参考

#include <pose_collection_agent.h>

apollo::hdmap::PoseCollectionAgent 的协作图:

Public 成员函数

 PoseCollectionAgent (std::shared_ptr< JsonConf > sp_conf)
 
void OnBestgnssposCallback (const std::shared_ptr< const apollo::drivers::gnss::GnssBestPose > &bestgnsspos)
 
std::shared_ptr< std::vector< FramePose > > GetPoses () const
 
 ~PoseCollectionAgent ()
 

详细描述

在文件 pose_collection_agent.h30 行定义.

构造及析构函数说明

◆ PoseCollectionAgent()

apollo::hdmap::PoseCollectionAgent::PoseCollectionAgent ( std::shared_ptr< JsonConf sp_conf)
explicit

在文件 pose_collection_agent.cc26 行定义.

26 {
27 sp_pj_transformer_ = std::make_shared<PJTransformer>(50);
28 sp_conf_ = sp_conf;
29 Reset();
30}

◆ ~PoseCollectionAgent()

apollo::hdmap::PoseCollectionAgent::~PoseCollectionAgent ( )

在文件 pose_collection_agent.cc91 行定义.

91 {
92 if (pose_file != nullptr) {
93 fclose(pose_file);
94 pose_file = nullptr;
95 }
96}

成员函数说明

◆ GetPoses()

std::shared_ptr< std::vector< FramePose > > apollo::hdmap::PoseCollectionAgent::GetPoses ( ) const

在文件 pose_collection_agent.cc84 行定义.

84 {
85 if (sp_pose_collection_ == nullptr) {
86 return nullptr;
87 }
88 return sp_pose_collection_->GetPoses();
89}

◆ OnBestgnssposCallback()

void apollo::hdmap::PoseCollectionAgent::OnBestgnssposCallback ( const std::shared_ptr< const apollo::drivers::gnss::GnssBestPose > &  bestgnsspos)

在文件 pose_collection_agent.cc36 行定义.

38 {
39 if (sp_pose_collection_ == nullptr) {
40 sp_pose_collection_ = std::make_shared<PoseCollection>(sp_conf_);
41 }
42
44 bestgnsspos->measurement_time()); // in seconds
45 FramePose pose;
46 if (sp_conf_->use_system_time) {
47 pose.time_stamp = UnixNow();
48 AINFO << "system time: " << pose.time_stamp;
49 } else {
50 pose.time_stamp = time_stamp;
51 }
52 pose.latitude = bestgnsspos->latitude();
53 pose.longitude = bestgnsspos->longitude();
54 pose.altitude = bestgnsspos->height_msl();
55 pose.solution_status = bestgnsspos->sol_status();
56 pose.position_type = bestgnsspos->sol_type();
57 pose.diff_age = bestgnsspos->differential_age();
58 double latitude_std = bestgnsspos->latitude_std_dev();
59 double longitude_std = bestgnsspos->longitude_std_dev();
60 double altitude_std = bestgnsspos->height_std_dev();
61 pose.local_std =
62 std::sqrt(latitude_std * latitude_std + longitude_std * longitude_std +
63 altitude_std * altitude_std);
64 pose.tx = pose.longitude * kDEGRESS_TO_RADIANS;
65 pose.ty = pose.latitude * kDEGRESS_TO_RADIANS;
66 pose.tz = pose.altitude;
67 sp_pj_transformer_->LatlongToUtm(1, 1, &pose.tx, &pose.ty, &pose.tz);
68
69 std::lock_guard<std::mutex> mutex_locker(mutex_);
70 if (pose_file == nullptr) pose_file = fopen("poses.txt", "w");
71 if (pose_file == nullptr) {
72 AERROR << "open poses.txt failed";
73 return;
74 }
75 static int count = 0;
76 fprintf(stderr, "%d:%lf %lf %lf %lf 0.0 0.0 0.0 0.0\n", ++count,
77 pose.time_stamp, pose.tx, pose.ty, pose.tz);
78 fprintf(pose_file, "%lf %lf %lf %lf 0.0 0.0 0.0 0.0\n", pose.time_stamp,
79 pose.tx, pose.ty, pose.tz);
80 fflush(pose_file);
81 sp_pose_collection_->Collect(pose);
82}
#define AERROR
Definition log.h:44
#define AINFO
Definition log.h:42
T GpsToUnixSeconds(T gps_seconds)
double UnixNow()
constexpr double kDEGRESS_TO_RADIANS
Definition common.h:38

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