FPGAをRoboticsで使用する必要があるのはいつですか?


12

FPGAは、このようなIOポイントの多くとしての良さを持っているが、その後、再びあなたが非常に低レベルで物事を考える必要があるフリップフロップと物事がまだ成熟していない領域の開拓者-例えば、この質問を参照してくださいここでの開発、ツールについてFPGA-これは現在私の理解です!現在、FPGAは、このようなロボットハンドで優れた器用さを実現するために使用されています。現在、一部の人々は、次のような高速プロトタイピングおよび「将来を見据えた」設計のためにFPGAを販売していますが、それらを完全には理解していません。そう

ロボット工学のプロジェクトではいつFPGAを選択すべきですか?


並列処理が必要な場合は、FPGAを使用するのが賢明です。また、独自の「チップ設計」を調整し、新しいハードウェアチップなしで一部の機能を「簡単に」アップグレードできます。リアルタイムでカメラから複数のオブジェクトを検出する例を見ました。確かに、小規模なプロジェクトではオーバーヘッドになります。
ゴッサマー

回答:


4

開発ツールに関するリンクされた質問で、あなたはそれらが成熟していないと思わせるのかわかりません。それらのほとんどがプロプライエタリであり、オープンソースではないことは事実です。しかし、3年前にその質問が行われたときでも、ツールはかなり成熟していると思いました。現在、ザイリンクスアルテラ、およびラティスはすべて、32ビットおよび64ビットをサポートするWindowsおよびLinuxで動作する無料の開発環境を備えています。オープンソースを主張する場合、Icarus Verilogはかなりのことができます。しかし、私は個人的にベンダー固有のツールに固執します。

FPGAは、単なる設定可能なフリップフロップ以上のものです。アルテラNIOS IIを検討してください。Linuxを実行できる32ビットソフトコアプロセッサ。OpenCoresまたはXilinxAltera、またはLatticeの通信およびその他の周辺機器を組み合わせて使用し、必要なものをすべて備えたカスタムマイクロコントローラーを構築しました。NIOS IIプロセッサ用のCコードを記述し、速度が必要な場合は特定の機能をFPGAハードウェアに直接実装することもできます。その高レベルはあなたのために十分に考えていますか?

FPGAは初期投資コストが高い。ただし、設計プロセスの後半で機能を追加する方が安価で簡単です。それが「将来を見据えた」デザインの意味です。ロボットに追加のモーターを追加したいが、マイクロコントローラーのPWMジェネレーターが不足しているプロジェクトを考えてください。職業はなんですか?別のマイクロコントローラーを追加しますか?個別のPWMチップを購入し、それらを通信インターフェイスに接続しますか?すべての通信インターフェイスが使用中の場合はどうなりますか?FPGAでは、これはほぼ完全にコピーアンドペースト操作に削減されます。FPGAを搭載したハードウェアを追加購入することなく、新しい機能を含めるために設計をスケーリングする方がはるかに簡単、安価、迅速です。

しかし、おそらくFPGAを使用する最大の理由は速度です。私は純粋なクロック速度について話しているのではありません。しかし、同時に多くのことが必要な場合。Gossamerが述べたように、並列処理はFPGAが本当に得意とするものです。フィルタ設計は、この種の並列アーキテクチャから特に恩恵を受けます。急速に変化するセンサーをフィルタリングして応答する必要がある場合は、FPGAが必要です。また、ビデオ処理も非常に優れており、これも並列処理の恩恵を受けます。

この高速ハンドロボットを例にとってみましょう。高速(1000フレーム/秒)のマシンビジョンカメラと触覚センサーからのビデオを処理し、わずか数ミリ秒で多数のアクチュエーターを操作して応答する必要があります。このタイプのプロジェクトは、FPGAを選択する必要がある場合です。

超並列ビジョン処理


この「FPGAの初期投資コストが高い」ことを明確にできますか?ここに関連する:価格は非常に低く見える。トレーニング費用が高いということですか、それとも他の数字ですか?
hhh

