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の数値です。
motorSpeed
PWMに適用される0〜255の数値です。
degree
?の新しい値を生成するたびに、このルーチンが実行されます。