サッカーロボットのスピンコントローラーを記述する適切なアプローチは何ですか?


14

3輪サッカーロボットのプログラミングを想像してください。あなたはそれを回すためにどのタイプのコントローラーを使用しますか?P?PID?

このコントローラーの目標は、ロボットを定義された角度(0度)で立て、手または他のロボットで回転させると元に戻すことです。

私はロボットではなくサーボにステッパーモーターを使用しているため、これをソフトウェアに実装する必要があります!

サンプルPタイプコントローラーを既に作成しましたが、動きはかなり良好です。しかし、可能であれば改善したいと思います。コードは次のとおりです。

void spinSpeed(int devidedValue, int addedValue, int correction) {

    if(degree<correction && degree>-correction) {
        motorSpeed = 0;
    } else {
        if(degree > 0) {
            motorSpeed = ((degree)/(devidedValue) + (addedValue));
        } else {
            motorSpeed = ((degree)/(devidedValue) - (addedValue));  
        }
    }
}

correctionは、ロボットに動きがない範囲です。 degreeコンパスから返される-127〜128の数値です。 motorSpeedPWMに適用される0〜255の数値です。


おそらく、コンパスがdegree?の新しい値を生成するたびに、このルーチンが実行されます。
マークブース

@MarkBooth while(1)にコードがあるので、各サイクルでコンパスから値を取得して関数に渡し、その結果をモーターに適用します。
ミロマルカラヴァネス

ソフトウェアでサーボの動作を複製しようとしているため、サーボが使用するコントローラの種類を調査します。
クリスラプランテ

私はサーボを使用しません。私はステップモーターを使用しているので、モーターにはまだそのような動作はありません。
ミロマルカラバネス

2
こんにちはMiro、スタック交換では、コメント内の質問に応答して質問を編集することをお勧めします。そうすれば、コメント自体が邪魔にならないようにコメントを整理(削除)できます。
マークブース

回答:


7

PID制御ループについて覚えておくべき重要なことは、各用語が移動中の異なる時点で制御を支配することを意図していることです。

比例項は、目標位置から遠ざかるほど大きなトルク(または場合によっては速度)を支配し、提供することを目的としています。

派生語は、典型的な台形の動きの「巡航」段階で支配することを意図しています。目的地から遠く離れている場合、非常に高い比例項を支配し、暴走加速を制限するのに役立ちますが、目的地に近づき、比例項の寄与がはるかに少ない場合、目的地に収束する速度を上げることもできます。

トルクコントローラーではなく速度コントローラーを使用している場合、微分項は実際には速度コントローラー内に隠され、PIDループに直接アクセスできない可能性があります。これにより、制御が簡単になります(通常は、必要な速度または最大速度のいずれか低い方まで、できるだけ速く加速します)が、予測が難しくなる可能性もあります。多くの場合、過度に積極的なD(またはP)用語は、リミットサイクル(この状態では、モーターの音が原因で共振または振動と誤って呼ばれることもありますが、リミットサイクルははるかに正確な説明ですが、 )。

積分項は、残留定常状態誤差を修正するためにあります。つまり、どこに行くように求められているのか、実際にどこにいるのかという、長期にわたる長期的な違いがあります。現在のcorrection(実際には単なる許容誤差)値は、積分項の反対のように機能し、目的の位置の不感帯内にいるときにモーターを完全にカットします。

これらの要因により、明確な加速、巡航、減速の各段階で速度プロファイルを計画しない限り、完全なPIDループを実装してもほとんど利益が得られません。

また、不感帯とI項の欠如は、最終位置が常にある程度ランダムになり、希望する位置に近づく方向によって異なる可能性が高いことを忘れないでください。そのため、双方向の再現性は、標準の再現性よりもはるかに悪い場合があります。

精度、再現性、解像度の違いに関する詳細については、この優れた説明を参照してください。あなたの場合、解像度はコンパスセンサーですが、精度と再現性の両方がcorrection値によって制限される可能性が高くなります。なぜなら、correction値がコンパスの解像度よりも大きい場合は、代わりに位置精度の一部を捨てるため近くにいるときにモーターをオフにします。


8

PIDコントローラーが最適です。コンパスを使用すると、ロボットのベアリングを取得し、それを達成したいベアリングと比較し、PIDチューニングテクニックを使用してスムーズな回転運動を達成することができます。ご希望の見出し。このアプローチは、一定量の正確な回転にも適用できます。

私はすでにこの分野でいくつかのロボット工学を行っています、これは私たちがロボットで使用したもので、あなたとあまり似ていないタスクをしています...


1
ご回答有難うございます。私は答えを受け入れたかったのですが、もっと答えが見たいので、もっと答えがあったときに受け入れます;)
ミロマルカラヴァネス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.