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プリントを使用します)。
ハードウェア
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)
製造プロセス