首页 > 其他分享 >SLAM系统--开启摄像头连接

SLAM系统--开启摄像头连接

时间:2023-05-28 21:22:46浏览次数:54  
标签:-- camera SLAM3 SLAM rospy ROS ORB 摄像头

博客地址:https://www.cnblogs.com/zylyehuo/

基于ORB-SLAM3库搭建SLAM系统详见之前的博客

基于ORB-SLAM3库搭建SLAM系统 - zylyehuo - 博客园 (cnblogs.com)

参考链接

ORB-SLAM3 v1.0 编译问题解决

/usr/bin/env: "python\r": 没有那个文件或目录

效果图

STEP1:将 Examples_old 中的 ROS 文件夹复制到 /home/yehuo/SLAM/ORB_SLAM3-master/Examples/

打开终端输入指令: vim ~/.bashrc 打开用户根目录下的.bashrc文件

添加ROS功能包路径 export

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/yehuo/SLAM/ORB_SLAM3-master/Examples/ROS

此处路径需要根据每个人放置功能包的位置进行调整,不能直接复制

STEP2:授权+编译

chmod +x build_ros.sh ##修改Build_ros.sh权限

./build_ros.sh ##安装 orb_slam 中的 ros模块

STEP3:创建 camera.py 文件

#!/usr/bin/env python
#!coding-utf -8

import rospy
from sensor_msgs.msg import Image
import cv2
from cv_bridge import CvBridge
import sys

def webcamImagePub():

    rospy.init_node('cam_pub',anonymous=True)
    img_pub = rospy.Publisher('camera/image_raw',Image,queue_size=2)
    rate = rospy.Rate(20)

    cap = cv2.VideoCapture(0)
    scaling_factor = 0.3
    bridge = CvBridge()

    if not cap.isOpened():
        sys.stdout.write("zzz")
        return -1

    count = 0

    while not rospy.is_shutdown():
        ret,frame = cap.read()
        if ret:
            count = count + 1
        else:
            rospy.loginfo("xxx")
        if count == 2:
            count = 0
            msg = bridge.cv2_to_imgmsg(frame)
            img_pub.publish(msg)
            print("yyy")
        rate.sleep()
if __name__ == '__main__':
    try:
        webcamImagePub()
    except rospy.ROSInterruptException:
        pass

将camera.py放入 /Examples/ROS/ORB_SLAM3/scripts/ 文件夹下,(scripts文件夹需要自己创建)

打开终端执行 chmod+x camera.py 赋予可执行权限

STEP4:配置连接电脑摄像头

(1)在windows中使用 win + R 快捷键开启运行搜索界面

(2)输入services.msc,在服务中找到 VMware USB Arbitration Service,使其处于 ‘正在运行’ 状态

(3)在VMware虚拟机->设置选项下,调整USB控制器为兼容USB3.1状态

(4)连接电脑摄像头

STEP5:运行测试

【1】运行 camera.py 文件

打开终端

执行 roscore

打开新的终端

执行 rosrun ORB_SLAM3 camera.py

【2】启动例程

在以下路径下打开终端

在终端输入以下指令 === 注意修改路径

rosrun ORB_SLAM3 Mono /home/yehuo/SLAM/ORB_SLAM3-master/Vocabulary/ORBvoc.txt /home/yehuo/SLAM/ORB_SLAM3-master/Examples/Monocular/TUM1.yaml

问题汇总

(1)fatal error:sophus/se3.hpp

(2)/usr/bin/env: "python\r": 没有那个文件或目录

解决方法,参考以下链接

/usr/bin/env: "python\r": 没有那个文件或目录

(3)./build_ros.sh 步骤中报错

解决办法,参考以下链接

ORB-SLAM3 v1.0 编译问题解决

标签:--,camera,SLAM3,SLAM,rospy,ROS,ORB,摄像头
From: https://www.cnblogs.com/zylyehuo/p/17438873.html

相关文章

  • GPT-4多态大模型研究
    1.概述GPT-4是OpenAI最新的系统,能够产生更安全和更有用的回应。它是一个大型的多模态模型(接受图像和文本输入,输出文本),在各种专业和学术的基准测试中展现了人类水平的表现。例如,它在模拟的律师资格考试中得分位于前10%的考生之列;相比之下,GPT-3.5的得分位于后10%。GPT-4是如何做到......
  • hash碰撞(选做)
    一、MD5碰撞实例1.两张完全不一样的图片,一张飞机,一张轮船,但是他们md5居然是相同的2.两段不同的16进制段,MD5结果却相同样本1:0e306561559aa787d00bc6f70bbdfe3404cf03659e704f8534c00ffb659c4c8740cc942feb2da115a3f4155cbb8607497386656d7d1f34a42059d78f5a8dd1ef样本......
  • 期望最大化EM算法(2)
    一般形式的EM算法  期望最大化算法或者EM算法是,求解具有潜在变量的概率模型的最大似然解的一种通用方法。这里给出一般形式的EM算法,并启发式地推导EM算法最大化了似然函数。  考虑一个概率模型,将其中所有的观测变量联合起来记为\(X\),将所有的与观测变量对应的潜在变量记为......
  • 2023-05-28:为什么Redis单线程模型效率也能那么高?
    2023-05-28:为什么Redis单线程模型效率也能那么高?答案2023-05-28:1.C语言实现,效率高C语言程序运行速度快,因为其相较于其他高级语言更加接近底层机器。由于C语言直接操作内存,不会像其他语言那样依赖虚拟机或垃圾回收机制等中间层,从而能够实现更高的执行效率。2.单线程的优势Redi......
  • 网络流模板-最小费用最大流
    最小费用最大流:structflow{//}{{{usingll=longlong;constexprstaticintV=5e3,E=5e4;constexprstaticintEDGE_NIL=-1;constexprstaticllINF=0x3f3f3f3f3f3f3f3f;structEdge{ intto,nxt,cost,lf;}edges[E*2];structmypair{ lldis;i......
  • 文心一言 VS 讯飞星火 VS chatgpt (24)-- 算法导论4.2 6题
    六、用Strassen算法作为子进程来进行一个knn矩阵和一个nkn矩阵相乘,最快需要花费多长时间?对两个输入矩阵规模互换的情况,回答相同的问题。文心一言:Strassen算法是一种用于矩阵乘法的分治算法,它将原始的矩阵分解为较小的子矩阵,然后使用子矩阵相乘的结果来计算原始矩阵的乘积......
  • 整合阿里云短信服务
    阿里云官网1.登录官网https://www.aliyun.com/2.短信服务,申请签名 3.添加模板 项目中依赖<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId></dependency>配置文件aliyun.sms.regionId=defaultali......
  • LockSupport与线程中断
    1LockSupport是什么LockSupport是用来创建锁和其他同步类的基本阻塞原语。park方法可以阻塞线程,unpark方法可以唤醒线程。与object的wait和notify不同的是,不需要synchonized的限制,没有先后顺序的限制。2线程中断线程不应该被其他线程中断,应该自己中断。线程的三个中断方法......
  • 2023-05-25 EMC
    andcanintheinjectionclampat750mm.AndnowI'veperformedathresholdanalysisonexactlythisfailposition.Andthisisnowinthepresentationonthenextslide.Andyoucanseewewentup1dBmicroampAnd102dBmicroampsiscategorytwo......
  • 编写atoi函数
    编写atoi函数#include<stdio.h>voidmy_gets(char*a,intn){inti=0;while(i<n){if((a[i]=getchar())=='\n'){i++;break;}i++;}a[i]=0;}intmy_atoi(char*s){intx=0,y=1;if(*s=='-&#......