Line Follower Autonomous Vehicle

Embedded Systems • September 2024

Overview

This was a short, 1-2 week basic build project from my ENGR 2050 coursework designed to test our teamwork abilities with a new partner. We were given very minimal guidance and were instructed to keep our systems simple yet functional. The project centered around creating an autonomous vehicle that could follow a black line on the ground using any detection method we chose.

While straightforward in concept, this project was primarily about learning to work effectively with a random partner under time pressure, while gaining basic hands-on experience with embedded systems and sensor integration.

System Design (Simple & Functional)

Given the time constraints and focus on teamwork, we kept the design intentionally simple. The robot featured a basic drive system with two DC motors controlling the rear wheels. Two infrared sensors mounted on the bottom detected the contrast between the dark line and the lighter floor surface. An Arduino Uno processed sensor readings and controlled motor speeds to keep the robot following the line.

Arduino Uno Infrared Sensors DC Motors 9V Battery C++ Programming Differential Drive

Programming Logic (Basic but Effective)

Given the time constraints, we implemented a straightforward control algorithm that was simple yet functional. The program continuously reads from both infrared sensors and adjusts motor speeds based on which sensor detects the line:

  • Both sensors detect the line: Move forward at full speed
  • Left sensor only detects line: Slow down left motor to turn left
  • Right sensor only detects line: Slow down right motor to turn right
  • Neither sensor detects line: Search for the line briefly, before giving up and stopping

Challenges and Solutions

Despite being a basic project, we encountered several challenges working with strict class-by-class deadlines and the need to quickly establish effective teamwork:

Aggressive Time Constraints

We had to show significant progress every single class: First class - complete design and order parts with minimal information. Second class - fully assemble and get a working prototype. Third class - deliver a completely finished robot.

Solution: We prioritized rapid decision-making and focused on a simple, reliable design that we could execute quickly rather than trying to over-engineer the solution.

Random Partner Collaboration

I was paired with a random partner (a mechanical engineer) for the first time, requiring us to quickly establish communication and divide responsibilities under intense time pressure.

Solution: We quickly got to work - we established solid communication and came up with a comprehensive plan for the project, planning for any missteps along the way. I think that our strong communication and slow-and-steady approach allowed us to stay calm and succeed.

Results

Our line-following robot successfully navigated the test course, including straight sections, gentle curves, and some sharper turns. While it wasn't the most sophisticated autonomous vehicle, it accomplished the core objective of following a line reliably. We got the highest score out of all the classes this semester.

The project was successful in its primary goal of testing our teamwork abilities - we quickly established effective communication and division of responsibilities despite being randomly paired. It also provided a good introduction to embedded systems programming and gave us practical experience with sensor integration, motor control, and working under time pressure. The project demonstrated that even simple, basic builds can be valuable learning experiences when executed thoughtfully with good teamwork.