RaspberryPi、Arduino、RaspiCam + OpenCVのロボット。 パート1の概要

非常に頻繁に記事がハブに表示されます。RaspberryPiをメディアセンター、モバイルビデオカメラ、リモートWebカメラとして使用する方法などです。それだけです。 このような大規模なITパーティでは、サイズとコストに制限があるがパフォーマンスも必要な組み込みシステムでは、プログラミングとシングルボードコンピュータの使用方法に関する情報が非常に多いのは非常に奇妙です。 。 いくつかの記事では、コンピュータービジョンを備えたモバイルホイールロボットの作成例を使用して説明しようとします-ラズベリーを使用してロボット(Webカメラを備えたWeb制御されたマシンではなく、搭載されたインテリジェンスを備えたピース)を作成する方法

画像



はじめに



機械的な何かをプログラムすることは常に興味深いものでした- あなたは神のように感じます(ほとんどのプログラマーのように) -あなたは細部の束に魂を吹き込みます。 おそらく誰もが、LEDの最初の点滅、動くサーボなどによる子供時代の喜びを覚えているでしょう。 -彼が触ることができる、PHPサイトではなく、生き、動く何かをしたとき。

彼の作品の多く、特にロボットでは、人は常に自分自身、または自分の機能の一部を繰り返します。 私たちは世界の情報の80%をビジョンを通じて得ています。そのため、コンピュータービジョンはロボット工学の知識の基本的な分野の1つであると思います。

画像

C ++でのOpenCVコンピュータービジョンライブラリ(Raspberry-Pythonの場合)の開発と並行して、アルゴリズムに関する学術論文を読んで研究を開始しました-アルゴリズムの原理を知っていると、タスクの開始前にタスクの複雑さと実行可能性を評価し、アルゴリズムを最適化するのに役立ちます重要な場所で。 主にライブラリ関数を使用している場合-それらは十分に最適化されており、最初からより良く書くことはほとんどありません-特定の場合に問題の解決にわずかに影響するが、その速度に大きく影響するいくつかのパラメータを最適化することができます-一般にホリバーに戻る-「プログラマーは数学が必要ですか」-この場合、私はそれが必要なので、少し脳回をこすり、少なくとも表面的にはアルゴリズムの動作を理解することをお勧めします。



自動制御理論を少なくとも表面的に研究することも有用です-その機能を説明するのではなく-次のビデオを見るだけです(ところで-彼のチームの半分はロシア人です)





ロボット部品



画像

あなたがそれを繰り返したいなら、あなたが私と同じ詳細を手に1つ持っていることはまずありません-したがって、私は一般的な概念を説明し、あなた自身で見ることができます。



力学



ロボットの機械的基盤-差動駆動を備えた二輪車-は、一般に、最初のロボット実験では古典的です-独立した2つの車輪があり、その動きは、速度と回転方向(クワッドコプタープロペラなど)によってのみ制御されます。 実際のホイールに加えて、高度なシステムにはボール/ホイールのサポートがあります。これは、エンジンのより効率的な制御を可能にする、エンジンの現在の速度をフィードバックおよび監視するエンコーダです。



画像



エンジンコントローラー



エンジンコントローラーとして任意のマイクロコントローラーを使用できます。Arduinonanoを使用しています。

おそらく疑問が生じます-Raspberryで直接管理してみませんか? 実際には、オペレーティングシステムにはマイクロコントローラーよりもはるかに多くの時間があり、さらにハードウェアPWMもありません。さらに、フィードバックと制御理論を使用してモーター制御を改善するには、計算コストと高速応答が必要になります。モーター制御部とロボットの脳は分離されています-arduinoは単にUARTコマンドを受信します-脳がエンジンを回転させる速度と方向-達成方法-必要なデューティサイクルでPWMをオンにするだけ またはトリッキーな制御、最初に設定値以上の電圧を供給し、エンジンを回転させてからイコライズするとき-エンジンを所望の速度に加速する-これはすべて、ラズベリーではなくモーターコントローラーの懸念です-これは一般的にはるかに難しいタスクです-順序は、Raspberryが許可するよりも2つ小さく、実際に同様のシステムです。



エンジンドライバー



