メインコンテンツへスキップ

概要

本ガイドは、カメラデバイスを統合する開発者向けです。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 カメラ接続図

ネットワーク設定

  1. カメラの既定 IP ネットワークセグメントは 192.168.100.* です。
  2. ホストコンピューターで、カメラに接続するネットワークポートの IP アドレスを 192.168.100.x セグメント内に設定し、デバイスと重複しないことを確認します。サブネットマスクは 255.255.255.0 です。
  3. カメラ接続時は、SDK を実行するホストによるカメラデータパケットの遮断を防ぐため、ファイアウォールを無効にすることを推奨します。
  4. Linux のネットワーク設定は Windows と同じです。ファイアウォールのコマンドはディストリビューションによって異なります。Ubuntu では次を実行します。

SDK をインストールする

Windows
インストールパッケージを開き、Lanxin-MRDVS-xxx.exe をインストールします。すべてのユーザー向けにインストールする場合は、管理者権限でインストールパッケージを実行してください。以下にインストール手順を示します。
Linux
  1. パッケージを展開し、インストールスクリプトを実行します。
インストールスクリプトは SDK を /opt/Lanxin-MRDVS にインストールし、現在のユーザーの環境変数を設定します。別のユーザーでプログラムを実行する場合は、そのユーザーでスクリプトを再実行するか、そのユーザーの ~/.bashrc に次の行を追加します。
インストール前から開いている端末では、プログラムの起動前に次のコマンドを実行します。

Camera SDK を使用する

ディレクトリ構成

Camera SDK ディレクトリには、次の内容が含まれます。
Camera SDK ディレクトリ構成図
  • Document には SDK の各種ドキュメントが含まれます。
  • FirmWare にはカメラのファームウェア更新パッケージが含まれます。
  • Sample には各種プログラミング言語で Camera SDK を使用するサンプルコードが含まれます。
  • SDK には Camera SDK のヘッダーファイルおよびライブラリファイルが含まれます。

開発ワークフロー

プロジェクトを設定する

C/C++ による SDK 統合を推奨します。SDK には CMake ビルド用の CMakeLists.txt が含まれ、Sample フォルダーには複数言語のサンプルがあります。詳細は Sample の例と Linux サンプルユーザーガイドを参照してください。

同期呼び出しフロー

非同期呼び出しフロー


呼び出し要件

パラメーター型と対応 API

  1. LX_INT で始まる列挙型は、DcSetIntValue または DcGetIntValue で INT 型パラメーターを設定・取得します。
  2. LX_FLOAT で始まる列挙型は、DcSetFloatValue または DcGetFloatValue で FLOAT 型パラメーターを設定・取得します。
  3. LX_BOOL で始まる列挙型は、DcSetBoolValue または DcGetBoolValue で BOOL 型パラメーターを設定・取得します。
  4. LX_STRING で始まる列挙型は、DcSetStringValue または DcGetStringValue で文字列型パラメーターを設定・取得します。
  5. LX_CMD で始まる列挙型のコマンドは、DcSetCmd で実行します。
  6. LX_PTR で始まる列挙型は、DcGetPtrValue でポインター型の結果を取得します。

API の前提条件

ストリーミング中、または LX_INT_WORK_MODE が常時オンモードの場合は、以下の機能を設定しないでください。
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
2. 動作モード(LX_INT_WORK_MODE)が通常開放の場合でも、次の設定はできません。
  • LX_INT_TOF_FREQMODE
3. 3D 自動露出(LX_BOOL_ENABLE_3D_AUTO_EXPOSURE)が有効な場合、次の機能列挙値は操作できません。
  • LX_BOOL_ENABLE_MULTI_EXPOSURE_HDR ;
  • LX_INT_FIRST_EXPOSURE;
  • LX_INT_SECOND_EXPOSURE;
  • LX_INT_THIRD_EXPOSURE;
  • LX_INT_GAIN;
4. 3D 自動露出(LX_BOOL_ENABLE_3D_AUTO_EXPOSURE)が無効な場合、次の機能列挙値は操作できません。
  • LX_INT_3D_AUTO_EXPOSURE_LEVEL
