VMware虚拟机中ubuntu使用记录(5)—— 如何在ubuntu中安装USB相机ros驱动并获取usb摄像头数据

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、ROS下USB相机驱动
    • 1.准备工作
      • (1) 下载驱动
      • (2) 创建ROS工作空间
    • 2. 安装usb_cam驱动
      • (1) 安装usb_cam驱动包
      • (2) 编译代码
    • 3. 修改usb_cam驱动的配置文件
      • (1) 查看USB摄像头设备号
      • (2) 修改launch文件
      • (3) 编译usb_cam相机驱动
    • 4. 启动相机节点
      • (1) 启动ROS master
      • (2) 启动相机节点


一、ROS下USB相机驱动

在VMware虚拟机中安装USB相机的驱动并读取USB相机的图像数据,第一步先设置虚拟机能够正常的调用本机电脑的USB设备的接口,具体的设置操作可以参考下面这篇博客:
VMware虚拟机中ubuntu使用记录(4)—— 如何在VMware虚拟机中调用本机电脑的摄像头

1.准备工作

(1) 下载驱动

ROS版本USB摄像头驱动(建议从ROS官网给出的USB驱动源码包进行编译安装)

官网的下载地址:https://github.com/ros-drivers/usb_cam

(2) 创建ROS工作空间

1)创建工作空间,终端输入:

roscore
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace

2)编译工作空间

cd ~/catkin_ws/
catkin_make

3)使得工作空间的环境变量生效

source devel/setup.bash

4)使得环境变量在所有的终端中都有效(将路径添加进.bashrc文件中):

按个人的喜好,此步骤不是必选项,执行这段代码之后,意味着电脑开机就自动生效该工作空间的ROS环境

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc

5)保存.bashrc文件,查看添加的环境变量是否生效:

source ~/.bashrc

6)查看添加的环境变量是否生效,创建一个新终端,输入

echo $ROS_PACKAGE_PATH

回车之后会显示如下语句,如果打印的路径中包含当前工作空间的路径,则环境变量设置成功,整个操作页面如下图所示:

在这里插入图片描述
在这里插入图片描述

2. 安装usb_cam驱动

(1) 安装usb_cam驱动包

在catkin_ws/src目录下,下载驱动包:

https://github.com/ros-drivers/usb_cam

(2) 编译代码

切换至catkin_ws的目录下:

cd ..

编译工作空间:

catkin_make

等待编译完成即可,一般不会出现什么报错。

3. 修改usb_cam驱动的配置文件

(1) 查看USB摄像头设备号

把usb相机拔插前后哪个设备号发生变化,打开终端:

ls /dev/video*

注意:如果查看设备号出现报错:ls:无法访问‘/dev/video*‘: 没有那个文件或目录,具体的原因分析和解决可以参考我下面这篇博客:

拔插usb设备,重复输入查看设备号的指令,页面如下:

在这里插入图片描述

(2) 修改launch文件

查看usb_cam内部结构,在src/usb_cam目录下打开并编辑launch文件“

在这里插入图片描述

(3) 编译usb_cam相机驱动

1)切换至/catkin_ws目录工作空间,

 终端输入: catkin_make

编译成功如下:(建立相机节点:usb_cam_node)

在这里插入图片描述
2) 使得工作空间的环境变量生效:

 source devel/setup.bash  echo "source ~/catkin_ws/devel/setup.sh" >> ~/.bashrc          //永久生效环境

4. 启动相机节点

(1) 启动ROS master

  CTRL+ALT+T打开终端1:roscore

(2) 启动相机节点

在/catkin_ws目录下打开终端2:

 source devel/setup.bash                 //生效环境过环境后,可跳过此步roslaunch usb_cam usb_cam-test.launch   //启动相机

启动节点后,弹出一小窗,效果如下:

在这里插入图片描述

如果相机启动时出现如下警告:

在这里插入图片描述

