一、基础环境配置
1.部署ROS
安装依赖包
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
通过ROSXavier脚本安装
git clone https://github.com/jetsonhacks/installROSXavier.git # 下载ros库
cd installROSXavier # 进入安装文件夹
./installROSXavier # 安装安装器
./installROS.sh -p ros-melodic-desktop-full # 安装桌面完整版的ros
创建 ROS工作空间
#[optionalWorkspaceName]是自己设置的文件夹名,
运行完成后会在home下生成该文件夹,如果省略,默认的文件
夹名是catkin_ws
./setupCatkinWorkspace.sh [optionalWorkspaceName]
创建src目录并进入初始化空间,并catkin_make添加cmake目录,在环境中添加启动路径
mkdir -p catkin_ws_lwl/src
cd catkin_ws_lwl/src
catkin_init_workspace
cd ..
catkin_make
source ~/catkin-ws/devel/setup.bash
初始化rosdep
sudo rosdep init
添加ros环境变量
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
2.安装Pangolin库
一定要下载0.5版本的Pangolin
链接如下:
在解压后的Pangolin路径下进行编译安装
sudo apt-get install libglew-dev libboost-dev libboost-thread-dev libboost-filesystem-dev libpython2.7-dev
mkdir build
cd build
cmake ..
make
sudo make install
3.安装Eigen3
sudo apt-get install libeigen3-dev
4.安装Opencv
一定要安装3.x版本的,不可用4.x版本
卸载现有Opencv
sudo apt-get purge libopencv*
sudo apt autoremove
sudo apt-get update
安装依赖
sudo apt install gcc g++
sudo apt install build-essential cmake git pkg-config libgtk-3-dev libcanberra-gtk*
sudo apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev
sudo apt install libjpeg-dev libpng-dev libtiff-dev gfortran openexr libatlas-base-dev opencl-headers
sudo apt install python3-dev python3-numpy libtbb2 libtbb-dev libdc1394-22-dev
安装Opencv
cd opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j4
sudo make install
配置环境
sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
sudo vim /etc/bash.bashrc
在打开文件中加入
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
在命令行执行:
source /etc/bash.bashrc
二、编译安装ORB-SLAM2
下载(建议放在ROS空间中)
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
编译
$ cd ORB_SLAM2
$ chmod +x build.sh #此命令是为了给build.sh执行权限,对应有chmod -x命令
$ ./build.sh
为环境变量添加路径
grdit ~/.bashrc
打开后在最后一行添加,PATH为所存ORB_SLAM的地址
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS
同时写入
source /media/nvidia/samsung-SD2/catkin_ws_lwl/devel/setup.sh
执行
source ~/.bashrc
下载并安装usb_cam安装包
git clone https://github.com/bosch-ros-pkg/usb_cam.git usb_cam
cd usb_cam
mkdir build
cd build
cmake ..
make
测试摄像头,新建终端
roscore
新建终端(于catkin_ws/src/usb_cam/lauch文件中)
roslaunch usb_cam usb_cam-test.launch
编译ROS环境下的ORB_SLAM
chmod +x build_ros.sh
./build_ros.sh
三、运行单目节点
# 新建终端后
roscore
# 新建终端后
roslaunch usb_cam usb_cam-test.launch
# 新建终端后,其中Asus为标定文件
rosrun ORB_SLAM2 Mono /home/xvaier/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/xvaier/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/Asus.yaml
效果如图所示
图中左侧窗口中的绿色小方块为提取的图像ORB特征,右侧窗口中的绿线代表相机的运动轨迹,蓝色方框代表相机运动过程中的空间位置(即关键帧),黑点和红点代表环境的稀疏地图(黑色代表历史路标,红色表示当前路标)。
参考链接: