概述
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踩坑
在前辈的经验加持下,也解决了一些问题。
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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复