3D 自動露出の最大値(LX_INT_3D_AUTO_EXPOSURE_MAX)および最小値も設定できません。
  • (LX_INT_3D_AUTO_EXPOSURE_MIN)
5. 2D 自動露出(LX_BOOL_ENABLE_2D_AUTO_EXPOSURE)が有効な場合、次の機能列挙値は操作できません。
  • 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

関数プロトタイプ:
DcOpenDeviceの説明
機能: カメラに接続します。 パラメータ:
  • [in]open_mode:オープンモードです。詳細は OpenMode を参照してください。
  • [in]param:オープン方法に応じたパラメータです。
  • [out]handle:接続成功時に返されるデバイスハンドルです。以降のAPI呼び出しで使用します。
  • [out]info:接続成功時に返されるカメラ詳細情報です。
戻り値: Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。 注:渡すパラメータが有効であることを確認してください。

6.1.3 DcCloseDevice

関数プロトタイプ:
DcCloseDeviceの説明
機能: デバイスを閉じます。 パラメータ:
  • [in]handle:デバイスハンドル
戻り値: Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。 注:渡すパラメータが有効であることを確認してください。

6.2 ストリーミングの開始と停止

6.2.1 DcStartStream

関数プロトタイプ:
DcStartStreamの説明
**機能:**データストリームを開始します。 パラメータ:
  • [in]handle:デバイスハンドル
戻り値: Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。 注:渡すパラメータが有効であることを確認してください。

6.2.2 DcStopStream

関数プロトタイプ:
DcStopStreamの説明
**機能:**データストリームを停止します。 パラメータ:
  • [in]handle:デバイスハンドル
戻り値: Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。 注:渡すパラメータが有効であることを確認してください。

6.3 カメラパラメータの取得と設定

6.3.1 DcSetIntValue

関数プロトタイプ:
DcSetIntValueの説明
機能: Set int type parameters パラメータ:
  • [in]handle:デバイスハンドル
  • [in]cmd reference LX_CAMERA_FEATURE
  • [in]value:設定するパラメータ値です。
戻り値: Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。 注:渡すパラメータが有効であることを確認してください。

6.3.2 DcGetIntValue

関数プロトタイプ:
DcGetIntValueの説明
機能: Get int type parameters パラメータ:
  • [in]handle:デバイスハンドル
  • [in]cmd reference LX_CAMERA_FEATURE
  • [out]value:パラメータ構造体を返します。最大値、最小値、現在値などを含みます。
戻り値: Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。 注:渡すパラメータが有効であることを確認してください。

6.3.3 DcSetFloatValue

関数プロトタイプ:
DcSetFloatValueの説明
機能: float型パラメータを設定します。 パラメータ:
  • [in]handle:デバイスハンドル
  • [in]cmd reference LX_CAMERA_FEATURE
  • [in]value:設定するパラメータ値です。
戻り値: Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。 注:渡すパラメータが有効であることを確認してください。

6.3.4 DcGetFloatValue

関数プロトタイプ:
DcGetFloatValueの説明
機能: float型パラメータを取得します。 パラメータ:
  • [in]handle:デバイスハンドル
  • [in]cmd reference LX_CAMERA_FEATURE
  • [out]value:パラメータ構造体を返します。最大値、最小値、現在値などを含みます。
戻り値: Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。 注:渡すパラメータが有効であることを確認してください。

6.3.5 DcSetBoolValue

関数プロトタイプ:
DcSetBoolValueの説明
機能: bool型パラメータを設定します。 パラメータ:
  • [in]handle:デバイスハンドル
  • [in]cmd reference LX_CAMERA_FEATURE
  • [in]value:設定するパラメータ値です。
戻り値: Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。 注:渡すパラメータが有効であることを確認してください。

6.3.6 DcGetBoolValue

関数プロトタイプ:
DcGetBoolValueの説明
機能: bool型パラメータを取得します。 パラメータ:
  • [in]handle:デバイスハンドル
  • [in]cmd reference LX_CAMERA_FEATURE
  • [out]value:パラメータを返します。
戻り値: Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。 注:渡すパラメータが有効であることを確認してください。

6.3.7 DcSetStringValue

