超クールな屋内ナビゲーション用ロボット
コンポーネントと消耗品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
必要なツールとマシン
> |
|
アプリとオンラインサービス
> |
| |||
|
このプロジェクトについて
私たちのストーリー:
このプロジェクトは、GPS、WiFi、Bluetoothを使用せずに、事前定義されたパスを正確にロボットを移動させることを目的としています。地図や建物のレイアウト計画も使用しません。そして、その実際のパスを(スケールに)リアルタイムで描画します。 Bluetoothは、リアルタイムの位置情報を送信するために、ワイヤーの代わりに使用できます。
<図> <図> <図>
背景ストーリー:
Arduinoベースのロボットの屋内ナビゲーションのための堅牢なソリューションを探していました。このアプリケーションに適したモーションセンシングソリューションを選択する一方で、Oblu(オープンソースIMU)も検討しました。その低コストとオープンソースの性質は、それを有望な候補にしました。ここで注意が必要なのは、obluのオープンソースプログラムが、簡単に言えば、足に取り付けられた屋内の歩行者の推測航法(PDR)または歩行者のナビゲーションに適しているということです。フットマウントIMUとしての屋内でのObluのPDRパフォーマンスは非常に印象的です。大きなプラスポイントは、リアルタイムの位置追跡のための無料のAndroidアプリ(Xoblu)でした。しかし、人間の歩行モデルに基づく既存の歩行者ナビゲーションアルゴリズムをどのように利用するかはわかりませんでした。
Obluの内部計算は、人間の歩行に基づいています。 Obluは、2つの連続するステップ間の変位と方向の変化を示します。足が地面に接触すると、足の裏の速度はゼロになります。つまり、足の裏は停止します。 <上記のビデオを参照してください。>このようにして、Obluは「ステップ」を検出し、いくつかの内部エラーを修正します。そして、この頻繁なエラー修正により、優れた追跡パフォーマンスが得られます。だからここにキャッチがあります。ロボットも同じように歩くとしたらどうなるでしょう-移動、停止、移動、停止..
私たちはObluを選び、すぐにロボットと追跡システムを組み立てることができました。ストーリーの残りは次のビデオにあります...
仕組み:
ロボットは事前にプログラムされた経路で移動し、実際の移動情報を(Bluetooth経由で)電話に送信してリアルタイムで追跡します。
Arduinoはパスで事前にプログラムされており、obluはロボットの動きを感知するために使用されます。 obluは定期的にArduinoに動きの情報を送信します。これに基づいて、Arduinoは車輪の動きを制御して、ロボットが事前定義されたパスをたどるようにします。
<図>ロボットの経路は、直線セグメントのセットとしてプログラムされます。各線分は、前の線分に対する長さと方向によって定義されます。ロボットの動きは目立たないように保たれます。つまり、直線で動きますが、セグメントは小さくなります(簡単にするために「ストライド」と呼びます)。すべてのストライドの終わりに、obluはストライドの長さと偏差の程度(方向の変化)を直線からArduinoに送信します。 Arduinoは、事前定義された直線からの逸脱を検出した場合、そのような情報を受信するすべてのステップでロボットの位置合わせを修正します。
プログラムに従って、ロボットは常に直線で動くことになっています。ただし、不均一な表面、ロボットアセンブリの質量の不均衡、DCモーターの構造的または電気的な不均衡、またはフロントフリーランニングホイールのランダムな向きなどの非理想性のために、直線から外れて特定の角度または傾斜した経路で歩く場合があります。一歩進んでください..あなたの見出しを修正してください...前進してください。ロボットは、その特定の線分のプログラムされた長さを超えて移動すると、後方にも移動します。
次のストライドの長さは、その特定の直線セグメントがカバーする残りの距離によって異なります。移動距離が大きい場合、ロボットは大きな歩幅を取り、目的地(つまり、すべての直線セグメントの端)に近い場合は小さい歩幅を取ります。
IMU Obluは、データをArduinoと電話(Bluetooth経由)に同時に送信します。 Xoblu(Androidアプリ)は、ロボットから受信した移動情報に基づいてパスを構築するための簡単な計算を実行します。これは、電話でのリアルタイム追跡に使用されます。 (Xobluを使用したパスの構築を以下に示します。)
<図>要約すると、Obluは動きを感知し、動きの情報をArduinoと電話に定期的に伝達します。プログラムされたパスとモーション情報(obluから送信)に基づいて、Arduinoはホイールの動きを制御します。ロボットの動きは、開始/停止コマンドを除いてリモート制御されません。
パスモデリング:
ロボットは、直線セグメントのみを歩く場合に最適に制御できます。したがって、パスは最初に一連の直線セグメントとしてモデル化する必要があります。以下の写真には、いくつかのパスの例と、変位と方向に関するそれらの表現が含まれています。これがArduinoでのパスのプログラム方法です。
<図> <図>同様に、直線セグメントのセットである任意のパスをArduinoで定義およびプログラムできます。
回路アセンブリ:
Arduino、oblu、モータードライバー、バッテリーパック間の電気接続については、H / Wセクションを参照してください。
- 通信プロトコル:
ステップ1 :XobluはSTARTコマンドをobluに送信します
ステップ2 :obluは、適切なACKをXobluに送信することにより、コマンドの受信を確認します
ステップ3 :obluは、各ステップで、各ストライドの変位と方向情報を含むDATAパケットをXobluに送信します。 (ステップ=ゼロモーションまたは停止が検出されたときはいつでも)。
ステップ4 :Xobluは、適切なACKをobluに送信することにより、最後のDATAパケットの受信を確認します。 (ステップ3と4のサイクルは、XobluがSTOPを送信するまで繰り返されます。STOPコマンドを受信すると、obluはステップ5を実行します)
ステップ5 :STOP-(i)obluでの処理を停止します(ii)obluですべての出力を停止します
START、ACK、DATA、およびSTOPの詳細については、obluのアプリケーションノートを参照してください
Oblu IMUはどのように機能しますか(オプション):
Obluの概要と足に取り付けられたPDRセンサーの動作の基本原理に関するいくつかの参考資料を提示します:
-> obluの利用可能なソースコードは、足に取り付けられたナビゲーションを対象としています。そして、それはその目的のために最適化されています。以下のビデオは、その基本的な動作原理をカバーしています:
->足に取り付けられたPDRセンサーに関する簡単な記事をいくつか紹介します。
1.歩数を追跡する
2.歩数の追跡を続けます
-> フットセンサーを使用した歩行者の推測航法の詳細については、このドキュメントを参照してください。
-> Obluの概要については、次のビデオ:
----------------
フィードバック、提案を共有し、コメントを残してください。
最高の願い!
----------------
コード
arduinoベースのロボット
ロボットは事前にプログラムされたパスを移動し、現在の座標を電話に送信してリアルタイムで追跡します。https://github.com/vijkumsha/oblu_Robot 回路図
製造プロセス