CS12020 Identify and decode “start-recording” and “stop-recording and playback” barcode signs.
Assignment Overview
This assignment requires the use of the Arduino and Robot Shield provided by the department to develop a program enabling a robot to navigate an obstacle course. Key features include:
- A 4 cm wide path.
- Obstacles no larger than the robot’s storage box.
- Barcode signs for “start recording” and “stop recording and playback,” with specified dimensions and stripe spacing (4 cm and 8 cm, respectively).
The assignment emphasizes Arduino C programming and robotics application design, with a focus on:
- Creating data structures for sensor readings and motor commands.
- Effective use of the
setup() and loop() functions.
- Following defensive programming principles.
- Designing control algorithms (e.g., collision avoidance).
- Testing programs.
- Evaluating robot performance.
- Providing accurate documentation.
Assignment Structure
The assignment consists of three major components:
- Functional Requirements (60% of marks)
- Testing (15% of marks)
- Report (25% of marks)
Functional Requirements (60%)
This section includes the following four tasks:
1. Working with Light Dependent Resistors (LDRs) – 15%
- Measure and record values from three LDR sensors on black and white surfaces under different lighting conditions.
- Steps:
- On a white surface:
- Record 10 values with room lights on and calculate the mean.
- Repeat in dim lighting conditions.
- On a black surface:
- Present results as a graph showing the relationships between surface colors and lighting levels.
2. Line Following and Obstacle Detection – 30%
- Tasks:
- Follow a black line on a white background.
- Detect obstacles, stop the robot, flash an orange LED, and resume movement when the obstacle is removed.
- Identify and decode barcode signs for “start recording” and “stop recording and playback.”
- During “start recording,” record movements for playback without the line after encountering the “stop recording” sign.
3. Robot States – 10%
- Define robot states and indicate them with LEDs:
- Orange LED flashes when an obstacle is detected.
- Red LED remains on during recording.
- Green LED flashes during playback and remains steady after playback completion.
4. EEPROM Usage – 5%
- Store calibration values for sensors and actuators in EEPROM to enable portability across different robots.
- Use the following memory map:
| Byte(s) |
Use |
| 0 |
Left servo stop value |
| 1 |
Left servo offset for forward motion |
| 2 |
Right servo stop value |
| 3 |
Right servo offset for forward motion |
| 4-5 |
Left LDR value on white |
| 6-7 |
Left LDR value on black |
| 8-9 |
Center LDR value on white |
| 10-11 |
Center LDR value on black |
| 12-13 |
Right LDR value on white |
| 14-15 |
Right LDR value on black |
Testing (15%)
- Present a testing table in the report appendix summarizing the status of all hardware components.
- Test each component (e.g., push buttons, LEDs, LDRs, IR transmitter/receiver, servos).
- Debug using the Serial Monitor to print informative messages about test results.
- Perform behavior tests, such as evaluating the line-following success rate over 15 trials.
Example: A button variable changes correctly, indicating a passed test (debounce functionality works as intended).
Report (25%)
- Document all tasks, testing processes, and outcomes accurately, clearly, and concisely.
- Include results, code snippets, and insights to evaluate the robot’s performance.
This structured approach ensures clarity and supports the efficient completion of the assignment tasks.