原因:
由于相机没有进行标定,所以出现警告
解决:
使用张正友相机标定法进行标定,
具体的标定流程可以参考我这篇博客的记录:VMware虚拟机中ubuntu使用记录(6)—— 如何标定单目相机的内参(张正友标定法)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1411351.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

设计模式之组合实体模式

在编程的奇幻森林里,树木与枝叶错综复杂,如何让代码世界井然有序?组合实体模式(Composite Pattern)就像一位高明的园艺师,它以一种巧妙的方式,将个体与整体统一管理,让无论是单个对象…

古典密码学简介

目录 C. D. Shannon: 一、置换密码 二、单表代替密码 ① 加法密码 ② 乘法密码 ③密钥词组代替密码 三、多表代替密码 代数密码 四、古典密码的穷举分析 1、单表代替密码分析 五、古典密码的统计分析 1、密钥词组单表代替密码的统计分析 2、英语的统计规…

刷代码随想录有感(54):二叉搜索树中的搜索(BST)

题干&#xff1a; 代码&#xff08;递归实现&#xff09;&#xff1a; TreeNode* searchBST(TreeNode* root, int val){if(root NULL || root-> val val)return root;TreeNode* res;if(val > root->val) res searchBST(root->right, val);if(val < root->…

Redis 实战之对象

Redis 实战 - 对象 对象的类型与编码类型编码和底层实现 字符串对象编码的转换字符串命令的实现 列表对象编码转换列表命令的实现 哈希对象编码转换哈希命令的实现 集合对象集合命令的实现 有序集合对象编码的转换有序集合命令的实现 类型检查与命令多态类型检查的实现多态命令…

工业光源-半环形光源-特点

产品特点 ◆高密度LED排列&#xff1b; ◆应用于特殊结构的安装与出光方向&#xff1b; ◆从180方向照射&#xff0c;消除阴影&#xff1a; ◆中间开孔&#xff0c;使光源与相机镜头完美契合&#xff1a; ◆多角度可选&#xff0c;可适应不同工作距离的应用&#xff1b; ◆可选…

c++11 标准模板(STL)本地化库 - 平面类别(time_get) - 从输入字符序列中解析时间/日期值到 std::tm 中(八)

本地化库 本地环境设施包含字符分类和字符串校对、数值、货币及日期/时间格式化和分析&#xff0c;以及消息取得的国际化支持。本地环境设置控制流 I/O 、正则表达式库和 C 标准库的其他组件的行为。 平面类别 从输入字符序列中解析时间/日期值到 std::tm 中 std::time_get …

算法学习系列(五十五):背包模型(三)

目录 引言一、潜水员二、背包问题求具体方案三、机器分配四、开心的今明五、金明的预算方案 引言 今天介绍的是背包模型&#xff0c;还是以题目的形式来介绍的。主要讲了背包问题求方案&#xff0c;就是由最优方案递推回去即可。还有就是一些比较经典的背包问题&#xff0c;其…

Sqlserver批量迁移Job

因为切换物理机&#xff0c;需要把数据库的作业从A机器迁移到B机器&#xff0c;数据库整体备份还原就可以了&#xff0c;数据库上的作业不会跟着带过去&#xff0c;需要手动创建&#xff0c;作业数量太多&#xff0c;逐一创建太浪费时间&#xff0c;Microsoft SQL Server Manag…

【LLM多模态】MiniGPT4模型结构和训练流程

note 图生文应用场景&#xff1a;比如电商领域根据产品图像生成产品描述、娱乐领域中根据电影海报生成电影介绍等MiniGPT-4将预训练的大语言模型和视觉编码器参数同时冻结&#xff0c;只需要单独训练线性投影层&#xff0c;使视觉特征和语言模型对齐。MiniGPT4的视觉编码器&am…

使用docker-compose编排Lnmp(dockerfile) 完成Wordpress

