我是靠谱客的博主 靓丽酸奶,最近开发中收集的这篇文章主要介绍用Opencv4.5.2+Melodic+USB双目摄像头跑通ORB-SLAM2,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

link

在实现的具体过程也踩了不少坑,所以写下这篇文章来总结整个过程。

入门SLAM需要深度相机和激光雷达这些基础硬件,但是考虑到自己的经济实力实在不允许,所以就入手了下面这个摄像头。这个摄像头的具体长这样,是我在淘宝35元买来练手的。

在商家提供的资料外,也发现了不少值得再延申的内容,比如如何在ROS下进行双目测距算法,PCL三维重建,如何联系ORB-SLAM2的双目建图等等。一个idea有了,接下来就是开始实践。但实践的道路并不像想的那样平坦,也遇到了不少问题,在查资料的过程中,也发现了不少前辈的精辟总结,所以在此处做一下整理

  • ubuntu 下 如何与usb设备摄像头通信
  • ros学习最便宜的双目Chusei 3d webcam在linux下用 uvcdynctrl命令控制 结贴
  • hack一个3D摄像头来解闷
  • Ubuntu下读取CHUSEI 3D Webcam 双目摄像头C++版本(调用python脚本进行配置)
  • 双目摄像头的标定及测距(Ubuntu16.04 + OpenCV)
  • 在linux/Ubuntu下调试最便宜的双目摄像头(含Linux版本上位机)CAM5031/CHUSEI 3D WEBCAM 解决只能开单目的问题
  • windows + python + opencv 打开双目摄像头chusei3d踩坑
    在前辈的经验加持下,也解决了一些问题。
问题一:Ubuntu下的双目模式切换问题 商家提供的资料中有shell脚本可以使用,但是个人感觉在使用过程中体验并不友好。 所以自己也对脚本进行了一定的改进。注意在使用前需要提权

user@ubuntu:~/Stereo_cam/Camera_switch$ chmod +x ./camera_switch.sh

camera_switch.sh


#!/bin/bash
# user@ubuntu:~/Stereo_cam/Camera_switch$ chmod +x ./camera_switch.sh      提升执行权限
# author : ruoxi

printf "%-10sn"请输入相机通道
read id     # 选取相机通道
echo -e "It is switch to $id n"        # -e 开启转义

printf "1.左单目模式:LEFT_EYE_MODEn"
printf "2.右单目模式:RIGHT_EYE_MODEn"
printf "3.红蓝模式:RED_BLUE_MODEn"
printf "4.双目模式:BINOCULAR_MODEn"

printf "%-10sn"请输入相机输出模式序号
read mode   # 切换相机输出模式

printf "n"

uvcdynctrl -d /dev/video${id} -S 6:8  '(LE)0x50ff'
uvcdynctrl -d /dev/video${id} -S 6:15 '(LE)0x00f6'
uvcdynctrl -d /dev/video${id} -S 6:8  '(LE)0x2500'
uvcdynctrl -d /dev/video${id} -S 6:8  '(LE)0x5ffe'
uvcdynctrl -d /dev/video${id} -S 6:15 '(LE)0x0003'
uvcdynctrl -d /dev/video${id} -S 6:15 '(LE)0x0002'
uvcdynctrl -d /dev/video${id} -S 6:15 '(LE)0x0012'
uvcdynctrl -d /dev/video${id} -S 6:15 '(LE)0x0004'
uvcdynctrl -d /dev/video${id} -S 6:8  '(LE)0x76c3'
uvcdynctrl -d /dev/video${id} -S 6:10 "(LE)0x0${mode}00"           # 切换相机输出模式

printf "n"
echo -e "It is camera_mode $mode n"

在cpp文件中直接使用system(“”)调用即可,关于相对路径,这里就不介绍了

system("../../sh/camera_switch.sh");  //Ubuntu系统下,此处改成你的脚本存放相对路径

system(“…/…/sh/camera_switch.sh”); //Ubuntu系统下,此处改成你的脚本存放相对路径

问题三:如何测试双目摄像头跑通ORB-SLAM2
修改ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/ros_stereo.cc的两段代码,改为订阅camera_split节点/left_cam和/right_cam的/image_raw话题

message_filters::Subscriber<sensor_msgs::Image> left_sub(nh, “/left_cam/image_raw”, 1);
message_filters::Subscriber<sensor_msgs::Image> right_sub(nh, “/right_cam/image_raw”, 1);

//message_filters::Subscriber<sensor_msgs::Image> left_sub(nh, “/camera/left/image_raw”, 1);
//message_filters::Subscriber<sensor_msgs::Image> right_sub(nh, “camera/right/image_raw”, 1);

cd SLAM/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/
mkdir build
cd build
cmake …
make
启动camera_split节点

1
user@ubuntu:~$ roslaunch camera_split stereo.launch
1
user@ubuntu:~$ roscore
启动Stereo双目建图

1
user@ubuntu:~/SLAM/src/ORB_SLAM2$ rosrun ORB_SLAM2 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/Eu

最后

以上就是靓丽酸奶为你收集整理的用Opencv4.5.2+Melodic+USB双目摄像头跑通ORB-SLAM2的全部内容,希望文章能够帮你解决用Opencv4.5.2+Melodic+USB双目摄像头跑通ORB-SLAM2所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部