Ubuntu 18.04 (Jetson Nano 4G/TX2)配置 CCM-SLAM

2023-05-16

文章目录

  • 1.安装ROS
  • 2.安装OpenCV3
  • 3.设置虚拟内存
  • 4.安装CCM-SLAM

记录了安装CCM-SLAM的详细过程以及踩过的坑。
安装环境:Jetson Nano 4G /Ubuntu 18.04


1.安装ROS

1.1更新:

sudo apt update
sudo apt upgrade

1.2设置软件源(清华):

sudo 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'

1.3设置最新的密钥:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654

1.4更新:

sudo apt-get update

1.5安装:

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

1.6初始化rosdep:

sudo apt install python-rosdep
sudo rosdep init
rosdep update

坑1:rosdep init出现问题,原因是被墙了,前几年的解决方法均不管用。
唯一解决方法是:必须用tizi
Ubuntu配置tizi的方法比较复杂,这里分享一个手机热点开tizi的方法:

安卓手机下载软件:Every Proxy
在这里插入图片描述

苹果手机不知道,按原理搜一下类似软件试一下。

打开手机热点以及tizi,然后打开Every Proxy
在这里插入图片描述
在这里插入图片描述
Ubuntu系统连接手机热点,打开System Setting -> Network -> Network proxy
改为手动(manual)
在这里插入图片描述
测试Google.com。成功后继续:


sudo rosdep init
rosdep update

1.7安装rosinstall:

sudo apt-get install python-rosinstall

1.8设置环境变量:

sudo apt-get install net-tools
gedit ~/.bashrc

尾端添加:

# Set ROS melodic
source /opt/ros/melodic/setup.bash

# Set ROS Network
export ROS_HOSTNAME=localhost
export ROS_MASTER_URI=http://${ROS_HOSTNAME}:11311

更新:

source ~/.bashrc

1.9测试ROS:

roscore

2.安装OpenCV3

官网下载:https://opencv.org/releases/

Nano和TX2默认配置了OpenCV4,但是CCM-SLAM用的是OpenCV3的函数。
现在安装OpenCV3,后面配置CMakeLists.txt使工程指向OpenCV3。

下面的安装步骤适用于系统中已存在OpenCV4版本的情况。

2.1解压并进入文件夹,在文件夹下打开终端,安装依赖:

sudo apt install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev

可能会出现 无法定位软件包libjasper-dev 的错误提示

查阅资料后找到解决方法如下:

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt upgrade
sudo apt install libjasper1 libjasper-dev

2.2创建编译目录(build)并进入:

mkdir build && cd build

2.3cmake配置编译:

cmake -DCMAKE_INSTALL_PREFIX=/home/nano/opencv-3.4.14 -DCMAKE_BUILD_TYPE="Rlease" -DOPENCV_GENERATE_PKGCONFIG=ON ..

2.4make编译:

make -j8

2.5安装:

make install

2.6环境配置添加库路径(方式一):

sudo /bin/bash -c 'echo "/home/nano/opencv-3.4.14/lib" > /etc/ld.so.conf.d/opencv.conf'

2.6环境配置添加库路径(方式二):

sudo gedit /etc/ld.so.conf.d/opencv.conf 

打开后可能是空文件,在文件内容最后添加

/home/nano/opencv-3.4.14/lib

2.7更新系统库:

sudo ldconfig

2.8配置bash,执行如下命令

gedit ~/.bashrc

在末尾添加

#opencv-3.4.14

export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/home/nano/opencv-3.4.14/lib/pkgconfig
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:./home/nano/opencv-3.4.14/lib

2.9保存退出,然后执行如下命令使得配置生效

source ~/.bashrc

2.10查看OpenCV版本

pkg-config --modversion opencv

3.设置虚拟内存

坑2:由于Jetson Nano只有4G内存,编译CCM-SLAM时内存会不够用而卡死。
参考:http://www.xiaoheidiannao.com/220015.html
3.1查看内存:

free -m

3.2新建内存:

sudo fallocate -l 16G /icedustpan

3.3查看虚拟内存:

ls -lh /icedustpan

3.4设置虚拟内存权限:

sudo chmod 600 /icedustpan

3.5挂载虚拟内存:

sudo mkswap /icedustpan

3.6启用虚拟内存:

sudo swapon /icedustpan

查看虚拟内存:

free -m

3.7设置自动挂载虚拟内存:

sudo gedit /etc/fstab

在最后面加入下列的信息:

/icedustpan  none  swap  sw  0  0

4.安装CCM-SLAM

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

