Apollo 10.0
自动驾驶开放平台
apollo::localization::msf::IntepolationMessageBuffer< MessageType > 模板类 参考

#include <visualization_manager.h>

类 apollo::localization::msf::IntepolationMessageBuffer< MessageType > 继承关系图:
apollo::localization::msf::IntepolationMessageBuffer< MessageType > 的协作图:

Public 类型

typedef std::list< std::pair< double, MessageType > >::iterator ListIterator
 
- Public 类型 继承自 apollo::localization::msf::MessageBuffer< MessageType >
typedef std::list< std::pair< double, MessageType > >::iterator ListIterator
 

Public 成员函数

 IntepolationMessageBuffer (int capacity)
 
 ~IntepolationMessageBuffer ()
 
bool QueryMessage (const double timestamp, MessageType *msg, double timeout_s=0.01)
 
- Public 成员函数 继承自 apollo::localization::msf::MessageBuffer< MessageType >
 MessageBuffer (int capacity)
 
 ~MessageBuffer ()
 
bool PushNewMessage (const double timestamp, const MessageType &msg)
 
bool PopOldestMessage (MessageType *msg)
 
bool GetMessageBefore (const double timestamp, MessageType *msg)
 
bool GetMessage (const double timestamp, MessageType *msg)
 
void Clear ()
 
void SetCapacity (const unsigned int capacity)
 
void GetAllMessages (std::list< std::pair< double, MessageType > > *msg_list)
 
bool IsEmpty ()
 
unsigned int BufferSize ()
 

额外继承的成员函数

- Protected 属性 继承自 apollo::localization::msf::MessageBuffer< MessageType >
std::map< double, ListIteratormsg_map_
 
std::list< std::pair< double, MessageType > > msg_list_
 
pthread_mutex_t buffer_mutex_
 
unsigned int capacity_
 

详细描述

template<class MessageType>
class apollo::localization::msf::IntepolationMessageBuffer< MessageType >

在文件 visualization_manager.h118 行定义.

成员类型定义说明

◆ ListIterator

template<class MessageType >
typedef std::list<std::pair<double,MessageType>>::iterator apollo::localization::msf::IntepolationMessageBuffer< MessageType >::ListIterator

在文件 visualization_manager.h121 行定义.

构造及析构函数说明

◆ IntepolationMessageBuffer()

template<class MessageType >
apollo::localization::msf::IntepolationMessageBuffer< MessageType >::IntepolationMessageBuffer ( int  capacity)
explicit

在文件 visualization_manager.cc173 行定义.

174 : MessageBuffer<MessageType>(capacity) {}

◆ ~IntepolationMessageBuffer()

template<class MessageType >
apollo::localization::msf::IntepolationMessageBuffer< MessageType >::~IntepolationMessageBuffer ( )

在文件 visualization_manager.cc177 行定义.

177{}

成员函数说明

◆ QueryMessage()

template<class MessageType >
bool apollo::localization::msf::IntepolationMessageBuffer< MessageType >::QueryMessage ( const double  timestamp,
MessageType *  msg,
double  timeout_s = 0.01 
)

在文件 visualization_manager.cc180 行定义.

181 {
182 std::map<double, ListIterator> msg_map_tem;
183 std::list<std::pair<double, MessageType>> msg_list_tem;
184
185 if (!WaitMessageBufferOk(timestamp, &msg_map_tem, &msg_list_tem,
186 timeout_s * 100)) {
187 return false;
188 }
189
190 auto found_iter = msg_map_tem.find(timestamp);
191 if (found_iter != msg_map_tem.end()) {
192 *msg = found_iter->second->second;
193 return true;
194 }
195
196 ListIterator begin_iter = msg_list_tem.begin();
197 if (begin_iter->first > timestamp) {
198 return false;
199 }
200
201 ListIterator after_iter;
202 ListIterator before_iter;
203 for (ListIterator iter = msg_list_tem.end(); iter != msg_list_tem.begin();) {
204 --iter;
205 if (iter->first > timestamp) {
206 after_iter = iter;
207 } else {
208 before_iter = iter;
209
210 double delta_time = after_iter->first - before_iter->first;
211 // if (delete_time > 0.1) {
212 // return false;
213 // }
214 if (std::abs(delta_time) < 1e-9) {
215 AERROR << "Delta_time is too small.";
216 return false;
217 }
218 double scale = (timestamp - before_iter->first) / delta_time;
219 *msg = before_iter->second.interpolate(scale, after_iter->second);
220 msg->timestamp = timestamp;
221 break;
222 }
223 }
224 return true;
225}
std::list< std::pair< double, MessageType > >::iterator ListIterator
#define AERROR
Definition log.h:44

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