位置あわせをする際の位置・姿勢算出

Namespace: fvalgcli
Assembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)

Syntax

C#
public static int fnFIE_xyqn_trans_execute(
	FHANDLE hcalib,
	DPNT_T_PTR base_on_cam,
	DPNT_T_PTR mark_on_cam,
	double xo,
	double yo,
	double qo,
	ref double x,
	ref double y,
	ref double q
)
Visual Basic
Public Shared Function fnFIE_xyqn_trans_execute ( 
	hcalib As FHANDLE,
	base_on_cam As DPNT_T_PTR,
	mark_on_cam As DPNT_T_PTR,
	xo As Double,
	yo As Double,
	qo As Double,
	ByRef x As Double,
	ByRef y As Double,
	ByRef q As Double
) As Integer

Parameters

hcalib
Type: fvalgcli..::..FHANDLE
キャリブレーションシステムのハンドル
base_on_cam
Type: fvalgcli..::..DPNT_T_PTR
カメラ座標系上のnチャンネル分の基準座標配列
mark_on_cam
Type: fvalgcli..::..DPNT_T_PTR
カメラ座標系上のnチャンネル分のマーク座標配列
xo
Type: System..::..Double
テーブル現在位置X座標(mm)
yo
Type: System..::..Double
テーブル現在位置Y座標(mm)
qo
Type: System..::..Double
テーブル現在位置θ座標(rad)
x
Type: System..::..Double%
テーブル移動後X座標(mm)
y
Type: System..::..Double%
テーブル移動後Y座標(mm)
q
Type: System..::..Double%
テーブル移動後θ座標(rad)

Return Value

Type: Int32
以下のエラーコードを返します。

エラーコード:
f_err内容
F_ERR_NONE正常終了
F_ERR_INVALID_OBJECT 不正なオブジェクトが渡された
  • base_on_cam , mark_on_cam , x , y または q が IntPtr.Zero
  • 事前に fnFIE_xyqn_calc_table() が実行されていない
F_ERR_NOMEMORYメモリ不足エラー
F_ERR_NO_LICENCEライセンスエラー、または未初期化エラー

Remarks

具体的な使用方法についてはサンプルプロジェクトの xyqn をご参照ください。 サンプルプロジェクトはインストーラでは配布されませんので、 弊社ホームページからダウンロードしてください。

Examples

C# Copy imageCopy
//    $Revision: 1.1 $

using System;
using System.Collections.Generic;
using System.Text;
using fvalgcli;

namespace TC
{
    public partial class FIE
    {
        /// <summary>
        /// 位置あわせをする際の位置・姿勢算出
        /// </summary>
        /// <param name="hCalib"></param>
        public void fnFIE_xyqn_trans_execute(FHANDLE hCalib)
        {
            DPNT_T_PTR base_on_cam = DPNT_T_PTR.Zero;
            DPNT_T_PTR mark_on_cam = DPNT_T_PTR.Zero;
            double xo = 50;
            double yo = 50;
            double qo = 30;
            double dx = 0;
            double dy = 0;
            double dq = 0;

            try
            {
                base_on_cam = DPNT_T_PTR.alloc(2);
                base_on_cam[0] = DPNT_T.init(20, 20);
                base_on_cam[1] = DPNT_T.init(30, 30);

                mark_on_cam =  DPNT_T_PTR.alloc(2);
                mark_on_cam[0] = DPNT_T.init(40, 40);
                mark_on_cam[1] = DPNT_T.init(50, 50);

                int status = api.fnFIE_xyqn_trans_execute(hCalib, base_on_cam, mark_on_cam, xo, yo, qo, ref dx, ref dy, ref dq);
                Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "fnFIE_xyqn_trans_execute: {0}", (f_err)status);
                Console.WriteLine("fnFIE_xyqn_trans_execute");
                Console.WriteLine("x={0}, y={1}, q={2}", dx, dy, dq);
            }
            finally
            {
                base_on_cam.Dispose();
                mark_on_cam.Dispose();
            }
        }
    }
}


Visual Basic Copy imageCopy
'    $Revision: 1.1 $

Imports System.Collections.Generic
Imports System.Text
Imports fvalgcli

Public Partial Class FIE
    ''' <summary>
    ''' 位置あわせをする際の位置・姿勢算出
    ''' </summary>
    ''' <param name="hCalib"></param>
    Public Sub fnFIE_xyqn_trans_execute(hCalib As FHANDLE)
        Dim base_on_cam As DPNT_T_PTR = DPNT_T_PTR.Zero
        Dim mark_on_cam As DPNT_T_PTR = DPNT_T_PTR.Zero
        Dim xo As Double = 50
        Dim yo As Double = 50
        Dim qo As Double = 30
        Dim dx As Double = 0
        Dim dy As Double = 0
        Dim dq As Double = 0

        Try
            base_on_cam = DPNT_T_PTR.alloc(2)
            base_on_cam(0) = DPNT_T.init(20, 20)
            base_on_cam(1) = DPNT_T.init(30, 30)

            mark_on_cam = DPNT_T_PTR.alloc(2)
            mark_on_cam(0) = DPNT_T.init(40, 40)
            mark_on_cam(1) = DPNT_T.init(50, 50)

            Dim status As Integer = api.fnFIE_xyqn_trans_execute(hCalib, base_on_cam, mark_on_cam, xo, yo, qo, _
                dx, dy, dq)
            Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "fnFIE_xyqn_trans_execute: {0}", CType(status, f_err))
            Console.WriteLine("fnFIE_xyqn_trans_execute")
            Console.WriteLine("x={0}, y={1}, q={2}", dx, dy, dq)
        Finally
            base_on_cam.Dispose()
            mark_on_cam.Dispose()
        End Try
    End Sub
End Class

See Also