Ubuntu16.04 + ROS Kinetic Kame:ROS下ORB-SLAM2在线单目slam

参考文章:
ROS上利用usb_cam读取摄像头图像
ORB-SLAM2(3) ROS下实时跑ORB_SLAM2
环境:Ubuntu16.04 + ROS Kinetic Kame
安装ROS KK

一、ROS下实时读取单目相机画面

在home目录下创建了ROS工作空间

mkdir -p catkin_ws/src
cd ~/catkin_ws/
catkin_make
source devel/setup.bash

创建了ROS工作空间
为了实现在线slam,通过相机读取实时画面,需要先安装相机usb驱动,具体操作参考下文:
ROS上利用usb_cam读取摄像头图像
usb接口连上单目摄像头之后 执行以下命令
1、运行ros内核
roscore
2、工作空间目录/catkin_ws下执行,设置环境变量,配置工作空间?
source devel/setup.bash
3、打开单目摄像头
roslaunch usb_cam usb_cam-test.launch
usb_cam-test.launch路径
之后每次ros下orb-slam都要先执行上述操作,以实时读取单目相机画面

二、ROS下在线运行ORB-SLAM2中的单目模式Mono

后面的操作具体参考右文中的step3 ROS下实时跑ORB_SLAM2
修改话题使读取到的摄像头画面用于slam:
打开ORB-SLAM2中的ros_mono.cc源文件(如下图),将subscribe的话题改为/usb_cam/image_raw
在这里插入图片描述
重新编译ROS的example 及工作空间(见参考文章)
最后在已经打开单目摄像头的前提下另开终端执行:

rosrun ORB_SLAM2 Mono PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE

PATH_TO_VOCABULARY替换为其路径:ORB_SLAM2/Vocabulary/ORBvoc.txt(词典用了ORB_SLAM2自带文件)
PATH_TO_VOCABULARY
PATH_TO_SETTINGS_FILE 为单目相机内参文件路径:
ORB_SLAM2/Examples/ROS/ORB_SLAM2/Asus.yaml(仅供参考),
将Asus.yaml中的Camera.fx fy cx cy四个参数替换为自己标定得到的单目内参即可
在这里插入图片描述
实现结果:
在这里插入图片描述


分割线

因为环境变量设置出错
raise Exception
Exception
CMake Error at /opt/ros/kinetic/share/ros/core/rosbuild/private.cmake:102 (message):
[rosbuild] rospack found package “ORB_SLAM2” at “”, but the current
directory is “/home/xxx/ORB_SLAM2/Examples/ROS/ORB_SLAM2”. You should
double-check your ROS_PACKAGE_PATH to ensure that packages are found in the
correct precedence order.

捣鼓半天,在gedit ~/.bashrc时 需要注意环境变量设置顺序:

source /home/xxx/catkin_ws/devel/setup.bash
source /opt/ros/kinetic/setup.bash
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/xxx/ORB_SLAM2/Examples/ROS/ORB_SLAM2

工作空间catkin_ws应该放在最前面(否则找不到包),其次是ros,最后是Package(否则无法编译)
保存退出更新一下source ~/.bashrc
再查看是否正确部署好环境:echo $ROS_PACKAGE_PATH
应该返回如下结果:/opt/ros/kinetic/share:/home/xxx/ORB_SLAM2/Examples/ROS/ORB_SLAM2
之后才能正确执行脚本编译./build_ros.sh
roscore
rosrun package…

猜你喜欢

转载自blog.csdn.net/MoonShapedPool/article/details/84070829