One of our team members had rode the IndyGo bus before and found it was an inconvenient experience. From that experience, the team wanted to try to make a solution that focused on convenience for the rider and safety during the COVID-19 pandemic. We found that on public transport, social distancing would be very difficult and to address that we wanted a way to allow riders to be aware of how crowded any bus was before they entered it so they could assess whether or not they would be able to properly social distance.
What it does
The prototype is designed to take the picture of the interior of a bus, then scan the photograph and count how many people are in the image. From there, it communicates with a phone application we designed that allows you to input a bus number and see how many people are on the bus, so you can see if the bus is overcrowded and if boarding that bus would cause you to violate social distancing.
How we built it
The current prototype utilizes a Raspberry Pi 4 and an open source project we implemented to read the images from the camera and calculate how many people it sees on the bus. However, when the first prototype was created it used an older Raspberry Pi model with the same operating system. The older model could not handle installing, let alone running, the code correctly and we eventually decided to upgrade.
On the user side, we used a Python script and a Python library called Kivy to create a user application that could take a bus number and output how many passengers were on board. For communication between the app and the Raspberry Pi. We used a Google Sheets page as a database to store the values for how many people were on which bus at which time.
Challenges we ran into
On the programming side, we ran into issues working with some of the Python libraries. OpenCV and Kivy were both extremely difficult to install and get to function, however we got through the process and were able to finish with a working prototype.
Accomplishments that we're proud of
We’re very proud that we were able to come forward with a full developed prototype in such a short period of time. 5 weeks sounded like a lot of time at first, but we quickly realized that this was a very fast paced product cycle, and we’re proud of our results.
What we learned
On our Pro Squad, we learned more about and added to our experience programming in Python. We spent time learning about Raspberry Pis and bash scripts for our prototype. We gained experience working as a team in a fully digital environment.
What's next for HeadCount
One particular idea we had was to use another open source project released by the same people who released the other 2 projects we implemented. It would’ve detected and tracked people in a video from a bird’s eye view and detected if they walked past a certain line. By implementing a camera at both doors on the bus and positioning the cameras so the ‘line’ was at the doorway of the bus,, we could more accurately check how many people are on the bus by detecting how many people got on or off at each stop to modify the count of people.