1
@hhh私は生のチップコストについて話していませんでした。私は開発コストについて話していました。PandaBoardなどのマイクロコントローラー開発キットを検討してください。181ドルのARM Cortext A9が含まれています。Cyclone VなどのA9を搭載できる FPGA開発ボードは1,099ドルです。
embedded.kyle

@hhhもちろん、より安価なFPGA開発キットがあります。しかし、私は、非常に異なる2つのことを比較するためのメトリックを見つけようとしていました。(ほぼ)ほぼ同じ処理能力を持つ開発キットは、約10倍以上です。
embedded.kyle

@hhh Mouserで最も安いARMは0.80ドルです。最も安いFPGAは2.80ドルです。
embedded.kyle

2
@hhhその手は、数十万ドルではないにしても数十万ドルのカスタム機器を実行している最先端の研究です。一般に、ビデオ処理はハイエンドになる傾向があります。こちらこちらをご覧ください。そして、どちらもおそらく1kfpsのビデオを処理できませんでした。30-60fpsな​​ど。リストしたボードにはビデオ入力がありません。最も確実にアクチュエータを制御し、触覚センサーを処理できますが。反抗的にリンクしたハンドをエミュレートできます。
embedded.kyle

2

FPGAが実際に何であるか、およびデザインでいつ使用されるかについて誤解があると思います。それでは、まずその部分を説明してみましょう。

FPGAと1つが必要な場合...

単純化のリスクがあるFPGAは、たまたま「再構成可能」なプロセッサにすぎません。

「再構成可能な」マイクロプロセッサが必要なのはなぜですか?それは、シリコンプロセッサを製造するのに費用がかかりすぎて、1チップ、2チップ、または200チップでも処理できるためです。数千チップのバッチを実行して経済的に実現する必要があります。

最初の段階でバグのないデザインはないため、シリコンルートを使用すると、製造コストが非常に高くても、少なくとも2回はテストを実行できます。

これは本質的に、商業的魅力が十分にあるチップ以外のものを設計し、製造することに興味を持つ商業企業はほとんどないことを意味します。

したがって、カスタムマイクロプロセッサを正当化する素晴らしいデザインを思いついたら、実際のチップが単なるゲートのコレクションであるFPGAに実装することで、わずかな予算でアイデアを実現しようとするかもしれません。「プログラム」(通常はVHDLまたはVerilog)は、これらのゲートを実際のマイクロプロセッサに配置します。

しかし、これはまったく異なる(マイクロプロセッサの設計!)道をたどる方法です...

それは私がそれを提案することにつながります

... FPGAはロボット工学に不可欠ではありません -少なくとも最初は

ロボット工学に必要なのはプロセッサです。FPGAは、特別な種類のプロセッサです(再構成可能)。

「するべきか」と尋ねますか?まあ、それはあなたの知識とあなたの本当の興味がどこにあるかに依存します-マイクロプロセッサ設計が最初かロボット工学が最初か?

マイクロプロセッサがあなたの情熱なら、ぜひ!また、ロボット工学は、カスタムマイクロプロセッサ(ハードウェアで直接処理される多くの並列決定経路を持つ視覚野、またはハードウェアでの特別なテンソル乗算など)の優れたアプリケーション領域です。

ただし、FPGAでマイクロプロセッサを設計する場合は、もちろん、言及した低レベルの知識をすべて持っている必要があります。基本的には、独自のプロセッサを設計するためです。ターゲットアプリケーションがロボット工学である場合でも、これはロボット工学とはまったく関係ありません。

ほとんどの設計者は、おそらく、必要な機能のほとんどを実行する既存のプロセッサを見つけることができます。

したがって、おそらくFPGA 必要ないと思います。

スターターロードマップ:商用機能から(おそらく)FPGAへ...

私の意見では、最初の目標は、すべての創造的な概念を実用的なロボットに組み込むことです(それ自体はかなりの挑戦です)。

