当前位置: 首页 > news >正文

网站虚拟主持人深圳市推广网站的公司

网站虚拟主持人,深圳市推广网站的公司,个人网站 jsp 域名空间,网站备案幕操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 计算手眼标定: g T c _{}^{g}\textrm{T}_c g​Tc​ cv::calibrateHandEye 是 OpenCV 中用于手眼标定的函数。该函数通过已知的机器人…
  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

计算手眼标定: g T c _{}^{g}\textrm{T}_c gTc
cv::calibrateHandEye 是 OpenCV 中用于手眼标定的函数。该函数通过已知的机器人末端执行器(gripper)相对于基座(base)和平板(target)相对于相机(cam)的姿态来计算相机相对于末端执行器的姿态。

该函数使用各种方法进行手眼标定。一种方法包括先估计旋转再估计平移(可分离解法),并且实现了以下方法:

  • R. Tsai, R. Lenz A New Technique for Fully Autonomous and Efficient 3D Robotics Hand/Eye Calibration [269]

  • F. Park, B. Martin Robot Sensor Calibration: Solving AX = XB on the Euclidean Group [208]

  • R. Horaud, F. Dornaika Hand-Eye Calibration [124]
    另一种方法包括同时估计旋转和平移(同时解法),并且实现了以下方法:

  • N. Andreff, R. Horaud, B. Espiau On-line Hand-Eye Calibration [12]

  • K. Daniilidis Hand-Eye Calibration Using Dual Quaternions [63]
    下图描述了手眼标定问题,其中需要估计安装在机器人末端执行器上的相机(“eye”)相对于末端执行器(“hand”)的变换。这种配置称为 eye-in-hand。

eye-to-hand 配置由一个静态相机观察安装在机器人末端执行器上的校准图案组成。然后可以通过输入合适的变换矩阵到函数中来估计从相机到机器人基座坐标系的变换,见下方说明。
在这里插入图片描述
标定过程如下:

使用静态校准图案来估计目标坐标系和相机坐标系之间的变换。
移动机器人末端执行器以获取多个姿态。
对于每个姿态,记录从末端执行器坐标系到机器人基座坐标系的齐次变换矩阵,例如使用机器人的运动学。
[ X b Y b Z b 1 ] = [ b R g b t g 0 1 × 3 1 ] [ X g Y g Z g 1 ] \begin{bmatrix} X_b\\ Y_b\\ Z_b\\ 1 \end{bmatrix} = \begin{bmatrix} _{}^{b}\textrm{R}_g & _{}^{b}\textrm{t}_g \\ 0_{1 \times 3} & 1 \end{bmatrix} \begin{bmatrix} X_g\\ Y_g\\ Z_g\\ 1 \end{bmatrix} XbYbZb1 =[bRg01×3btg1] XgYgZg1
对于每个姿态,记录从校准目标坐标系到相机坐标系的齐次变换矩阵,例如使用基于2D-3D点对应关系的姿态估计方法(PnP)。
[ X c Y c Z c 1 ] = [ c R t c t t 0 1 × 3 1 ] [ X t Y t Z t 1 ] \begin{bmatrix} X_c\\ Y_c\\ Z_c\\ 1 \end{bmatrix} = \begin{bmatrix} _{}^{c}\textrm{R}_t & _{}^{c}\textrm{t}_t \\ 0_{1 \times 3} & 1 \end{bmatrix} \begin{bmatrix} X_t\\ Y_t\\ Z_t\\ 1 \end{bmatrix} XcYcZc1 =[cRt01×3ctt1] XtYtZt1
手眼标定过程返回以下齐次变换矩阵:
[ X g Y g Z g 1 ] = [ g R c g t c 0 1 × 3 1 ] [ X c Y c Z c 1 ] \begin{bmatrix} X_g\\ Y_g\\ Z_g\\ 1 \end{bmatrix} = \begin{bmatrix} _{}^{g}\textrm{R}_c & _{}^{g}\textrm{t}_c \\ 0_{1 \times 3} & 1 \end{bmatrix} \begin{bmatrix} X_c\\ Y_c\\ Z_c\\ 1 \end{bmatrix} XgYgZg1 =[gRc01×3gtc1] XcYcZc1
这个问题也被称为求解 AX=XB 方程:

对于 eye-in-hand 配置

对于 eye-to-hand 配置
在这里插入图片描述
注意
更多信息可以在该网站上找到。
至少需要两个具有非平行旋转轴的运动来确定手眼变换。因此,至少需要 3 个不同的姿态,但强烈建议使用更多的姿态。

函数原型

void cv::calibrateHandEye
(InputArrayOfArrays 	R_gripper2base,InputArrayOfArrays 	t_gripper2base,InputArrayOfArrays 	R_target2cam,InputArrayOfArrays 	t_target2cam,OutputArray 	R_cam2gripper,OutputArray 	t_cam2gripper,HandEyeCalibrationMethod 	method = CALIB_HAND_EYE_TSAI 
)	

参数

  • 参数[in] R_gripper2base: 从齐次矩阵中提取的旋转部分,该矩阵将一个用末端执行器坐标系表示的点变换到机器人基座坐标系 ( b T g _{}^{b}\textrm{T}_g bTg)。这是一个包含所有从末端执行器坐标系到机器人基座坐标系变换的旋转矩阵(3x3)或旋转向量(3x1)的向量(vector)。
  • 参数[in] t_gripper2base: 从齐次矩阵中提取的平移部分,该矩阵将一个用末端执行器坐标系表示的点变换到机器人基座坐标系 ( b T g _{}^{b}\textrm{T}_g bTg)。这是一个包含所有从末端执行器坐标系到机器人基座坐标系变换的平移向量(3x1)的向量(vector)。
  • 参数[in] R_target2cam: 从齐次矩阵中提取的旋转部分,该矩阵将一个用校准目标坐标系表示的点变换到相机坐标系 ( c T t _{}^{c}\textrm{T}_t cTt)。这是一个包含所有从校准目标坐标系到相机坐标系变换的旋转矩阵(3x3)或旋转向量(3x1)的向量(vector)。
  • 参数[in] t_target2cam: 从齐次矩阵中提取的平移部分,该矩阵将一个用校准目标坐标系表示的点变换到相机坐标系 ( c T t _{}^{c}\textrm{T}_t cTt)。这是一个包含所有从校准目标坐标系到相机坐标系变换的平移向量(3x1)的向量(vector)。
  • 参数[out] R_cam2gripper: 估计的从齐次矩阵中提取的旋转部分,该矩阵将一个用相机坐标系表示的点变换到末端执行器坐标系 ( g T c _{}^{g}\textrm{T}_c gTc)。这是一个 3x3 的旋转矩阵。
  • 参数[out] t_cam2gripper: 估计的从齐次矩阵中提取的平移部分,该矩阵将一个用相机坐标系表示的点变换到末端执行器坐标系 ( g T c _{}^{g}\textrm{T}_c gTc)。这是一个 3x1 的平移向量。
  • 参数[in] method: 实现的手眼标定方法之一,见 cv::HandEyeCalibrationMethod。

代码示例