Arduinoだけではモーターがスピンアップするのに十分ではありません-足から供給される電流が小さすぎます-コントローラーの足の小さな出力トランジスターにアンペアのオーダーの電流を必要とするモーターの巻き線を置くと-短絡を配置するだけで-自分でキーをロックし、ほとんどの場合それが終了します建物-したがって、自分自身に大電流を流すことができるより強力なスイッチが必要です-モーターを一方向に回す必要がある場合-一般に、必要なトランジスタは1つだけですが、別のトランジスタを回したい場合-すでに持っています Dreghood 4 -このようなスキームが呼び出されたH -ブリッジ -対角線キーを閉じ、他の対角線閉鎖-我々は、モータにおける電流の方向を変えることができます。

そして、そのようなスキームは各ホイールに必要です。 幸いなことに、私たちの時代にはそれを組み立てる必要はありません-それは非常に多くの集積回路の形で実装されているので、あなたのモーターが必要とする電流を制御できるものが適しています。 私はポロルのこの2チャンネルを使用しています:



Arduin用の多種多様なシールドもあります。Googleの助けを借りて、リクエストに応じて「arduino motor driver」で簡単に見つけることができます。 接続スキームは通常、メーカーまたはさまざまなフォーラムのユーザーによって提供されます-シーカーはそれを見つけます。 超小型回路には2つの電源があります-1つは強力な電流源からモーターに供給されます-例えば、7.2V Li-Polバッテリー、もう1つはArduino 5Vロジック入力ステージから電力を供給され、各チャンネルの回転方向を制御する入力と、 PWM信号により、エンジン速度を調整できます。 シールドに応じてさまざまな構成がありますが、主な結論は次のとおりです。







一般的に、この方法でArduino、エンジンドライバー、モーター、およびバッテリー(または長いワイヤー上の単なる電流源)を接続することにより、モーター制御で遊ぶことができます。 Raspberryからコマンドを受信するには、UARTライン受信とその解析を実装する必要があります-あなたの心が望むものなら何でもプロトコルを考え出すことができます。 上記-ほとんどすべての車輪付きロボットの主要部分-オプションはすでにさらに始まります-一般的には、コンピュータービジョンに駆動し、Arduinoで純粋にロボットを作成できます。たとえば、ラインに沿って移動したり、距離センサーを使用して障害物をバイパスしたりできます。



メインコントローラー



画像

私の仕事は、コンピュータービジョンと制御理論の研究のために、いくぶんインテリジェントなプラットフォームを作ることです。そのため、システムの次の要素は、情報の低価格、普及、アクセス性を考慮したシングルボードコンピューターRaspberry Pi B +です。 PythonインタープリターはRaspbianアセンブリに含まれているため、ロボット用のプログラムを作成しました



カメラ



画像

一般的に、どのウェブカメラもカメラとして使用できます(最初はこれを使用しました)-私はRaspicamを使用します-それは小さく、軽く、接続するための独立したポートがあり、広い視野角が良いドライバーであり、VGA解像度で90 fpsです。











デバッグツール





デバッグには、USB Wifiホイッスルを使用し、SSH経由でリモートデスクトップ経由でRaspberryに接続します。 また、一般に、初期セットアップには、一般にイーサネットケーブルとSSHを使用できます。



電力システム



バッテリー-2Ahから7.2V定格電圧+充電のリチウムポリマー。



ステップダウンDC-DCコンバーター-バッテリーは8.4から6Vを供給します-この電圧をドライバーチップを介してエンジンに直接供給できますが、RaspberryとArduinoは電力を供給するために5Vの電源を必要とします-Raspberry Piの資料によると、少なくとも800mAを供給できる5Vの電源が必要です-もちろん、リニアスタビライザーを使用してバッテリーの電圧を5Vに下げることはできますが、そのような電流では、バッテリーの電力を非効率的に加熱して使用するため、パルス降圧DC-DCコンバーターの使用をお勧めします-それから 私は栄養としているのArduinoとラズベリー





実際に、私のナノテクノロジーロボットの写真と、デモとしてのさまざまな競合トラックに乗ったそれのビデオがいくつかあります。



ラインプロ(破線)



急カーブの細い線(ユーロ)





一般に、レビュー記事は完了しました-使用された主なツールについて話しました。それから、より具体的になります:

1.はじめに

2.Raspberry Pi初期設定+ Wifiデバッグ

3.PythonでOpenCV、Raspicamを始めよう

4.ロボット制御、PIDコントローラー、例

質問、コメント、追加、提案は、コメント、スリップ、その他の以下の記事に残してください-PM



All Articles