設計に特定の重大な処理のボトルネックがあることがわかった場合、次の目標は、市販のチップであるプロセッサの選択/設計を最適化することです。より大きく、より高速かもしれません(消費電力、熱放散とのトレードオフ)。特定のタスクを処理し、メインの脳とインターフェイスする(アルゴリズム/ロジックの複雑さとのトレードオフ)小型の専用チップかもしれません。

市販のチップで処理できない機能がある場合にのみ、FPGA内に特殊なプロセッサを実装することを検討してください。その時点で、「独自の'そして、設計の残りの部分に適切なインターフェイスを使用して、これらの機能の実装に集中できます。

そうでなければ、あなたはあなたの主な目標から脇道に追い込まれる可能性が高いでしょう(実際にロボットを構築することです!)

結論:FPGAは、ロボット工学を始めるのに気を散らします-ロボット工学の道をかなり進むまでは-途中でデジタルエレクトロニクス/マイクロプロセッサの設計で強力なチョップを獲得しました。


FPGAによる並列処理が速度とより正確な結果を得るために不可欠であるビデオ処理などの分野で多くの例を考えることができます。ノイズが多い虹彩検出をシングルCPUでリアルタイムに実装しようとすると、失敗が発生します。いいえ。FPGAには、高度な器用さのロボットハンドや精密/高速ビデオ処理など、揺れる独自の領域があります。私はそのようなFPGAとマイクロプロセッサを並置することを理解することはできません。彼らは非常に異なる獣であり、それぞれに良い面と悪い面があります。間違えた?FPGAのこの種の優れた領域がどこかにリストされているかどうかはわかりませんか?
hhh

FPGAが有利な分野はたくさんあることは確かです。答えから除外しませんでした。問題は、あなたが経験曲線のどこにいるのか、そしてFPGAを使用することで得たい特定の利点についてどれだけ明確であるかです。その答えがわからない場合は、おそらく必要ないでしょう!(これは、以下のヤコブの答えを反映しています。)
アサドエブラヒム

1

ロボットプロジェクトでFPGAとマイクロコントローラーの両方を使用していたので、実際に言うと、タスクを実装する人が最も経験を持っているものは何でもです。両方を同じようによく知っていれば、あなた自身に質問をすることはないでしょう。どちらもよくわからない場合は、次の点に注意してください。

  • I / Oポートに複雑なタイミングが必要ですか?三相モーター制御には、このような要件があります。ここでは、FPGAにわずかな利点があります。
  • 超低遅延アルゴリズムを並列化できますか?ここで、FPGAは実際にはマイクロコントローラーと競合するのではなく、組み込みPCと競合します。ほとんどのことは組み込みPCに使用しますが、特定のアプリケーション向けのFPGAを使用すると有利な場合があります。たとえば、密集したステレオ処理は、多くの場合FPGAで行われます。多くのカメラはFPGAを使用してデータストリームを処理します。

また、よく使用されるのはハイブリッドソリューションです。2つのチップ、つまりプログラムコード用の1つのマイクロコントローラーと、IOまたはその他のタスク用のFPGAのいずれか。また、実際にマイクロコントローラーが埋め込まれたFPGAがいくつかあります。

私は他の投稿のようにFPGAにそれほど厳しくはありませんが、一般的に、VHDLをよく知らない限り、マイクロコントローラーを使用することをお勧めします。


FPGAでどのようなことが良いのか、マイクロコントローラーでどのようなことができるのかを理解するのに役立つサンプルプロジェクトをいくつか示していただけますか?たとえば、ラインフォローイングロボットを考えてみましょう。平らなきれいな表面上の単一のマイクロコントローラーで、画像のシャープ化/コンボリューションなどを必要とするラインがぼやけるまでかなりうまく機能します。森(または他のノイズの多い表面)のラインの場合、それははるかに難しい課題になります(fpgaを使用することさえ可能かどうかは疑問です)。画像/ビデオ処理のリアルタイムなどにfpgaを使用した実際のロボットプロジェクトを実行したことがありますか?VHDLの場合は+1。
hhh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.