2023年11月24日记

1 ROS视觉应用(第八讲)

机械臂只是执行装置,与外界打交道难免要通过视觉等传感器获取外部信息

1.1 ROS图像接口

1.1.1二维平面图像

ROS图像接口
sudo apt-get install ros-noetic-usb-cam 命令安装USB_CAM功能包
roslaunch probot_vision usb_cam.launch 命令运行用以启动USB摄像头,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>

rqt_image_view 启动rqt接受摄像头画面
USB_CAM的维基官方介绍
usb_cam_node是摄像头驱动核心节点

终端输入

rosmsg show sensor_msgs/Image 

查看图像消息的内容为

  uint32 seq
  time stamp
  string frame_id
uint32 height
uint32 width
string encoding
uint8 is_bigendian
uint32 step
uint8[] data

图像消息格式

1.1.2 点云图像

手头上没有深度相机。。。按相应深度相机安装驱动即可。关于深度相机仿真可参考
Kinect仿真1
kinect仿真2
简单来说,深度相机即RGB-D,是在二维图像每个像素点上累加了xyz的三维位置信息,这种包含位置信息的RGB图像称为点云。

rqt不能查看点云信息,需要通过运行Rviz添加PointCloud2控件来查看点云图像信息,其消息格式内容如图点云图像消息格式

1.2 摄像头内参标定

摄像头这种精密仪器对光学器件的要求较高,由于摄像头内外部原因,生成的物体图像往往会发生畸变,为避免数据源造成的误差,需要针对摄像头参数进行标定。

内参是指摄像头自身的参数。外参是指摄像头跟机械臂外部环境的关系。

终端输入如下命令安装标定功能包

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

摄像头标定流程:
1.启动摄像头

roslaunch probot_vision usb_cam.launch

2.启动标定包

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

size:标定期盼的内部脚点个数,8x6指标定棋盘共六行,每行有8个内部脚点,需要注意的是并非乘号,而是字母x;
square:这个参数对应每个棋盘格的边长,单位是米;
imagecamera:设置摄像头发布的图像话题。

启动标定包成功后,会产生如图界面,通过不断移动和旋转标定靶来使各个尺度上标定成功。
标定界面
calibrate按键亮起后,即代表采集图像数据已足够,此时点击calibrate,后台开始运行标定程序,界面会卡死一段时间,需耐心等待,此时在启动标定功能包的终端中可以看到程序正在运行。标定完成后点击save,终端中会显示标定配置信息文件保存路径。

例程路径为其他位置/计算机/tmp/下的名为calibrationdata.tar.gz的压缩包,解压后标定参数的配置文件为ost.ymal,使用时只需在驱动摄像头的launch文件中加入对相机标定文件的调用。
标定配置文件的使用
**报错说明:**例程中所给处的usb_cam_with_calibration.launch中,摄像头分辨率设置为1280×720,而usb_cam文件中分辨率为640×480。运行usb_cam_with_calibration.launch后报错信息如下:

[usb_cam-2] process has died [pid 51465, exit code -11, cmd /opt/ros/noetic/lib/usb_cam/usb_cam_node __name:=usb_cam __log:=/home/hxd/.ros/log/4f2a4942-8ac1-11ee-8054-2130c607434d/usb_cam-2.log].
log file: /home/hxd/.ros/log/4f2a4942-8ac1-11ee-8054-2130c607434d/usb_cam-2*.log

修改分辨率为640×480后不再报错。

1.3 ROS+OpenCV(基础介绍和使用)

OpenCV安装
集成框架

1.3.1 CvBridge功能包

ROS中的图像数据格式和OpenCV的图像格式不相同,CvBridge的功能即将二者的图像格式相互转换(类似作用的Bridge还有很多)。

1.3.2 OpenCV使用

1.安装OpenCV(ubuntu20.04里自带了opencv4.2的版本)
2.运行例程1,效果为在图像左上方出现红色圆形。

roslaunch probot_vision usb_cam.launch
rosrun probot_vision image_converter 
rqt_image_view 

运行流程为ROS驱动摄像头获取图像usb_cam/image_raw,再通过CvBridge转换格式后由OpenCV在图像上修改后再输出,再经过CvBridge转换格式后输出为image_converter/output_video
cpp流程

2 手眼结合

1.手眼标定(内参,外参)
2.物体识别与定位
3.抓取姿态分析
4.运动规划

  • 35
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Boreep

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值