Apollo 10.0
自动驾驶开放平台
apollo::hdmap::AlignmentAgent< ALIGNMENT_TYPE, REQUEST_TYPE, RESPONSE_TYPE > 模板类 参考

#include <alignment_agent.h>

apollo::hdmap::AlignmentAgent< ALIGNMENT_TYPE, REQUEST_TYPE, RESPONSE_TYPE > 的协作图:

Public 成员函数

 AlignmentAgent (std::shared_ptr< JsonConf > sp_conf, std::shared_ptr< PoseCollectionAgent > sp_pose_collection_agent)
 
void Reset ()
 
grpc::Status ProcessGrpcRequest (grpc::ServerContext *context, REQUEST_TYPE *request, RESPONSE_TYPE *response)
 
int AlignmentStart (REQUEST_TYPE *request, RESPONSE_TYPE *response)
 
int AsyncStartAlignment ()
 
std::shared_ptr< std::vector< FramePose > > GetPoses () const
 
int AlignmentCheck (REQUEST_TYPE *request, RESPONSE_TYPE *response)
 
int AlignmentStop (REQUEST_TYPE *request, RESPONSE_TYPE *response)
 
void SetState (AlignmentAgentState state)
 
AlignmentAgentState GetState () const
 

详细描述

template<typename ALIGNMENT_TYPE, typename REQUEST_TYPE, typename RESPONSE_TYPE>
class apollo::hdmap::AlignmentAgent< ALIGNMENT_TYPE, REQUEST_TYPE, RESPONSE_TYPE >

在文件 alignment_agent.h38 行定义.

构造及析构函数说明

◆ AlignmentAgent()

template<typename ALIGNMENT_TYPE , typename REQUEST_TYPE , typename RESPONSE_TYPE >
apollo::hdmap::AlignmentAgent< ALIGNMENT_TYPE, REQUEST_TYPE, RESPONSE_TYPE >::AlignmentAgent ( std::shared_ptr< JsonConf sp_conf,
std::shared_ptr< PoseCollectionAgent sp_pose_collection_agent 
)
inline

在文件 alignment_agent.h40 行定义.

42 {
43 sp_conf_ = sp_conf;
44 sp_pose_collection_agent_ = sp_pose_collection_agent;
45 }

成员函数说明

◆ AlignmentCheck()

template<typename ALIGNMENT_TYPE , typename REQUEST_TYPE , typename RESPONSE_TYPE >
int apollo::hdmap::AlignmentAgent< ALIGNMENT_TYPE, REQUEST_TYPE, RESPONSE_TYPE >::AlignmentCheck ( REQUEST_TYPE *  request,
RESPONSE_TYPE *  response 
)
inline

在文件 alignment_agent.h135 行定义.

135 {
137 AINFO << "AlignmentAgent is idle. this call will be refused";
138 response->set_code(ErrorCode::ERROR_CHECK_BEFORE_START);
139 response->set_progress(0.0);
140 return 0;
141 }
142 if (sp_alignment_ == nullptr) {
143 AINFO << "sp_alignment_ is null, check later";
144 response->set_code(ErrorCode::SUCCESS);
145 response->set_progress(0.0);
146 return 0;
147 }
148
149 ErrorCode code = sp_alignment_->GetReturnState();
150 double progress = sp_alignment_->GetProgress();
151 response->set_code(code);
152 response->set_progress(progress);
155 stopped_ = true;
157 return -1;
158 }
159 return 0;
160 }
AlignmentAgentState GetState() const
void SetState(AlignmentAgentState state)
#define AINFO
Definition log.h:42

◆ AlignmentStart()

template<typename ALIGNMENT_TYPE , typename REQUEST_TYPE , typename RESPONSE_TYPE >
int apollo::hdmap::AlignmentAgent< ALIGNMENT_TYPE, REQUEST_TYPE, RESPONSE_TYPE >::AlignmentStart ( REQUEST_TYPE *  request,
RESPONSE_TYPE *  response 
)
inline

在文件 alignment_agent.h79 行定义.

79 {
81 AINFO << "AlignmentAgent is running. do need start again";
82 response->set_code(ErrorCode::ERROR_REPEATED_START);
83 response->set_progress(0.0);
84 return 0;
85 }
86 Reset();
88 response->set_code(ErrorCode::SUCCESS);
89 response->set_progress(0.0);
90 return 0;
91 }

◆ AlignmentStop()

template<typename ALIGNMENT_TYPE , typename REQUEST_TYPE , typename RESPONSE_TYPE >
int apollo::hdmap::AlignmentAgent< ALIGNMENT_TYPE, REQUEST_TYPE, RESPONSE_TYPE >::AlignmentStop ( REQUEST_TYPE *  request,
RESPONSE_TYPE *  response 
)
inline

在文件 alignment_agent.h162 行定义.

162 {
163 response->set_code(ErrorCode::SUCCESS);
164 if (sp_alignment_ == nullptr) {
165 response->set_progress(0.0);
166 } else {
167 response->set_progress(sp_alignment_->GetProgress());
168 need_stop_ = true;
169 }
171 return 0;
172 }

◆ AsyncStartAlignment()