4.1依赖项:

sudo apt-get install python-catkin-tools

4.2创建工作空间:

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

4.3克隆CCM-SLAM:

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

4.4编译DBoW2:

cd ~/ccmslam_ws/src/ccm_slam/cslam/thirdparty/DBoW2/
mkdir build
cd build
cmake ..
make -j8

4.5编译g2o:

cd ~/ccmslam_ws/src/ccm_slam/cslam/thirdparty/g2o
mkdir build
cd build
cmake --cmake-args -DG2O_U14=0 ..
make -j8

4.6解压Vocabulary:

cd ~/ccmslam_ws/src/ccm_slam/cslam/conf
unzip ORBvoc.txt.zip

坑3:
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
4.7 Ubuntu 18.04下编译之前需要修改文件:~/ccmslam_ws/src/ccm_slam/cslam/CMakeLists.txt

gedit ~/ccmslam_ws/src/ccm_slam/cslam/CMakeLists.txt

将16行的

else()

改为:

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

保存退出。


坑4:Jetson Nano/TX2(因为已存在OpenCV4,但工程需要3版本,所以需要链接到OpenCV3)下编译前需要修改文件:~/ccmslam_ws/src/ccm_slam/cslam/CMakeLists.txt
参考:https://blog.csdn.net/chengde6896383/article/details/90702160/
4.8 修改文件:

gedit ~/ccmslam_ws/src/ccm_slam/cslam/CMakeLists.txt

首先,在原62行之前加入:

# 输入安装路径
set(CMAKE_PREFIX_PATH "/home/nano/opencv-3.4.14/")
# 指明搜索文件
set(OpenCV_DIR "/home/nano/opencv-3.4.14/build/OpenCVConfig.cmake")

然后,把紧跟着的find_package修改为:

if(NOT ${ROS_VERSION_INDIGO})
	find_package(OpenCV 3.4.14 EXACT)
endif()

最后,ROS搜索的cv_bridge是默认路径下的,修改到我们后来安装的3.4.14:

sudo gedit /opt/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.cmake

将第96行的默认搜索地址修改为自己的安装目录和include目录:

set(_include_dirs "include;/home/nano/opencv-3.4.14;/home/nano/opencv-3.4.14/include")

如果出现错误:

Could not find a package configuration file provided by “roscpp” with any of the following names:
roscppConfig.cmake
roscpp-config.cmake

解决方案:在CMakeLists.txt中加入:

find_package(roscpp REQUIRED)
include_directories(${roscpp_INCLUDE_DIRS})

以此类推,缺啥补啥。


4.9 编译CCM-SLAM

cd ~/ccmslam_ws/
catkin build ccmslam --cmake-args -DG2O_U14=0 -DCMAKE_BUILD_TYPE=Release

配置环境:

gedit ~/.bashrc

在最后一行写入:

source ~/ccmslam_ws/devel/setup.bash

至此,CCM-SLAM配置完成。


4.10 测试CCM-SLAM
4.10.1 使用数据集测试:
到https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets下载EuRoC machine hall rosbag 数据。
然后参考:https://www.cnblogs.com/polipolu/p/13679414.html

编写一个.sh文件ccm-EuRoC.sh,内容为

gnome-terminal -t "server" -x bash -c "roslaunch ccmslam Server.launch;exec bash;"
sleep 3
gnome-terminal -t "agent1" -x bash -c "roslaunch ccmslam Client0_euroc.launch;exec bash;"
gnome-terminal -t "agent2" -x bash -c "roslaunch ccmslam Client1_euroc.launch;exec bash;"
sleep 3
gnome-terminal -t "agentbag1" -x bash -c "cd 你的数据集地址;rosbag play MH_01_easy.bag --start 45;exec bash;"
gnome-terminal -t "agentbag2" -x bash -c "cd 你的数据集地址;rosbag play MH_02_easy.bag --start 35 /cam0/image_raw:=/cam0/image_raw1;exec bash;" sleep 2 gnome-terminal -t "rviz" -x bash -c "roscd ccmslam ;rviz -d conf/rviz/ccmslam.rviz;exec bash;"
#如果roscd报错的话就直接用cd

然后

chmod +x ccm-EuRoC.sh
sh ccm-EuRoC.sh

4.10.2使用摄像头测试
请参考我之前的文章:https://blog.csdn.net/klsjadkls/article/details/115856515

转载请备注https://blog.csdn.net/klsjadkls/article/details/116116050。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu 18.04 (Jetson Nano 4G/TX2)配置 CCM-SLAM 的相关文章

随机推荐