-
Notifications
You must be signed in to change notification settings - Fork 0
GyroWalker
KennHuang edited this page Jan 24, 2019
·
4 revisions
這個類別使用陀螺儀、PID控制機器人朝向特定方位移動
Package org.team6083.lib.auto
建構式 GyroWalker(Gyro gyro)
GyroWalker 會用 Gyro 陀螺儀計算PID的輸出。
( Gyro 是存在於WPILib的介面)
ADXRS450_Gyro gyro = new ADXRS450_Gyro();
GyroWalker gyroWalker = new GyroWalker(gyro);使用 setTargetAngle(double angle) 設定目標方位, GyroWalker 會自動調整輸出轉向到目標方位。
(範圍從 -180~180 度)
gyroWalker.setTargetAngle(90); //set target to 90 deg使用 calculate(double leftSetPower, double rightSetPower) 計算PID的輸出值
( leftSetPower , rightSetPower 是原始的左、右輪的速度)
gyroWalker.calculate(0.5, 0.5);GyroWalker 內部有PI控制器(PID沒有D),GyroWalker 會根據設定的 targetAngle 用PID計算出馬達所需改變的輸出( editPower ),最後對原始的左、右輪速度進行加、減,就是最後輸出值。
在計算完成後,使用 getLeftPower() & getRightPower() 取得左、右馬達輸出值
double leftSpeed = gyroWalker.getLeftPower();
double rightSpeed = gyroWalker.getRightPower();目前 GyroWalker 只有支援 kP, kI,還不支援kD控制。
使用 setkP() & setkI() 設定 kP, kI。
double kP = 0.001;
double kI = 0.005;
gyroWalker.setkP(kP);
gyrowalker.setkI(kI);