Skip to content

Line follower robot project for Arduino course at university 🏎

Notifications You must be signed in to change notification settings

alexsasu/LineFollower

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

8 Commits
Β 
Β 
Β 
Β 

Repository files navigation

LineFollower

🏁 β—Όβ—Όβ—Ό 🏎

About

Arduino two-person team project developed during a one-day hackathon, at the Introduction to Robotics course taken in the 3rd year at the Faculty of Mathematics and Computer Science, University of Bucharest. The project consisted of assembling and programming a line follower robot.

The contributors of the project from this repository are me, along with @andreipetrisor1999, and our team's name is Lightning McQueen βš‘πŸš—.

Project Details

Requirements πŸ“‹

Components Requirements

Non-electronic:

  • 1 robot chassis
  • 2 wheels
  • 1 ball caster
  • screws for the QTR-8A sensor
  • zip ties (for keeping the components in place)

Electronic:

  • 1 Arduino Uno
  • 1 QTR-8A reflectance sensor
  • 2 DC motors
  • 1 L293D motor driver
  • 1 LiPo battery (power source)
  • 1 breadboard (medium; 400 pts)
  • wires (per logic)

Photo of the line follower kit with required components πŸ“·

components requirementes

Functionality Requirements

Assemble and program the makeshift car, so that it follows the racetrack consisting of a black line that loops, as fast and as correct (no shortcuts between parts of the track, no leaving the track, and no turning back on the track; the only allowed movement is the continuous movement along the black line) as possible. The QTR sensor should use only 6 of its sensors, and it should calibrate itself right before the robot starts traversing the track (meaning no manual calibration of the sensor; or, as a bonus, it could use calibration values stored in the EEPROM, from previous calibration attempts). By using a PID controller and modifying its gains (Kp, Ki (optional), Kd), define the characteristics of the robot's movement.

Grading

In the range: 1 - 12p

By default: 1p

Calibration: 2.5p

Racetrack:

  • > 35s (but finished) -> 4.5p
  • 35s ..... 5p
  • 20s ..... 7.5p
  • < 20s .... 7.5p

Bonus: 1p (LEDs for the robot, calibration values saved in EEPROM, robot cosmetics, etc)

Functionality and Implementation Details πŸŽ›


Functionality:

At first, while on top of the black line, the robot calibrates its sensor by repeatedly moving left and right, learning this way to recognize the black line whenever it appears in front of the sensor, and to dismiss surfaces other than the black line. After a short period of calibration, the robot will attempt to follow any black surface in front of its sensor, while attempting to calculate its speed and to determine its movement behavior through the use of a PID controller.

Note: Our team's robot managed to finish the racetrack showcased below in 15.430 seconds!

Implementation:

The PID algorithm: The values for the PID controller were chosen randomly at first to observe the behaviour of the robot (not counting the I term and Ki gain). After many test drives during which we took an empirical approach, we settled with the gains Kp = 30, Ki = 0.08, Kd = 150, which pushed the robot close to its full potential. In the end, all of the PID controller's terms and gains were thoroughly used.

Calibration: We calibrated the robot by telling it to rapidly move left and right for a set period of time in the "setup" method of the code. Thus, we used the following self calibration method: when out of all the used sensors, only the rightmost sensor is on the black line, the robot will calibrate itself by turning to the right, when out of all the used sensors, only the leftmost sensor is on the black line, the robot will calibrate itself by turning to the left, and so on.

Components Used βš™


Non-electronic:

  • 1 robot chassis
  • 2 wheels
  • 1 ball caster
  • screws for the QTR-8A sensor
  • zip ties (for keeping the components in place)

Electronic:

  • 1 Arduino Uno
  • 1 QTR-8A reflectance sensor
  • 2 DC motors
  • 1 L293D motor driver
  • 1 LiPo battery (power source)
  • 1 breadboard (medium; 400 pts)
  • wires (per logic)

Showcase 🏎

Racetrack Picture:

racetrack

Robot Setup Pictures:

from the side

from the back

from above

from the front

Robot Presentation πŸ€–: https://www.youtube.com/watch?v=77cRA0fMZrk&ab_channel=AlexandruSasu

Releases

No releases published

Packages

No packages published

Languages