1.ROS机器视觉:单目摄像头的调用与标定

news/2024/5/18 23:57:34/文章来源:https://blog.csdn.net/wzfafabga/article/details/127206880

(1条消息) ROS改错:vm虚拟机中调用摄像头失败_机械专业的计算机小白的博客-CSDN博客https://blog.csdn.net/wzfafabga/article/details/127204106?spm=1001.2014.3001.5502 首先保证摄像头是可调用的。 

1.安装usb_cam驱动

sudo apt-get install ros-melodic-usb-cam

2.启动摄像头测试

roslaunch usb_cam usb_cam-test.launch

会出现警告1:因为没有进行摄像头光学畸变的标定。

[ WARN] [1665206605.142972044]: Camera calibration file /home/rosmelodic/.ros/camera_info/head_camera.yaml not found.

会出现警告2:因为我的摄像头没有自动对焦功能。

[ WARN] [1665206605.633938816]: unknown control 'focus_auto'

3.查看图像话题信息

rostopic info /usb_cam/image_raw
Type: sensor_msgs/ImagePublishers: * /usb_cam (http://rosmelodic-virtual-machine:42137/)Subscribers: * /image_view (http://rosmelodic-virtual-machine:40955/)

话题通信,其中话题消息类型为sensor_msgs/Image传感器类型中的图片类型,其中发布者为usb_cam,订阅者为image_view。

rqt_graph

 图像消息详细定义,P157

rosmsg show sensor_msgs/Image
std_msgs/Header headeruint32 seqtime stampstring frame_id
uint32 height
uint32 width
string encoding
uint8 is_bigendian
uint32 step
uint8[] data

其中Image这种消息类型占用带宽大,常采用压缩图片CompressedImage,压缩后的格式是常见的jpeg、png等。

在摄像头运行时,可以通过rqt_image_view看不同的消息类型。

rqt_image_view

 usb_cam功能包中话题与参数。

 roslaunch usb_cam usb_cam-test.launch

官方源码地址:

ros-drivers/usb_cam: A ROS Driver for V4L USB Cameras (github.com)https://github.com/ros-drivers/usb_cam

<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>

启动两个节点,参数对应上表。

尝试了改变image_width和image_height,改成1280×960,报错!说明这两个参数必须和摄像头像素值对应上。

realsence的相机标定等有实物在补齐。

4.单目相机的内参标定(笔记本电脑自带相机)

sudo apt-get install ros-melodic-camera-calibration

安装用于单目和双目摄像头标定包,camera_calibration。

guyueclass/planning&perception/robot_vision_beginner at main · guyuehome/guyueclass (github.com)https://github.com/guyuehome/guyueclass/tree/main/planning%26perception/robot_vision_beginner古月学院、ROS机器人开发实践书籍的配套源码,放到工作空间的。

roslaunch robot_vision usb_cam.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></launch>

 发现相较于之前的usb_cam usb_cam-test.launch,去掉了订阅者节点,保留了发布者节点。

在roslaunch文件运行后,无须再开启roscore,因为ROS Master已经在roslaunch启动时默认开启了。

rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.024 image:=/usb_cam/image_raw camera:=/usb_cam

X:左右移动

Y:上下移动

Size:前后移动

Skew:倾斜移动

看进度条颜色,哪个没完成就做哪个,直到calibrate按钮变色。

 按下等待一阵,在控制台会出现

camera matrix
885.119512 0.000000 263.058405
0.000000 880.126213 263.382910
0.000000 0.000000 1.000000distortion
0.197546 -1.035223 0.024920 -0.036594 0.000000rectification
1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000projection
877.820679 0.000000 246.702290 0.000000
0.000000 899.609436 270.006250 0.000000
0.000000 0.000000 1.000000 0.000000

依次点击save和commit

其中标定文件在home/.ros/camera_info中。(找不到,ctrl+h显示隐藏文件)

image_width: 640
image_height: 480
camera_name: head_camera
camera_matrix:rows: 3cols: 3data: [885.1195120085875, 0, 263.0584053601851, 0, 880.1262134387691, 263.3829103726786, 0, 0, 1]
distortion_model: plumb_bob
distortion_coefficients:rows: 1cols: 5data: [0.1975462439738717, -1.035222623807585, 0.02491956217836974, -0.03659352464640024, 0]
rectification_matrix:rows: 3cols: 3data: [1, 0, 0, 0, 1, 0, 0, 0, 1]
projection_matrix:rows: 3cols: 4data: [877.8206787109375, 0, 246.7022900744159, 0, 0, 899.6094360351562, 270.0062500380827, 0, 0, 0, 1, 0]

 再次运行发布者:

rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.024 image:=/usb_cam/image_raw camera:=/usb_cam

这个报错相较于之前没标定的,已经消失了。

[ INFO] [1665283680.431090630]: Unable to open camera calibration file [/home/rosmelodic/.ros/camera_info/head_camera.yaml]
[ WARN] [1665283680.431109782]: Camera calibration file /home/rosmelodic/.ros/camera_info/head_camera.yaml not found.

但是这个报错还存在,因为笔记本摄像头不支持自动对焦。

[ WARN] [1665283680.946236000]: unknown control 'focus_auto'

完成任务之后记得关闭发布者usb_cam节点。因为没有订阅者image_view,没有可视化界面,容易忘记关闭。

 标定结果文件在 +其他位置→tmp→压缩包

具体位置在点击save按钮时,控制台已经给出:

('Wrote calibration data to', '/tmp/calibrationdata.tar.gz')

这仅仅是单目摄像头的调用与标定。

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

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

相关文章

数据导入导出功能的测试点

【数据导入功能】 一、操作按钮校验 1、导入按钮生效 2、取消导入按钮生效 二、导入模板校验 1、文件数量 1&#xff09;不传模板&#xff1a;点确认时提示错误 2&#xff09;传模板&#xff1a;只支持单文件 or 还支持多文件同时导入 2、文件格式 只支持xlsx文件 or 还支…

HTML学生个人网站作业设计 学生大学生活网页设计作品 学生个人网页模板 简单个人主页成品 div+css个人网页制作

&#x1f329;️ 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f482; 作者主页: 【进入主页—&#x1f680;获取更多源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;HTML5网页期末作业 (1000套…

Java项目:ssh网上便利店系统

作者主页&#xff1a;夜未央5788 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 该项目分为前后台。非maven项目&#xff1b; 前台主要功能包括&#xff1a; 会员登录、注册、商品展示、加入购物车、会员中心、我的订单、我的地址…

【跟学C++】C++队列——queue类(Study13)

文章目录1、队列2、队列--queue类的使用2.1 实例化queue2.2 queue的成员函数3、优先级队列--priority_queue类的使用3.1 实例化priority_queue3.1 priority_queued的成员函数4、总结 【说明】 大家好&#xff0c;本专栏主要是跟学C内容&#xff0c;自己学习了这位博主【 AI菌】…

多测师肖sir_高级讲师_第2个月第21讲解jmeter安装

一、安装流程&#xff1a; 1、安装jdk &#xff08;linux&#xff0c;windows上&#xff09;&#xff0c;jdk编译java语言&#xff0c; 2、jdk环境配置&#xff0c;dos中java -version 查看jdk版本 3、下载jmeter包&#xff0c;解压&#xff0c;bin 目录 &#xff0c;jmeter.ba…

从零开始配置vim(25)——关于 c++ python 的配置

从9月份到国庆这段时间,因为得了女儿,于是回老家帮忙料理家事以及陪伴老婆和女儿。一时之间无暇顾及该系列教程的更新。等我回来的时候发现很多小伙伴私信我催更。在这里向支持本人这一拙劣教程的各位小伙伴表示真诚的感谢。言归正传,让我们开始吧 之前我们根据lua语言配置了…

(附源码)计算机毕业设计ssm电子购物商城

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【DL】第 11 章:自动驾驶汽车的深度学习

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

《uni-app》一个非canvas的飞机对战小游戏-启动页

这是一个没有套路的前端博主&#xff0c;热衷各种前端向的骚操作&#xff0c;经常想到哪就写到哪&#xff0c;如果有感兴趣的技术和前端效果可以留言&#xff5e;博主看到后会去代替大家踩坑的&#xff5e;接下来的几篇都是uni-app的小实战&#xff0c;有助于我们更好的去学习u…

基于微信小程序的校园失物招领寻物启事系统 java uniapp 小程序

随着信息化时代的到来,管理系统都趋向于智能化、系统化,微信小程序校园失物招领也不例外,但目前国内的市场仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化,而微信小程序校园失物招领能很好地解决这一问题,轻松应对校园失物招领平…

老项目vue2.x误用了vue3的插件问题

老项目vue2.x误用了vue3的插件问题背景插件vue-template-compilervue-loader问题回溯总结背景 vue3出来两年多了&#xff0c;它刚出来的时候&#xff0c;vue3相比vue2似乎并没有想像中那样受大家欢迎。因为两个版本的构架上相差太大了&#xff0c;许多的API都不兼容&#xff0…

洛谷题单 Part 2.4 分治

分治 即分而治之 将大问题化解为小问题逐一求解 这种题没有固定的模板 只有分治的思想 所以在做题的时候应当多想如何将一个大问题化解成若干个子问题进行求解 直接上题了 P1226 【模板】快速幂||取余运算 非常经典的分治问题 常规算法求aba^bab要O(b)O(b)O(b)的时间复杂度 我…

Mybatis常见查询总结,仅限于初级程序员阅读

情况描述&#xff1a; 本人初次接触Mybatis&#xff0c;然后对于其中的一些基础查询做一些简单总结&#xff0c;一次用来记录他的用法&#xff0c;便于以后查漏补缺。 1、Mybatis中查询特定的列:&#xff08;单列&#xff09; 如果查询指定列为Long类型&#xff0c;那么在re…

游戏合作伙伴专题:BreederDAO 与 Affyn一起重构现实生活

BreederDAO 团队很宣布与 Affyn 建立了新的合作关系&#xff0c;Affyn 是一家位于新加坡的公司&#xff0c;开发了基于地理位置的增强现实移动游戏。 移动元宇宙 Affyn 团队由来自 EA、任天堂、迪士尼和星巴克等顶级游戏、娱乐和生活方式公司的资深员工组成。他们洞悉了目前边玩…

html5网页设计作业代码 大学生校园网站制作 学校官网制作html

&#x1f329;️ 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f482; 作者主页: 【进入主页—&#x1f680;获取更多源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;HTML5网页期末作业 (1000套…

性能大PK count(*)、count(1)和count(列)

最近的工作中&#xff0c;我听到组内两名研发同学在交流数据统计性能的时候&#xff0c;聊到了以下内容&#xff1a; 数据统计你怎么能用 count() 统计数据呢&#xff0c;count() 太慢了&#xff0c;要是把数据库搞垮了那不就完了么&#xff0c;赶紧改用 count(1)&#xff0c;这…

基于Gossip的online server

在游戏服务端架构中online server,有些也叫center server。 主要承载以下功能:存储玩家的在线信息,处理上线和下线消息。 转发消息给特定玩家。online server在架构图中的位置online server集群内部架构图,以3个实例为例:特点:svr之间相互连接,采用Gossip协议通信。 各s…

MCMS 审计之路

MCMS 是 J2EE 系统&#xff0c;完整开源的Java CMS&#xff0c;基于SpringBoot 2架构&#xff0c;前端基于vue、element ui。为开发者提供上百套免费模板,同时提供适用的插件&#xff08;文章、商城、微信、论坛、会员、评论、支付、积分、工作流、任务调度等...&#xff09;&a…

大学网课查题系统

大学网课查题系统 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&#xff08;点击跳…

VB6开发 用户控件OCX

VB6 中创建一个主窗体工程后,再添加一个 ActiveX用户控件工程 在用户控件窗体中可以添加 文本框和按钮的控件 属性Public strUrl As String方法发送消息 Public Sub WebSocketSendMsg(ByVal SendMsg As String) On Error GoTo ErrTrapDim sMsg As StringsMsg = msgInput.TextC…