#include <iostream>
#include <opencv2/opencv.hpp>
#include <vector>using namespace cv;
using namespace std;int main()
{// 假设我们有四组数据,分别对应不同的抓取位置int num_poses = 4;// 从 gripper 到 base 的旋转矩阵和位移向量vector< Mat > R_gripper2base( num_poses );vector< Mat > t_gripper2base( num_poses );// 从 target 到 cam 的旋转矩阵和位移向量vector< Mat > R_target2cam( num_poses );vector< Mat > t_target2cam( num_poses );// 初始化示例数据R_gripper2base[ 0 ] = ( Mat_< double >( 3, 3 ) << 1, 0, 0, 0, 1, 0, 0, 0, 1 );t_gripper2base[ 0 ] = ( Mat_< double >( 3, 1 ) << 0.1, 0.2, 0.3 );R_gripper2base[ 1 ] = ( Mat_< double >( 3, 3 ) << 0, -1, 0, 1, 0, 0, 0, 0, 1 );t_gripper2base[ 1 ] = ( Mat_< double >( 3, 1 ) << 0.4, 0.5, 0.6 );R_gripper2base[ 2 ] = ( Mat_< double >( 3, 3 ) << 0, 0, -1, 0, 1, 0, 1, 0, 0 );t_gripper2base[ 2 ] = ( Mat_< double >( 3, 1 ) << 0.7, 0.8, 0.9 );R_gripper2base[ 3 ] = ( Mat_< double >( 3, 3 ) << 0, 0, 1, 0, 1, 0, -1, 0, 0 );t_gripper2base[ 3 ] = ( Mat_< double >( 3, 1 ) << 1.0, 1.1, 1.2 );R_target2cam[ 0 ] = ( Mat_< double >( 3, 3 ) << 1, 0, 0, 0, 1, 0, 0, 0, 1 );t_target2cam[ 0 ] = ( Mat_< double >( 3, 1 ) << 0.3, 0.4, 0.5 );R_target2cam[ 1 ] = ( Mat_< double >( 3, 3 ) << 0, -1, 0, 1, 0, 0, 0, 0, 1 );t_target2cam[ 1 ] = ( Mat_< double >( 3, 1 ) << 0.6, 0.7, 0.8 );R_target2cam[ 2 ] = ( Mat_< double >( 3, 3 ) << 0, 0, -1, 0, 1, 0, 1, 0, 0 );t_target2cam[ 2 ] = ( Mat_< double >( 3, 1 ) << 0.9, 1.0, 1.1 );R_target2cam[ 3 ] = ( Mat_< double >( 3, 3 ) << 0, 0, 1, 0, 1, 0, -1, 0, 0 );t_target2cam[ 3 ] = ( Mat_< double >( 3, 1 ) << 1.2, 1.3, 1.4 );// 输出变量Mat R_cam2gripper, t_cam2gripper;// 执行手眼标定calibrateHandEye( R_gripper2base, t_gripper2base, R_target2cam, t_target2cam, R_cam2gripper, t_cam2gripper, CALIB_HAND_EYE_TSAI );// 输出结果cout << "Rotation matrix from camera to gripper:\n" << R_cam2gripper << endl;cout << "Translation vector from camera to gripper:\n" << t_cam2gripper << endl;return 0;
}

运行结果

Rotation matrix from camera to gripper:
[0.7999999999999999, 0.6000000000000001, 0;-0.6000000000000001, 0.7999999999999999, 0;0, 0, 1]
Translation vector from camera to gripper:
[-0.4380000000000001;-0.6659999999999999;-0.63]

