基于鱼眼相机的机械臂抓取流程

这篇具有很好参考价值的文章主要介绍了基于鱼眼相机的机械臂抓取流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 相机标定

相机标定使用ROS中camera_calibration工具进行标定,该工具也可以标定鱼眼相机。标定板黑白格大小为12x8,单个方块大小20mm
标定后即可得到相机内参。后续使用时需要通过参数矫正鱼眼相机的图片

rosrun camera_calibration cameracalibrator.py --size 11x8 --square 0.020 image:=/usb_cam/image_raw camera:=/usb_cam --fisheye-fix-skew --fisheye-recompute-extrinsicsts --fisheye-check-conditions

2. 工具标定

工具标定根据机械臂厂商提供的工具进行

3. 手眼标定

参考手眼标定。
注意事项:image_callback函数中获取的是未矫正的图像,应用时需要对图像进行矫正。
鱼眼相机矫正方法:
ros标定后,在.ros下camera_info下有head_camera.yaml参数文件

with open(camera_info_file) as f:
	camera_params = yaml.load(f.read(),Loader=yaml.FullLoader)
	camera_width = camera_params['image_width']
	camera_height = camera_params['image_height']
	self.image_size = (camera_width,camera_height)
	# self.K_ = np.asarray([camera_params['camera_matrix']['data']]).reshape((3, 3))
	self.D = np.asarray(camera_params['distortion_coefficients']['data']).reshape((1, 4))
	self.K=np.asarray([camera_params['camera_matrix']['data']]).reshape((3, 3))
	self.Re =np.asarray([camera_params['rectification_matrix']['data']],dtype=np.float64).reshape((3, 3)) 
	self.P =np.asarray([camera_params['projection_matrix']['data']]).reshape((3, 4))
	# 根据alpha比例因子计算新的相机内参,1:所有像素保留,但存在黑色边框。0:损失最多的像素,没有黑色边框.返回矩阵和ROI
	# self.K,_ = cv2.getOptimalNewCameraMatrix(self.K, self.D, self.image_size, 0, self.image_size)
	if camera_type==0:#鱼眼相机
	    self.P=cv2.fisheye.estimateNewCameraMatrixForUndistortRectify(self.K,self.D,self.image_size,None)
	    self.map1,self.map2 = cv2.fisheye.initUndistortRectifyMap(self.K, self.D, None, self.P, self.image_size, cv2.CV_32FC1)

在image_callback中对原始图像进行矫正:

frame_result =cv2.remap(image, fisheye.map1, fisheye.map2, interpolation=cv2.INTER_LINEAR)

4. 像素坐标转世界坐标

像素坐标转世界坐标,需要知道相机内参和外参

#获取工具中心点的位置和姿态
 RT_end_to_base = np.column_stack((rvecs_robot[i],tvecs_robot[i]))
 RT_end_to_base=np.row_stack((RT_end_to_base,np.array([0,0,0,1])))

  RT_cam_to_end=np.column_stack((R,T))#手眼标定结果
  RT_cam_to_end=np.row_stack((RT_cam_to_end,np.array([0,0,0,1])))
  

  Rmat=Rotation.from_matrix(R)
  rx,ry,rz=Rmat.as_euler('xyz',degrees=True)
  # print("rotation(x,y,z)",rx,ry,rz)
  print("相机到机械臂末端的矩阵",T,rx,ry,rz)
  
  #获取相机在机械臂坐标系下的位置和姿态
  Matrix_camera2Base = np.dot(RT_end_to_base,RT_cam_to_end)
  Matrix_base2Cam=np.linalg.inv(Matrix_camera2Base)
  rvec_cam=cv2.Rodrigues(Matrix_base2Cam[:3,:3])[0]#旋转向量
  tvec_cam = Matrix_base2Cam[:3, 3].reshape((3, 1))#平移向量

相似坐标转世界坐标参考https://www.yii666.com/blog/331694.html

之后可通过控制机械臂移动到目标位置文章来源地址https://www.toymoban.com/news/detail-636582.html

