ros:cartographer(二)整体介绍

版权声明:本文为博主原创文章,未经博主允许不得转载 https://blog.csdn.net/qit1314/article/details/84996281

在这里插入图片描述
cartographer的doc中给出了这个图。
现在我还没看过源码,所以只能猜测一些内容。
待看完源码后,再详细介绍这个图。

直观地说,左侧的是输入的数据,包括测距数据、码盘里程计和IMU数据。左下方的固定的姿态应该是作为整个sparse pose的锚点。

pose extrapolator的输入包括:里程计姿态、imu估计的姿态和扫描匹配输出的姿态。既然有三种关于姿态的信息(实际中可以配置,如没有IMU),那么可以通过滤波方法获得更准确的位姿估计。这里我的感觉还应该有其他的功能,如作为扫描匹配的初值。
这里的一个问题是:scan-matching是采用哪种方式?图中就有距离数据和位姿进入scan matching,感觉少一部分内容。

扫描匹配的姿态传递给运动滤波蒸馏(位姿变化或时间变化),也就是如果机器人一直静止不动的话,新来的数据是没有太大意义的,所以把这些数据扔掉。

如果运动了或者经过了一段时间,则把姿态和滤波后的激光数据加入到sub map中。
并插入结果(时间、姿态、数据和submaps)

然后传递给后端线程,创建位姿图。这里包括回环检测。

大体上从这个图中,若没有看过源码,很多细节还是不清楚。

由于我的下一步工作是做相关内容,所以我将重点关注:
采用里程计和2D激光雷达传感器,构建栅格地图。所以在后续的文章中,主要分析与之相关的源码内容。

这里我的问题:
1 扫描匹配采用何种方式?scan-scan,scan-map,map-map?
2 位姿图是如何构建的?
3 如何进行的回环检测?
4 里程计和扫描匹配的姿态融合采用何种方法?
5 …

cartographer 用到的库:

Boost:准标准的C++库。

Eigen3: 准标准的线性代数库。

Lua:非常轻量的脚本语言,主要用来做Configuration

Ceres:这是Google开源的做非线性优化的库,仅依赖于Lapack和Blas

Protobuf:这是Google开源的很流行的跨平台通信库

cartographer.xml
cartographer
1.0.0

Cartographer is a system that provides real-time simultaneous localization
and mapping (SLAM) in 2D and 3D across multiple platforms and sensor
configurations.


The Cartographer Authors

Apache 2.0

https://github.com/googlecartographer/cartographer

The Cartographer Authors

<buildtool_depend>catkin</buildtool_depend>

<build_depend>g+±static</build_depend>
<build_depend>google-mock</build_depend>
<build_depend>python-sphinx</build_depend>

boost
ceres-solver
eigen
libcairo2-dev
libgflags-dev
libgoogle-glog-dev
lua5.2-dev
protobuf-dev

cmake

cartographer_ros的xml

cartographer_ros
1.0.0

Cartographer is a system that provides real-time simultaneous localization
and mapping (SLAM) in 2D and 3D across multiple platforms and sensor
configurations. This package provides Cartographer’s ROS integration.


The Cartographer Authors

Apache 2.0

https://github.com/googlecartographer/cartographer_ros

The Cartographer Authors

<buildtool_depend>catkin</buildtool_depend>

<build_depend>google-mock</build_depend>
<build_depend>g+±static</build_depend>
<build_depend>protobuf-dev</build_depend>
<build_depend>python-sphinx</build_depend>

cartographer
cartographer_ros_msgs
eigen_conversions
geometry_msgs
libgflags-dev
libgoogle-glog-dev
libpcl-all-dev
message_runtime
nav_msgs
pcl_conversions
robot_state_publisher
rosbag
roscpp
roslaunch
roslib
sensor_msgs
std_msgs
tf2
tf2_eigen
tf2_ros
urdf
visualization_msgs

猜你喜欢

转载自blog.csdn.net/qit1314/article/details/84996281