工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Nox –ハウスワンダリングロボット(ROS)

NoxはKinectでSLAM(ROS)を使用して環境内を移動する、優れた(そして時間のかかる)ロボット。Noxは、ROS、Raspberry Pi、およびArduinoを使用して構築された差動駆動ロボットです。プロジェクトは、基本的なナビゲーションを備えたロボットベースとして開始し、掃除機などの他の用途にも使用できました。

しかし、DIYロボットには見当たらないことが多いため、適切な設計のスタンドアロンロボットにすることにすぐに決めました。現在の状態では、ロボットはSLAM(gmapping)を使用して、周囲のマップを作成し(Kinectの奥行き知覚を使用して壁や障害物を検出)、マップ内で自分自身をローカライズできます。与えられた目標への道を計画し、障害物を避けて目標に向かって進むことができます。

Noxは、11.1vのリチウムイオン電池で駆動され、2つのモーターで駆動されます。フロントパネルを取り外してバッテリーを交換することができます。溝付きの穴とネジで固定し、さまざまな長さのバッテリーを入れることができます。レベルを監視するための画面付きのバッテリーアラームを配置しました。


モーターは、Banggoodの2つの12v DCモーター(107rpm)です。それらは素晴らしいですが、実際にはロボットがそれほど速く進む必要はなく、速度の一部をより正確なエンコーダーと交換しても大丈夫でした。

デザインに関しては、Kinectを中心にロボットを構築していたので、Kinectとうまく統合できるものを用意することが主な制約でした。私は多くのモダンなスタイルのオブジェクトの三角形の外観に触発されました(そして私が認めなければならないDeusExによって多くのことを認めなければなりません)。 DIYロボットには欠けていることが多いので、見栄えの良いプロ並みのロボットが欲しかったのです(ただし、配線が煩雑になることを心配しないでください)。 CADモデルに数週間を費やして、すべてを微調整する必要がありました。

側面のライトは、無料で入手した大晦日の光る棒からリサイクルされ、ロボットの状態を示すのに役立ちます。 ArduinoがROSマスターに接続されていない場合(ロボットプログラムがまだ開始されていないことを示します)、ライトは3回続けて非常に速く点滅します。運転中、ライトはより「呼吸」しているように見えます。点滅速度はロボットの速度によって異なります。

点滅して接続しない

アイドル点滅

構造

前述のように、ロボットは差動駆動ロボットであるため、モーターは同じ軸上に配置されます。ベースは木でできており、サポート用のキャスターホイールが2つ付いています。私は当初、過静状態を避けるために1つのキャスターホイールを使用することを計画していましたが、適切なサイズのキャスターホイールを見つけることができませんでした。残りの構造は主に木と金属のブラケットでできており、DIYの小売店で簡単に見つけることができます。ロボットプレートの後部には、電子ボードを置くために積み重ねることができます。


カーターは黒いプラスチックプレートでできており、手でカットして接着します(次回は間違いなく3Dプリントを使用します)。


ハードウェア

メインコントローラーの内側には、UbuntuとROSを実行するRaspberry Pi3Bがあります。ラズベリーは、WiFiとsshを介して外部のコンピューターからアクセスし、ロボットに注文を与えることができます。 ROSプログラムは、Kinectを使用して、走行距離計算、ナビゲーション計画、およびマッピングを実行します。 Raspberry Piは、速度コマンドをArduinoに送信します。Arduinoは、Adafruitモーターシールドを介して2つのモーターをPIDで制御します。エンコーダーの値を読み取り、各モーターの速度を計算し、オドメトリ計算のために値をラズベリーに送り返します。 ArduinoとRaspberryPiはUSBで接続されており、ArduinoプログラムはROSノードとして機能します(詳細については、rosserialを探してください)。

良いものに落ち着く前に、さまざまな種類のArduinoを使用しました。最初は基本的なArduinoUnoを使用しましたが、エンコーダー値を読み取るのに十分な割り込みピンがありませんでした(Arduinoでこれを行うための最良の方法)。それを機能させるために他のプログラミングトリックに頼らなければならなかったので、速度と精度は制限されていました。 Arduino Leonardoを使用してみましたが、制限要因はメモリであり、最終的にArduino Mega2560に切り替える必要がありました。新しい機能を追加するためのメモリとピンが十分に残っているので変装した祝福です。

Kinect 360は、SLAM(Simultaneous Localization And Mapping)をやりたかったのですが、LIDARに多額の費用をかけずに、最初からプロジェクトの一部でした。 kinectは基本的に25€の3Dカメラであり(もちろん北陽と同じ精度は期待できません)、SLAMに必要な深度スキャンに加えて、コンピュータービジョンにも使用でき、加速度計とマイクを備えています配列。これらはすべて、プロジェクトの次のステップに便利です。

2つのDCコンバーターを使用して電圧を変換します。モーターはバッテリー電圧(多かれ少なかれ11.1v)で直接動作しています。コマンド部分(Raspberry Pi、Arduino、エンコーダーを含む)は、バッテリーから変換された5Vで実行されます。 Kinectには12Vの安定した電圧が必要であり、コンバーターがバッテリーからも電圧を供給します。

ソフトウェア

ソフトウェアの部分では、ROSKineticを使用しました。私が実際に書いた唯一のノードは「nox_controller」です。これは、彼の名前が実際には意味していないため、Arduinoデータ(モーター速度)からオドメトリを計算するために使用されます。計算に使用されたモデルは、「パスプランニングへの適用を伴う差動駆動ロボットオドメトリについて」という論文にあります(私は実際に独自の式を作成しましたが、同じですが、とにかくこの論文は読む価値があります)。共分散行列はオドメトリで指定されていますが、現在は使用されていません(ただし、IMUをオドメトリに統合すると便利になります)。

Arduinoでは、モーター制御はPWMを介して行われます。 PIDは各モーター速度を管理することになっていますが、PWM /モーター速度比は非常に線形であるため、速度を直接コマンドして良い結果を得て、今のところPIDを非アクティブにしました。正しいPIDの実装とキャリブレーションが進行中ですが、心配する必要はありません。

詳細を読む:Nox –家をさまようロボット(ROS)


製造プロセス

  1. Arduino + RaspberryPiロボットプラットフォームの作り方
  2. ラズベリーパイとブリッジシールドを使用したロボット
  3. ラズベリーパイCDボックスロボット
  4. ANDY:多目的「ヒューマノイド」ロボット
  5. ローリングアラームロボット
  6. Minecraftクリーパーロボットを作成する
  7. JQR Quadruped Autonomous Robot
  8. アルキメデス:AIロボットフクロウ
  9. EMAR Mini –緊急支援ロボット
  10. RaspberryPiを使用したWifi制御ロボット
  11. Intellisaurus –恐竜ロボットキット