The Automatic Road Condition Survey project aims to automate the road inspection process for municipal councils, enhancing efficiency and reducing maintenance costs. The system employs a combination of Raspberry Pi, Arduino, and computer vision techniques to detect road conditions in real time.
Municipal councils manage extensive road networks, often exceeding 500 kilometres, requiring substantial effort and funding for maintenance. Traditional inspection methods are manual and costly, relying on external consultants and specialized equipment. This project proposes an automated solution to streamline the inspection process using affordable and accessible technology.
Current road condition inspection methods are manual and expensive, leading to inefficiencies and delayed maintenance. By automating the inspection process with a real-time system, councils can optimize their maintenance efforts and reduce costs.
- 1 Raspberry Pi 3
- 1 Raspberry Pi Camera Model 2
- 1 Arduino Nano 33 IoT
- 1 Light Sensor (BH1750)
- 1 Buzzer Module
- 1 Computer Server
- 1 Database
- Internet connection (WiFi)
- Jumper Wires
- Cost: Ensure components are cheap to acquire and test.
- Robustness: Sanitize and test human input thoroughly.
- Communication: Ensure smooth and fast communication between Raspberry Pi, server, and Arduino.
- Fault Tolerance: Handle errors gracefully, including power or internet failures.
- Performance: Optimize code and processes for real-time performance.
- HTTP communication between the server and Raspberry Pi for image capture.
- Asynchronous serial communication over USB between Raspberry Pi and Arduino.
- HTTP webhooks for status notifications to system admins.
- Connect the Raspberry Pi camera.
- Enable the legacy camera interface in the Raspberry Pi configuration.
- Download the code from the
raspberry-pi
folder. - Connect the Raspberry Pi to the internet.
- Install all Python dependencies by running
pip install -r requirements.txt
.
- Connect the Light Sensor and Buzzer to the Arduino as labelled.
- Download the code from the
monitor
folder. - Set up an IFTTT account and create a webhook service for email notifications.
- Provide WiFi credentials and the webhook URL in the
.ino
file. - Install all Arduino libraries.
- Download the code from the
ai-model
folder. - Ensure the server is on the same network as the Raspberry Pi.
- Create a new SQLite3 database with the command
sqlite3 database.db
. - Install all Python dependencies by running
pip install -r requirements.txt
.
- Power on the Raspberry Pi.
- Log in to the Raspberry Pi and run the
run.sh
script located in theraspberry-pi
folder. - On the server, run the
detect.py
andserver.py
scripts in separate terminals. - The system will now be able to identify potholes and allow data queries via the API.