这几天新开的一个项目,要在TX2上安装ORB-SLAM2,emmmmm之前没接触过啊,怎么办呢……
找了很久的文章,终于在两篇前辈的文章的指导下安装成功了,于是记录一下安装过程中的一些问题和修改方法。让后人踩着我过这个大坑。
前辈的文章:
https://blog.csdn.net/radiantjeral/article/details/82193370 Ubuntu16.04下配置ORB-SLAM2
https://blog.csdn.net/weixin_38593194/article/details/87795893 Jetson TX2 运行ORB-SLAM2 ros Kinect V1
(1)安装工具
在tx2上缺少很多工具,后续的安装工作需要这些东西,所以就去乖乖♂下好,不然到时候还要重新下载。需要下载的有:vim、cmake、git、gcc、g++。
sudo apt-get install vim git cmake -y
sudo apt-get install gcc g++ -y
(2)更新镜像源
由于ARM源下载过慢,等待时间都可以打好多把游戏了,所以可以换做中科大的源或者清华镜像源(清华镜像源在下文给出)。
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vim /etc/apt/sources.list
在最后加上:
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse
(1)设置计算机以接受packages.ros.org中的软件
添加ROS官方软件源:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 0xB01FA116
(2)设置密钥
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
(3)安装
先要更新Debian源,当然可能会报错找不到等等,我觉得可以忽视不管(就是没管直接跳过去了)
sudo apt-get update
安装出错
](https://img-blog.csdnimg.cn/20190618042044868.png)
ROS官网上提供了四个版本去安装,我们这里直接下载完整版。
sudo apt-get install ros-kinetic-desktop-full
#粘贴时请忽略#后面的字,否则会嘿嘿嘿
sudo apt-get install ros-kinetic-desktop #desktop-桌面版,
sudo apt-get install ros-kinetic-ros-base #base-基础版
sudo apt-get install ros-kinetic-PACKAGE #PACKAGE-包名,自定义版
之后漫长的等待,而且还要时刻祈祷不要出现ERROR和WARNNING(WARNNING其实还好,ERROR很明显,在前面会出现E:后面会加上错误信息。)
(1)添加ros功能包:
sudo apt-get install python-rosdep
sudo apt-get install ros-kinetic-slam-gmapping
sudo apt-get install python-rosinstall
(2)初始化ros:
sudo rosdep init
rosdep update
这里要注意(敲黑板!!!)
ROS对Python支持并不是很好。Python飞速发展的今天,他也只能支持Python2.7版本,Python3是不支持的。如果系统默认Python是Python3的话,rosdep init会疯狂报错,报的我是一脸懵逼,两脸对视懵逼。幸亏以前玩树莓派时候安装OpenCV时,知道Python2和Python3的语法不同,看了看错误的意思是没有这个module,大概率怀疑Python版本不对,查看Python版本指令:
Python --version
看了看果然他喵的上一个操作的人安装别的库的时候把默认改成了Python3.5……emmmmmmm查了好多资料原来就是Python版本不对。
那就要给切换回来,这里提供一个简便方法:
sudo update-alternatives --config python
之后弹出界面选择对应Python版本的数字输入回车就好。
这里还有一个坑,那就是没有sudo就会疯狂报错……
切换回Python2后再初始化就会过了。
(3)添加启动项
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
(4)安装其他依赖包
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
(1)新开一个终端,输入roscore初始化环境
roscore
rosrun turtlesim turtlesim_node
会弹出一只可爱的乌龟
(3)再打开一个终端,输入指令:
rosrun turtlesim turtle_teleop_key
之后用上下左右键控制乌龟的方向,如果可以就证明ROS已经安装完成啦!
mkdir -p ~/slam/src
cd ~/slam/src
catkin_init_workspace
cd ..
catkin_make
echo "source ~/slam/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
(1)安装依赖库
sudo apt-get install libglew-dev libpython2.7-dev libboost-dev libboost-thread-dev libboost-filesystem-dev -y
这里我好像忘记了有个依赖库不对,之后找了一句自动安装就完成的话……emmmm可能也会成功。
(2)进入~/slam/src
下载Pangolin,编译安装配置环境。
cd ~/slam/src
git clone https://github.com/stevenlovegrove/Pangolin
cd Pangolin
mkdir build
cd build
cmake ..
make -j4
sudo make install
这里的make后面不要用make -j,别问为什么,我的TX2还卡着呢!
(3)安装OpenCV,TX2不需要安装,刷机自带。
(4)安装Eigen3
打开目录~/SLAM/src,下载Eigen3并解压。
wget https://bitbucket.org/eigen/eigen/get/3.2.10.tar.bz2
tar -xjf 3.2.10.tar.bz2
重命名后,编译安装Eigen3.
mv eigen-eigen-b9cd8366d4e8/ eigen-3.2.10
cd eigen-3.2.10/
mkdir build
cd build
cmake ..
make
sudo make install
安装ORB-SLAM2要安装在/slam/src/目录下。
cd slam/src
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
cd ORB_SLAM2
之后用vim修改一下build.sh,将最后一行make -j改为make -j4。
vim build.sh
执行build.sh这个文件。
./build.sh