我是靠谱客的博主 感动石头,最近开发中收集的这篇文章主要介绍用Opencv4.5.2+Melodic+USB双目摄像头跑通ORB-SLAM2用Opencv4.5.2+Melodic+USB双目摄像头跑通ORB-SLAM2问题一:Ubuntu下的双目模式切换问题问题二:如何在ROS中使用节点调用摄像头显示双目图像问题三:如何测试双目摄像头跑通ORB-SLAM2总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

用Opencv4.5.2+Melodic+USB双目摄像头跑通ORB-SLAM2


文章目录

  • 用Opencv4.5.2+Melodic+USB双目摄像头跑通ORB-SLAM2
    • 前言
  • 问题一:Ubuntu下的双目模式切换问题
  • 问题二:如何在ROS中使用节点调用摄像头显示双目图像
  • 问题三:如何测试双目摄像头跑通ORB-SLAM2
  • 总结


前言

入门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系统下,此处改成你的脚本存放相对路径

问题二:如何在ROS中使用节点调用摄像头显示双目图像

这里附上一篇文章ROS&OpenCV下单目和双目摄像头的标定与使用

这里是我的小伙伴提供的节点文件,提供给大家参考。

git clone -b melodic https://github.com/ruoxi521/Stereo_camera.git

启动camera_split节点

user@ubuntu:~$ roslaunch camera_split stereo.launch

在这里插入图片描述
运行结果
在这里插入图片描述

问题三:如何测试双目摄像头跑通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节点

user@ubuntu:~$ roslaunch camera_split stereo.launch
user@ubuntu:~$ roscore

启动Stereo双目建图

user@ubuntu:~/SLAM/src/ORB_SLAM2$ rosrun ORB_SLAM2 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml true

运行结果
在这里插入图片描述
细心的朋友可能发现,似乎只订阅了左边相机发布的话题,但是我们是设置其订阅左右两个相机发布的话题,
这是为什么呢?
我想可能是对于双目USB相机,其输出的图像是经过合成的,我们通过软件方法分割左右相机的图像,同时对于需要同时订阅两个话题,需要对其作同步合并处理,之后作为参数进行传参。这里就不介绍具体过程,同学们可以自行探索解决。
可以参考这篇文章的思路ROS之订阅多个话题并对其进行同步处理(多传感器融合)

总结

以上就是本文的内容,本文介绍了如何在Ubuntu18.04上用Opencv4.5.2+Melodic+USB双目摄像头跑通ORB-SLAM2,本文写的比较粗糙,如有不足,还请指正。

在这里立一个Flag,之后会在分享一些激光SLAM的学习经验

参考资料:
(1) ROS官网 http://wiki.ros.org/melodic/Installation/Ubuntu

如需转载请注明:转自CSDN甦傑

欢迎持续关注 我的ROS专栏和我的SLAM专栏

最后

以上就是感动石头为你收集整理的用Opencv4.5.2+Melodic+USB双目摄像头跑通ORB-SLAM2用Opencv4.5.2+Melodic+USB双目摄像头跑通ORB-SLAM2问题一:Ubuntu下的双目模式切换问题问题二:如何在ROS中使用节点调用摄像头显示双目图像问题三:如何测试双目摄像头跑通ORB-SLAM2总结的全部内容,希望文章能够帮你解决用Opencv4.5.2+Melodic+USB双目摄像头跑通ORB-SLAM2用Opencv4.5.2+Melodic+USB双目摄像头跑通ORB-SLAM2问题一:Ubuntu下的双目模式切换问题问题二:如何在ROS中使用节点调用摄像头显示双目图像问题三:如何测试双目摄像头跑通ORB-SLAM2总结所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部