传感器之相机介绍和使用

相机是机器人系统中另一比较重要的传感器,与雷达类似的,相机也是机器人感知外界环境的重要手段之一,并且随着机器视觉、无人驾驶等技术的兴起,相机在物体识别、行为识别、SLAM中等都有着广泛的应用。

根据工作原理的差异可以将相机大致划分成三类:单目相机、双目相机与深度相机。

1.单目相机

单目相机是将三维世界二维化,它是将拍摄场景在相机的成像平面上留下一个投影,静止状态下是无法通过单目相机确定深度信息。向如下动图展示的一样,在二维图形中,甚至不能根据图片中物体的大小来判断物体距离。

2.双目相机

识破上面的“骗局”只需要移动单目相机,再换一个角度拍摄一张照片即可,当角度切换后,可以将两张照片组合还原为一个立体的三维世界。

双目相机的原理也是如此,双目相机是由两个单目相机组成的,即便在静止状态下,也可以生成两张图片,两个单目相机之间存在一定的距离也称之为基线,通过这个基线以及两个单目项目分别生成的图片,可以来估算每个象素的空间位置。

3.深度相机

深度相机也称之为RGB-D相机,顾名思义,深度相机也可以用于获取物体深度信息。深度相机一般基于结构光或ToF(Time-of-Flight)原理实现测距。

前者是通过近红外激光器,将具有一定结构特征的光线投射到被拍摄物体上,再由专门的红外摄像头进行采集。光线照射到不同深度的物体上时,会采集到不同的图像相位信息,然后通过运算单元将这种结构的变化换算成深度信息,后者实现则类似于激光雷达,也是根据光线的往返时间来计算深度信息。

使用流程如下:

  1. 硬件准备;

  1. 软件安装;

  1. 启动并测试。

1.硬件准备

当前直接连接树莓派即可,如果连接的是虚拟机,注意VirtualBox或VMware的相关设置。

2.软件准备

安装USB摄像头软件包,命令如下:

sudo apt-get install ros-ROS版本-usb-cam

或者也可以从 github 直接下载源码:

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

3.测试

1.launch文件准备

在软件包中内置了测试用的launch文件,内容如下:

<launch>
  <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
    <param name="video_device" value="/dev/video0" />
    <param name="image_width" value="640" />
    <param name="image_height" value="480" />
    <param name="pixel_format" value="yuyv" />
    <param name="camera_frame_id" value="usb_cam" />
    <param name="io_method" value="mmap"/>
  </node>
  <node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen">
    <remap from="image" to="/usb_cam/image_raw"/>
    <param name="autosize" value="true" />
  </node>
</launch>

节点 usb_cam 用于启动相机,节点 image_view 以图形化窗口的方式显示图像数据,需要查看相机的端口并修改 usb_cam 中的 video_device 参数,并且如果将摄像头连接到了树莓派,且通过 ssh 远程访问树莓派的话,需要注释 image_view 节点,因为在终端中无法显示图形化界面。

2.启动launch文件
roslaunch usb_cam usb_cam-test.launch
3.rviz显示

启动 rviz,添加 LaserScan 插件:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[数据结构]排序算法

目录 常用排序算法的实现&#xff1a;&#xff1a; 1.排序的概念及其运用 2.插入排序 3.希尔排序 4.选择排序 5.冒泡排序 6.堆排序 7.快速排序 8.归并排序 9.排序算法复杂度及稳定性分析 10.排序选择题练习 常用排序算法的实现&#xff1a;&#xff1a; 1.排序的概念及其运用…

类和对象 - 下

本文已收录至《C语言》专栏&#xff01; 作者&#xff1a;ARMCSKGT 目录 前言 正文 初始化列表 成员变量的定义与初始化 初始化列表的使用 变量定义顺序 explicit关键字 隐式类型转换 自定义类型隐式转换 explicit 限制转换 关于static static声明类成员 友元 友…

第二十一天 数据库开发-MySQL

目录 数据库开发-MySQL 前言 1. MySQL概述 1.1 安装 1.2 数据模型 1.3 SQL介绍 1.4 项目开发流程 2. 数据库设计-DDL 2.1 数据库操作 2.2 图形化工具 2.3 表操作 3. 数据库操作-DML 3.1 增加(insert) 3.2 修改(update) 3.3 删除(delete) 数据库开发-MySQL 前言 …

大文件上传

上图就是大致的流程一、标题图片上传课程的标题图片Ajax发送请求到后端后端接收到图片使用IO流去保存图片&#xff0c;返回图片的信息对象JS回调函数接收对象通过$("元素id").val(值)&#xff0c;方式给页面form表达img标签src属性值&#xff0c;达到上传图片并回显二…

CVPR 2023 | 旷视研究院入选论文亮点解读

近日&#xff0c;CVPR 2023 论文接收结果出炉。近年来&#xff0c;CVPR 的投稿数量持续增加&#xff0c;今年收到有效投稿 9155 篇&#xff0c;和 CVPR 2022 相比增加 12%&#xff0c;创历史新高。最终&#xff0c;大会收录论文 2360 篇&#xff0c;接收率为 25.78 %。本次&…

HCIP-6.2NAT协议原理与配置

HCIP-6.2NAT协议原理与配置1、NAT的工作原理1.1、静态NAT1.2、动态NAT1.3、NAPT&#xff08;Network Address Port Translation&#xff09;端口多路复用1.3.1、NAT与NAPT区别2、Easy IP3、NAT服务器随着Internet的发展和网络应用的增多&#xff0c;IPv4地址枯竭已经成为制约网…

Qt5.12实战之控件设计

