赞
踩
ORB-SLAM2
,它是基于单目、双目或RGB-D相机的一个完整的SLAM系统,其中包括地图重用
、回环检测
和重定位功能
。这个系统可以适用于多种环境,无论是室内小型手持设备,还是工厂环境中飞行的无人机和城市中行驶的车辆,其都可以在标准CPU上实时运行。该系统的后端使用基于单目和双目观测的光束法平差法(bundle adjustment)
,这使得其可以精确估计轨迹的尺度。该系统包含一个轻量级的定位模式
,它使用视觉里程计追踪未建图区域并匹配地图点,实现零漂移定位。
项目地址: ORB-SLAM2
Ubuntu各个版本(16.04、18.04、20.04等等)的安装网上已有很多教程,这里不再赘述。此处选择Ubuntu16.04,是因为这个版本比较稳定,而且运行起来也是很不错的。
参考链接:安装Ubuntu16.04
对应不同的Ubuntu系统,ROS的版本也不一样。ROS系统目前有三大版本,分别是ROS Kinetic Kame(Ubuntu16.04)、ROS Melodic Morenia(Ubuntu18.04)、ROS Noetic Ninjemys(Ubuntu20.04)。由于我们的Ubuntu系统是16.04版本,因此我们选择ROS Kinetic Kame
进行安装。
具体安装过程见我另一篇博客: ROS系统安装Kinetic
(1)打开终端,在根目录下创建文件夹catkin_ws
。
mkdir catkin_ws
(2)进入catkin_ws
文件夹,并在里面建立新的src
文件夹。
cd catkin_ws
mkdir src
(3)进入src
文件夹,并把当前文件夹初始化为workspace
属性的文件夹。
cd src
catkin_init_workspace
此时,如果/home/你的用户名/catkin_ws/src
文件夹下出现了CMakeLists
文件,说明工作空间生成成功。
(4)接下来对工作空间进行编译,打开一个新终端,进入catkin_ws
文件夹。
cd catkin_ws
● 开始编译。
catkin_make
编译成功后/home/你的用户名/catkin_ws
下会出现devel
和build
文件。
(5)产生install
文件夹。
catkin_make install
(6)创建功能包。(功能包是存放源码的最小单元)
cd src
catkin_create_pkg test_pkg std_msgs rospy roscpp
此时会产生一个test_pkg
文件夹,这是安装包的名字。
● 然后对功能包进行编译。
cd catkin_ws
catkin_make
(7)设置环境变量,打开一个新终端。
sudo gedit ~/.bashrc
● 在打开的.bashrc
文件的末尾加一行,保存后并退出。
source ~/catkin_ws/devel/setup.bash
● 刷新一下环境变量。
cd catkin_ws
source devel/setup.bash
至此便完成了工作空间和功能包的创建,之后便可以在功能包中写程序并运行了。
(1)下载一个中科院软件所的仿真环境。
github网址:https://github.com/DroidAITech/ROS-Academy-for-Beginners
或者自提: 百度网盘
提取码:dqus
下载好后,将上述zip文件解压缩后放至/home/你的用户名/catkin_ws/src
文件目录下。
(2)安装依赖项
cd ~/catkin_ws
rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y
发现有很多功能包无法通过rosdep
来安装系统依赖项。
● 此时我们选择手动安装,提示我们缺什么就安装什么,命令格式如下:
sudo apt-get install ros-kinetic-功能包名称(软件包中的_注意要替换成-)
● 安装好后,再次执行:
rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y
注意:如果继续报错,则需要继续手动安装功能包,只要将上述代码中的软件包名称不断替换成终端里提示的缺少的功能包即可,请耐心安装。
最终出现上述提示,则说明已全部安装成功。
(3)检查gazebo
版本,该仿真环境要求gazebo
的版本在7.0以上。
gazebo -v
如果gazebo
版本低于7.0,则需要进行手动升级,依次执行如下命令即可。
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
sudo apt-get update
sudo apt-get install gazebo7
(4)编译工作空间。
cd ~/catkin_ws
catkin_make
刷新环境变量。
source ~/catkin_ws/devel/setup.bash (如果在~/.bashrc文件的末尾添加了source ~/catkin_ws/devel/setup.bash,则此步骤可以省略。)
先安装配置ORB-SLAM2
所必要的一些工具(已经安装的忽略)。
sudo apt-get update
sudo apt-get install cmake gcc g++ git
Pangolin
是一个轻量、便携的管理OpenGI
显示、交互和提取的视频输入的快速开发库。其核心是一个简单的OpenGI
视口管理器,它能帮助模块化3D可视化,不增加复杂性,提供一个先进且直接的3D导航处理器。Pangolin
也提供一个操作程序的机制,这个机制通过配置文件和UI集成,有一个灵活的实时绘图仪,用于可视图形图像数据。
(1)安装依赖项
sudo apt-get install libglew-dev libpython2.7-dev
sudo apt-get install libxkbcommon-x11-dev
(2)下载Pangolin0.5
● 百度网盘链接: Pangolin0.5,提取码:k7s4
注意:不能用“git clone https://github.com/stevenlovegrove/Pangolin .git1
” 这串代码安装Pangolin
,否则会默认安装最新版(0.6版本),导致后面运行出现错误。
● 解压后移动到主目录(其他目录也可),进入Pangolin文件夹进行编译。
cd Pangolin
mkdir build
cd build
cmake ..
make
sudo make install
● Pangolin0.5安装完成后,测试一下是否安装成功,打开一个新终端。
cd Pangolin
cd examples/HelloPangolin
mkdir build && cd build
cmake ..
make
./HelloPangolin
● 若出现一个如下的彩色方块,则说明安装成功。
Eigen
是可以用来进行线性代数、矩阵、向量操作等运算的C++
库,它里面包含了很多算法。
sudo apt-get install libeigen3-dev
去官网下载opencv3
系列,我选择的是3.4.10
版本。
网站地址: https://opencv.org/releases/
或者自取: link
下载完成后,将其解压到主目录,并将该文件夹重命名为opencv3
。
(1)打开终端,安装依赖项。
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
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
(2)打开终端,编译OpenCV3
(编译过程较慢,请耐心等待)。
cd opencv3
mkdir build
cd build
cmake ..
make
sudo make install
(3)配置加载环境,打开一个新终端。
sudo gedit /etc/ld.so.conf.d/opencv.conf
(4)在打开的空白文件中添加如下代码:
/usr/local/lib
(5)保存后关闭文件夹,打开一个新终端。
sudo ldconfig
(6)配置.bashrc
文件
sudo gedit /etc/bash.bashrc
在打开的文件末尾添加以下两行代码:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
(7)保存后关闭文件夹,打开一个新终端。
source /etc/bash.bashrc
sudo updatedb
(8)测试OpenCV3
是否安装成功
cd opencv3/samples/cpp/example_cmake
cmake .
make
./opencv_example
如果出现"Hello OpenCV",则说明OpenCV3
已安装成功。
这里要修改的错误比较多,如果想要自己动手锻炼的,可以自己下载官方源码编译,遇到错误不断百度即可。源码地址: ORB-SLAM2
如果想节省时间,可以参考我修改过的代码。百度网盘: ORB-SLAM2,提取码:glfz。
下载好后,将其解压到/home/你的用户名/catkin_ws/src
文件夹下,并重命名ORB_SLAM2。
(1)普通模式
● 运行如下命令,对其进行编译(注意在src文件夹中打开终端)
cd ORB_SLAM2
chmod +x build.sh
./build.sh
● 进行测试,验证是否安装成功。
下载数据集,Computer Vision Group - Dataset Download,下载第一个fr1/xyz
即可。由于是国外数据集,需要挂梯子,否则下载很慢。也可自取,百度网盘: link,提取码:lcuk。
下载好后,进入/home/你的用户名/catkin_ws/src/ORB_SLAM2
文件夹创建一个文件夹:data
,将下载好的数据集压缩包提取到data
文件夹下面,然后在ORB_SLAM2文件夹下打开一个终端:
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml ./data/rgbd_dataset_freiburg1_xyz
可以跑通数据集,则证明安装成功。
(2)ROS模式
为了能够在线实时地运行ORB-SLAM2
,需要借助ROS
。SLAM
在ROS
下跑和非ROS
下跑的区别:可以把ROS
理解成在Linux
系统下集成了许多好用的第三方和多进程编程的一个库集。在ROS
下跑SLAM
可以使用ROS
的许多成熟的方法库。不在ROS
下跑,很多进程间通信、同步、回调之类的就需要自己去设计。
● 将包含Examples/ROS/ORB_SLAM2
的路径添加到ROS_PACKAGE_PATH
环境变量中。打开.bashrc
文件并在最后添加以下行。
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS
保存后并退出,刷新环境变量。
source ~/.bashrc
● 此仿真环境下,发布的相机图像的话题为/camera/depth/image_raw
和/camera/rgb/image_raw
,所以我们slam接受话题的数据时名称要一致。打开/home/xxy/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/ ros_rgbd.cc
进行修改。位置大概在68行左右,修改成如下所示:
message_filters::Subscriber<sensor_msgs::Image> rgb_sub(nh, "/camera/rgb/image_raw", 1);
message_filters::Subscriber<sensor_msgs::Image> depth_sub(nh, "camera/depth/image_raw", 1);
● 编译ROS
下的ORB-SLAM2
在ORB_SLAM2
文件夹下打开终端:
chmod +x build_ros.sh
./build_ros.sh
运行仿真时,建议关闭虚拟机的加速3D图形,否则运行会卡顿。
(1)roscore
是节点和程序的集合,这些节点和程序是基于ROS
的系统所必需的。运行roscore
,使ROS
节点建立通信。
打开一个新终端,输入:
roscore
(2)打开仿真环境。打开一个新终端,输入:
roslaunch robot_sim_demo robot_spawn.launch
可通过拖拽调整视角到自己最舒服的位置。
(3)运行键盘控制节点。打开另一个终端,输入:
rosrun robot_sim_demo robot_keyboard_teleop.py
注意:将光标定位到此终端上,才能通过按键控制机器人移动!
(4)运行orbslam2,打开一个新终端,输入:
rosrun ORB_SLAM2 RGBD /home/xxy/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/xxy/catkin_ws/src/ORB_SLAM2/Examples/RGB-D/Zdzn.yaml
此时通过按键控制机器人移动,即可进行定位与建图工作!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。