ORB_SLAM实战-(rosindigo)

ORB_SLAM安装

源文件目录https://github.com/raulmur/ORB_SLAM2

安装orb_slam首先需要安装依赖库

  1. 安装Pangolin
  • sudo apt-get install libglew-dev
  • sudo apt-get install cmake
  • sudo apt-get install libpython2.7-dev
  • sudo apt-get install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev
  • git clone https://github.com/stevenlovegrove/Pangolin.git

cd Pangolin
mkdir build
cd build
cmake ..
make -j

  1. 安装OpenCV
    ros中自带

  2. 安装Eigen3
    后续安装

  3. 安装BLAS and LAPACK

sudo apt-get install libblas-dev
sudo apt-get install liblapack-dev

  1. 安装DBoW2 和 g2o
    包含在orb_slam的第三方库中,后续一起安装

安装orb_slam

  1. 下载软件包

cd catkin_ws/src
git clone https://github.com/raulmur/ORB_SLAM2.git

  1. 编译第三方库

cd ORB_SLAM2
chmod +x build.sh
./build.sh

ORB_SLAM测试

安装USB_CAM 驱动

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

运行usb_cam 输出topic为/usb_cam/image_raw

roslaunch usb_cam usb_cam-test.launch

摄像头标定

参考ROS单目标定wiki

  1. 准备标准黑白棋格盘
  • 打印棋盘(可以A4纸打印,粘贴在硬纸板上)
  • 测量棋盘单元边长(A4纸的在0.025 m 左右)
  1. 安装测试程序(ros)

$ rosdep install camera_calibration
$ rosmake camera_calibration

  1. 启动usb_cam程序

sudo apt-get install ros-indigo-usb-cam (如果没有安装usb_cam)
roslaunch usb_cam usb-cam-test.launch

  1. 启动camera_calibration

rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.025 image:=/usb_cam/image_raw camera:=/usb_cam
其中 size是黑白格的横纵点数,square是黑白格边长,image是图像节点名称,camera是相机名称。

  1. 实际标定


    标定界面

    标定界面出现后,按照x(左右)、y(上下)、size(前后)、skew(倾斜)等方式移动棋盘,知道x,y,size,skew的进度条都变成绿色位置,此时可以按下CALIBRATE按钮,等一段时间就可以完成标定。


    标定就绪

    标定完成后,点击COMMIT按钮,最终的标定结果会在终端出现,在usb_cam的终端上会有yaml文件保存地址。
    标定结果
  2. 结果转换
    转换结果如下所示:
    image_width: 640
    image_height: 480
    camera_name: usb_cam
    camera_matrix:
    rows: 3
    cols: 3
    data: [914.5937398762499, 0, 313.2995046937195, 0, 906.4439566149695, 299.4151672923101, 0, 0, 1]
    distortion_model: plumb_bob
    distortion_coefficients:
    rows: 1
    cols: 5
    data: [0.09838481350767736, 0.1181389276375996, 0.01127830741538815, 0.006633733461628469, 0]
    rectification_matrix:
    rows: 3
    cols: 3
    data: [1, 0, 0, 0, 1, 0, 0, 0, 1]
    projection_matrix:
    rows: 3
    cols: 4
    data: [933.7507934570312, 0, 315.2716618576233, 0, 0, 926.8785400390625, 300.85249210037, 0, 0, 0, 1, 0]

而在orb_slam中的格式如下,需要将上面的
camera_matrix:


camera_matrix

distortion_coefficients:


distortion_coefficients

参数值对应。其中ORB参数与Viewer参数不变。
最终的mycam.yaml文件保存在:

src/ORB_SLAM2/Examples/Monocular/mycam.yaml

    %YAML:1.0
    #--------------------------------------------------------------------------------------------
    # Camera Parameters. Adjust them!
    #--------------------------------------------------------------------------------------------

    # Camera calibration and distortion parameters (OpenCV) 
    Camera.fx: 914.5937398762499
    Camera.fy: 906.4439566149695
    Camera.cx: 313.2995046937195
    Camera.cy: 299.4151672923101

    Camera.k1: 0.09838481350767736
    Camera.k2: 0.1181389276375996
    Camera.p1: 0.01127830741538815
    Camera.p2: 0.006633733461628469
    Camera.k3: 0

    Camera.width: 640
    Camera.height: 480

    # Camera frames per second 
    Camera.fps: 30.0

    # Color order of the images (0: BGR, 1: RGB. It is ignored if images are grayscale)
    Camera.RGB: 1

    #--------------------------------------------------------------------------------------------
    # ORB Parameters
    #--------------------------------------------------------------------------------------------

    # ORB Extractor: Number of features per image
    ORBextractor.nFeatures: 1000

    # ORB Extractor: Scale factor between levels in the scale pyramid   
    ORBextractor.scaleFactor: 1.2

    # ORB Extractor: Number of levels in the scale pyramid  
    ORBextractor.nLevels: 8

    # ORB Extractor: Fast threshold
    # Image is divided in a grid. At each cell FAST are extracted imposing a minimum response.
    # Firstly we impose iniThFAST. If no corners are detected we impose a lower value minThFAST
    # You can lower these values if your images have low contrast           
    ORBextractor.iniThFAST: 20
    ORBextractor.minThFAST: 7

    #--------------------------------------------------------------------------------------------
    # Viewer Parameters
    #--------------------------------------------------------------------------------------------
    Viewer.KeyFrameSize: 0.05
    Viewer.KeyFrameLineWidth: 1
    Viewer.GraphLineWidth: 0.9
    Viewer.PointSize:2
    Viewer.CameraSize: 0.08
    Viewer.CameraLineWidth: 3
    Viewer.ViewpointX: 0
    Viewer.ViewpointY: -0.7
    Viewer.ViewpointZ: -1.8
    Viewer.ViewpointF: 500

运行demo

  1. 环境配置

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS

  1. 编译

cd src/ORB_SLAM2/Examples/ROS/ORB_SLAM2
mkdir build
cd build
cmake .. -DROS_BUILD_TYPE=Release
make -j

  1. 启动demo

rosrun ORB_SLAM2 Mono /home/your_path/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/your_path/catkin_ws/src/ORB_SLAM2/Examples/Monocular/mycam.yaml

其中有两个参数,第一个参数为加载的字典,第二个参数为相机参数,更改为自身的相机参数即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容