Skip to content

GyroWalker

KennHuang edited this page Jan 24, 2019 · 4 revisions

這個類別使用陀螺儀、PID控制機器人朝向特定方位移動

Package org.team6083.lib.auto

建立GyroWalker物件

建構式 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

使用GyroWalker控制

使用 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();

調整PID參數

目前 GyroWalker 只有支援 kP, kI,還不支援kD控制。

使用 setkP() & setkI() 設定 kP, kI。

double kP = 0.001;
double kI = 0.005;

gyroWalker.setkP(kP);
gyrowalker.setkI(kI);
Clone this wiki locally