三 ,  ROS 环境下 如何进行相机标定

刚开始做到的时候遇到一些问题没有记录下来,现在回头写的时候都是没有错误的结果了,首先使用ROS标定相机,

  要知道如何查看节点之间的流程图  rosrun rqt_graph rqt_graph ,如何查看我们运行的节点  rosnode list,    查看运行的话题 rostopic list  或者rostopic list -v 查看每个节点的性质

首先需要学习的是  wiki.ros.org/cv_bridge/Tutorials/UsingCvBridgeToConvertBetweenROSImagesAndOpenCVImages

了解cv_bridge 这个程序包是连接ROS和Opencv的程序包,就好像是一个桥梁的作用一样,关系图:

紧接着可以学习     wiki.ros.org/image_common?distro=indigo   这个就是就是教你如何去订阅和发布图像或者视频的话题等问题

那么其中功能最多的就是   wiki.ros.org/image_pipeline?distro=indigo  这个程序包里面就有我们想要的相机标定的程序以及方法

同时最重要的是  要驱动摄像头安装包就在于  wiki.ros.org/image_pipeline?distro=indigo   这里我用的是USB 的就可以对应下载该程序包然后

catkin_make一下就可以驱动摄像头,可以看到原始图像,运行看到的结果:

   

顺利的启动摄像头就可以学习如何去标定相机了

因为就是用别人的代码也没什么改动,所以直接下载所提及的程序包,然后catkin_make

一般都不会有什么错误出现,命令窗口执行

$ roscore

$ roslaunch usb_cam usb_cam-test.launch   (可以在.launch文件里修改要用的摄像头,比如笔记本的摄像头是/dev/video0,外接USB摄像头是/dev/video1)

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

(这里的标定模板我是用A3纸张打印出来,为8*6     35mm的标定棋盘)

所以   参数要改为与实际标定模板一致的数据        --size 8x6 --square 0.035

image:=/usb_cam/image_raw camera:=/usb_cam     就是要对应USB 摄像头的原始的节点和话题(我就刚开始没有对上号)

(完全按照网上的步骤来是不会出现想要的结果的)

我们可以使用  rosrun rqt_graph rqt_graph  来查看是否calibraton节点是否已经订阅成功如图:(倘若cameracalibrator与usb_cam没有订阅成功,就需要使用

rostopic list -v 查看话题)

运行的结果           如图

  

直到采集了50个采样点  左边的CALIBRATE变为绿色  就可以点击开始标定,结束后会将标定结果打印到命令窗口:

后续还有很多内容可以写上去,暂时就到这里

(大神请忽略,谢谢)

相机标定 matlab opencv ROS三种方法标定步骤(3)的更多相关文章

  1. 相机标定 matlab opencv ROS三种方法标定步骤(1)

    一 . 理解摄像机模型,网上有很多讲解的十分详细,在这里我只是记录我的整合出来的资料和我的部分理解 计算机视觉领域中常见的三个坐标系:图像坐标系,相机坐标系,世界坐标系,实际上就是要用矩阵来表 示各个 ...

  2. 相机标定 matlab opencv ROS三种方法标定步骤(2)

    二  ubuntu下Opencv的相机标定 一般直接用Opencv的源码就可以进行相机的标定,但是可能只是会实现结果,却不懂实现的过程,我也是模模糊糊的看了<计算机视觉中的多视图几何>以及 ...

  3. matlab多行注释的三种方法

    转自:http://icictech.blog.163.com/blog/static/2797425420084595725499/ 1)方法一 选中你要加注释的内容,然后选择工具菜单"t ...

  4. 用matlab脚本语言写M文件函数时用三种方法简单实现实现DFT(离散傅里叶变换)

    %用二重循环实现DFT: function xk=dt_0(xn); %define a function N=length(xn); %caculate the length of the vari ...

  5. Matlab中数组元素引用——三种方法

    Matlab中数组元素引用——三种方法   1.Matlab中数组元素引用有三种方法 1 2 3 1.下标法(subscripts) 2.索引法(index) 3.布尔法(Boolean) 注意:在使 ...

  6. MATLAB中多行注释的三种方法

    MATLAB中多行注释的三种方法 A. %{ 若干语句 %} B. 多行注释: 选中要注释的若干语句, 编辑器菜单Text->Comment, 或者快捷键Ctrl+R 取消注释: 选中要取消注释 ...

  7. opencv 3.1.0 访问像素值的三种方法(C++)

    三种方法分别问: 指针访问:void colorReduce_ptr(cv::Mat &inputImage, cv::Mat &outputImage, int div); 迭代器访 ...

  8. opencv图像阈值设置的三种方法

    1.简单阈值设置   像素值高于阈值时,给这个像素赋予一个新值(可能是白色),否则我们给它赋予另外一种颜色(也许是黑色).这个函数就是 cv2.threshhold().这个函数的第一个参数就是原图像 ...

  9. 【Android】Eclipse自动编译NDK/JNI的三种方法

    [Android]Eclipse自动编译NDK/JNI的三种方法 SkySeraph Sep. 18th  2014 Email:skyseraph00@163.com 更多精彩请直接访问SkySer ...