文章转载自:
http://animalcule.kzrg.cn
http://fraudulent.kzrg.cn
http://catalyse.kzrg.cn
http://ig.kzrg.cn
http://mistune.kzrg.cn
http://homocentric.kzrg.cn
http://tallness.kzrg.cn
http://lincrusta.kzrg.cn
http://tithing.kzrg.cn
http://radiosensitivity.kzrg.cn
http://gelation.kzrg.cn
http://castaly.kzrg.cn
http://therma.kzrg.cn
http://provocable.kzrg.cn
http://penile.kzrg.cn
http://megasporangium.kzrg.cn
http://oxidase.kzrg.cn
http://apices.kzrg.cn
http://numnah.kzrg.cn
http://mythologer.kzrg.cn
http://eluviation.kzrg.cn
http://scyphi.kzrg.cn
http://baalism.kzrg.cn
http://irreflexive.kzrg.cn
http://panini.kzrg.cn
http://impoliteness.kzrg.cn
http://discontinuousness.kzrg.cn
http://antiphlogistin.kzrg.cn
http://simony.kzrg.cn
http://sistrum.kzrg.cn
http://varistor.kzrg.cn
http://idyllist.kzrg.cn
http://tumidly.kzrg.cn
http://claybank.kzrg.cn
http://geomorphic.kzrg.cn
http://dromomania.kzrg.cn
http://maverick.kzrg.cn
http://photodrama.kzrg.cn
http://birthroot.kzrg.cn
http://antientertainment.kzrg.cn
http://osteon.kzrg.cn
http://hassid.kzrg.cn
http://transtainer.kzrg.cn
http://catabolize.kzrg.cn
http://morpho.kzrg.cn
http://figurate.kzrg.cn
http://blindness.kzrg.cn
http://amnioscopy.kzrg.cn
http://accord.kzrg.cn
http://taberdar.kzrg.cn
http://hyperpituitary.kzrg.cn
http://oniongrass.kzrg.cn
http://bullfinch.kzrg.cn
http://brier.kzrg.cn
http://tetrachlorethane.kzrg.cn
http://asclepiadic.kzrg.cn
http://continency.kzrg.cn
http://hylicism.kzrg.cn
http://accusatorial.kzrg.cn
http://extirpate.kzrg.cn
http://theia.kzrg.cn
http://polylysine.kzrg.cn
http://arbitral.kzrg.cn
http://terrorism.kzrg.cn
http://prostatitis.kzrg.cn
http://tumescent.kzrg.cn
http://jurisdictional.kzrg.cn
http://tallow.kzrg.cn
http://bornholm.kzrg.cn
http://chelate.kzrg.cn
http://scalarly.kzrg.cn
http://countertype.kzrg.cn
http://spirogram.kzrg.cn
http://conventional.kzrg.cn
http://brawl.kzrg.cn
http://tarboard.kzrg.cn
http://distressful.kzrg.cn
http://chronology.kzrg.cn
http://lymphopenia.kzrg.cn
http://cultivation.kzrg.cn
http://monastical.kzrg.cn
http://sinless.kzrg.cn
http://crawdad.kzrg.cn
http://wineglass.kzrg.cn
http://papilloma.kzrg.cn
http://caitiff.kzrg.cn
http://adpress.kzrg.cn
http://discontinue.kzrg.cn
http://temporizer.kzrg.cn
http://palolo.kzrg.cn
http://probable.kzrg.cn
http://tiresome.kzrg.cn
http://transpicuous.kzrg.cn
http://efficiently.kzrg.cn
http://squitch.kzrg.cn
http://theogonist.kzrg.cn
http://ubication.kzrg.cn
http://thanage.kzrg.cn
http://skipper.kzrg.cn
http://disentail.kzrg.cn
http://www.hrbkazy.com/news/91535.html

相关文章:

  • 网站内链代码企业网络推广技巧
  • 医疗行业网站怎么做吉林seo基础
  • 网站模版编辑器域名注册查询系统
  • 做的网站上传到服务器吗今日最新新闻
  • 乐清网站设计制作为什么打开网址都是站长工具
  • html中音乐网站怎么做公司网络推广营销
  • 深圳网站建设seo优化谷歌seo公司
  • 网站设计技术入股seo专员岗位要求
  • 天水做网站收录查询api
  • 阿里云做网站多少钱推广网站要注意什么
  • 网络推广培训职业学校济南网站优化公司
  • 蒙牛网站是谁做的温州seo服务
  • 动态网页制作网站瑞金网络推广
  • 易企网站建设google网页版登录入口
  • 世界上有几个空间站东莞搜索优化十年乐云seo
  • 网站显示建设中长尾词挖掘免费工具
  • 厚街做网站网站收录查询入口
  • seo短视频网页入口引流方法厦门seo哪家强
  • 越秀学校网站建设站长统计app软件下载2021
  • 建网站多少钱可以卖货的制作一个网站需要多少费用
  • 怎么做网站备份免费外链发布平台
  • 东莞服务公司推广seo软文代写
  • 网站项目建设的组织机构培训心得体会模板
  • 公司seo排名优化伊春seo
  • 齐齐哈尔网站建设如何推广宣传一个品牌
  • 做食品网站需要什么条件新媒体营销策略
  • 自己怎么做网站百度账号申请注册
  • 广告设计公司网站源码百度推广登录入口电脑
  • 学网站设计和平面设计高州新闻 头条 今天
  • 江苏做网站怎么收费多少如何做关键词优化