-
Notifications
You must be signed in to change notification settings - Fork 0
EncoderWalker
這個類別使用Encoder控制機器人走特定長度的路徑
Package org.team6083.lib.auto
EncoderWalker
需要左、右側的Encoder計算機器人行走距離。
建構式 EncoderWalker(Encoder left, Encoder right, EncoderWalker.Mode mode)
EncoderWalker
有以下幾種控制模式
- LeftOnly 只使用左側Encoder
- RightOnly 只使用右側Encoder
- Average 使用兩側Encoder,並且將讀數平均
- Both 使用兩側Encoder,兩側都要達到目標值
Encoder leftEnc = new Encoder(0,1);
Encoder rightEnc = new Encoder(2,3);
// define two encoder
EncoderWalker encWalker = new EncoderWalker(leftEnc, rightEnc, EncoderWalker.Mode.Average);
Note:
EncoderWalker是使用 Encoder.getDistance()
取得目前距離,所以需要先設定好Encoder的 distance per pulse
EncoderWalker才會正確判斷距離。
distance per pulse
說明請參考 Setting Encoder Parameters 段落:
https://docs.wpilib.org/en/latest/docs/software/sensors/encoders-software.html#configuring-encoder-parameters
使用 walk(double targetDistance)
計算要輸出的速度(必須不斷的call這個method才能持續更新速度)
encWalker.walk(10);
// this have to be called periodically
計算完後,用 getLeftSpeed()
、getRightSpeed()
取得左、右的輸出值。
double leftSpeed = encWalker.getLeftSpeed();
double rightSpeed = encWalker.getRightSpeed();
// set the output speed to the drive system
m_left.set(leftSpeed);
m_right.set(rightSpeed);
在走完之後,Encoder會輸出0,此時需要手動重設Encoder以及EncoderWalker,才可以繼續使用。
Note: EncoderWalker不會自動重設Encoder,所以在重設EncoderWalker前需要先重設Encoder。
leftEnc.reset();
rightEnc.reset();
encWalker.reset();
EncoderWalker會以一個固定的速度輸出,可以透過 setWalkSpeed(double walkSpeed)
設定行走速度。
(預設的行走速度是0.4)
encWalker.setWalkSpeed(0.7);