Andy’s Status Report 4/26

Personal Accomplishments
Final Demo and Video: Worked together on writing final presentation poster, block diagrams, and final video script

Progress
My progress is on schedule.

Schedule
Final video, report, and demo prepare

Christine’s Status Report for 4/26

Progress

  • Implemented support for webhook registration and removal (PR).
  • Currently implementing the wrapper web app (Draft PR).
    • I will implement and test webhook notification after Andy fully deploys the web app.

Status:

  • Currently on track with all planned objectives.

Team Status Report for 4/26

Risks

  • We are still working on writing a simple webapp wrapper for demo purposes.

Changes

  • Instead of using a breadboard for connecting the opt-in switch and debug LED, we soldered a protoboard so that the dash cam is more compact and installable in a car.
  • While implementing the wrapper web app, we identified an opportunity to improve how Plate Patrol notifies external services of license plate matches.
    Currently, matches are simply logged to the match_log table, “as if” notifying services. However, for true backend-to-backend integration, a more robust, real-time communication mechanism is needed. After evaluating options, we decided to implement webhook notifications, aligning with industry standards for real-time event delivery. To support this, we updated the Watchlist Management APIs (now better described as Webhook Registration APIs) to allow external services to dynamically register and unregister for plate match notifications. This enables third parties (such as dashcam users and security partners) to opt-in and receive instant alerts when plates of interest are detected — without the need for constant polling or manual monitoring.

Testing

Schedule

Vicky’s Status Report for 4/26

Personal Accomplishments

    • Final Demo:
      • Wrote a demo script with pure inferencing, no recording and no server communication
    • Dash Cam Bringup:
      • Soldered a protoboard to connect switch and LED to the dash cam

Progress

My progress is on schedule.

Schedule

  • Final video and report

Christine’s Status Report for 4/19

Progress

  • Implemented API key for dash cam-related endpoints (PR).
  • Implemented post-assembly cleanup logic (PR).
  • Added chunk upload validations for data integrity (PR).
  • Added tests for edge cases (duplicated chunks, out-of-order uploads, invalid requests) to enhance test coverage (PR).
  • Implemented GET /plates endpoint for dash cam latency benchmark (PR).

Tools & Knowledge Learned

I had to learn AWS from scratch. I used a mix of informal learning strategies: online videos and tutorials helped me get started with AWS services. AWS CDK documentation and online code examples were extremely helpful. Additionally, GitHub Copilot helped me write tests more efficiently, and GPT was invaluable in clarifying any conceptual questions I had about AWS. These resources and tools really helped me navigate the challenges of my project and significantly boosted my understanding of cloud computing.

Status:

  • Currently on track with all planned objectives.

Andy’s Status Report for Apr 19

Learning Reflections

As I progressed through the design, implementation, and debugging phases of our project, I encountered several hardware components that required me to acquire new technical knowledge and hands-on skills for the bring up of them. Specifically, I faced challenges in bringing up the Raspberry Pi (RPi) system, the RPi camera module, the uninterruptible power supply (UPS) module, and the Blues Notecard module.

To overcome these challenges, I adopted a multi-pronged learning strategy:

  • Official Documentation: For each hardware module, I began by reading the official documentation. This provided a solid baseline for understanding the intended setup procedure and configuration parameters.
  • Online Video Tutorials: I found YouTube tutorials especially helpful for the RPi camera and Blues Notecard bring-up process. These informal resources often included demonstrations on how to install the modules properly that helped me troubleshoot physical connections, and install proper software dependencies.
  • Community Forums and Stack Overflow: When encountering unexpected issues (such as I2C readings from the UPS module), I found useful informations on Stack Overflow from a similiar question discussion before.

Summary of Work This Week:

This week is mainly integration testing and final wrap-up and final documentation preparation. I did the power adapter system integration testing in-vehicle. I measured output voltage and current of the adapter during driving conditions to verify power stability and confirmed that the UPS output to the Raspberry Pi 5 consistently delivered the required 5V 5A, ensuring reliable operation.

At the same time, I worked together with my teammates on assembling slides and visuals for the final presentation and began preparing talking points and demo setup for the final showcase.

Progress:

We are currently on progress, we finished most system integration testing, and are ready to prepare for final demo and documentation preparation.

Next Steps and Schedule:
• Record final demo footage and supporting visuals for the video presentation.
• Deliver final presentation and participate in demo day.