関数プロトタイプ:
DcSetStringValueの説明
機能: string型パラメータを設定します。 パラメータ:
  • [in]handle:デバイスハンドル
  • [in]cmd refer to LX_CAMERA_FEATURE
  • [in]value:設定するパラメータ値です。
戻り値: Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。 注:渡すパラメータが有効であることを確認してください。

6.3.8 DcGetStringValue

関数プロトタイプ:
DcGetStringValueの説明
機能: string型パラメータを取得します。 パラメータ:
  • [in]handle:デバイスハンドル
  • [in]cmd reference LX_CAMERA_FEATURE
  • [out]value:外部メモリ確保なしでパラメータを返します。
戻り値: Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。 注:渡すパラメータが有効であることを確認してください。

6.3.9 DcGetPtrValue

関数プロトタイプ:
DcGetPtrValueの説明
機能: ポインター型パラメータを取得します。 パラメータ:
  • [in]handle:デバイスハンドル
  • [in]cmd reference LX_CAMERA_FEATURE
  • [out]value:外部メモリ確保なしでパラメータを返します。
戻り値: Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。 注:渡すパラメータが有効であることを確認してください。

6.3.10 DcSetCmd

関数プロトタイプ:
DcSetCmdの説明
機能: 対応するCMD型コマンドを実行します。 パラメータ:
  • [in]handle:デバイスハンドル
  • [in]cmd reference LX_CAMERA_FEATURE
戻り値: Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。 注:渡すパラメータが有効であることを確認してください。

6.4 点群の保存

6.4.1 DcSaveXYZ

関数プロトタイプ:
DcSaveXYZの説明
機能: 点群を保存します。直接呼び出して使用します。 パラメータ:
  • handle:デバイスハンドルです。
  • filename:ファイル名です。txt、ply、pcd 形式に対応します。txt は画像順にすべてのデータを保存し、ply と pcd はゼロ以外のデータのみ保存します。
戻り値: Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。 注:渡すパラメータが有効であることを確認してください。

6.5 特殊制御

6.5.1 DcSpecialControl

関数プロトタイプ:
DcSpecialControlの説明
機能: LX_CAMERA_FEATURE で定義される特別操作です。 パラメータ:
  • [in]handle:デバイスハンドル
  • [in]param operation
  • [inout]value:設定時は入力パラメータ、取得時は出力パラメータです。外部メモリ確保は不要です。
戻り値: Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。 注:渡すパラメータが有効であることを確認してください。

6.6 ROIとパラメータパスの設定

6.6.1 DcSetRoI

関数プロトタイプ:
DcSetRoIの説明
機能: ROI領域を設定します。入力値が8の整数倍でない場合、内部で最も近い8の整数倍に丸められます。設定後に画像サイズパラメータを更新してください。 パラメータ:
  • [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

関数プロトタイプ:
DcGetApiVersionの説明
機能: APIバージョン番号を取得します。 パラメータ: 戻り値: 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

関数プロトタイプ:
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

関数プロトタイプ:
DcUnregisterFrameCallbackの説明
機能: フレームコールバックを解除します。 パラメータ:
  • [in]handle:デバイスハンドル,
戻り値: Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。 注:渡すパラメータが有効であることを確認してください。

6.9 デバイス状態コールバック

6.9.1 DcRegisterCameraStatusCallback

関数プロトタイプ: 機能: カメラ状態コールバックを登録します。カメラ状態が変わると自動的に呼び出されます。 パラメータ:
  • [in]handle:デバイスハンドル,
  • [in]func:フレームデータのコールバック関数です。
  • [in]usr_data:ユーザー定義パラメータです。空で渡せます。
注:渡すパラメータが有効であることを確認してください。

6.9.2 DcUnregisterCameraStatusCallback

関数プロトタイプ:
DcUnregisterCameraStatusCallbackの説明
機能: カメラ状態コールバックの登録を解除します。 パラメータ:
  • [in]handle:デバイスハンドル,
戻り値: Int 型の戻り値です。LX_SUCCESS は呼び出し成功を示します。 注:渡すパラメータが有効であることを確認してください。

バージョンと更新内容