[32/64bit] Robot-World/Hand-Eye Calibrationを計算します。\(_{}^{w}\textrm{T}_b\), \(_{}^{c}\textrm{T}_g\)
calib3d_calibrateRobotWorldHandEye_OutputArray p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13
p1 = sptr : IntPtr[] R_world2camMats p2 = int : int R_world2camMatsSize p3 = sptr : IntPtr[] t_world2camMats p4 = int : int t_world2camMatsSize p5 = sptr : IntPtr[] R_base2gripperMats p6 = int : int R_base2gripperMatsSize p7 = sptr : IntPtr[] t_base2gripperMats p8 = int : int t_base2gripperMatsSize p9 = sptr : IntPtr R_base2world p10 = sptr : IntPtr t_base2world p11 = sptr : IntPtr R_gripper2cam p12 = sptr : IntPtr t_gripper2cam p13 = int : int method
(プラグイン / モジュール : OpenCvSharpExtern.dll)
この関数は,様々な方法を用いて,Robot-World/Hand-Eyeのキャリブレーションを行います.一つの方法は,回転と平行移動を推定することです(分離可能な解):M.Shah, Solving the robot-world/hand-eye calibration problem using the kronecker product [221]もう1つの方法は,回転と平行移動を同時に推定する方法(同時解法)で,次のように実装されています:A. Li, L. Wang, and D. Wu, Simultaneous robot-world/Hand-Eye calibration problem using the kronecker product [221].A. Li, L. Wang, and D. Wu, Simultaneous robot-world and hand-eye calibration using dual-quaternions and kronecker product [143]次の図は、ロボットとワールドフレームの間の変換、およびロボットグリッパー(「ハンド」)とロボットエンドエフェクタに取り付けられたカメラ(「アイ」)の間の変換を推定しなければならない、ロボット-ワールド/ハンド-アイのキャリブレーション問題を説明しています。 ロボットのグリッパーを動かして,複数のポーズを取得する 各ポーズについて、グリッパーフレームとロボットベースフレームの間の同次変換が、例えばロボットキネマティクスを用いて記録されます。 \キャリブレーションの手順は以下の通りです。X_g\ Y_g\ Z_g\ 1 end{bmatrix} = ????? )_{}^{g}\\{R}/b & _{}^{g}\\{t}/b\\\\♪♪♪♪♪♪♪♪♪~\] 各ポーズについて、キャリブレーション対象フレーム(ワールドフレーム)とカメラフレームの間の同次変換を、例えば、2D-3D点対応からのポーズ推定法(PnP)を用いて記録する。 \????? )X_c\ Y_citness Z_citness 1 ??? -? ??? = ??? -? ??? )_{}^{c}\\{R}_w & _{}^{c}\\{t}_w\\\\X w\\ Y wadows\Robot-World/Hand-Eyeキャリブレーション手順では、以下のような同次変換が行われます。X_w\ Y_w\ Z_w\ 1 end{bmatrix} = ????? )♪♪♪♪♪~\\\\♪♪♪♪♪♪♪♪♪~\♪♪♪♪♪~♪♪♪♪♪♪♪~_{}^{c}\\{R}_g & _{}^{c}\{t}_g\\\\X'g\ Y'g\ Z'g\\ 1 end{bmatrix}.この問題は別名、\\\\\\\\\\\\\\\\\\\\\とも呼ばれます。 \♪♪♪♪♪♪♪~ \♪♪~ \Note最低でも3つの測定値が必要です(入力ベクトルのサイズは3以上です)。 元関数名(C#): calib3d_calibrateRobotWorldHandEye_OutputArray 元DLLエクスポート名: calib3d_calibrateRobotWorldHandEye_OutputArray 参照元CSファイル: Internal\PInvoke\NativeMethods\calib3d\NativeMethods_calib3d.cs ▼ C言語側関数定義
CVAPI(ExceptionStatus) calib3d_calibrateRobotWorldHandEye_OutputArray( cv::Mat** R_world2camMats, int32_t R_world2camMatsSize, cv::Mat** t_world2camMats, int32_t t_world2camMatsSize, cv::Mat** R_base2gripperMats, int32_t R_base2gripperMatsSize, cv::Mat** t_base2gripperMats, int32_t t_base2gripperMatsSize, cv::_OutputArray* R_base2world, cv::_OutputArray* t_base2world, cv::_OutputArray* R_gripper2cam, cv::_OutputArray* t_gripper2cam, int32_t method) { BEGIN_WRAP std::vector<cv::Mat> R_gripper2base; std::vector<cv::Mat> t_gripper2base; std::vector<cv::Mat> R_target2cam; std::vector<cv::Mat> t_target2cam; toVec(R_world2camMats, R_world2camMatsSize, R_gripper2base); toVec(t_world2camMats, t_world2camMatsSize, t_gripper2base); toVec(R_base2gripperMats, R_base2gripperMatsSize, R_target2cam); toVec(t_base2gripperMats, t_base2gripperMatsSize, t_target2cam); cv::calibrateRobotWorldHandEye( R_gripper2base, t_gripper2base, R_target2cam, t_target2cam, *R_base2world, *t_base2world, *R_gripper2cam, *t_gripper2cam, static_cast<cv::RobotWorldHandEyeCalibrationMethod>(method)); END_WRAP }
プラグイン / モジュール | OpenCvSharpExtern.dll |
バージョン | 1.00 |
作成日 | 2021/11/30 |
著作者 | inovia |
URL | https://hsp.moe/ |
備考 | #include "OpenCvSharpExtern32.as"
#include "OpenCvSharpExtern64.as" 使用するHSPランタイムのビット数に合わせたインクルードファイルを使用すること |
タイプ | OpenCVSharpラッパーDLL |
グループ | NativeMethods_calib3d |
対応環境 |
|
hs ファイル | hsphelp\OpenCvSharpExtern.hs |