ubuntu16.04+opencv2.4.11+orbslam2+usbcam配置

编程入门 行业动态 更新时间:2024-10-28 03:20:20

ubuntu16.04+opencv2.4.11+orbslam2+usbcam配置

Ubuntu 16.04 安装摄像头驱动usb_cam

Ubuntu 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

本文发布于:2023-05-27 16:20:10,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/299899.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:usbcam

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!