-
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);