We are currently on track

Vicky’s Status Report for 4/19

Personal Accomplishments

    • Dash Cam Bringup:
      • Improved the image upload pipeline by adding auto retry on failure
      • Included API Key for GET and POST requests to add security
    • Dash Cam Verification:
      • Verified that the dash cam’s weight is 0.77lbs
      • Verified that the system’s startup script executes within 33s of a power change, recording starts within 41s of a power change, and shutdown script executes within 332ms of a power change
      • Verified that the system reliably transitions its ALPR setting (opt-in/out) within 1s (instantaneous)
      • Verified that the data at rest on the dash cam is erased upon shutdown

Progress

My progress is on schedule.

Schedule

  • Final poster, report, and video
  • Inference demo script

Tools and Knowledge Learned

The learning strategies that are most helpful to me includes: online videos for dash cam bringup, forums for specific debugging questions, and ChatGPT for conceptual questions.

Vicky’s Status Report for 4/12

Personal Accomplishments

    • Dash Cam Bringup:
      • Added a dip switch and software script to allow users to opt in or opt out of the ALPR mode
      • Refactored GPS code to make it nonblocking when GPS signal is not detected and debugged GPS connection issues on power on
      • Implemented sync match image chunk upload and experimented with async match upload using thread
        • Both HTTP GET and HTTP POST use the same I2C address, so I have to implement a locking mechanism
        • This results in a traffic jam that we think is not worth for implementing async chunk image upload
        • So we decided to stop further inferencing when we are uploading a match image
    • Dash Cam Testing:
      • Added an LED to indicate the stage of the dash cam for easier road testing, LED is ON during setup, LED flashes slowly during recording, and LED flashes faster during inference
      • Wrote a pure recording script to record real-road footage for future demos
      • Worked with Christine and Andy to conduct a 30 minute road test under rainy setting
    • Dash Cam Verification:
      • Verified that the dash cam records continuously in 1-minute clips for 10 minutes in a stationary setup
      • Verified that the dash cam records continuous footage under five separate real-driving tests of at least five minutes each
    • ALPR Verification:
      • Benchmarked the YOLOv11n model using a curated set of 386 real-world images sourced from the Kaggle-based dataset, achieving 90.4% mAP50
      • Benchmarked the PaddleOCRv3rec component on the scraped dataset from platesmania.com, which includes 4,000 cropped synthetic U.S. license plate images and 1,000 cropped real-world images, achieving 93% accuracy
      • Benchmarked the end-to-end ALPR pipeline by passing 5,000 full-frame, real-world images from platesmania.com through the system, achieving 79% accuracy, with 17% false positive and 4% false negative

Progress

My progress is on schedule.

Schedule

  • Road tests
  • Dash cam pipeline fixes (API key integration, etc.)
  • Scripts for demo purposes

Christine’s Status Report for 4/12

Progress

  • Implemented Chunk Upload Protocol (PR): Successfully developed and integrated the chunk upload protocol. For detailed information on the implementation and updated flow, please refer to the PR description.
  • Added Match Log (PR): Developed and added a match log feature to track and record relevant data, enhancing our ability to monitor and analyze system performance and matches.
  • Integration Test with the Team: Collaborated with the team to conduct integration testing.
  • Currently on track ✅

Verification

  • Watchlist Management: Added manual tests and Jest automated integration tests to cover both the happy path and edge cases, such as invalid input and missing API keys.
  • Watchlist Query Requests: Implemented manual tests along with Jest automated unit and integration tests to handle cases involving matched plates, unmatched plates, and invalid inputs.
  • Image Upload: Added Jest integration tests for the end-to-end image upload process to ensure comprehensive coverage and reliability.
  • To-do:
    • Chunked Image Upload: Add Tests for Edge Cases (#14):
      • Develop and execute tests for various edge cases to ensure the robustness of the chunk upload protocol, including:
        • Scenarios where chunks are missing or uploaded out of order.
        • Handling invalid requests, such as those with missing fields in the /uploads API.
        • Managing duplicated chunks to prevent errors and ensure data integrity.

All tests are integrated with our CI/CD pipeline, ensuring continuous verification and validation of the system as changes are made.

What’s Left to Do:

  • Implement API key for dash cam communications
  • Add tests for chunked image upload edge cases