在线跟踪机器人中实现PID算法

时间:2016-12-02 19:58:21

标签: algorithm robot nxt nxc pid-controller

我正在开展一个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 ;

1 个答案:

答案 0 :(得分:1)

通过正弦波模式,我们的意思是机器人可以遵循以下路径以增加丢失线后重新捕获线的机会。您可以使用简单的if-else和timers / tachometer读数对路径进行编码。 (感谢@Spektre的建议!):

enter image description here