YDLIDAR GS2 開発 リニアアレイ ソリッド LiDAR センサー
動作メカニズム
モード
YDLIDAR GS2(以下、GS2)システムには、アイドルモード、スキャンモード、ストップモードの 3 つの動作モードがあります。
- 起動維持モード: GS2 の電源を入れると、デフォルト モードはアイドル モードになります。 アイドル モードでは、GS2 の測距ユニットは機能せず、レーザーは点灯しません。
- スキャンモード: GS2 がスキャン モードの場合、測距ユニットはレーザーをオンにします。 GS2 が作動し始めると、連続して作動します。amp外部環境をファイル化し、バックグラウンド処理後にリアルタイムで出力します。
- 停止モード: スキャナーの電源がオンになっている、レーザーがオフになっている、モーターが回転しないなどのエラーが発生した場合、GS2 は自動的に距離測定ユニットをオフにし、エラー コードをフィードバックします。
測定原理
GS2 は、25 ~ 300 mm の範囲の短距離ソリッドステート ライダーです。 主にラインレーザーとカメラで構成されています。 ワンラインレーザーがレーザー光を出射した後、カメラで捉えます。 レーザーとカメラの固定構造により、三角測量距離測定の原理と組み合わせることで、物体から GS2 までの距離を計算できます。 カメラのキャリブレーションされたパラメータに従って、ライダー座標系での測定対象物の角度値を知ることができます。 その結果、測定対象物の完全な測定データを得ることができました。
点 O は座標の原点、紫色の領域は角度です。 view オレンジ色の領域は右カメラの角度です。 view 左カメラの。
mod句読点を座標原点として、正面が座標系0度の方向で、時計回りに角度が大きくなります。 点群出力時のデータ(S1~S160)の順番は、L1~L80、R1~R80です。 SDK によって計算された角度と距離はすべて座標系で時計回りに表されます。
システム通信
コミュニケーションメカニズム
GS2 は、シリアル ポートを介してコマンドとデータを外部デバイスと通信します。 外部デバイスがシステム コマンドを GS2 に送信すると、GS2 はシステム コマンドを解決し、対応する応答メッセージを返します。 コマンドの内容に応じて、GS2 は対応する動作ステータスを切り替えます。 メッセージの内容に基づいて、外部システムはメッセージを解析し、応答データを取得できます。
システムコマンド
外部システムは、GS2 の対応する動作状態を設定し、関連するシステム コマンドを送信して対応するデータを送信できます。 GS2 が発行するシステム コマンドは次のとおりです。
表 1 YDLIDAR GS2 システム コマンド
システムコマンド | 説明 | モード切り替え | 応答モード |
0×60 | デバイスアドレスの取得 | 停止モード | 単一の応答 |
0×61 | デバイス パラメータの取得 | 停止モード | 単一の応答 |
0×62 | バージョン情報の取得 | 停止モード | 単一の応答 |
0×63 | 点群データのスキャンと出力を開始 | スキャンモード | 連続応答 |
0x64 | デバイスを停止し、スキャンを停止します | 停止モード | 単一の応答 |
0x67 | ソフトリスタート | / | 単一の応答 |
0×68 | シリアルポートのボーレートを設定する | 停止モード | 単一の応答 |
0×69 | エッジモード(アンチノイズモード)を設定する | 停止モード | 単一の応答 |
システムメッセージ
システムメッセージは、受信したシステムコマンドに基づいてシステムがフィードバックする応答メッセージです。 システム コマンドが異なると、システム メッセージの応答モードと応答内容も異なります。 応答モードには、応答なし、単一応答、連続応答の XNUMX 種類があります。
応答なしは、システムがメッセージを返さないことを意味します。 単一の応答は、システムのメッセージ長が制限されていることを示し、応答は 2 回終了します。 システムが複数の GS2 デバイスでカスケード接続されている場合、一部のコマンドは複数の GSXNUMX デバイスから連続して応答を受け取ります。 連続応答とは、システムのメッセージ長が無限であり、スキャン モードに入る場合など、連続してデータを送信する必要があることを意味します。
単一応答、複数応答、および連続応答メッセージは、同じデータ プロトコルを使用します。 プロトコルの内容は、パケット ヘッダー、デバイス アドレス、パケット タイプ、データ長、データ セグメント、およびチェック コードであり、シリアル ポートの XNUMX 進数システムを介して出力されます。
チャート 2 YDLIDAR GS2 システム メッセージ データ プロトコルの回路図
パケット ヘッダー | デバイスアドレス | パケットタイプ | 応答の長さ | データセグメント | コードを確認する |
4 バイト | 1 バイト | 1 バイト | 2 バイト | Nバイト | 1 バイト |
バイトオフセット
- パケット ヘッダー: GS2 のメッセージ パケット ヘッダーは 0xA5A5A5A5 とマークされます。
- デバイスアドレス: GS2 デバイス アドレスは、カスケードの数に応じて、0x01、0x02、0x04 に分割されます。
- パケットの種類: システムコマンドの種類については、表 1 を参照してください。
- 応答の長さ: 応答の長さを表します
- データセグメント: 異なるシステム コマンドは異なるデータ コンテンツに応答し、それらのデータ プロトコルは異なります。
- チェックコード: コードを確認してください。
注記: GS2 データ通信は、下位から順にスモール エンディアン モードを採用しています。
データプロトコル
デバイス アドレス コマンドの取得
外部デバイスがこのコマンドを GS2 に送信すると、GS2 はデバイス アドレス パケットを返します。メッセージは次のとおりです。
カスケードでは、N 個のデバイス (最大 3 個までサポート) がスレッド化されている場合、コマンドは 0x01、0x02、0x04 でそれぞれ 1 ~ 3 個のモジュールに対応する N 個の応答を返します。
意味: モジュール 1 のアドレスは 0x01、モジュール 2 は 0x02、モジュール 3 は 0x04 です。
バージョン情報取得コマンド
外部デバイスがスキャン コマンドを GS2 に送信すると、GS2 はそのバージョン情報を返します。 返信メッセージは次のとおりです。
カスケードの場合、N 個 (最大 3 個) のデバイスが直列に接続されている場合、このコマンドは N 個の応答を返します。ここで、アドレスは最後のデバイスのアドレスです。
バージョン番号は 3 バイト長で、SN 番号は 16 バイト長です。
デバイスパラメータ取得コマンド
外部デバイスがこのコマンドを GS2 に送信すると、GS2 はそのデバイス パラメータを返します。メッセージは次のとおりです。
カスケードでは、N 個のデバイス (最大 3 個までサポート) がスレッド化されている場合、コマンドは各デバイスのパラメーターに対応する N 個の応答を返します。
プロトコルによって受信される K と B は uint16 型であり、float 型に変換してから、計算関数に代入する前に 10000 で割る必要があります。
- d_compensateK0 = (浮動小数点)K0/10000.0f;
- d_compensateB0 = (浮動小数点)B0/10000.0f;
- d_compensateK1 = (浮動小数点)K1/10000.0f;
- d_compensateB1 = (浮動小数点)B1/10000.0f;
Bias は int8 型で、計算関数に代入する前に float 型に変換して 10 で割る必要があります。
- バイアス = (フロート)バイアス /10;
指示
スキャン コマンド
外部デバイスがスキャン コマンドを GS2 に送信すると、GS2 はスキャン モードに入り、点群データを継続的にフィードバックします。 メッセージは次のとおりです: Command sent: (送信アドレス 0x00、カスケードかどうか、すべてのデバイスを開始します)
受信したコマンド: (カスケードの場合、このコマンドは XNUMX つの応答のみを返し、アドレスは最大のアドレスです。ample: No.3 デバイスがカスケード接続されており、アドレスは 0x04 です。)
データ セグメントは、システムによってスキャンされた点群データであり、次のデータ構造に従って、シリアル ポートに 322 進数で外部デバイスに送信されます。 パケット全体のデータ長は 2 バイトで、160 バイトの環境データと 1 の測距点 (S160 ~ S2) を含み、それぞれが 7 バイトで、上位 9 ビットが強度データ、下位 XNUMX ビットが距離データです。 . 単位はmmです。
停止コマンド
システムがスキャン状態にあるとき、GS2 は点群データを外部に送信しています。 この時点でスキャンを無効にするには、このコマンドを送信してスキャンを停止します。 停止コマンドを送信した後、モジュールは応答コマンドに応答し、システムはすぐにスタンバイ スリープ状態に入ります。 このとき、本機の測距ユニットは低消費電力モードになり、レーザーはオフになります。
- コマンド送信: (アドレス 0x00 を送信します。カスケードかどうかに関係なく、すべてのデバイスが閉じられます)。
カスケードの場合、N 個 (最大 3 個) のデバイスが直列に接続されている場合、このコマンドは応答のみを返します。アドレスは最後のデバイスのアドレスです。ample: 3 つのデバイスがカスケード接続されている場合、アドレスは 0x04 です。
ボーレート コマンドの設定
外部デバイスがこのコマンドを GS2 に送信すると、GS2 の出力ボーレートを設定できます。
- 送信されたコマンド: (アドレス 0x00 を送信し、すべてのカスケード デバイスのボー レートを同じに設定することのみをサポートします)、メッセージは次のとおりです。
その中で、データ セグメントはボー レート パラメータであり、それぞれ 230400 つのボー レート (bps) を含みます: コード 512000 ~ 921600 に対応する 1500000、0、3、921600 (注: 921600 モジュールのシリアル接続は ≥XNUMX である必要があります。デフォルトは XNUMX です)。
カスケードの場合、N デバイス (最大サポート 3) デバイスが直列に接続されている場合、コマンドは各デバイスのパラメーターに対応する N 個の応答を返します。アドレスは 0x01、0x02、0x04 です。
- ボーレートを設定したら、デバイスをソフトリスタートする必要があります。
エッジモードの設定(強力アンチジャミングモード)
外部デバイスがこのコマンドを GS2 に送信すると、GS2 のアンチジャミング モードを設定できます。
- コマンド送信: (送信アドレス、カスケード アドレス)、メッセージは次のとおりです。
コマンド受信
Address は、カスケード リンクで構成する必要があるモジュールのアドレスです。 Mode=0 は標準モードに対応し、Mode=1 はエッジ モード (レセプタクルが上向き) に対応し、Mode=2 はエッジ モード (レセプタクルが下向き) に対応します。 エッジ モードでは、LIDAR の固定出力は 10HZ で、周囲光のフィルタリング効果が強化されます。 Mode=0XFF は読み取りを意味し、LIDAR は現在のモードに戻ります。 Lidar はデフォルトで標準モードで動作します。
- モジュール 1 を設定します。 アドレス=0x01
- モジュール 2 を設定します。 アドレス=0x02
- モジュール 3 を設定します。 アドレス=0x04
システムリセットコマンド
外部デバイスがこのコマンドを GS2 に送信すると、GS2 はソフト再起動に入り、システムがリセットされて再起動します。
コマンド送信: (送信アドレス、正確な連結アドレスのみ可能: 0x01/0x02/0x04)
Address は、カスケード リンクで構成する必要があるモジュールのアドレスです。
- モジュール 1 をリセットします。 アドレス=0x01
- モジュール 2 をリセットします。 アドレス=0x02
- モジュール 3 をリセットします。 アドレス=0x04
データ分析
表 3 データ構造の説明
コンテンツ | 名前 | 説明 |
K0(2B) | デバイスパラメーター | (uint16) 左カメラ角度パラメータ k0 係数 (セクション 3.3 を参照) |
B0(2B) | デバイスパラメーター | (uint16) 左カメラ角度パラメータ k0 係数 (セクション 3.3 を参照) |
K1(2B) | デバイスパラメーター | (uint16) 右カメラ角度パラメータ k1 係数 (セクション 3.3 を参照) |
B1(2B) | デバイスパラメーター | (uint16) 右カメラ角度パラメータ b1 係数 (セクション 3.3 を参照) |
BIAS | デバイスパラメーター | (int8) 現在のカメラ アングル パラメータのバイアス係数 (セクション 3.3 を参照) |
環境(2B) | 環境データ | 周囲光強度 |
Si(2B) | 距離測定データ | 下位9ビットが距離、上位7ビットが強度値 |
- 距離分析
距離計算式: 距離 = (_ ≪ 8|_) &0x01ff、単位は mm です。
強度計算: 品質 = _ ≫ 1 - 角度分析
レーザーの発光方向をセンサー正面とし、レーザー円中心の基板面への投影を座標原点とし、基板面の法線を とする極座標系をとります。 0 度の方向。 時計回りの方向に従って、角度は徐々に増加します。
Lidar によって送信された元のデータを上の図の座標系に変換するには、一連の計算が必要です。 変換関数は次のとおりです (詳細については、SDK を参照してください)。
コード分析をチェックする
チェック コードは、XNUMX バイト累積を使用して現在のデータ パケットをチェックします。 XNUMX バイトのパケット ヘッダーとチェック コード自体は、チェック操作には関与しません。 チェック コードの解法は次のとおりです。
- チェックサム = ADD1()
- = 1,2, … ,
ADD1 は累積式で、添字 1 から要素の末尾までの数値を累積することを意味します。
太田アップグレード
アップグレードのワークフロー
送信プロトコル
表 4 OTA データ プロトコル フォーマット (スモール エンディアン)
パラメータ | 長さ (バイト) | 説明 |
パケットヘッダー | 4 | A5A5A5A5 として固定されたデータ パケット ヘッダー |
デバイス_アドレス | 1 | デバイスのアドレスを指定します |
パック ID | 1 | データパケットID(データ型) |
データ長 | 2 | データセグメントのデータ長、0~82 |
データ | n | データ、n = Data_Len |
チェックサム | 1 | チェックサム、ヘッダーが削除された後の残りのバイトのチェックサム |
表 5 OTA アップグレード手順
命令タイプ | パック ID | 説明 |
スタート_IAP | 0x0A | このコマンドを送信して、電源投入後に IAP を開始します |
実行中_IAP | 0x0B | IAP の実行、パケットの送信 |
完全_IAP | 0x0C | IAP の終了 |
ACK_IAP | 0x20 | IAP 返信 |
RESET_SYSTEM | 0x67 | 指定されたアドレスでモジュールをリセットして再起動します |
Start_IAP 命令
コマンド送信
- データセグメント データ形式:
- データ[0~1]: デフォルトは 0x00 です。
- データ[2~17]: これは固定文字検証コードです。
- 0x73 0x74 0x61 0x72 0x74 0x20 0x64 0x6F 0x77 0x6E 0x6C 0x6F 0x61 0x64 0x00 0x00
- 送信メッセージを参照
- A5 A5 A5 A5 01 0A 12 00 00 00 73 74 61 72 74 20 64 6F 77 6E 6C 6F 61 64 00 00 C3
コマンド受信: FLASH セクタ動作のため、復帰遅延が長く、80ms から 700ms の間で変動します)
受信データ形式
- 住所: モジュールアドレス;
- 確認: デフォルトは 0x20 で、データ パケットが確認応答パケットであることを示します。 データ[0~1]: デフォルトは 0x00 です。
- データ[2]: 0x0A は応答コマンドが 0x0A であることを示します。
- データ[3]: 0x01 は正常な受信を示し、0 は異常な受信を示します。
- 受け取る参照:
A5 A5 A5 A5 01 20 04 00 00 00 0A 01 30
Running_IAP 命令
コマンド送信
ファームウェアはアップグレード中に分割され、データ セグメント (Data) の最初の XNUMX バイトは、ファームウェアの最初のバイトに対するこのデータ セグメントのオフセットを示します。
- データ[0~1]:Package_Shift = データ[0]+データ[1]*256;
- データ[2]~データ[17]: 固定文字列の検証コードです:
- 0x64 0x6F 0x77 0x6E 0x6C 0x6F 0x61 0x64 0x69 0x6E 0x67 0x00 0x00 0x00 0x00 0x00 Data[18]~Data[81]: ファームウェアデータ;
- 送信メッセージを参照
- A5 A5 A5 A5 01 0B 52 00 00 00 64 6F 77 6E 6C 6F 61 64 69 6E 67 00 00 00 00 00 +
(データ[18]~データ[81]) + Check_Sum
コマンド受信
- 住所: 私s モジュールアドレス。
- 確認: デフォルトは 0x20 で、データ パケットが確認応答パケットであることを示します。
データ[0~1] : Package_Shift = Data[0]+ Data[1]*256 は、応答のファームウェア データ オフセットを示します。 アップグレード プロセス中に応答を検出する場合は、保護メカニズムとしてオフセットを判断することをお勧めします。
- Data[2]=0x0B は応答コマンドが 0x0B であることを示します。
- Data[3]=0x01 は正常な受信を示し、0 は異常な受信を示します。
受け取る参考
A5 A5 A5 A5 01 20 04 00 00 00 0B 01 31
Complete_IAP 命令
コマンド送信
- データ[0~1]: デフォルトは 0x00 です。
- データ[2]~データ[17]: これは固定文字列の検証コードです。
0x63 0x6F 0x6D 0x70 0x6C 0x65 0x74 0x65 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
データ[18]~データ[21]: 暗号化フラグ、uint32_t タイプ、暗号化されたファームウェアは 1、暗号化されていないファームウェアは 0 です。
メッセージの送信を参照してください。
A5 A5 A5 A5 01 0C 16 00 00 00 63 6F 6D 70 6C 65 74 65 00 00 00 00 00 00 00 00 + (uint32_t 暗号化フラグ) + Check_Sum
コマンド受信
- 受信データ形式:
- 住所: モジュールアドレスです。
- 確認: デフォルトは 0x20 で、データ パケットが確認応答パケットであることを示します。
- データ[0~1]: デフォルトは 0x00 です。
- データ[2]: 0x0C は応答コマンドが 0x0C であることを示します。
- データ[3]: 0x01 は正常な受信を示し、0 は異常な受信を示します。
- 受信したメッセージを参照してください。
A5 A5 A5 A5 01 20 04 00 00 00 0C 01 32
RESET_SYSTEM命令
詳細については、3.8 章のシステム リセット コマンドを参照してください。
質疑応答
- Q: リセットコマンド送信後、リセット成功の判定方法を教えてください。 遅延が必要かどうか
- A: 正常に実行されたかどうかは、リセット コマンドの応答パケットによって判断できます。 応答を受信した後、後続の操作を実行する前に 500 ミリ秒の遅延を追加することをお勧めします。
- Q: モジュール 4 は、リセット後にプロトコルに準拠しないシリアル ポート データを受信します。どのように対処すればよいですか?
- A: モジュールの電源投入時のログは、4 つの 0x3E ヘッダーを持つ ASCII データの文字列です。これは、4 つの 0xA5 ヘッダーによる通常のデータ解析には影響せず、無視できます。 物理リンクのため、1号機と2号機のログは受信できません。
- Q: 電源障害と再起動によってアップグレード プロセスが中断された場合の対処方法を教えてください。
- A: Start_IAP コマンドを再送信して、再アップグレードします。
- Q: カスケード状態でアップグレード機能が正常に動作しない原因として考えられるものは何ですか?
- A: XNUMX つのモジュールの点群データを受信できるかどうかなど、物理リンクが正しいかどうかを確認します。
- XNUMX つのモジュールのアドレスが競合していないことを確認し、アドレスの再割り当てを試みることができます。
- アップグレードするモジュールをリセットしてから、試行を再開します。
- Q: カスケード アップグレード後に読み取りバージョン番号が 0 になるのはなぜですか?
- A: これは、モジュールのアップグレードが失敗したことを意味し、ユーザーはモジュールをリセットしてから再度アップグレードする必要があります。
注意
- GS2 とのコマンドの対話中は、stop scan コマンドを除いて、スキャン モードで他のコマンドを対話することはできません。これにより、メッセージの解析エラーが発生しやすくなります。
- GS2 は電源投入時に自動的に測距を開始しません。 スキャン モードに入るには、スキャン開始コマンドを送信する必要があります。 測距を停止する必要がある場合は、スキャン停止コマンドを送信してスキャンを停止し、スリープ モードに入ります。
- 通常どおり GS2 を起動します。推奨されるプロセスは次のとおりです。
最初のステップ:
Get Device Address コマンドを送信して、現在のデバイスのアドレスとカスケード数を取得し、アドレスを構成します。
2番目のステップ:
バージョン番号を取得するには、get version コマンドを送信します。
3番目のステップ:
デバイスパラメータを取得するコマンドを送信して、データ分析用のデバイスの角度パラメータを取得します。
4番目のステップ:
スキャン開始コマンドを送信して点群データを取得します。 - GS2 透視窓用の透光性材料の設計に関する提案:
前面カバーの透視窓が GS2 用に設計されている場合、その光透過材料として赤外線透過 PC を使用することをお勧めします。光透過領域はフラット (平面度 ≤0.05mm) である必要があり、平面は 780nm から 1000nm の帯域で透明でなければなりません。 光率は 90% 以上です。 - ナビゲーションボードでGS2のON/OFFを繰り返す場合の推奨操作手順:
ナビゲーション ボードの消費電力を削減するために、GS2 の電源を繰り返しオン/オフする必要がある場合は、電源をオフにする前にストップ スキャン コマンド (セクション 3.5 を参照) を送信してから、GS300 の TX と RX を構成することをお勧めします。ナビゲーションボードをハイインピーダンスに。 次に、VCC をローに引き下げてオフにします。 次に電源を投入するときは、まず VCC をプルアップし、次に TX と RX を通常の出力と入力の状態に設定し、XNUMXms の遅延の後、ライン レーザーとのコマンド対話を実行します。 - 各 GS2 コマンドが送信された後の最大待機時間について:
- アドレスを取得: 800 ミリ秒遅延、バージョンを取得: 100 ミリ秒遅延;
- パラメーターを取得: 100 ミリ秒の遅延、スキャンの開始: 400 ミリ秒の遅延;
- スキャンの停止: 100ms の遅延、ボーレートの設定: 800ms の遅延;
- エッジモードの設定: 800ms の遅延、OTA の開始: 800ms の遅延;
改訂
日付 | バージョン | コンテンツ |
2019-04-24 | 1.0 | 最初のドラフトを作成する |
2021-11-08 |
1.1 |
変更 (左右のカメラ データをマージするようにプロトコル フレームワークを変更します。パースペクティブ ウィンドウのマテリアルを追加するための提案。ボー レートを追加します。
設定コマンド) |
2022-01-05 | 1.2 | デバイスアドレス取得コマンドの受信記述、左右カメラの記述を修正 |
2022-01-12 | 1.3 | エッジモードを追加、K、B、BIAS計算の説明を補足 |
2022-04-29 | 1.4 | 章 3.2 の説明を変更: バージョン情報取得コマンド |
2022-05-01 | 1.5 | ソフト再起動コマンドのアドレス設定方法を変更 |
2022-05-31 |
1.6 |
1) セクション 3.7 を更新
2) セクション 3.8 RESET コマンドは単一の応答を追加します 3) 第 5 章の OTA アップグレードを追加 |
2022-06-02 | 1.6.1 | 1) OTA アップグレード ワークフローを変更する
2) OTAのQ&Aを修正 |
ドキュメント / リソース
![]() |
YDLIDAR GS2 開発 リニアアレイ ソリッド LiDAR センサー [pdf] ユーザーマニュアル GS2 DEVELOPMENT リニア アレイ ソリッド LiDAR センサー, GS2 DEVELOPMENT, リニア アレイ ソリッド LiDAR センサー, アレイ ソリッド LiDAR センサー, ソリッド LiDAR センサー, LiDAR センサー, センサー |