Mobile app screenshot
HackTM table #32
A lot of us sit in traffic day after day.
Smart cars are supposed to improve the driving experience.
Humans are emotional creatures.
What do all 3 of the above sentences have in common?
Well, some of us can't contain ourselves when it comes to rude drivers around us. It would be fortunate if these stressful situations could be mitigated, by either offering the user motivation to go over their stressful day, or by offering a venting mechanism in the shape of personalized swear words.
Imagine a scenario in which the car learns the user's driving patterns and can predict these oncoming periods of stress and mitigate them before occurring.
Stress kills, we're saving people.
What it does
Our application features intelligent algorithms that leverage the car's sensors in order to detect the current driver's stress levels. It also scans surrounding traffic using the built-in radar and detects rude behavioral patterns from other participants.
Once stress levels go over a certain threshold, calming music kicks in, a motivational message calms the user and a personalized swear word shortlist is revealed for further use. Clicking on one of the swear words tweets the current user's location and the selected text.
It features a real-time modern web interface, which updates according to the data read by the sensors. We also register the driver's profile, for further use in a kind of personalized business intelligence approach by the user.
How we built it
We've built an exotic project using cutting-edge exotic technologies. The main web server is built using the Scala Play! framework and leverages the actor-model to create a reactive system that responds quickly under high loads. The UI connects the current user via Websockets directly to his car's data feed.
The data is fed from the car's sensors to a C++ program that interfaces with it, parses the data and sends it to the Scala server. We've configured a listener that actively sends JSON data from the car. The server sends the data to the UI and also stores it for future analytics inside MongoDB.
Challenges we ran into
Synchronizing all of the microservices in the service, (server, front-end, consumer) was a bit of a hassle, as it needed extra debugging and development time. There was also the issue of making sense of all the data, being able to identify trends based on the temporal data after analyzing it with our data scientists.
Accomplishments that we're proud of
- Rapid prototyping
- Teamwork and dedication from each and every one of us
- Creative thoughts that came along during
What we learned
Life as a driver in Romania is hard.
What's next for RoadKill
More parsing of data. Adding of machine learning algorithms for better prediction of stress levels based on historical data and the current environmental model.