Tuesday 17 April 2018

EV3 Track3r Line Follower

This is a post for EV3 Track3r line follower. Track3r has an attached color sensor which helps the track3r to follow the black line on the white surface. For the track3r to function, calibration of white and black color has to be done (which is not captured in this video.) The actual algorithm to follow the line is influenced by Jacek Fedorynski's Line Follower NXC program. The LeJOS (Java) program has one class EV3LF. This class initializes the color sensor and calibrates the sensor for Black and White values. This class has the algorithm to follow the line - given the calibrated black and white values and the light intensity at any given point in time.

The detail process of calibrating Black and White values is as follows. We can hear two beeps and the robot waits for press and release of ESCAPE button. While the robot is waiting, we have to manually adjust the color sensor such that the red light emitted by the color sensor will be focused over the white surface. Then press and release the ESCAPE button. This is the instant when the robot will fetch a sample from the color sensor. This sample will act as the threshold value for white color, which will be printed on the screen. 

Then, we can hear two beeps again and the robot waits for press and release of ESCAPE button. While the robot is waiting, we have to manually adjust the color sensor such that the red light emitted by the color sensor will be focused over the black line. Then press and release the ESCAPE button. This is the instant when the robot will fetch a sample from the color sensor. This sample will act as the threshold value for black color, which will be printed on the screen. 

We then initialize the motors B and C which will drive the robot forward. We power the large motors such that the power of each motor is a function of average light ((white + black)/2), instantaneous value of light (color[0]), white threshold and black threshold. We use this power to drive the motors forward. Let's analyze the formulae to calculate the power for the two large motors in detail. 






  • The polarity of the second term is opposite for both the motors to calculate the speed requirements (as indicated by the RED circles). Due to the opposite polarity, the cSpeed and bSpeed function in opposite manner. That means, when cSpeed is positive, bSpeed is negative and vice-versa. Hence when the robot is on the black surface, it gets pushed on to white surface and when the robot is on white surface, it gets pushed on to black surface. Thus the robot moves in a zig-zag manner along the line. However, since the zig-zag movement is very subtle, it appears to be smooth. 
  • The defaultPower is set to a constant value, which can be tuned based on the speed requirements.
  • The multiplyingFactor is set to a constant value, which can be tuned such that cSpeed and bSpeed will function in opposite manner. 












No comments:

Post a Comment