立方体をつかむための 4 本の腕を持つルービック キューブ ソルバーを作成しようとしています。lejos ファームウェア バージョン 0.9.0 を使用しています。私の問題は、モーターが失速していることをどのように検出できるかです。
例: Motor.A は、モーターがブロック/失速している間に正転し、Motor.A は停止する必要があります。
誰でも私を助けてくれることを願っています。
立方体をつかむための 4 本の腕を持つルービック キューブ ソルバーを作成しようとしています。lejos ファームウェア バージョン 0.9.0 を使用しています。私の問題は、モーターが失速していることをどのように検出できるかです。
例: Motor.A は、モーターがブロック/失速している間に正転し、Motor.A は停止する必要があります。
誰でも私を助けてくれることを願っています。
位置が変わるかどうかを確認するのが唯一の方法だと思います。移動コマンドを送信し、待機し、位置を確認して、それが要求どおりかどうかを確認します。
ドキュメントによると、motor.getPosition() は motor.getTachoCount() と同じである必要があります。そうでない場合は、モーターが失速していると見なすことができます。
public float getPosition()
モーター レギュレーターが維持しようとしている現在の位置を返します。通常、これはモーターの実際の位置であり、getTachoCount() によって返される値と同じになります。ただし、状況によっては (失速中の activeMotor、または強制的に位置がずれている activeMotor)、2 つの値が異なる場合があります。調整が一時停止されている場合、このメソッドを呼び出すと再開されることに注意してください。
したがって、2 つの値が等しいかどうかを確認する必要があります。
public boolean isStealed() {
motor.getPosition() == motor.getTachoCount();
}