template<typename ALIGNMENT_TYPE , typename REQUEST_TYPE , typename RESPONSE_TYPE >
int apollo::hdmap::AlignmentAgent< ALIGNMENT_TYPE, REQUEST_TYPE, RESPONSE_TYPE >::AsyncStartAlignment ( )
inline

在文件 alignment_agent.h93 行定义.

93 {
95 std::thread alignment_thread([=]() {
96 sp_alignment_->SetStartTime(UnixNow());
97 AINFO << "set state RUNNING";
98 while (!need_stop_ && !apollo::cyber::IsShutdown()) {
99 std::shared_ptr<std::vector<FramePose>> sp_poses = GetPoses();
100 if (sp_poses == nullptr) {
101 AINFO << "error, pose pointer is null";
102 return;
103 }
104 sp_alignment_->Process(*sp_poses);
105 ErrorCode code = sp_alignment_->GetReturnState();
108 AERROR << "Some error occurred, while loop will exit";
109 break;
110 }
111 AINFO << "get progress:" << sp_alignment_->GetProgress();
112 if (fabs(1 - sp_alignment_->GetProgress()) < 1e-8) {
113 AINFO << "alignment progress reached 1.0, thread exit";
114 break;
115 }
116 AINFO << "sleep " << sp_conf_->alignment_featch_pose_sleep << " sec";
117 auto seconds =
118 std::chrono::seconds(sp_conf_->alignment_featch_pose_sleep);
119 std::this_thread::sleep_for(seconds);
120 }
121 stopped_ = true;
122 AINFO << "Align thread complete";
123 });
124 alignment_thread.detach();
125 return 0;
126 }
std::shared_ptr< std::vector< FramePose > > GetPoses() const
#define AERROR
Definition log.h:44
bool IsShutdown()
Definition state.h:46
double UnixNow()

◆ GetPoses()

template<typename ALIGNMENT_TYPE , typename REQUEST_TYPE , typename RESPONSE_TYPE >
std::shared_ptr< std::vector< FramePose > > apollo::hdmap::AlignmentAgent< ALIGNMENT_TYPE, REQUEST_TYPE, RESPONSE_TYPE >::GetPoses ( ) const
inline

在文件 alignment_agent.h128 行定义.

128 {
129 if (sp_pose_collection_agent_ == nullptr) {
130 return nullptr;
131 }
132 return sp_pose_collection_agent_->GetPoses();
133 }

◆ GetState()

template<typename ALIGNMENT_TYPE , typename REQUEST_TYPE , typename RESPONSE_TYPE >
AlignmentAgentState apollo::hdmap::AlignmentAgent< ALIGNMENT_TYPE, REQUEST_TYPE, RESPONSE_TYPE >::GetState ( ) const
inline

在文件 alignment_agent.h175 行定义.

175{ return state_; }

◆ ProcessGrpcRequest()

template<typename ALIGNMENT_TYPE , typename REQUEST_TYPE , typename RESPONSE_TYPE >
grpc::Status apollo::hdmap::AlignmentAgent< ALIGNMENT_TYPE, REQUEST_TYPE, RESPONSE_TYPE >::ProcessGrpcRequest ( grpc::ServerContext *  context,
REQUEST_TYPE *  request,
RESPONSE_TYPE *  response 
)
inline

在文件 alignment_agent.h53 行定义.

55 {
56 AINFO << "AlignmentAgent request: " << request->DebugString();
57 switch (request->cmd()) {
58 case CmdType::START:
59 AINFO << "AlignmentAgent start";
60 AlignmentStart(request, response);
61 break;
62 case CmdType::CHECK:
63 AINFO << "AlignmentAgent check";
64 AlignmentCheck(request, response);
65 break;
66 case CmdType::STOP:
67 AINFO << "AlignmentAgent stop";
68 AlignmentStop(request, response);
69 break;
70 default:
71 response->set_code(ErrorCode::ERROR_REQUEST);
72 response->set_progress(sp_alignment_->GetProgress());
73 AERROR << "command error";
74 }
75 AINFO << "AlignmentAgent progress: " << response->progress();
76 return grpc::Status::OK;
77 }
int AlignmentCheck(REQUEST_TYPE *request, RESPONSE_TYPE *response)
int AlignmentStart(REQUEST_TYPE *request, RESPONSE_TYPE *response)
int AlignmentStop(REQUEST_TYPE *request, RESPONSE_TYPE *response)

◆ Reset()

template<typename ALIGNMENT_TYPE , typename REQUEST_TYPE , typename RESPONSE_TYPE >
void apollo::hdmap::AlignmentAgent< ALIGNMENT_TYPE, REQUEST_TYPE, RESPONSE_TYPE >::Reset ( )
inline

在文件 alignment_agent.h47 行定义.

47 {
48 sp_alignment_ = std::make_shared<ALIGNMENT_TYPE>(sp_conf_);
50 need_stop_ = false;
51 }

◆ SetState()

template<typename ALIGNMENT_TYPE , typename REQUEST_TYPE , typename RESPONSE_TYPE >
void apollo::hdmap::AlignmentAgent< ALIGNMENT_TYPE, REQUEST_TYPE, RESPONSE_TYPE >::SetState ( AlignmentAgentState  state)
inline

在文件 alignment_agent.h174 行定义.

174{ state_ = state; }

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