In order to test our vehicle detection software, the team needed to purchase a camera to mount in Stevens' parking garage. The Hikvision DS-2CD2955FWD-IS Camera utilizes a fisheye lens with a 360 degree viewing angle and an intuitive administrative dashboard, making it easy to customize different parameters. In order to mount it, we 3D modeled and printed our own enclosure and utilized a ratchet strap to mount in temporarily to the Babbbio Garage Ceiling
Hardware
Fig. 3.1. Hikvision fisheye camera
Fig. 3.2. Hikvision camera enclosure - bottom view
Fig. 3.3. Hikvision camera enclosure - side view
Software
ROOST Python Script
Fig. 3.4. Yolov5 integration
Fig. 3.5. Google Sheets API integration
Fig. 3.6. Detection testing process code
React Native ROOST Application
Fig. 3.7. ROOST home screen
Fig. 3.8. ROOST Babbio Parking Map
Fig. 3.9. Home screen setup with pins to parking locations
Fig. 3.10. Read data from Google Sheets
We are currently in the testing stage. In order for our solution to maintain efficiency and accuracy, we will be using an image masking to determine if a vehicle is in a specific parking lot space. To do so, our camera needs to be mounted in the same location during testing. In order to do so, our team modeled and 3D printed an enclosure that can be used to temporarily house the camera during testing. Our first round of testing was conducted on Friday, April 25th, 2025. We performed more tests on Tuesday, April 29th, 2025.
We performed two types of testing:
Offline testing, which consisted of testing vehicle detection from images using the split 180 degree view from the camera
Online testing, which consisted of running the camera stream into the python script and running the vehicle detection live
For each type of testing, we had the results uploaded to the Google Sheets in order to be read by our Native React App, ROOST.
In order to test our software, we needed to temporarily mount our camera on the ceiling. This was accomplished by designing the enclosure with a slot at the top so it could be held up with a ratchet strep hung around a conduit. This allowed us to place the camera in an optimal spot to simulate real world results without leaving permanent marks.
In order to ensure that the right spots are being read and updated from the correct still image, we assigned each spot ID based on which spots for visible in the image. This way, we ensure that only the spots we choose to be updated are checked for vehicle occupancy.
In order to ensure that the right spots are being read and updated from the correct still image, we assigned each spot ID based on which spots for visible in the image. This way, we ensure that only the spots we choose to be updated are checked for vehicle occupancy.
Offline Testing
Successful test. all designated spots resulted in true positives and were uploaded to the Google Sheets correctly.
Two false negatives. We suspect this occurred because there is a pipe blocking part of the view of the vehicles in spots 15 and 16, as well as poor lighting being a issue here.
Successful test. all designated spots resulted in true positives and were uploaded to the Google Sheets correctly.
Online Testing
Our initial online test had mixed results. There were three false negatives. We suspect that for the two at the bottom, YOLOv5 was not trained on detecting vehicles that are "upside down"
In order to try and increaser the accuracy of the detection for the live feed, we considered switching to other YOLOv5 model variants: Small (s), Medium (m), Large (l), and Extra Large (x). We initially started with small, then scaled up to large and extra large. Small through large worked, with large having the most success.
Alan Manjarrez
Worked on app interface
Researched Google Maps API
Frank Genderson
Made server with Google Sheets
Researched APIs
Kavin Mohan
Researched APIs
Tested app
John Shea
Worked on app interface
Combined data from server into app
Joris Wilson
Took pictures with fisheye camera
Made camera enclosure
Made car detection script