目录 一、 Docker-Compose 1.1Docker-Compose介绍 1.2环境准备 1.2.1准备容器目录及相关文件 1.2.2关闭防火墙关闭防护 1.2.3下载centos:7镜像 1.3Docker-Compose 编排nginx 1.3.1切换工作目录 1.3.2编写 Dockerfile 文件 1.3.3修改nginx.conf配置文件 1.4Docker-Co…

【前端学习——防抖和节流+案例】

定义 【前端八股文】节流和防抖 防抖 连续触发事件但是在设定的一段时间内只执行最后一次 代码实现思路【定时器】 大概意思就是&#xff1a; 每次按起键盘后&#xff0c;都将之前的定时器删除&#xff0c;重新开始计时。 节流 连续触发事件&#xff0c;只执行一次 …

Web APIs 学习归纳8---移动端特效

上一节学习了PC端的特效&#xff0c;现在学习移动端的特效。 一、移动端触屏事件 1.1 触屏事件概述 移动端浏览器兼容性较好&#xff0c;我们不需要考虑以前 JS 的兼容性问题&#xff0c;可以放心的使用原生 JS 书写效果&#xff0c;但是移动 端也有自己独特的地方。比如触屏…

【Linux网络】SSH服务

目录 一、SSH概述与使用 1.1 定义 1.2 优点 1.3 原理 1.4 命令登录 1.5 跳板登录 1.6 远程控制 二、SSH配置 2.1 常用的服务端配置 2.2 ssh服务最优配置 三、免密登录 3.1 操作原理 3.2 操作步骤 一、SSH概述与使用 1.1 定义 SSH&#xff08;Secure Shell&#…

宝塔怎么配置nginx

宝塔怎么配置nginx 1.找到nginx配置位置 2.修改nginx.conf文件 3.重启nginx

kali 网络环境设置

一、修改网卡配置 1.1 系统桌面上单击右键&#xff0c;在弹出的菜单中选择 Open Terminal Here。 1.2 输入命令 vim /etc/network/interfaces&#xff0c;显示配置网卡参数为。iface lo 一般指 本地环回接口&#xff0c; iface eth0 网卡为系统正在使用的网卡&#xff0c;其中的…

openGauss学习笔记-274 openGauss性能调优-实际调优案例03-建立合适的索引

文章目录 openGauss学习笔记-274 openGauss性能调优-实际调优案例03-建立合适的索引274.1 现象描述274.2 优化分析 openGauss学习笔记-274 openGauss性能调优-实际调优案例03-建立合适的索引 274.1 现象描述 查询与销售部所有员工的信息&#xff1a; SELECT staff_id,first_…

【Java从入门到精通】Java 异常处理

在 Java 中&#xff0c;异常处理是一种重要的编程概念&#xff0c;用于处理程序执行过程中可能出现的错误或异常情况。 异常是程序中的一些错误&#xff0c;但并不是所有的错误都是异常&#xff0c;并且错误有时候是可以避免的。 比如说&#xff0c;你的代码少了一个分号&…

LEETCODE LCR 041. 数据流中的移动平均值

class MovingAverage:def __init__(self, size: int):"""Initialize your data structure here."""self.sizesize1self.front0self.rear0self.queue[None for _ in range(size1)]self.sum0def next(self, val: int) -> float:# 满了if (self.…

平平科技工作室-Python-超级玛丽

一.准备图片 放在文件夹取名为images 二.准备一些音频和文字格式 放在文件夹media 三.编写代码 import sys, os sys.path.append(os.getcwd()) # coding:UTF-8 import pygame,sys import os from pygame.locals import* import time pygame.init() # 设置一个长为1250,宽为…

JavaScript的数组篇

数组的创建&#xff1a; 1&#xff09; var 数组名 new Array(); 2&#xff09; var 数组名[]; [ ]内可以为空&#xff0c;也可以填入值&#xff0c;值之间用逗号隔开&#xff0c;数据类型可以是任意类型 数组的遍历&#xff1a; 通过下标发来遍历&#xff0c;这一点和C…