ubuntu16.04+opencv2.4.11+orbslam2+usbcam配置
Ubuntu 16.04 安装摄像头驱动usb_camUbuntu 16.04 安装摄像头驱动usb_cam
使用USB摄像头作为图像输入,需要将图像信息作为topic发送出去,ROS官网提供了usb_cam的package代码,从github上下usb_cam的代码,下载链接:github./bosch-ros-pkg/usb_cam
工程建立
建立一个usb_cam工程
mkdir -p ~/my_tools/usb_cam
cd ~/my_tools/usb_cam
catkin_make
make
source devel/setup.bash
编译成功后可先测试一下usb摄像头
首先开个新的终端,运行roscore
在运行该节点之前,需要先配置一下节点参数,打开src/usb_cam-develop/launch文件中的的launch文件,我这里只需要该设备号即可,笔记本电脑的video0一般是网络摄像头,插入usb摄像头一般是video1,若想看usb摄像头是哪个端口号,可cd到根目录中的dev文件夹下查看.
完成之后再开一个终端, 运行
roslaunch usb_cam usb_cam-test.launch
查看usb_cam设备命令是:ls /dev/video*
参考:blogs./haijian/p/10847457.html
编译ORB_SLAM2
编译ORB_SLAM2# 安装 g++
$ sudo apt-get install g g++ # 安装 Pangolin
$ sudo apt-get install libglew-dev #安装Glew
$ sudo apt-get install cmake #安装CMake
$ sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev #安装Boost
$ sudo apt-get install libpython2.7-dev #安装Python2'Python3
$ git clone github./stevenlovegrove/Pangolin.git
$ cd Pangolin
$ mkdir build
$ cd build
$ cmake -DCPP11_NO_BOOST=1 ..
$ make
$ sudo make # 安装Opencv
$ sudo apt-get update
$ sudo apt-get install libcv-dev# 安装Eigen
$ sudo apt-get install libeigen3-dev# 安装BLAS,LAPACK
$ sudo apt-get install libblas-dev
$ sudo apt-get install liblapack-dev# 编译ORB SLAM2
$ cd SLAM/src
$ git clone github./raulmur/ORB_SLAM2.git
$ cd ORB_SLAM2
$ chmod +x build.sh
$ ./build.sh #如果运行电脑卡死的话,请修改build.sh文件中所有的make -j为make
$ ./build_ros.sh
如果./build_ros.sh遇到报错:
Undefined reference to symbol ‘_ZN5boost6system15system_categoryEv’
解决方法可参考:github./raulmur/ORB_SLAM2/issues/494
我的解决方法是:
打开ORB_SLAM2/Examples/ROS/ORB_SLAM2文件夹下的CMakeLists.txt,在set(LIBS …)中添加-lboost_system,如下:
set(LIBS
${OpenCV_LIBS}
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so
${PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM2.so
-lboost_system
)
执行build——ros.sh,cmake … -DCMAKE_BUILD_TYPE=Release编译报错,
CMake Error at /opt/ros/kinetic/share/ros/core/rosbuild/private.cmake:102 (message): [rosbuild] rospack found package "ORB_SLAM2" at "/home/whp/whp_ws/orbslam2/src/ORB_SLAM2-master/Examples/ROS/ORB_SLAM2", but the current directory is "/home/whp/whp_ws/ORB_SLAM2-master/Examples/ROS/ORB_SLAM2". You should double-check your ROS_PACKAGE_PATH to ensure that packages are found in the correct precedence order. Call Stack (most recent call first): /opt/ros/kinetic/share/ros/core/rosbuild/public.cmake:177 (_rosbuild_check_package_location) CMakeLists.txt:4 (rosbuild_init)
尝试source对应的目录,具体操作如下:
打开.bashrc文件,命令是:$ gedit ~/.bashrc
在.bashrc内容最后添加以下内容:
source ~/whp_ws/orbslam2/devel/setup.bash export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/whp_ws/orbslam2/src/ORB_SLAM2-master/Examples/ROS
source ~/ .bashrc
注:此处“setup.bash”文件路径应按照自己的路径设置。
运行
修改 ros_mono.
进入SLAM/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src 打开ros_mono.。
把ros::Subscriber sub = nodeHandler.subscribe(“/camera/image_raw”, 1, &ImageGrabber::GrabImage,&igb);
中的camera改为usb_cam
重新编译
$ ./build_ros.sh
启动
#打开3个终端
roscore #启动ROS
roslaunch usb_cam usb_cam-test.launch #调用摄像头
rosrun ORB_SLAM2 Mono ~/SLAM/src/ORB_SLAM2/Vocabulary/ORBvoc.txt ~/SLAM/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/Asus.yaml #这里的`Asus.yaml`根据自己的文件修改名称;
参考:
blog.csdn.net/lixujie666/article/details/80475451
blog.itswcg./2018-03/orb-slam2-run.html
blog.csdn.net/zhangqian_shai/article/details/86700866
更多推荐
usbcam
发布评论