到了这里,关于基于鱼眼相机的机械臂抓取流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机视觉基础(7)——相机基础

    从这一节开始,我们来学习 几何视觉 。中层视觉包括 相机模型、单目几何视觉、对极几何视觉和多目立体视觉等 。在学习几何视觉最开始,我们先来学习一下 相机模型 ,了解相机的基本原理,了解相机如何记录影像。 相机用于生成 二维的图像 ,图像最小的单元被称为

    2024年02月04日
    浏览(33)
  • 计算机视觉:OpenCV相机标定

    针孔照相机模型是一种经典的相机模型,它将相机视为一个针孔,将场景中的点投影到成像平面上。在这个模型中,相机的 内参和外参 描述了相机的几何形状和相机的姿态。 相机的 内参矩阵 描述了相机的内部几何形状,包括相机的焦距、像素尺寸和像素坐标原点。相机的

    2024年01月19日
    浏览(49)
  • 计算机视觉:多相机硬件同步拍摄

    目前主要有两种方法来同步不同传感器的信息(帧、IMU数据包、ToF等): 硬件同步(基于硬件信号触发,同步精度较高,需要硬件支持) 软件同步(基于时间戳或序列号同步,同步精度较低,无需硬件支持) 此博客重点介绍硬件同步,它允许在多个相机传感器之间精确同步

    2024年02月13日
    浏览(25)
  • 鱼眼相机外参的计算

    主要是借助cv::solvepnp和cv::solvePnPRansac或calibrate来求解相机外参,但鱼眼相机外参的计算,在调用 参考链接: (185条消息) 鱼眼相机外参的计算和图像的透视变换_求解鱼眼相机外参_Mega_Li的博客-CSDN博客 我: 你是opencv专家,教我计算鱼眼相机的外参,用c++代码实现 openai(chatgpt

    2024年02月10日
    浏览(39)
  • 计算机视觉(相机标定;内参;外参;畸变系数)

    目录 一、预备知识 1、坐标系变换过程(相机成像过程) (1)相机坐标系转换为图像坐标系(透视投影变换遵循的是针孔成像原理) (2)齐次坐标的引入原因:(为什么引入齐次坐标???) 2、内参与外参矩阵的构成 3、畸变参数 二、相机标定 1、张正友标定法(光学标

    2024年02月07日
    浏览(38)
  • 计算机视觉:OAK多相机硬件同步拍摄

    目前主要有两种方法来同步不同传感器的信息(帧、IMU数据包、ToF等): 硬件同步(基于硬件信号触发,同步精度较高,需要硬件支持) 软件同步(基于时间戳或序列号同步,同步精度较低,无需硬件支持) 此博客重点介绍硬件同步,它允许在多个相机传感器之间精确同步

    2024年02月09日
    浏览(32)
  • 【Matlab】相机标定(计算机视觉工具箱)

    图像处理和计算机视觉是Matlab的一个主要应用领域,这部分包括4个工具箱——图像处理、计算机视觉、雷达、医学图像。由于视觉的东西容易呈现,所以先从计算机视觉工具箱学起。 官方文档对计算机视觉工具箱的介绍如下:设计和测试计算机视觉、3D 视觉和视频处理系统

    2024年02月05日
    浏览(90)
  • 【计算机视觉】相机基本知识(还在更新)

    面阵相机则主要采用的 连续的、面状扫描光线 来实现产品的检测; 线阵相机即利用 单束扫描光 来进行物体扫描的工作的。 (1)面阵CCD工业相机: 优点 :应用面较广,如面积、形状、尺寸、位置,甚至温度等的测量。面阵CCD的优点是可以获取测量图像直观,二维图像信息

    2024年02月12日
    浏览(46)
  • 【计算机视觉】OpenCV实现单目相机标定

    文章目录 单目相机标定(基于Python OpenCV) 1.上期填坑 2.单目相机标定 2.1 数据采集 2.2 角点提取 2.3 参数求解 2.4 参数评估(重投影误差) 2.5 相机位姿(棋盘位姿)可视化 2.6 同Matlab标定结果比较 在开始本篇博客之前,先填一下上一篇博客【计算机视觉】基于ORB角点+RANSAC算法实现图像

    2023年04月18日
    浏览(46)
  • MYSQL+SSM基于区块链的物联网数据交易-46193,免费领源码,【计算机毕业设计开题选题+程序定制+论文书写+答辩ppt书写 全流程 】

    SSM基于区块链的物联网数据交易 系    院 XXXX 学科门类 XXX 专    业  XXX 班级 XXX 学    号 XXX 姓    名 XXX 指导教师 XXX 教师职称 XXX 2022 年 12 月 4 日 摘  要 物联网技术作为继互联网技术后新一代的通信信息集成应用的典范,其巨大的应用前景受到了学术界和政商界的广

    2024年02月05日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包