基于Docker搭建cartographer开发环境

原因

自己的ubuntu20.04由于环境原因编译cartographer出现各种问题。
cartographer的依赖比较繁琐,实属有点麻烦。
近期花了点时间学习docker,然后想着可以把一整套环境部署到docker上(按理论来讲可以无视本身乌班图的版本,无需安装ros,直接docker pull)。属实把我香哭了😄

因此,写个记录贴方便我后期用,也可以方便有需要的朋友。
另:此文参考另一位博主的文章,在此感谢并附上传送门:
参考博客

环境搭建过程

1、在ubuntu物理机或者虚拟机上安装docker。docker的安装教程可以参考docker官网。
官网传送门
相关博客传送门

2、启动docker后拉取镜像:

  1、基于ros-melodic下安装cartographer编译依赖,命令:

sudo docker pull fdko11/ros:bionic-melodic-cartographer

  2、基于ros-noetic下安装cartographer依赖,命令:

sudo docker pull fdko11/ros:focal-noetic-cartographer

3、拉取镜像成功后,我们可以用sudo docker image确认并查看一下镜像大小
在这里插入图片描述4、利用拉取的镜像创建容器实例:
  此时,按照显卡区分独显直连模式和混合驱动模式。它们的区分在于,独显模式需要配置NVIDIA驱动,安装NVIDIA-docker2。
配置NVIDIA-docker2传送门

启动容器:

sudo docker run -it --name=“carto” --net=host -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --runtime=nvidia --device /dev/nvidia0 –device /dev/nvidia-uvm --device /dev/nvidia-uvm-tools --device /dev/nvidiactl fdko11/ros:focal-noetic-cartographer

  其中DISPLAY变量和/tmp/.X11目录的挂载是为了可在docker中启动rviz等可视化程序。docker中-v 参数表示容器数据卷,参数为宿主机绝对路径:/容器内目录。启动过程中可能会出现报错,根据报错信息自行百度解决
5、容器中切换到carto用户
容器中的开发用户名:carto,密码:123456,在/home/carto/carto_ws路径下存放了cartographer代码。
在这里插入图片描述6、编译安装abseil库:

su carto
cd /home/carto/carto_ws/abseil-cpp/
mkdir build
cd build
cmake -G Ninja   -DCMAKE_BUILD_TYPE=Release   -DCMAKE_POSITION_INDEPENDENT_CODE=ON   -DCMAKE_INSTALL_PREFIX=/usr/local/stow/absl   ..
sudo ninja install
cd /usr/local/stow
sudo stow absl

7、进行cartographer编译

su carto
cd /home/carto/carto_ws
source /opt/ros/noetic/setup.bash
catkin_make_isolated --install --use-ninja

8、编译成功后,我们用官方德意志博物馆论文来测试cartographer算法
  我们可以在当前路径(编译空间)下新建文件夹来存放数据集:

mkdir Bagfile
wget -P ./Bagfile https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_pap
source install_isolated/setup.bash
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/carto_ws/Bagfile/cartographer_paper_deutsches_museum.bag

然后就可以顺利看到在Rviz下cartographer顺利跑起来:
在这里插入图片描述同时,编译过后,可以直接保存当前的容器作为新镜像,下次run起来不必重新再来一次编译过程。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值