Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
Finding good parking in a city is one of the most frustrating experiences you can have.
Change my mind.
You’re welcome.
proudly presents
Spark
So how did we do it?
Computer VisionOpenCV
Cameras
● Pointed to the street or parking with or without marked parking spots
Flow
Where are the cars located?
Pixel coordinates of detected cars
Free zones between cars + all detected cars
Flow
● Camera○ Takes picture every minute○ Detects vehicles using YOLO Real -Time Object
Detection○ Sends coordinates of detections to server○ Images stay local
Flow
● Python server○ Predicts where cars can park (and where they can’t)○ Measures distance between cars○ Saves all cars and free zones in MongoDB database
Camera calibration
● One time● Calculate homography● Calculate meter per pixel● Determine geolocation of reference point● Locate north (azimut)
Homography (transformation matrix)Transformation needed to transform ground plane to birds eye view.
Projective transformation
● Using OpenCV○ Op e n CV fin d s ch e ssb oa rd○ Ca lcu la t e t ra n sfo rm a t ion
1 (0;0)
2
3
4
2
3 4
1 (0;0)X
Y
● Calculate meter per pixel○ Size o f o n e sq u a re in re a l w o rld is kn o w○ re a l w o rld s ize / p ixe l s ize = m e t e r p e r p ixe l
Geolocation● Determine geolocation of
reference point● Where is the north?
(azimut) X
Y
Noorden
Ref. punt
Camera● Finds all the vehicles
Camera● Sends data to server● Images stay local
Server● Transforms detection to birds eye view using camera
homography● Saves ALL detected vehicles to database
System is now learning● Server will collect and saves X vehicles● Server determines where cars park and finds a cluster for
each zone
Learning simulation
Learning simulation
Finding Clusters● Finds clusters using DBSCAN algorithm● Calculates trendline for each cluster
Works in several situations
Works in several situations
Works in several situations
Learning period is now over
Finding free zones● Assign detected cars to a zone● Sort cars in each zone from left to right (or top to bottom)● Determine pixel distance between cars on birds eye view● Convert pixel distance to meters● Includes outer cars ever detected in zone● Free zones found!
Simulation
Determine geolocation
● Reference point● True course (where is
the north?)● Distance from ref. point
→ Formula
X
Y
Noorden
Ref. punt
Server● Save free zones to database● Compare previous free zones to new free zones and
update last detection date of already existing● Save old free zones in archive for data analytics
Demo
BackendREST API
What is a free parking spot?● Distance between detected cars● Capacity = total length / car length
API Endpoint● GET /search
Parameters:> lat : Latitude of destination> lng : Longitude of destination> radius : Maximum distance from destination in km.> car_length : Length of your vehicle in m.> sort : Sort by distance, price or capacity
Seeding
Seeding database with open data
Parking meters -> camera positions
Parking areas -> free and occupied spots
Parking meters
Parking areas
FrontendReact Native
Design philosophy● Human Centered Design● Familiar look● User friendly UX● Inspired by Material Design by Google
Design goals● Empathic design● Understanding the wants & needs of our users
Is the product you’re designing truly relevant for the people that are supposed to use it?
Design choices● Color and Buttons
Input● Search bar at top of screen
○ Search history and suggestions
Output● 3 cards suggesting nearby spots
○ Opens Google Maps withdirections
Options● Search options● Custom locations● Homepage
Redux & persisted state● No account required● Search history● Custom locations● Display preferences● Stored in Native AsyncStorage
Google maps & Places API● Places
○ Autocomplete search bar○ Option to pick current location○ Display custom locations
● Maps○ Map with marker on destination
Potential features● Park & ride● Custom locations● Push notifications● Voice input/output● Possible public transport● Payment integration
Try out SparkInstall Expo from the Play Store
Thank you!