我正在开展一个NXT头脑风暴的小项目。我的目的是建造一个能够非常顺畅和尽可能快地跟随线路的机器人。因此经过一个小小的研究后我发现了PID算法,我能够理解并将算法实现为NXC代码。机器人刚刚根据算法做了一切,但是当线路中断(间隙)时,机器人会丢失线路并且无法返回线路。事情的是,当距离达到9厘米时,他可以回来,但在10年他只是失去了线。我正在使用一个光传感器。有什么办法可以调整PID代码来解决这个问题吗?
我的代码:
// kd ,ki kp are also defined
task main()
{
int error = 0;
float previous_error = 0;
float setpoint = 0;
float actual_position = 0;
int integral = 0;
float derivative = 0;
float speed=50;
float lasterror = 0
float correction = 0
float fahrenA = 0
float fahrenC = 0
SetSensorLight(IN_2);
SENSOR_TYPE_LIGHT_ACTIVE;
while(true)
{
actual_position = LIGHTSENSOR;
error = setpoit - actual_position ;
integral = error + intergral ;
derivative = error - previous_error;
correction = (kp * error )+ (ki * intergral) + (kd * derivative );
turn = correction / 100;
fahrenA = Tp + turn;
fahrenC = Tp – turn;
OnFwd(OUT_A,fahrenA);
OnFwd(OUT_C,fahrenC);
previous_error = error ;