step1.
创建一个ROS工作空间
mkdir -p ~/catkin_ws2/src
打开catkin_ws2:
cd ~/catkin_ws2/
这时用ls会发现catkin_ws2目录下只有一个src文件。
catkin_make
执行完这一步在catkin_ws2的目录下会多出两个文件 build和devel ,同时在src下会有一个CMakeLists.txt。
step2.
到主目录下 Ctrl+H 打开隐藏文件,找到 .bashrc ,打开并添加
source ~/catkin_ws/devel/setup.bash
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/lcm/catkin_ws2/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2
将对应的工作空间路径添加到环境变量ROS_PACKAGE_PATH中。
在终端运行
source ~/.bashrc
source ~/catkin_ws2/devel/setup.bash
echo $ROS_PACKAGE_PATH
如果终端显示:
/home/lcm/catkin_ws2/src:/opt/ros/kinetic/share
说明工作环境配置完成。
step3.
进入到src文件夹下
cd src
下载 ueye_cam 到src下
git clone https://github.com/anqixu/ueye_cam
进入到 ueye_cam 文件夹下,编译 ueye_cam
cd ueye_cam
mkdir build
cd build
cmake ..
make
下载 usb_cam 到src目录下
git clone https://github.com/bosch-ros-pkg/usb_cam.git
同样进入到 usb_cam 文件夹下,编译 usb_cam
cd usb_cam
mkdir build
cd build
cmake ..
make
step4.
安装好ORB_SLAM2依赖后
下载 ORB_SLAM2 到src下
cd src
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
编译ORB_SLAM2库和例子程序
cd ORB_SLAM2
chmod +x build.sh
./build.sh
生成的 libORB_SLAM2.so 位于lib目录下,可执行程序mono_tum, mono_kitti, rgbd_tum, stereo_kitti, mono_euroc and stereo_euroc 位于 Examples 目录下。
step5.
修改ros_mono.cc
进入~/catkin_ws2/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src,打开 ros_mono.cc 查看程序里面的topic
将ROS下的mono获取单目图像的节点名称对应更改为ueye启动单目相机后发布的图像消息话题名称。
ORB_SLAM2单目图像所在的话题名是
/camera/image_raw
单目相机在ROS下发布的额话题名称是
/camera/image_rar
话题名称一致,直接编译。
chmod +x build_ros.sh
./build_ros.sh
这里会出现错误,但是不影响单目,所以暂时忽略
再运行一遍catkin_make,否则后面会报错。
catkin_make
step6.
在终端中运行相机
sudo /etc/init.d/ueyeusbdrc start
打开一个新的终端
roscore
再在第一个终端中开启单目相机
roslaunch ueye_cam rgb8.launch
如果先在第一个终端roslaunch,再开启新终端运行roscore时会出现报错:
roscore cannot run as another roscore/master is already running.
Please kill other roscore/master processes before relaunching.
再打开一个新终端
source ~/catkin_ws2/devel/setup.bash
rosrun ORB_SLAM2 Mono /home/lcm/catkin_ws2/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/lcm/catkin_ws2/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/Asus.yaml
运行成功。