QPushButton使用静态创建,通过设计窗口拖放控件:添加信号处理:为Pressed,Released,Clicked三个按钮添加信号自动添加的信号槽:动态生成的槽定义:动态创建创建QPushButtonQPushButton *btn new QPushButton(QString::fromLocal8Bit("动态添加的按钮"),this);connect(…

并查集、并查集+离线、并查集+倒叙回答

文章目录并查集[200. 岛屿数量](https://leetcode.cn/problems/number-of-islands/)[721. 账户合并](https://leetcode.cn/problems/accounts-merge/)并查集 离线计算[1697. 检查边长度限制的路径是否存在](https://leetcode.cn/problems/checking-existence-of-edge-length-l…

JVM知识整理

JVM知识整理 JVM的主要组成部分 JVM包含两个两个子系统&#xff08;类加载子系统和执行引擎&#xff09;和两个组件&#xff08;运行时数据区与和本地库接口&#xff09; 类加载子系统&#xff1a;根据给定的全限定类名来加载class文件到运行时数据区域中的方法区。执行引擎&a…

Python实现人脸识别检测, 对美女主播照片进行评分排名

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 素材、视频、代码、插件安装教程我都准备好了&#xff0c;直接在文末名片自取就可点击此处跳转 开发环境: Python 3.8 Pycharm 2021.2 模块使用&#xff1a; requests >>> pip install requests tqdm >…

串口通信(STM32演示实现)

目录 一、串行通信的概念 二、寄存器 2.1控制寄存器USART_CR1 2.2控制寄存器USART_CR2​编辑 2.3串口寄存器USART_BRR 2.4 USART_ISR 2.5USART_TDR 2.6USART_RDR​编辑 三、实现串口数据的收发 一、串行通信的概念 u通信&#xff0c;最少要有两个对象&#xff0c;一个收…

奇安信_防火墙部署_透明桥模式

奇安信_防火墙部署_透明桥模式一、预备知识二、项目场景三、拓扑图四、基本部署配置1. 登录web控制台2.连通性配置3.可信主机配置4.授权导入5.特征库升级6.安全配置文件五、透明桥配置1. 创建桥2. 端口绑定桥3. 创建桥端口六、结语一、预备知识 安全设备接入网络部署方式 二、…

​selenium+python做web端自动化测试框架与实例详解教程​

下面有详细的代码介绍&#xff0c;如果不是很明白的话&#xff0c;可以看看这套视频&#xff0c;在哔站学习人数超过数万人&#xff01; 在华为工作了10年的大佬出的Web自动化测试教程&#xff0c;华为现用技术教程&#xff01;_哔哩哔哩_bilibili在华为工作了10年的大佬出的W…

数据结构——二叉树与堆

作者&#xff1a;几冬雪来 时间&#xff1a; 内容&#xff1a;二叉树与堆内容讲解 目录 前言&#xff1a; 1.完全二叉树的存储&#xff1a; 2.堆的实现&#xff1a; 1.创建文件&#xff1a; 2.定义结构体&#xff1a; 3.初始化结构体&#xff1a; 4.扩容空间与扩容…

从 X 入门Pytorch——BN、LN、IN、GN 四种归一化层的代码使用和原理

Pytorch中四种归一化层的原理和代码使用前言1 Batch Normalization&#xff08;2015年提出&#xff09;Pytorch官网解释原理Pytorch代码示例2 Layer Normalization&#xff08;2016年提出&#xff09;Pytorch官网解释原理Pytorch代码示例3 Instance Normalization&#xff08;2…

【docker】docker安装MySQL

目录前言一、安装MySQL不指定版本&#xff0c;默认下载最新版本指定版本号二、创建MySQL实例镜像拉取完成后&#xff0c;用该镜像创建MySQL实例创建成功后使用下面命令查看创建好的MySQL实例三、检查是否启动成功查看端口号是否配置并开启用Navicat测试数据库是否启动成功前言 …

银河麒麟v10sp2安装nginx

nginx官网下载&#xff1a;http://nginx.org/download/ 银河麒麟系统请先检查yum源是否配置&#xff0c;若没有配置请参考&#xff1a;https://qdhhkj.blog.csdn.net/article/details/129680789 一、安装 1、yum安装依赖 yum install gcc gcc-c make unzip pcre pcre-devel …

[ 网络 ] 应用层协议 —— HTTP协议

目录 1.HTTP协议 1.1URL urlencode和urldecode 2. HTTP协议格式 HTTP请求 HTTP响应 3.告知服务器意图的HTTP方法 GET&#xff1a;获取资源 POST&#xff1a;传输实体主体 GET和POST的区别 使用Cookie的状态管理 4.返回结果的HTTP状态码 状态码告知从服务器端返回的…

Linux防火墙——SNAT、DNAT

目录 NAT 一、SNAT策略及作用 1、概述 SNAT应用环境 SNAT原理 SNAT转换前提条件 1、临时打开 2、永久打开 3、SNAT转换1&#xff1a;固定的公网IP地址 4、SNAT转换2&#xff1a;非固定的公网IP地址&#xff08;共享动态IP地址&#xff09; 二、SNAT实验 配置web服务…

Redis单线程还是多线程?IO多路复用原理

目录专栏导读一、Redis版本迭代二、Redis4.0之前为什么一直采用单线程&#xff1f;三、Redis6.0引入多线程四、Redis主线程和IO线程是如何完成请求的&#xff1f;1、服务端和客户端建立socket连接2、IO线程读取并解析请求3、主线程执行请求命令4、IO线程会写回socket和主线程清…
最新文章