工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial Internet of Things >> 埋め込み

ビジュアルSLAMアプリケーションの開発を容易にする

同時ローカリゼーションおよびマッピング(SLAM)は、ロボットなどのデバイスがセンサーデータを使用して周囲の環境の画像を作成し、同時にその環境内での位置を決定するプロセスを表します。 SLAMを実装する方法は、展開されているソフトウェアアルゴリズムと、慣性測定装置(IMU)を使用したカメラ、ソナー、レーダー、LiDAR、基本的な位置データなど、使用されているセンサーの両方の点でさまざまです。

>

安価で小型のカメラが利用できるようになったため、単一の標準カメラを使用して位置特定機能とマッピング機能を実行するモノキュラービジュアルSLAMシステムの人気が高まっています。このようなビジュアルSLAMシステムは、火星探査車や着陸船など、さまざまなロボットに搭載されています。 、農業におけるフィールドロボット、ドローン、そして場合によっては自動運転車。ビジュアルSLAMシステムは、GPSが利用できない場合にも利点があります。たとえば、屋内エリアや大都市では、建物による障害物によってGPSの精度が低下します。

この記事では、基本的なビジュアルSLAMプロセスについて説明し、オブジェクトの認識と追跡、およびエラー修正に関連するモジュールとアルゴリズムについて説明します。 SLAMの計算と機能を専用のDSPにオフロードすることの利点について説明し、CEVA-SLAM SDK開発キットを、この開発ルートに従うことで得られる利点の例として使用します。

直接および機能ベースのSLAM

ビジュアルSLAMの実装にはさまざまなアプローチがありますが、すべて同じ全体的な方法を使用し、連続するカメラフレームを介して設定点を追跡し、3D位置を三角測量すると同時に、この情報を使用してカメラのポーズを概算します。並行して、SLAMシステムは、投影されたポイントと実際のポイントの違い、つまり再投影エラーを最小限に抑えるために、複雑なアルゴリズムを継続的に使用しています。

Visual SLAMシステムは、受信した画像からの情報を使用する方法に応じて、直接または機能ベースに分類できます。ダイレクトSLAMシステムは、画像全体を相互に比較し、環境に関する豊富な情報を提供し、より詳細なマップの作成を可能にしますが、処理の労力と速度を犠牲にします。この記事では、特徴ベースのSLAM手法に焦点を当てます。この方法では、画像でコーナーや「ブロブ」などの定義された特徴を検索し、これらの特徴のみに基づいて位置と周囲の推定を行います。機能ベースのSLAMメソッドは、画像から大量の貴重な情報を破棄しますが、トレードオフは、計算が簡単な単純化されたプロセスです。


図1:直接対機能ベースのSLAM。 (出典:https://vision.in.tum.de/research/vslam/lsdslam)

視覚的なSLAMプロセス

特徴ベースのSLAMの主な手順は、入力画像からのスパース特徴のセットの抽出、さまざまなカメラポーズから取得された特徴のマッチング、および特徴の再投影エラー(ポイントの追跡位置の違い)を最小限に抑えることによるSLAM問題の解決です。そして、すべてのポイントにわたって、カメラのポーズの推定値が与えられると予想される場所)。

これらの手順は、すべての機能ベースのSLAM実装に共通する、以下で説明する一連のビルディングブロックを使用して実行されます。 Visual SLAMは、かなりの量の研究を生み出す進化している分野であり、SLAM実装の正確な性質に応じて、モジュールごとにさまざまなアルゴリズムが開発および提案されており、それぞれに長所と短所があります。以下の説明では、現在最も人気のあるアルゴリズムのサブセットについて説明しています。

特徴抽出(図2)は、コーナー、エッジ、ブロブ、出入り口や窓などのより複雑なオブジェクトなどの有用な情報をコンパクトな特徴ベクトルとして画像内で効率的に表すプロセスです。人気のある特徴抽出アルゴリズムには、Difference of Gaussian(DoG)や、計算効率が高いためリアルタイムビデオ処理に適したコーナー検出法であるAccelerated Segment Test(FAST9)の特徴があります。


