Cartographer(1)源码安装,rosdep问题解决

一、记录从软件包更新依赖的方法

        该方式适用于你在catkin_make时跑出各种神奇 not find 的问题,使用此魔法会有意想不到的效果。(当然,可能有些问题并不是缺少依赖导致的)

        使用该方法前请确保 rosdep 已经初始化并可以更新,即:

sudo rosdep init
rosdep update

============================= 完成后即可使用此方法 ==========================

rosdep install --from-paths src --ignore-src -r -y

二、rosdep无法init与update问题

        这个可以说是困扰了我很久,一直在使用国内的自己搭的rosdep库,但效果还是很差,经常can not …………

        目前比较好的解决办法一个是Robot实验室所搭的rosdep国内站(稳定,今天试试鱼香的)

        不得不说采用鱼香ROS的工具不仅解决rosdep问题,ros自己都懒得装了,perfect!!!

wget http://fishros.com/install -O fishros && bash fishros

        选择3,等待配置完成后自己就可以试一试,简直 perfect !!!

sudo rosdepc init
rosdepc update

============================分割线===============================

三、cartographer源码安装(重头戏来了)

(重要前提) 首先,你需要保证你已经完成以下几点:

        1-已连接好你的网络

        2-已安装好你的ROS对应版本

        3-按照(一、或者二、)能够使用rosdep或rosdepc

================================  开始安装  ====================================

        (1)请访问cartographer官方网站建议在使用cartographer前仔细阅读,非常又用),跳转至 Compiling Cartographer ROS——>>>Building & Installation

        (2)打开终端,Ctrl+T,新建cartographer的工作空间

 mkdir cartographer_ws

        (3)打开新终端,Ctrl+T进行以下操作,依次执行

        Tips:注意看官网上面的提示,因为我是melodic 所以为python 而非python

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

      (4) 返回上一个终端 进入创建好的 cartographer_ws

=========================2022.10.29更新(重复命令导致的错误)====================

===============依次执行以下命令================
wstool init src
============================================
wstool merge -t src https://ghproxy.com/https://raw.githubusercontent.com/cartographer-project/cartographer_ros/master/cartographer_ros.rosinstall

      (5) 打开cartographer_ws/src目录,点击显示隐藏文件

      (6) 打开.rosinstall,将其中两个uri依次替换为以下两个,并保存

uri: https://ghproxy.com/https://github.com/cartographer-project/cartographer.git
=================================================================================
uri: https://ghproxy.com/https://github.com/cartographer-project/cartographer_ros.git

      (7) 在下列终端下执行以下命令

wstool update -t src

      (8) 等待下载完成后,执行以下命令

        Tips:其中rosdep或rosdepc哪个能用就用哪个,melodic根据自己的ROS版本进行更改

sudo rosdepc init
rosdepc update
rosdepc install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y

==========================================================================
我的版本为melodic 则为
rosdepc install --from-paths src --ignore-src --rosdistro=melodic -y
==========================================================================

      (9) 运行最后命令时,会抛出一个ERROR如下

ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
cartographer: [libabsl-dev] defined as "not available" for OS version [bionic]

        解决方法: 打开cartographer_ws/src/cartographer/package.xml

                              将第46行 <depend>libabsl-dev</depend> 进行注释

                              之后重新执行最后命令出现#All required rosdeps installed successfully

      (10) 清理 abseil-cpp 防止冲突问题,执行以下命令(为防止有人是重装,执行一下卸载)

sudo apt remove ros-${ROS_DISTRO}-abseil-cpp
==============================================================
我的是melodic 所以第一个替换为
sudo apt remove ros-melodic-abseil-cpp

      (11) 安装  abseil-cpp ,首先打开以下路径文件

cartographer_ws/src/cartographer/scripts/install_abseil.sh

                     将git clone 地址修改为

git clone https://ghproxy.com/https://github.com/abseil/abseil-cpp.git

                    执行脚步命令安装abseil-cpp

src/cartographer/scripts/install_abseil.sh

      (12) 进行编译,时间比较长,请耐心等待

catkin_make_isolated --install --use-ninja

      (13) 将 cartographer_ws 添加到环境变量中

echo 'source ~/cartographer_ws/install_isolated/setup.bash' >> ~/.bashrc
source ~/.bashrc

至此,cartographer 完美安装 

======================分割线=====================

四、官方demo验证(建图/定位/保存地图)

(网速快的话可以玩一下3D的,慢的话2Ddemo跑一下就行了)

4.1 -建图

4.2.1、2D-Demo与结果

wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag

 4.2.2、3D-Demo与结果

wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_3d/with_intensities/b3-2016-04-05-14-14-00.bag
roslaunch cartographer_ros demo_backpack_3d.launch bag_filename:=${HOME}/Downloads/b3-2016-04-05-14-14-00.bag

 4.2 -先验地图下定位

        1-定位demo下载(两个)

wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/b2-2016-04-05-14-44-52.bag
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/b2-2016-04-27-12-31-41.bag

        2-构建先验地图(此处建图完成后直接Ctrl+C结束即可,保存地图指令已写入)

roslaunch cartographer_ros offline_backpack_2d.launch bag_filenames:=${HOME}/Downloads/b2-2016-04-05-14-44-52.bag

        3-定位验证(先验地图保存路径为Downloads/b2-2016-04-05-14-44-52.bag.pbstream)

roslaunch cartographer_ros demo_backpack_2d_localization.launch \
   load_state_filename:=${HOME}/Downloads/b2-2016-04-05-14-44-52.bag.pbstream \
   bag_filename:=${HOME}/Downloads/b2-2016-04-27-12-31-41.bag

4.3-保存地图说明

        首先停止建图

rosservice call /finish_trajectory  0

        保存地图至pbstream格式(自行对比改文件路径与文件名称)

rosservice call /write_state "{filename: '${HOME}/cart_ws/src/Mapping/carto_map.pbstream'}"
 
rosservice call /write_state "{filename: '${HOME}/文件路径/文件名称.pbstream'}"

        将pbstream格式地图转为pgm与yaml

rosrun cartographer_ros cartographer_pbstream_to_ros_map -map_filestem=${HOME}/cart_ws/src/Mapping/carto_map -pbstream_filename=${HOME}/cart_ws/src/Mapping/carto_map.pbstream -resolution=0.02
 
rosrun cartographer_ros cartographer_pbstream_to_ros_map -map_filestem${HOME}/文件路径/文件名称 -pbstream_filename=${HOME}/文件路径/文件名称.pbstream -resolution=分辨率值

4.4-保存地图脚本

        一个一个命令太麻烦了,所以直接写了一个简陋脚本,自取,赋权执行等问题请移步自己搜一下。提前建一个mapping,保存图片名字自行更改。

==================================================================
             carto_map01此名称自行更改,但需全文一致
==================================================================
#!/bin/bash

rosservice call /finish_trajectory 0
sleep 2
echo "finishing successful trajectory 0"
sleep 1

rosservice call /warite_state "{filename:'${HOME}/mapping/carto_map01.pbstream'}"
sleep 2
echo "writing filename carto_map01 successful"

sleep 1
rosrun cartographer_ros cartographer_pbstream_to_ros_map -map_filestem=${HOME}/mapping/carto_map01 -pbstream_filename=${HOME}/mapping/carto_map01.pbstream -resolution=0.02
sleep 1

echo"successful return maping from pbstream to pgm%yaml"
echo "your pgm resolution is 0.02"

        不积跬步无以至千里,不积小流无以成江河  -------------------------------1:56

  • 24
    点赞
  • 143
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值