cartographer安装_Cartographer ROS编译安装及相关可执行文件理解

一、编译安装Cartographer ROS

ROS版本为kinetic, 系统为Ubuntu16.04 ,工作空间名称为 catkin_ws。

Cartographer ROS Building & Installation

1、安装wstool and rosdep ninja(编译Cartographer ROS, 官网推荐使用 wstool rosdep

sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build

2、新建一个cartographer_ros 工作区(catkin_ws)

mkdir catkin_ws
cd catkin_ws
wstool init src
wstool merge -t src   https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/
cartographer_ros.rosinstall
wstool update -t src
这步运行后如果报ceres-solver无法获取,不必着急。进入catkin_ws/src/目录后 vim .rosinstall,如下:
- git:
    local-name: cartographer
    uri: https://github.com/googlecartographer/cartographer.git
    version: 1.0.0
- git:
    local-name: cartographer_ros
    uri: https://github.com/googlecartographer/cartographer_ros.git
    version: 1.0.0
- git:
    local-name: ceres-solver
    uri: https://ceres-solver.googlesource.com/ceres-solver.git
    version: 1.13.0

将最后一个git由https://ceres-solver.googlesource.com/ceres-solver.git改为https://github.com/ceres-solver/ceres-solver.git即可。
重新:
wstool update -t src

3、安装 cartographer_ros 依赖项 (proto3 and deb packages).

src/cartographer/scripts/install_proto3.sh
sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y      //rosdep是一个用于安装系统依赖项的命令行工具

4、编译安装.

catkin_make_isolated --install --use-ninja
source install_isolated/setup.bash     //进入工作空间

5、加载数据包测试

运行launch 和rosbag:

roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag

最终的slam图:

aecc8336bf2d4f063e0bc97d1dfa0bdf.png

二、编译方法

我们安装的是带ROS的Cartographer ,编译安装也需用ROS编译方法:catkin_make。

catkin_make

catkin_make 是一个命令行工具,它简化了catkin的标准工作流程,它在CMake标准工作流程中依次调用了cmake 和 make。

官网提供的编译安装方法是catkin_make_isolated –install,(isolated)就是针对每个package独立进行cmake, make, make install ,这样做的好处是可以对单独的package进行调试。catkin_make_isolated –install命令后,工作区间内有如下文件夹(图一):

673dc23cb68495440e6b7d38b9eb0153.png
图一 工作区

图一

如图所示文件夹为src、build_isolated、devel_isolated、install_isolated(protobuf是上一步安装的),他们具体作用如下:

  • src/: ROS的catkin软件包(源代码包);
  • build_isolated/: catkin(CMake)的缓存信息和中间文件 ;
  • devel_isolated /: 生成的环境变量 、目标文件(安装包之前必要的可执行文件和库,包括头文件,动态链接库,静态链接库,可执行文件等);
  • install_isolated/:install后生成的所有文件。

我们再来看下安装文件夹install_isolated内的文件结构(图二):

  • bin 被编译安装的可执行文件。
  • lib 项目生成的库文件(如libcartographer.a)、pkg.pc文件(pkg-config的配置文件)和python库文件等等。
  • Include 放置各类头文件。
  • share 主要存放packages的package.xml、launch文件、msg文件、srv文件、以及生成的pkgConfig.cmake文件等等(在cmake文件中
  • find_package就会用到这些文件)。

d8061e45bd3e0511dd7b78504de03270.png
图二 install_isolated 文件夹

三、install_isolated内可执行文件

1、cartographer_assets_writer(ROS):对有效资源的保存和使用。

2、cartographer_autogenerate_ground truth(cartographer/ground_truth):自动生成期望的真实输出:带闭环的

优化轨迹作为Ground Truth生成器的输入。

3、cartographer_compute_relations_metrics(cartographer/ground_truth):计算相关指标。比如测量值与

ground truth的差就是一个metric。

4、cartographer_dev_rosbag_publisher(ROS/dev): rosbag信息发布。rosbag是用来储存ROS消息的东西。

在平时处理一些robotics问题的时候,我们只是想采集数据,事后再进行分析,这些数据存储在哪儿

呢?就存储在rosbag里。

5、cartographer_dev_trajectory_comparison(ROS/dev): 轨迹比较。This compares a trajectory from a bag file

against the last trajectory in a pbstream file。

6、cartographer_migrate_serialization_format(cartographer/IO): 迁移序列化格式。

7、cartographer_node(ROS):cartographer_node是ROS最重要的一个node,是实时的SLAM。在这个

node中注册发布了5个Topic,设置Topics定时器函数;发布4个Service,为Servics设置了句柄函数。

8、cartographer_occupancy_grid_node(ROS):占据栅格节点。占据栅格地图是机器人常用的一种地图表示

法。这个节点监听SLAM 发布的submaps,然后构建并发布ROS的occupancy_grid。

9、cartographer_offline_node(ROS):离线节点。offline_node 是使用传感器数据包进行SLAM的最快速方法。

10、cartographer_pbstream_map_publisher(ROS): pbstream_map_publisher是一个相对简单的节点,它从序列化的Cartographer状态(pbstream格式)创建静态占据栅格。如果实时更新不重要,它是占据栅格节点的有效替代方案。

11、cartographer_pbstream_to_ros_map(ROS):将pbstream格式转换成标准ros格式地图。

12、cartographer_rosbag_validate(ROS): rosbag验证。Cartographer ROS 提供cartographer_rosbag_validate工

自动分析用户提供的数据包中的数据。使用自己的数据bag时,进行rosbag_validate非常有必要。

13、cartographer_start_trajectory(ROS):轨迹起始位姿。进入localization模式时,给cartographer一个新的

起始位置建立新的路径轨迹从而实现localization。

以上个人理解建立在官网提供的资源上,可能存在不合理指出,欢迎大家指出。在后续的cartographer ROS源码学习过程中,我也会及时更新纠正格功能模块。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值