1

立方体をつかむための 4 本の腕を持つルービック キューブ ソルバーを作成しようとしています。lejos ファームウェア バージョン 0.9.0 を使用しています。私の問題は、モーターが失速していることをどのように検出できるかです。

例: Motor.A は、モーターがブロック/失速している間に正転し、Motor.A は停止する必要があります。

誰でも私を助けてくれることを願っています。

4

3 に答える 3

0

位置が変わるかどうかを確認するのが唯一の方法だと思います。移動コマンドを送信し、待機し、位置を確認して、それが要求どおりかどうかを確認します。

于 2011-12-22T21:13:19.467 に答える
0

ドキュメントによると、motor.getPosition() は motor.getTachoCount() と同じである必要があります。そうでない場合は、モーターが失速していると見なすことができます。

public float getPosition()

モーター レギュレーターが維持しようとしている現在の位置を返します。通常、これはモーターの実際の位置であり、getTachoCount() によって返される値と同じになります。ただし、状況によっては (失速中の activeMotor、または強制的に位置がずれている activeMotor)、2 つの値が異なる場合があります。調整が一時停止されている場合、このメソッドを呼び出すと再開されることに注意してください。

したがって、2 つの値が等しいかどうかを確認する必要があります。

public boolean isStealed() {
    motor.getPosition() == motor.getTachoCount();
}
于 2019-01-04T22:02:48.183 に答える