cartographer源码分析(49)-mapping-odometry_state_tracker.h
2017-07-30 22:47
441 查看
markdown文件可在https://github.com/learnmoreonce/SLAM 下载
本文发于:
* http://www.jianshu.com/u/9e38d2febec1
* https://zhuanlan.zhihu.com/learnmoreonce
* http://blog.csdn.net/learnmoreonce
* slam源码分析微信公众号:slamcode
注释版源码:https://github.com/learnmoreonce/cartographer
文件: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,记录多个里程计状态,是一个双端队列deque 2,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
相关文章推荐
- cartographer源码分析(48)-mapping-imu_tracker.h
- cartographer源码分析(55)-mapping-collated_trajectory_builder.h
- [置顶] 58-总结-【cartographer源码分析】系列的第六部分【 mapping 】
- cartographer源码分析(44)-kalman_filter-pose_tracker.h
- cartographer源码分析(52)-mapping-trajectory_node.h
- cartographer源码分析(53)-mapping-trajectory_connectivity.h
- cartographer源码分析(54)-mapping- trajectory_builder.h
- Lua 5.3 源码分析(四)线程 lua_State
- cartographer源码分析(15)-transform-transform_interpolation_buffer.h
- cartographer源码分析(22)-sensor-collator.h
- cartographer源码分析(28)-io-points_processor.h
- mapreduce源码分析之JobTracker
- bleve搜索引擎源码分析之索引——mapping和lucene一样,也有_all
- springMVC源码分析--SimpleUrlHandlerMapping(四)
- cartographer源码分析(4)-common-time.h
- cartographer源码分析(29)-io-min_max_range_filtering_points_processor.h
- cartographer源码分析(36)-io- outlier_removing_points_processor.h
- FastDFS源码分析之tracker协议分析
- no mapping found for http request with uri(源码角度分析)
- springMVC源码分析--SimpleUrlHandlerMapping(四)