概要
本ガイドは、カメラデバイスを統合する開発者向けです。M4、M4 Mega、M4 Pro、V1 Pro、S2、S2 Max、H3 シリーズ製品の Camera SDK API を説明します。SDK は x86 Windows、x86 Linux、Arm Linux システムで動作します。 Camera SDK は、統一されたデバイスアクセスおよびパラメーター設定 API を提供します。深度、強度、点群、RGB データの同期・非同期取得に対応します。一部のカメラモデルでは、障害物回避、ドッキング、自己位置推定のデータも提供します。サンプルと API 説明は製品に同梱される SDK バージョンに基づいています。使用可能なパラメーターは、製品、ファームウェア、SDK のバージョンによって異なる場合があります。
環境設定
推奨ホスト構成
接続とインストール
ハードウェア接続
図 2.1 のように、カメラを外部 24V 電源へ接続し、ネットワークケーブルでホストコンピューターへ接続します。 図 2.1 カメラ接続図ネットワーク設定
-
カメラの既定 IP ネットワークセグメントは
192.168.100.*です。 -
ホストコンピューターで、カメラに接続するネットワークポートの IP アドレスを
192.168.100.xセグメント内に設定し、デバイスと重複しないことを確認します。サブネットマスクは255.255.255.0です。 - カメラ接続時は、SDK を実行するホストによるカメラデータパケットの遮断を防ぐため、ファイアウォールを無効にすることを推奨します。
- Linux のネットワーク設定は Windows と同じです。ファイアウォールのコマンドはディストリビューションによって異なります。Ubuntu では次を実行します。
SDK をインストールする
Windows
インストールパッケージを開き、Lanxin-MRDVS-xxx.exe をインストールします。すべてのユーザー向けにインストールする場合は、管理者権限でインストールパッケージを実行してください。以下にインストール手順を示します。
Linux
- パッケージを展開し、インストールスクリプトを実行します。
/opt/Lanxin-MRDVS にインストールし、現在のユーザーの環境変数を設定します。別のユーザーでプログラムを実行する場合は、そのユーザーでスクリプトを再実行するか、そのユーザーの ~/.bashrc に次の行を追加します。
Camera SDK を使用する
ディレクトリ構成
Camera SDK ディレクトリには、次の内容が含まれます。
Documentには SDK の各種ドキュメントが含まれます。FirmWareにはカメラのファームウェア更新パッケージが含まれます。Sampleには各種プログラミング言語で Camera SDK を使用するサンプルコードが含まれます。SDKには Camera SDK のヘッダーファイルおよびライブラリファイルが含まれます。
開発ワークフロー
プロジェクトを設定する
C/C++ による SDK 統合を推奨します。SDK には CMake ビルド用のCMakeLists.txt が含まれ、Sample フォルダーには複数言語のサンプルがあります。詳細は Sample の例と Linux サンプルユーザーガイドを参照してください。
同期呼び出しフロー
非同期呼び出しフロー
呼び出し要件
パラメーター型と対応 API
LX_INTで始まる列挙型は、DcSetIntValueまたはDcGetIntValueで INT 型パラメーターを設定・取得します。LX_FLOATで始まる列挙型は、DcSetFloatValueまたはDcGetFloatValueで FLOAT 型パラメーターを設定・取得します。LX_BOOLで始まる列挙型は、DcSetBoolValueまたはDcGetBoolValueで BOOL 型パラメーターを設定・取得します。LX_STRINGで始まる列挙型は、DcSetStringValueまたはDcGetStringValueで文字列型パラメーターを設定・取得します。LX_CMDで始まる列挙型のコマンドは、DcSetCmdで実行します。LX_PTRで始まる列挙型は、DcGetPtrValueでポインター型の結果を取得します。
API の前提条件
1. ストリームが開始されている場合、または動作モード(LX_INT_WORK_MODE)が通常開放モードの場合、次の機能は設定できません。- DcSetRoi
- LX_INT_3D_BINNING_MODE;
- LX_INT_2D_BINNING_MODE;
- LX_BOOL_ENABLE_2D_TO_DEPTH;
- LX_BOOL_ENABLE_MULTI_EXPOSURE_HDR;
- LX_BOOL_ENABLE_MULTI_MACHINE;
- LX_INT_TRIGGER_MODE;
- LX_INT_CALCULATE_UP;
- LX_BOOL_ENABLE_HDR;
- LX_BOOL_ENABLE_TOF_DEPTH_CALIBE;
- LX_BOOL_ENABLE_SYNC_FRAME
- LX_INT_SAVE_PARAMS_GROUP
- LX_INT_TOF_FREQMODE
- LX_BOOL_ENABLE_MULTI_EXPOSURE_HDR ;
- LX_INT_FIRST_EXPOSURE;
- LX_INT_SECOND_EXPOSURE;
- LX_INT_THIRD_EXPOSURE;
- LX_INT_GAIN;
- LX_INT_3D_AUTO_EXPOSURE_LEVEL
- (LX_INT_3D_AUTO_EXPOSURE_MIN)
- LX_INT_2D_MANUAL_EXPOSURE
6. 2D 自動露出(LX_BOOL_ENABLE_2D_AUTO_EXPOSURE)が無効な場合、次の機能列挙値は操作できません。
- LX_INT_2D_AUTO_EXPOSURE_LEVEL;
7.特殊フィルタリングモードでは、次の設定はできません。
- LX_INT_FILTER_SMOOTH_LEVEL LX_INT_FILTER_NOISE_LEVEL
- LX_INT_FILTER_TIME_LEVEL
8.2D 歪み補正を有効にする場合は、先に RGB-D アラインメントを有効にしてください。
- LX_BOOL_ENABLE_2D_TO_DEPTH
9.S2 以外のデバイスで内蔵アルゴリズムを有効にする場合は、先に ToF アルゴリズムを設定します。アルゴリズムパラメーターは、内蔵アルゴリズム(LX_INT_ALGORITHM_MODE)が有効な場合にのみ設定できます。
- (LX_STRING_ALGORITHM_PARAMS)
10.点群データ(LX_PTR_XYZ_DATA)を取得するには、先に深度マップを有効にする必要があります。
- (LX_BOOL_ENABLE_3D_DEPTH_STREAM)
データ型
5.1 LX_STATE
機能: SDK インターフェース関数の戻り値ステータスコード5.2 LX_DATA_TYPE
機能: データ形式。3D 強度マップと深度マップではデータ形式が異なります。データポインターを取得するには、対応する機能を使用してください。5.3 LX_BINNING_MODE
機能: ビニングモード5.4 LX_STRUCT_LIGHT_CODE_MODE
機能:5.5 LX_ALGORITHM_MODE
機能:5.6 LX_CAMERA_WORK_MODE
機能:5.7 LX_TRIGGER_MODE
機能:5.8 LX_CAMERA_FEATURE
機能: 各種の読み取り・書き込み可能なパラメーター5.8.1 int type parameters
5.8.1.1 一般パラメーター
5.8.1.2 3D 画像パラメーター
5.8.1.4 2D 画像パラメーター
5.8.1.5 Trigger parameters
5.8.1.6 Filter parameters
5.8.2 float type parameters
5.8.3 bool type parameter
5.8.4 string type parameters
5.8.5 Command type parameters
5.8.6 ptr type parameters
5.9 LxDeviceInfo
機能: デバイス属性情報構造体5.10 LxIntValueInfo
機能: デバイス属性情報構造体5.11 LxFloatValueInfo
機能: デバイス属性情報構造体5.12 LX_DEVICE_TYPE
機能: デバイスタイプ5.13 LX_OPEN_MODE
機能: デバイスタイプ5.14 FrameDataInfo
機能: 画像表示情報構造体5.15 FrameInfo
機能: データフレーム情報構造体APIリファレンス
APIプロトタイプはSDKヘッダーと配布済みSDKのバージョンで定義されます。特記がない限り、
LX_SUCCESS は呼び出し成功を示します。6.1 カメラの検索、接続、切断
6.1.1 DcGetDeviceList
関数プロトタイプ: 機能: 対応するカメラの一覧を取得します。 パラメータ:- [out]devlist:検出されたカメラ一覧です。
- [out]devnum:検出されたカメラ数です。
Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。
**備考:**メモリは内部で管理されるため、外部での確保は不要です。検索のたびに前回の内容が消去されるため、呼び出し側でスレッド安全性を確保してください。
6.1.2 DcOpenDevice
関数プロトタイプ:
- [in]open_mode:オープンモードです。詳細は
OpenModeを参照してください。 - [in]param:オープン方法に応じたパラメータです。
- [out]handle:接続成功時に返されるデバイスハンドルです。以降のAPI呼び出しで使用します。
- [out]info:接続成功時に返されるカメラ詳細情報です。
Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。
注:渡すパラメータが有効であることを確認してください。
6.1.3 DcCloseDevice
関数プロトタイプ:
- [in]handle:デバイスハンドル
Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。
注:渡すパラメータが有効であることを確認してください。
6.2 ストリーミングの開始と停止
6.2.1 DcStartStream
関数プロトタイプ:
- [in]handle:デバイスハンドル
Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。
注:渡すパラメータが有効であることを確認してください。
6.2.2 DcStopStream
関数プロトタイプ:
- [in]handle:デバイスハンドル
Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。
注:渡すパラメータが有効であることを確認してください。
6.3 カメラパラメータの取得と設定
6.3.1 DcSetIntValue
関数プロトタイプ:
- [in]handle:デバイスハンドル
- [in]cmd reference LX_CAMERA_FEATURE
- [in]value:設定するパラメータ値です。
Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。
注:渡すパラメータが有効であることを確認してください。
6.3.2 DcGetIntValue
関数プロトタイプ:
- [in]handle:デバイスハンドル
- [in]cmd reference LX_CAMERA_FEATURE
- [out]value:パラメータ構造体を返します。最大値、最小値、現在値などを含みます。
Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。
注:渡すパラメータが有効であることを確認してください。
6.3.3 DcSetFloatValue
関数プロトタイプ:
- [in]handle:デバイスハンドル
- [in]cmd reference LX_CAMERA_FEATURE
- [in]value:設定するパラメータ値です。
Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。
注:渡すパラメータが有効であることを確認してください。
6.3.4 DcGetFloatValue
関数プロトタイプ:
- [in]handle:デバイスハンドル
- [in]cmd reference LX_CAMERA_FEATURE
- [out]value:パラメータ構造体を返します。最大値、最小値、現在値などを含みます。
Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。
注:渡すパラメータが有効であることを確認してください。
6.3.5 DcSetBoolValue
関数プロトタイプ:
- [in]handle:デバイスハンドル
- [in]cmd reference LX_CAMERA_FEATURE
- [in]value:設定するパラメータ値です。
Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。
注:渡すパラメータが有効であることを確認してください。
6.3.6 DcGetBoolValue
関数プロトタイプ:
- [in]handle:デバイスハンドル
- [in]cmd reference LX_CAMERA_FEATURE
- [out]value:パラメータを返します。
Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。
注:渡すパラメータが有効であることを確認してください。
6.3.7 DcSetStringValue
関数プロトタイプ:
- [in]handle:デバイスハンドル
- [in]cmd refer to LX_CAMERA_FEATURE
- [in]value:設定するパラメータ値です。
Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。
注:渡すパラメータが有効であることを確認してください。
6.3.8 DcGetStringValue
関数プロトタイプ:
- [in]handle:デバイスハンドル
- [in]cmd reference LX_CAMERA_FEATURE
- [out]value:外部メモリ確保なしでパラメータを返します。
Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。
注:渡すパラメータが有効であることを確認してください。
6.3.9 DcGetPtrValue
関数プロトタイプ:
- [in]handle:デバイスハンドル
- [in]cmd reference LX_CAMERA_FEATURE
- [out]value:外部メモリ確保なしでパラメータを返します。
Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。
注:渡すパラメータが有効であることを確認してください。
6.3.10 DcSetCmd
関数プロトタイプ:
- [in]handle:デバイスハンドル
- [in]cmd reference LX_CAMERA_FEATURE
Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。
注:渡すパラメータが有効であることを確認してください。
6.4 点群の保存
6.4.1 DcSaveXYZ
関数プロトタイプ:
- handle:デバイスハンドルです。
- filename:ファイル名です。
txt、ply、pcd形式に対応します。txtは画像順にすべてのデータを保存し、plyとpcdはゼロ以外のデータのみ保存します。
Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。
注:渡すパラメータが有効であることを確認してください。
6.5 特殊制御
6.5.1 DcSpecialControl
関数プロトタイプ:
LX_CAMERA_FEATURE で定義される特別操作です。
パラメータ:
- [in]handle:デバイスハンドル
- [in]param operation
- [inout]value:設定時は入力パラメータ、取得時は出力パラメータです。外部メモリ確保は不要です。
Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。
注:渡すパラメータが有効であることを確認してください。
6.6 ROIとパラメータパスの設定
6.6.1 DcSetRoI
関数プロトタイプ:
- [in]handle:デバイスハンドル
- [in]offsetx:開始位置の水平方向オフセット(ピクセル)です。
- [in]offsety:開始位置の垂直方向オフセット(ピクセル)です。
- [in]widthroi width of the target area
- [in]heightroi height of the target area
- [in]type0-3D image 1-2D image
Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。
注:渡すパラメータが有効であることを確認してください。
6.7 カメラIPの設定
6.7.1 DcSetCameraIp
関数プロトタイプ: 機能: カメラのIPアドレス、サブネットマスク、ゲートウェイを設定します。 パラメータ:- [in]handle:デバイスハンドル,
- [in]ip:デバイスIPアドレスです。
- [in]netmask:サブネットマスクです。空の場合は内部既定値
255.255.0.0を使用します。 - [in]gateway:ゲートウェイIPです。空の場合、IPアドレスの最終オクテットを
1にした値を使用します。
Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。
**注:**未接続のデバイスは、先に検索で取得する必要があります。ゲートウェイとサブネットマスクを変更する場合、ゲートウェイを同一ネットワークセグメントに設定し、サブネットマスクを 255.255.0.0 に設定してください。変更後は DcGetDeviceList を再度呼び出してデバイス一覧を取得します。
6.8 ログ情報とバージョン情報
6.8.1 DcGetApiVersion
関数プロトタイプ:
char ポインター型のデータです。
備考:
6.8.2 DcSetInfoOutput
関数プロトタイプ: 機能: ログ出力レベルを設定します。 パラメータ:- [in]print_level:
0はすべてのデバッグ情報、1は重要情報と警告、2はエラーのみを出力します。 - [in]enable_screen_print:ウィンドウへ出力するかを指定します。
- [in]log_path:ログファイルの保存先パスです(ファイル名は含みません)。空にできます。Windowsでは現在のユーザーパス、Linuxでは
/var/logが既定です。 - [in]language:言語です(現在は未使用)。
Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。
注:渡すパラメータが有効であることを確認してください。
6.8.3 DcLog
関数プロトタイプ:
- [in]str:出力する文字列です。
\0で終端します。
Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。
注:渡すパラメータが有効であることを確認してください。
6.8.4 DcRegisterFrameCallback
関数プロトタイプ: 機能: データフレームのコールバック関数を登録します。新しいデータを受信すると自動的に呼び出されます。 パラメータ:- [in]handle:デバイスハンドル,
- [in]func:フレームデータのコールバック関数です。
- [in]usr_data:ユーザー定義パラメータです。空で渡せます。
Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。
注:渡すパラメータが有効であることを確認してください。
6.8.5 DcUnregisterFrameCallback
関数プロトタイプ:
- [in]handle:デバイスハンドル,
Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。
注:渡すパラメータが有効であることを確認してください。
6.9 デバイス状態コールバック
6.9.1 DcRegisterCameraStatusCallback
関数プロトタイプ: 機能: カメラ状態コールバックを登録します。カメラ状態が変わると自動的に呼び出されます。 パラメータ:- [in]handle:デバイスハンドル,
- [in]func:フレームデータのコールバック関数です。
- [in]usr_data:ユーザー定義パラメータです。空で渡せます。
6.9.2 DcUnregisterCameraStatusCallback
関数プロトタイプ:
- [in]handle:デバイスハンドル,
Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。
注:渡すパラメータが有効であることを確認してください。