随机推荐

  1. url路径

      /:表示根目录(最原始开头的那个目录): ~/:表示虚拟站点根目录: ../:表示上级目录(当前目录的上一级),相当于在当前目录按了一次后退键: ../../:表示上上级目录: ./:当前目录(当 ...

  2. CentOS安装Python教程

    下载/安装python yum install -y bzip2* #nodejs 0.8.5需要,请安装python前,先安装此模块.   wget http://www.python.org/ft ...

  3. 用c#实现与飞环语音卡的交互

    现在很多企业都采用freeswitch搭建的软交换来实现通话,主要优势成本低吞吐量大,但是语音卡的通话质量还是瑞胜一筹. 去年有机会在朋友公司里帮忙开发与软交换交互的上层服务及接口,在开发过程中稍微研 ...

  4. nginx 使用过程中一些基础性问题总结

    最近闲着无事,玩了下nginx.但本人在实践的过程中也遇到了一些问题,如,大家都知道应用服务器的处理都是无状态的,而nginx做了请求分发,我们在当前web服务器做得提交操作,可能下一刻就跑到另外一台 ...

  5. 微信移动端web页面调试小技巧

    技术贴还是分享出来更加好,希望能对一些朋友有帮助,个人博客  http://lizhug.com/mymajor/微信移动端web页面调试小技巧

  6. Citrix 服务器虚拟化之六 Xenserver虚拟机创建与快照

    Citrix 服务器虚拟化之六  Xenserver虚拟机创建与快照 在Xenserver上可以创建Windows和Linux等虚拟机,Xenserver支持大部分的主流操作系统,可以使用 XenCe ...

  7. 纯Python综合图像处理小工具(1)分通道直方图

    平时工作经常需要做些图像分析,需要给图像分通道,计算各个通道的直方图分布特点,这个事儿photoshop也能做,但是用起来不方便,且需要电脑上安装有PS软件,如果用OpenCV, 更是需要在visua ...

  8. wordpress开启用户注册

    很多人想用wordpress打造多用户博客平台 首先想到的是用户注册 今天搞了好长时间,找了好多资料总算找到了 首先开启用户注册 后台 ----设置----常规设置  在成员资格选项中选择任何人都可以 ...

  9. PostgreSQL数据的导出导入 save your data!

    PostgreSQL数据的导出导入 导出PostgreSQL数据库中的数据: $ pg_dump -U postgres  -f mydatabase.sql  mydatabase 导入数据时首先创 ...

  10. Arduino 串口篇 Arduino发送十六进制 send HEX via serial port RS232-to-USB to PC

    发送十六进制比较直观,可以在上位机中直接获取十六进制的数据,然后在在上位机上将十六进制HEX转换成BIN(二进制)或者DEC(十进制)就十分简单有效了. 下面是在Arduino上怎么演示直接发送16进 ...