1

ロボット気球を特定の高度まで飛ばす方法/アルゴリズムを探しています。ロボットは Raspberry Pi によって制御され、プロペラを備えています。プロペラ速度はいくつかの値に設定できます (PWM を使用するため、技術的には 1024 の異なる出力)。気球には下向きの距離センサーがあるため、現在の高さを 1 秒間に数回取得できます。私がこれまでに持っていた唯一のアイデアは、常に高さを測定し、残りの高さに基づいて最大速度に設定することでした. ただし、これは最良の選択肢のようには思えませんが、すべての電源出力をどのように適合させるかがわかりません.

どんなアイデアでも大歓迎です。私は Java を使用してプロジェクトをコーディングしていますが、高レベルのアルゴリズム/説明は素晴らしいでしょう!

どうも、

魔法

4

2 に答える 2

2

まさにその問題を試して遊ぶことができる素晴らしい「ゲーム」があります: Colobot (現在はオープンソースのようです)。Winged-Grabber (または FPS タイプの人ならシューター) を作成し、高度とモーター コントロールのみを使用して特定の目的地まで飛行させます。

一般的には、MadConan による疑似コードが適していますが、主なタスクはスマートな setPower 関数を作成することにあります。最終的には、目的の高度にどれだけ近づくかに応じて電力を削減する平滑化機能が必要になりますが、その機能の正確な値は、ハードウェアと最終システムの重量に完全に依存します。

セットアップが最終的にどれだけ価値があるか、壊れやすいかによって、実行中に平滑化機能を調整するための基礎としてアンダー/オーバーショットを取る学習システムを開発することをお勧めします。計算には、風上/風下などの要因を考慮してください。

于 2013-10-31T13:01:29.623 に答える
1

疑似コード。

  while(true){
    val height = getHeight(); // from sensor

    // Get the difference between the current height and
    // the TARGET height.  Positive values mean too low
    // while negative values mean too high
    val offset = TARGET_VALUE - height;

    // Set the power to some direct ratio of the offset
    // When the baloon is at 0 height, the offset should 
    // be relatively high, so the power will be set 
    // high.  If the offset is negative, the power will be 
    // set negative from the current power.
    setPower(offset);// I'll leave it up to you to figure out the ratio
}
于 2013-10-31T12:49:18.770 に答える