図2:SLAM特徴抽出。 (出典:https://medium.com/towards-artificial-intelligence/oriented-fast-and-rotated-brief-orb-1da5b2840768)

機能の説明では、抽出された各機能の周囲の領域が、他の記述子と照合できるコンパクトな記述子に変換されます。特徴は、例えば、それらの外観によって、または特徴点の周りのパッチ内のピクセルの強度によって記述され得る。 ORBとFREAKは、一般的な機能記述子アルゴリズムの例です。

特徴マッチングでは、抽出された特徴(記述子)が複数のフレームにわたってマッチングされます。最初の画像のすべての特徴を2番目の画像のすべての特徴と比較することにより、2つの画像間で特徴が照合されます。ハミング距離関数は、ベクトルなどのデータのビットセットに対してXoRおよびカウントビット関数を使用してハードウェアで効率的に実行できるため、フィーチャマッチングで一般的に使用されます。ハミング距離は、2つのベクトルのビット数が異なることを示します。つまり、スコアが低いほど、一致が近くなります。

ループクロージャはSLAMプロセスの最終ステップであり、特にローカライズおよびマッピング操作が長期間にわたって実行される場合に、一貫したSLAMソリューションを保証します。ループクロージャは、隣接していないフレームによって同じシーンを観察し、ポーズ推定の累積ドリフトを減らすために、それらの間に制約を追加します。他のビジュアルSLAMモジュールと同様に、ループクロージャ用にさまざまなアルゴリズムが開発されており、最も一般的なアルゴリズムは、バンドル調整、カルマンフィルタリング、粒子フィルタリングです。

VSLAMアルゴリズムは活発な研究分野であり、上記は近年出現した技術の数の増加の例です。機能ベースのSLAM方式は、処理速度を高速化し、メモリ帯域幅をより効率的に使用できるため、組み込みソリューションに適しています。さらに、機能ベースのソリューションは、明るさの急激な変化、低照度、カメラの急速な動き、オクルージョンなど、さまざまな条件でより高いレベルの堅牢性を示します。

特定のアルゴリズムの選択は、マップのタイプ、センサーのタイプ、必要な精度など、特定のアプリケーションの特性によって決まります。多くのSLAMシステムには、最も幅広いシナリオに最適なアルゴリズムの組み合わせが組み込まれています。

SLAM実装の課題

ビジュアルSLAM処理は非常に計算量が多く、従来のCPUベースの実装に高い負荷がかかるため、消費電力が過剰になり、フレームレートが低くなり、その結果、精度とバッテリ寿命に影響が出ます。新しいSLAMアプリケーションの開発者は、より高いレベルの統合とより低い電力消費を提供するソリューションを必要としています。彼らはますます彼らのデザインに専用のビジョンプロセッシングユニット(VPU)を使用しています。 VPUは、SLAMなどのマシンビジョンタスクの高速化用に特別に設計されたアーキテクチャを備えたマイクロプロセッサの一種であり、メインアプリケーションCPUからビジョン処理をオフロードするために使用できます。 CEVA CEVA-XM6(図3)などのVPUには、低消費電力、強力なALU、強力なMAC機能、高スループットのメモリアクセス、専用のビジョン命令などの機能が含まれています。これらのデバイスは、画像処理アプリケーションに必要な強力な浮動小数点機能もサポートします。


図3:CEVAXM6ビジョンプロセッシングユニット。 (出典:CEVA)

ただし、VPUを使用する場合でも、さまざまなSLAMモジュール用の効率的なコードを作成することは簡単な作業ではなく、VPUをメインプロセッサに接続することも難しいため、ビジュアルSLAM開発者はいくつかの課題を克服する必要があります。

効率的なコードの作成は、実行速度と消費電力を最適化する必要がある組み込みアプリケーションでは非常に重要です。ビジュアルSLAMモジュールのコーディングは複雑なタスクであり、大量のデータのフェッチ、保存、および操作が必要になる可能性があります。たとえば、特徴マッチングでは、記述子は128ビットベクトルとしてメモリに格納され、連続するフレーム間で特徴をマッチングするには、通常、200個の特徴を2000個の候補と比較する必要があり、400,000回の一致操作につながります。マッチング操作には明らかに大量のメモリが必要ですが、サンプリングされたデータサイズが小さい場合、データのフェッチとフォーマットのオーバーヘッドが高くなると、コード化されたアルゴリズムの効率が低下する可能性があります。

バンドル調整は、大きな行列の操作を含む複雑な線形代数を含む別のアルゴリズムです。これらおよびその他のVSLAMモジュールのコーディングを最適化するためのさまざまな手法が存在しますが、これらの手法を実装するには、高度なビジョン固有のコーディングの専門知識が必要です。

メモリ管理は、画像処理におけるもう1つの課題です。画像からキャプチャされたデータは通常、連続したメモリ位置にロードされ、画像内のランダムパッチを処理することは、連続したメモリ位置に保存されていないデータを処理することを意味します。機能の照合を実行するソフトウェアルーチンは、連続していないメモリ位置から記述子を取得する必要があり、セットアップのオーバーヘッドがさらに増加し​​ます。

VSLAM開発ツール

今日の環境では市場投入までのスピードが重要であるため、開発者が効率的なビジョン処理コードを実装するために必要なスキルと知識を習得するために時間をかけることは必ずしも現実的ではありません。幸い、費用効果の高いSLAMアプリケーションの高速化を促進するためのツールが多数存在します。ビジョン固有のソフトウェアライブラリ、最適化されたハードウェア、統合ツールの組み合わせを提供するアプリケーション開発キットが利用可能であり、開発者はビジョン固有のタスクをCPUからVPUに簡単にオフロードできます。

CEVA SLAM SDK(図4)は、このようなアプリケーション開発ツールセットの代表的な例です。


図4:CEVA SLAMSDK。 (出典:CEVA)

CEVA XM6DSPおよびCEVANeuPro AIプロセッサハードウェアに基づいて、CEVA SLAM SDKは、SLAM実装を低電力組み込みシステムに効率的に統合できるようにします。 SDKは、画像処理ライブラリを含む多数のビルディングブロックを備えており、機能の検出と照合、およびバンドル調整のための効率的なコードを提供します。また、線形代数、線形方程式の解法、高速スパース方程式の解法、および行列操作のサポートも提供します。

CEVA XM6ハードウェアは、非連続メモリアクセスの問題に対処するパラレルロード命令や、ハミング距離計算を実行するための独自の専用命令などの革新的な機能を備えた画像処理用に最適化されています。 SDKには詳細なCPUインターフェースも含まれているため、開発者はビジョン処理機能をメインアプリケーションのCPUと簡単に統合できます。

開発ツールとしてのSDKのパフォーマンスの例として、毎秒60フレームで実行される完全なSLAM追跡モジュールのリファレンス実装の消費電力はわずか86mWであると測定されました。

結論

ビジュアルSLAMシステムは、農業用フィールドロボットやドローンなどの幅広いアプリケーションで人気を集めています。ビジュアルSLAMの実装にはいくつかの代替方法がありますが、組み込みアプリケーションでの展開が増えるにつれて、コーディングの効率と低消費電力が重要な要素になります。

開発者がVPUを使用してコンピューティング集約型のビジョン処理タスクをメインCPUからオフロードすることは一般的ですが、効率的なコードを生成し、VPUとCPU間のインターフェイスを管理するために重要な課題が残っています。

開発者は、主要なドライバーを市場に出す時間があれば、CEVA SLAM SDKなどのSLAM固有の開発ツールキットに組み込まれている機能を利用して、製品開発を加速できます。


埋め込み

  1. 3D印刷アプリケーションにおける押し出しの役割
  2. グローバルサプライチェーンにおけるAIアプリケーション
  3. フタロシアニン顔料のすべての用途
  4. 基本的な染料のすべてのアプリケーション
  5. ピグメントブルーのすべてのアプリケーション
  6. 現代のプラスチックの開発
  7. コントローラの選び方
  8. 産業用バイブレータの用途
  9. インダストリー4.0:独自のサイバーセキュリティの開発
  10. 業界における視覚的管理の影響
  11. 3D ソフトウェア アプリケーションにおける相互運用性の重要性