LocalTrajectoryBuilder意思是局部轨迹的构建,下面的类图中方法的参数没有画进去. 注意其中的三个类:PoseExtrapolator类,RealTimeCorrelativeScanMatcher类和CeresScanMatcher类. (1)PoseExtrapolator类(如下图),Node类和LocalTrajectoryBuilder类都有用到PoseExtrapolator对象,好像两者之间并没有什么关系? LocalTrajectoryBuilder中的Pose…
上文提到特别注意map_builder_bridge_.AddTrajectory(x,x),查看其中的代码.两点: 首先是map_builder_.AddTrajectoryBuilder(...),调用了map_builder_对象的方法.其次是sensor_bridges_键值对的赋值. int MapBuilderBridge::AddTrajectory(const std::unordered_set<std::string>& expected_sensor_ids, c…
前面已经提到了: 如何注册一个module. 如何获取一个module. injector与module以及provider的关系. 那么已经剩下最后一部分了,就是关于依赖是如何被注入的. 且看下面这段代码. //如你所见,注册了一个moduleA //又如你所见,给moduleA上面注册了两个全局变量,a和b angular.module('moduleA',[]); angular.module('moduleA').constant('a',1); angular.module('modu…
  Vue是数据驱动的框架,在修改数据时,视图会进行更新.数据响应式系统使得状态管理变的简单直接,在开发过程中减少与DOM元素的接触.而深入学习其中的原理十分有必要,能够回避一些常见的问题,使开发变的更为高效. 一.实现简单的数据响应式系统   Vue使用观察者模式(又称发布-订阅模式)加数据劫持的方式实现数据响应式系统,劫持数据时使用 Object.defineProperty 方法将数据属性变成访问器属性.Object.defineProperty 是 ES5 中一个无法 shim 的特性,…
其实也就是包括两个方面的内容:类似于运动模型的位姿估计和扫描匹配,因为需要计算速度,所以时间就有必要了! 1. PoseExtrapolator解决了IMU数据.里程计和位姿信息进行融合的问题. 该类定义了三个队列. std::deque<TimedPose> timed_pose_queue_; std::deque<sensor::ImuData> imu_data_; std::deque<sensor::OdometryData> odometry_data_;…
MapBuilder的成员变量sensor::Collator sensor_collator_; 再次阅读MapBuilder::AddTrajectoryBuilder方法.首先构造了mapping::GlobalTrajectoryBuilder实例,接着作为参数构造了CollatedTrajectoryBuilder实例. trajectory_builders_.push_back( common::make_unique<CollatedTrajectoryBuilder>( &a…
带着几个思考问题: (1)IMU数据的使用,如何融合,Kalman滤波? (2)图优化的具体实现,闭环检测的策略? (3)3D激光的接入和闭环策略? 1. 安装Kdevelop工具: http://blog.csdn.net/p942005405/article/details/75715288 http://blog.csdn.net/wan_exe/article/details/56275108 yhexie@ubuntu:~$ sudo apt-get install kdevelop…
IMU的输入为imu_linear_acceleration 和  imu_angular_velocity 线加速和角速度.最终作为属性输出的是方位四元数.  Eigen::Quaterniond orientation() const { return orientation_; } /* * Copyright 2016 The Cartographer Authors * * Licensed under the Apache License, Version 2.0 (the "Lic…
PoseGraph位姿图 mapping2D::PoseGraph类的注释: // Implements the loop closure method called Sparse Pose Adjustment (SPA) from// Konolige, Kurt, et al. "Efficient sparse pose adjustment for 2d mapping."// Intelligent Robots and Systems (IROS), 2010 IEEE/…
Cartographer早期的代码在进行3d制图的时候使用了UKF方法,查看现有的tag版本,可以转到0.1.0和0.2.0查看,包含kalman_filter文件夹. 文件夹中的pose_tracker类文件在mapping_3d的文件加下有kalman_local_trajectory_builder.目前这部分代码已经移除,整个代码的结构也发生了较大变动. 项目的主要逻辑结构:https://google-cartographer.readthedocs.io/en/latest/ 当前项…