zoukankan      html  css  js  c++  java
  • ubuntu16.04下用笔记本摄像头和ROS编译运行ORB_SLAM2的单目AR例程

    要编译ORB_SLAM2的ROS例程首先需要安装ROS,以及在ROS下安装usb_cam驱动并调用,最后搭建ORB_SLAM2。

    1.ROS的安装

    我的电脑安装的是ubuntu16.04系统,所以我安装的是2016年的发行版本ROS_Kinetic,一般的话ROS的版本是一年一更新,和ubuntu的系统更新保持同步。如果你的系统是ubuntu14.04,你可以安装2014年的发行版本ROS_Indigo。

    ROS_Kinetic在ubuntu16.04上的安装可以参考我的博客:点击链接地址

    2.usb_cam在ROS中的编译

    首先要新建一个ROS的工作空间

    mkdir -p ~/catkin_ws/src
    cd ~/catkin_ws/src
    catkin_init_workspace

    编译工作空间

    cd ~/catkin_ws/
    catkin_make

    设置环境变量

    source devel/setup.bash

    如果你的终端为zsh,请用如下命令

    source devel/setup.zsh

    进入到catkin_ws/src目录下,下载usb_cam的源文件到此目录下

    cd ~/catkin_ws/src
    git clone https://github.com/bosch-ros-pkg/usb_cam.git

    退出到catkin_ws目录下执行catkin_make命令进行编译并设置环境

    cd ..
    catkin_make
    source ~/catkin-ws/devel/setup.bash

    可以测试是否配置成功

    roscd usb_cam

    没报错就说明安装成功了

    3.编译ORB_SLAM2库

    最简单的根据orb_slam2在github上面的项目地址就可以安装成功

    项目地址:https://github.com/raulmur/ORB_SLAM2

    详细的可以参考我的博文:点击链接地址

    4.编译ROS例程

    网上编译ROS例程的教程很多,但我还是觉得github上面提供的最方便

    首先进入到你的ORB_SLAM2源代码目录下,然后执行命令

    chmod +x build_ros.sh
    ./build_ros.sh

    这个可能不会100%编译成功,但Mono和MonoAR可以编译成功,主要是ros_rgbd不能编译成功,出现报错,我就没管他。

    编译完之后,记得在.bashrc后面加入:

    source /home/zn/ORB_SLAM2-master/Examples/ROS/ORB_SLAM2/build/devel/setup.bash

    5. 运行ROS中的Demo

    以上步骤都成功后,我们就可以运行ros中的demo了

    开始之前还有个地方需要改:

    把ros_mono_ar.cc中的

    ros::Subscriber sub = nodeHandler.subscribe("/camera/image_raw", 1, &ImageGrabber::GrabImage,&igb);

    改为:

    ros::Subscriber sub = nodeHandler.subscribe("/usb_cam/image_raw", 1, &ImageGrabber::GrabImage,&igb);

    (看到没有,路径变了哟。因为我们的图片都是从/usb_cam/image_raw发送过来的)

    然后再把Example编译一下~

    这下可以开始了:

    首先我们要启动ros内核,新开一个终端,执行

    roscore

    启动usb_cam摄像头节点,新开一个终端,执行

    roslaunch usb_cam usb_cam.launch

    启动 ORB_SLAM2 的 Mono 节点(单目)

    rosrun ORB_SLAM2 Mono PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE
    PATH_TO_VOCABULARYORBvoc.txt文件路径PATH_TO_SETTINGS_FILE是你的摄像机内参数文件路径

    所以可以在第三个终端输入如下命令:

    rosrun ORB_SLAM2 MonoAR /home/zn/ORB_SLAM2/Vocabulary/ORBvoc.txt  /home/zn/ORB_SLAM2/Examples/Monocular/TUM1.yaml

    路径按照自己的电脑路径进行更改,TUM1.yaml是参数设置文件,主要是相机的内参,这个得自己标定。如果懒得标定,可以直接用TUM1.yaml,不影响程序的运行。

     

     end......

     参考博文:https://blog.csdn.net/u79501/article/details/68942174

    http://www.liuxiao.org/2016/07/ubuntu-orb-slam2-%E5%9C%A8-ros-%E4%B8%8A%E7%BC%96%E8%AF%91%E8%B0%83%E8%AF%95/

  • 相关阅读:
    qt调用simsimi api实现小黄鸡
    [机器学习系列] k-近邻算法(K–nearest neighbors)
    Ubuntu上安装flashplayer
    关于ubuntu下qt编译显示Cannot connect creator comm socket /tmp/qt_temp.xxx/stub-socket的解决办法
    Linux下添加源的几种方法
    Ubuntu字符界面输入密码始终提示错误 login incorrect 解决办法
    boost::algorithm(字符串算法库)
    boost::assign(标准容器填充库)
    boost::format(字符串格式化库)
    C/C++内存对齐 ZZ
  • 原文地址:https://www.cnblogs.com/feifanrensheng/p/8995836.html
Copyright © 2011-2022 走看看