質問

私は障害物で満たされたフィールドを持っています、私はそれらがどこにあるかを知っています、そして私はロボットの位置を知っています。パス検索アルゴリズムを使用して、ロボットが従うパスを計算します。

私の問題は、ロボットをグリッドからグリッドに導いていることですが、これはそれほど滑らかではない動きを作成します。私はAから始め、鼻をポイントBに回し、ポイントBに到達するまでまっすぐに移動し、すすいで最終ポイントに到達するまで繰り返します。

私の質問は、そのような環境でのナビゲートにどのようなテクニックが使用されているので、スムーズな動きが得られますか?

ロボットには2つのホイールと2つのモーターがあります。モーターを逆にして、モーターの方向を変更します。

編集:モーターの速度を変えることができます。基本的にロボットはArduinoとArdumotoです。どちらの方向でも0〜255の間のモーターに値を供給できます。

役に立ちましたか?

解決

差別的駆動型ロボットのフィードバック線形化が必要です。これ 資料 セクション2.2で説明します。以下に関連する部分を含めました。

プロジェクトに必要なシミュレートされたロボットは、速度が境界のある違いのドライブロボットです。微分ドライブロボットは非ホロノミックであるため、学生はフィードバック線形化を使用して、アルゴリズムから運動学的制御出力を変換して微分駆動ロボットを制御することが奨励されます。変換は次のとおりです。

Transformation

ここで、v、ω、 バツ, y 線形、角度、および運動学的速度です。 Lは、ロボットのホイールベースの寸法に比例したo =設定された長さです。

他のヒント

私がかなり良い結果を持っていた1つのコントロールアルゴリズム 純粋な追求. 。基本的に、ロボットは、ロボットの前の固定距離でパスに沿ってポイントに移動しようとします。したがって、ロボットがパスに沿って移動すると、先見の明のある点も前進します。アルゴリズムは、可能なパスをアークとしてモデル化することにより、非ホロノミーの制約を補正します。

先を見たい距離は、より滑らかな動きを生み出します。ただし、先を見先の距離が大きくなると、ロボットが角を切断し、障害物と衝突する可能性があります。この問題は、Vectorフィールドヒストグラム(VFH)と呼ばれるリアクティブコントロールアルゴリズムからアイデアを実装することで修正できます。 VFHは基本的にロボットを近くの壁から押しのけます。これは通常、ある種の範囲検索センサーを使用しますが、ロボットのポーズと障害物の位置を知っているため、障害物の相対的な位置を外挿することができます。

これについての私の最初の考え(私は仕事中なので、あまり時間を費やすことはできません):

それはあなたがあなたの角をどれだけタイトにしたいか、またはあなたのコーナーを必要とするかによって(これはあなたのパスファインダーが障害物からあなたに与える距離に依存するでしょう)

ロボットの幅を考えると、各ホイールの速度を考慮して、回転半径を計算できます。できるだけ速く進みたいと仮定し、スキッドは問題ではないと仮定すると、常に外側の車輪を255に保ち、必要な回転半径を与える速度まで内側のホイールを下げます。

パス上の特定のターンと使用する回転半径の角度を考えると、内側のホイールを遅くするノードからの距離を解決できます。

最適化アプローチは、これを処理するための非常に一般的な方法です。

計算されたパスを一般的な非線形最適化アルゴリズム(あなたの選択!)への入力として使用します。コスト関数は、入力軌跡への回答軌跡の近さと非ホロノミック制約への遵守、およびその他の制約を順守します。実施したい(例えば、障害から離れている)。最適化アルゴリズムは、元の軌跡から構築された軌跡で初期化することもできます。

Marc Toussaintのロボットコースノートは、このタイプのアプローチの優れたソースです。特に講義7を参照してください:http://userpage.fu-berlin.de/mtoussai/teaching/10-robotics/

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top