cartographer源码分析(49)-mapping-odometry_state_tracker.h
来源:互联网 发布:淘宝店铺权重有哪些 编辑:程序博客网 时间:2024/06/06 02:55
markdown文件可在https://github.com/learnmoreonce/SLAM 下载
文件:dometry_state_tracker.h#ifndef CARTOGRAPHER_MAPPING_ODOMETRY_STATE_TRACKER_H_#define CARTOGRAPHER_MAPPING_ODOMETRY_STATE_TRACKER_H_#include <deque>#include "cartographer/common/time.h"#include "cartographer/transform/rigid_transform.h"namespace cartographer {namespace mapping {/*.lua设置:imu_gravity_time_constant = 10.,num_odometry_states = 1000,OdometryState类含3个数据成员1,time,时间2,Rigid3d,里程计的位置3,Rigid3d,状态位置*/struct OdometryState { OdometryState(common::Time time, const transform::Rigid3d& odometer_pose, const transform::Rigid3d& state_pose); OdometryState() {} common::Time time = common::Time::min(); transform::Rigid3d odometer_pose = transform::Rigid3d::Identity(); transform::Rigid3d state_pose = transform::Rigid3d::Identity();};/*OdometryStateTracker:记录跟踪里程计的多个状态类,maxsize :window_size含义2个数据成员1,OdometryStates,记录多个里程计状态,是一个双端队列deque2,window_size_,滑动窗大小,即队列大小成员函数:1,构造函数初始化滑动窗大小.2,AddOdometryState()添加一个新的里程计状态,若deque已满则删除旧有的States*/// Keeps track of the odometry states by keeping sliding window over some// number of them.class OdometryStateTracker { public: using OdometryStates = std::deque<OdometryState>; explicit OdometryStateTracker(int window_size); const OdometryStates& odometry_states() const;/*添加新的里程计状态,超出滑动窗大小时,旧的删除*/ // Adds a new 'odometry_state' and makes sure the maximum number of previous // odometry states is not exceeded. void AddOdometryState(const OdometryState& odometry_state); // Returns true if no elements are present in the odometry queue. bool empty() const; // Retrieves the most recent OdometryState. Must not be called when empty. const OdometryState& newest() const; private: OdometryStates odometry_states_; size_t window_size_;};} // namespace mapping} // namespace cartographer#endif // CARTOGRAPHER_MAPPING_ODOMETRY_STATE_TRACKER_H_
dometry_state_tracker.cc#include "cartographer/mapping/odometry_state_tracker.h"#include "cartographer/transform/rigid_transform.h"namespace cartographer {namespace mapping {OdometryState::OdometryState(const common::Time time, const transform::Rigid3d& odometer_pose, const transform::Rigid3d& state_pose) : time(time), odometer_pose(odometer_pose), state_pose(state_pose) {}OdometryStateTracker::OdometryStateTracker(const int window_size) : window_size_(window_size) { CHECK_GT(window_size, 0);}const OdometryStateTracker::OdometryStates&OdometryStateTracker::odometry_states() const { return odometry_states_;}//添新删旧void OdometryStateTracker::AddOdometryState( const OdometryState& odometry_state) { odometry_states_.push_back(odometry_state); while (odometry_states_.size() > window_size_) { odometry_states_.pop_front(); }}bool OdometryStateTracker::empty() const { return odometry_states_.empty(); }//返回最后一个const OdometryState& OdometryStateTracker::newest() const { return odometry_states_.back();}} // namespace mapping} // namespace cartographer
本文发于:
* http://www.jianshu.com/u/9e38d2febec1
* https://zhuanlan.zhihu.com/learnmoreonce
* http://blog.csdn.net/learnmoreonce
* slam源码分析微信公众号:slamcode
注释版源码:https://github.com/learnmoreonce/cartographer
阅读全文
0 0
- cartographer源码分析(49)-mapping-odometry_state_tracker.h
- cartographer源码分析(47)-mapping-id.h
- cartographer源码分析(48)-mapping-imu_tracker.h
- cartographer源码分析(51)-mapping- submaps.h
- cartographer源码分析(52)-mapping-trajectory_node.h
- cartographer源码分析(53)-mapping-trajectory_connectivity.h
- cartographer源码分析(54)-mapping- trajectory_builder.h
- cartographer源码分析(55)-mapping-collated_trajectory_builder.h
- cartographer源码分析(3)-common-port.h
- cartographer源码分析(4)-common-time.h
- cartographer源码分析(5)-common-rate_time.h
- cartographer源码分析(6)-common-histogram.h
- cartographer源码分析(7)-common-math.h
- cartographer源码分析(8)-common-make_unique.h
- cartographer源码分析(5)-common-fixed_ratio_sampler.h
- cartographer源码分析(9)-common-mutex.h
- cartographer源码分析(10)-common-thread_pool.h
- cartographer源码分析(11)-common-blocking_queue.h
- Java-JVM垃圾回收回顾
- apache-comnons系列之commons-net3.6 学习笔记
- JDBC execute、executeQuery和executeUpdate
- Objective
- 记录对hover、transiotion、linear的运用
- cartographer源码分析(49)-mapping-odometry_state_tracker.h
- 【JTS】JTS空间拓扑关系的测试
- Kotlin学习笔记——填坑
- TCP头格式
- cartographer源码分析(51)-mapping- submaps.h
- Vue组件间传值
- 一周一更之RESET
- 跨域解决方案之二-->CORS解决跨域
- Tuxedo之lic.txt