使用docker配置CCM-SLAM

2024-04-20 06:28
文章标签 配置 使用 docker slam ccm

本文主要是介绍使用docker配置CCM-SLAM,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一.Docker环境配置

1.拉取Docker镜像

 sudo docker pull ubuntu:18.04

拉取的为ununtu18版本镜像,环境十分干净,可以通过以下命令查看容器列表 

sudo docker images

 如果想删除多余的docker image,可以使用指令

sudo docker rmi -f <id>

2.创建容器

sudo docker run -it --privileged -v /home/pc/docker/ccm:/home/pc/docker/ccm --name=ccmslam --net=host --env="DISPLAY" --volume="$HOME/.Xauthority:/root/.Xauthority:rw" ubuntu:18.04 /bin/bash

基于ubuntu18.04建立容器,并开启GUI功能。

进入容器后,会在root命令下,到此我们便得到了一个纯净的ubuntu环境。

可以使用sudo docker ps查看正在运行的容器,sudo docker ps -a查看所有容器

当我想要退出时,输入exit退出容器,然后使用sudo docker stop ccmslam来停止容器,当我想再次进入容器时,使用sudo docker start ccmslam启动容器,再使用sudo docker exec -it cmslam bash进入容器

二.环境配置

1.安装ROS

安装ROS

首先更新软件源

apt-get update
apt-get upgrade

设置清华源

sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

设置最新的密钥

apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

出现报错,是因为docker下的容器环境太干净

因此需要先安装

apt-get install -y gnupg2

之后重新导入密钥,成功

安装

apt-get install
apt-get install ros-melodic-desktop-full
apt-get install ros-melodic-rqt*

安装完成之后已经安装好了opencv

查看当前opencv版本

pkg-config --modversion opencv

 接下来进行ROS系统环境的配置

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

这样就完成了配置,运行roscore发现ROS可以正常启动

roscore

rosdep初始化

apt-get install python-pip
pip install rosdepc
rosdepc init
rosdepc update

2.安装CCM-SLAM

源码地址:https://github.com/VIS4ROB-lab/ccm_slam

安装依赖项

apt-get install python3-catkin-tools

创建工作空间:

mkdir -p ~/ccmslam_ws/src
cd ~/ccmslam_ws
source /opt/ros/melodic/setup.bash
catkin init
catkin config --extend /opt/ros/melodic

克隆CCM-SLAM:

cd ~/ccmslam_ws/src
git clone https://github.com/VIS4ROB-lab/ccm_slam.git

编译DBoW2:

cd /home/pc/docker/ccm/ccmslam_ws/src/ccm_slam-master/cslam/thirdparty/DBoW2
mkdir build
cd build
cmake ..
make -j8

编译g2o:

cd ../../g2o/
mkdir build
cd build
cmake --cmake-args -DG2O_U14=0 ..
make -j8

解压Vocabulary:

cd ../../../conf/
unzip ORBvoc.txt.zip

CCM-SLAM只在ROS Kinetic with OpenCV 3和ROS Indigo with OpenCV 2测试过,CMakeLists.txt文件也是只有这两个分支。先链接ROS Melodic:
参考:https://github.com/VIS4ROB-lab/ccm_slam/issues/19
Ubuntu 18.04下编译之前需要修改文件:~/ccmslam_ws/src/ccm_slam/cslam/CMakeLists.txt

apt-get install vim
vi ../CMakeLists.txt

将16行的

else()

改为:

elseif($ENV{ROS_DISTRO} MATCHES "melodic")

保存退出。

编译CCM-SLAM

cd /home/pc/docker/ccm/ccmslam_ws
catkin build ccmslam -j4 --cmake-args -DG2O_U14=0 -DCMAKE_BUILD_TYPE=Release

vi ~/.bashrc
source /home/pc/docker/ccm/ccmslam/devel/setup.bash
source ~/.bashrc

3.测试CCM-SLAM

使用数据集测试:
到https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets 下载EuRoC machine hall rosbag 数据

分别为MH_01_easy.bag, MH_02_easy.bag,MH_03_medium.bag,MH_04difficult.bag

用terminator开多个窗口(没有可以先安装,apt-get install terminator)

启动服务器:

roslaunch ccmslam Server.launch 

启动客户端0:(启动客户端的数目根据自己CPU的算力决定)

roslaunch ccmslam Client0_euroc.launch 
rosbag play MH_01_easy.bag --start 45

启动客户端1:(启动客户端的数目根据自己CPU的算力决定)

roslaunch ccmslam Client1_euroc.launch 
rosbag play MH_02_easy.bag --start 35 /cam0/image_raw:=/cam0/image_raw1

启动客户端2:(启动客户端的数目根据自己CPU的算力决定)

roslaunch ccmslam Client2_euroc.launch 
rosbag play MH_03_medium.bag --start 15 /cam0/image_raw:=/cam0/image_raw2

启动客户端3:(启动客户端的数目根据自己CPU的算力决定)

roslaunch ccmslam Client0_euroc.launch 
rosbag play MH_04difficult.bag --start 15 /cam0/image_raw:/cam0/image_raw3

启动可视化rviz:

rviz -d conf/rviz/ccmslam.rviz

这里我开了两个客户端进行测试

这篇关于使用docker配置CCM-SLAM的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/919507

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p