从零开始Ubuntu16.04+ORBSLAM2+ROS实验实录(一):安装与配置

1 配置ORBSLAM2

1.1 工具配置

 sudo apt-get install cmake   		#安装CMake
 sudo apt-get install git			#安装Git
 sudo apt-get install gcc g++		#安装g++

1.2 安装Pangolin库

首先安装库依赖文件

sudo apt-get install libglew-dev   #安装Glew
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev  							   #安装Boost
sudo apt-get install libpython2.7-dev

接着下载、编译、安装Pangolin,为方便第三方库管理,在ORBSLAM2根目录下创建3rd/Pangolin/src

mkdir -p ~/Project/SLAM/ORBSLAM2/3rd/Pangolin/src
cd ~/Project/SLAM/ORBSLAM2/3rd/Pangolin/src
git clone https://github.com/stevenlovegrove/Pangolin.git
mkdir build
cd build
cmake -DCPP11_NO_BOOST=1 ..
# 这一步用虚拟机可能会卡死,需要根据自身硬件设备调整线程数
make -j4							
sudo make install			# 关键,用于安装

1.3 安装Opencv2.4.11

mkdir -p ~/Project/SLAM/ORBSLAM2/3rd/Opencv2/src
cd ~/Project/SLAM/ORBSLAM2/3rd/Opencv2/src

从OpenCV官网下载OpenCV2.4.11然后解压到上述目录。

接着安装依赖

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

编译安装

mkdir build
cd build
sudo cmake .. -DCMAKE_BUILD_TYPE=Release -DCUDA_nppi_LIBRARY=true -DWITH_CUDA=OFF -DBUILD_TIFF=ON -DCMAKE_INSTALL_PREFIX=/usr/local/include/opencv2411
make 
sudo make install

1.4 安装Eigen3

安装

 sudo apt-get install libeigen3-dev

Eigen头文件的默认位置在usr/include/eigen3 中。

1.5 安装ORBSLAM2

ORBSLAM2依赖库g2o和DBoW2在这一步编译完成

cd ~/Project/SLAM/ORBSLAM2
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
# 编译
chmod +x build.sh
./build.sh

到这里为止ORBSLAM项目编译完成,可以下载数据集进行测试,这里推荐几个数据集网站:
1.ORBSLAM2数据集序列(TUM)
2.ORBSLAM2数据集序列(EUROC)
3.ORBSLAM2数据集序列(KITTI)

解压在项目根目录的dataSet文件里,进入ORBSLAM2根目录进行测试

TUM数据集

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml ~/Project/SLAM/ORBSLAM2/dataSet/rgbd_dataset_freiburg1_xyz

其中标签TUM1.yaml可以替换成其他,~/Project/Slam/ORBSLAM2/dataSet/rgbd_dataset_freiburg1_xyz是数据集序列所在路径,rgbd_dataset_freiburg1_xy是序列名称。

EuROC数据集

./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml ~/Project/SLAM/ORBSLAM2/dataSet/V2_01_easy/mav0/cam0/data ./Examples/Monocular/EuRoC_TimeStamps/V201.txt 

如果遇到加载动态库错误

ORB_SLAM2 libORB_SLAM2.so: cannot open shared object file: No such file or directory

执行下面语句

sudo cp lib/libORB_SLAM2.so /usr/lib
sudo cp Thirdparty/g2o/lib/libg2o.so /usr/lib
sudo cp Thirdparty/DBoW2/lib/libDBoW2.so /usr/lib

2 配置ROS

2.1 配置资源列表

~$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

2.2 添加秘钥

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

2.3 安装ROS

sudo apt-get update
sudo apt-get install ros-kinetic-desktop-full

2.4 初始化rosdep

sudo rosdep init
rosdep update

国内首次安装ROS在初始化rosdep的过程中90%会遇到超时失败错误,这里记录最新的解决方案。

进入rosdistro.git下载rosdistro-master.zip,将其放在项目目录下,例如

~/Project/ROS

修改20-default.list,执行:

sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list

将里面链接到"raw.githubusercontent.com"的内容全部替换为链接到本地文件,最后20-default.list的内容为:

# os-specific listings first
yaml file:///home/winter/Project/ROS/rosdistro-master/rosdep/osx-homebrew.yaml osx

# generic
yaml file:///home/winter/Project/ROS/rosdistro-master/rosdep/base.yaml
yaml file:///home/winter/Project/ROS/rosdistro-master/rosdep/python.yaml
yaml file:///home/winter/Project/ROS/rosdistro-master/rosdep/ruby.yaml
gbpdistro file:///home/winter/Project/ROS/rosdistro-master/releases/fuerte.yaml fuerte

# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.y

然后修改下面三个文件,同样将其中链接到"raw.githubusercontent.com"的内容全部替换为链接到本地文件,每个文件当中都有一处需要修改。

1. /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
FUERTE_GBPDISTRO_URL = 'file:///home/winter/Project/ROS/rosdistro-master/releases/fuerte.yaml'

2. /usr/lib/python2.7/dist-packages/rosdep2/rep3.py
REP3_TARGETS_URL = 'file:///home/winter/Project/ROS/rosdistro-master/releases/targets.yaml'

3. /usr/lib/python2.7/dist-packages/rosdistro/__init__.py
DEFAULT_INDEX_URL = 'file:///home/winter/Project/ROS/rosdistro-master/index-v4.yaml'

2.5 设置环境变量

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

安装ROS Core依赖

sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential

插件安装

sudo apt-get install python-rosinstall

2.6 测试

在Terminal A中运行
$ roscore

在Terminal B中运行 
$ rosrun turtlesim turtlesim_node

在Terminal C中运行,可使用方向键控制乌龟运动
$ rosrun turtlesim turtle_teleop_key

在Terminal D中运行,可以看到ROS的图形化界面,展示结点的关系: 
$ rosrun rqt_graph rqt_graph

至此,测试完成,说明ROS安装没有问题。

3 错误记录与解决方案

错误1:编译执行 ./build_ros.sh 时出现

CMakeLists.txt:4 (rosbuild_init)
– Configuring incomplete, errors occurred!
make: *** 没有指明目标并且找不到 makefile停止。

解决方案:此为ROS配置错误,需要修改

sudo gedit ~/.bashrc
# 增加
export ROS_PACKAGE_PATH=${
    
    ROS_PACKAGE_PATH}:~/Project/SLAM/ORBSLAM2/ORB_SLAM2/Examples/ROS

source ~/.bashrc

错误2:error reading version line
解决方案:一般由rosbag包错误导致,重新下载ros_bag文件。

错误3:[FATAL] [1630244733.986587231]: Error opening file: rgbd_dataset_freiburg1_xyz.bag
解决方案:没有启动ros导致,在某个终端启动roscore即可解决。

错误4:roscore cannot run as another roscore/master is already running. Please kill other roscore/master
解决方案

killall -9 roscore
killall -9 rosmaster

猜你喜欢

转载自blog.csdn.net/FRIGIDWINTER/article/details/119900292