The Sneaker Buddy is a wall-mountable system that fits seamlessly among existing retail sneaker shelving units. It's rear hooks allow it to hang up on the most common racks, requiring only an outlet for power.
Unlike other solutions, it doesn't track or record the customer's face. The narrow focus of the onboard camera is solely meant to identify the shoe placed on the pedestal, blurring everything else.
Once a sneaker is detected to be in focus, an image is captured. The image is then flipped so the toe tip is to the right, matching the format at thesneakerdatabase.com whose API contains 40, 000+ sneakers. Distinct colours are extracted first to filter the downloaded dataset. Then the captured image is compared against the remaining possible matches, generating a confidence level for each match. The user is presented on screen with the name of the shoe along with fun facts such as famous people who have worn a pair.
The Sneaker Buddy will incentivize the shopper to touch many different pairs, increasing the likelihood she will find her dream sneaker and make a happy purchase.
The PrototypeWhen I first conceived this project in the autumn of 2021, I was working at a boutique sneaker shop. Since then, that store has bankrupted. I've experienced many periods lacking enthusiasm to complete this project, especially since I couldn't test my creation in the wild. I eventually completed a functional system without the database API integration, running everything on a local network instead. Even though I couldn't unlock the full power of the Kria KV260, I included below details regarding the physical construction of the prototype to hopefully inspire other Hacksters and Xilinx SOM enthusiasts to build something wonderful.
The main body is foamboard. I wanted to especially add emphasis to where a shoe needs to be placed so I created channels through which I could sew strands of electroluminescent wire, one blue for the shoeprint, and one red for a Powered by Xilinx tribute.
After scoring, I carefully removed the material and threaded the wire strategically to minimize the number of times it needed to pierce through the board to spell out each letter and form every shape.
The pedestal is powered by 4 AA batteries and has the ability to pulsate either the blue or the red independently. I take care not to place it too close to the Kria KV260 since the inverter feeding alternating current to the wires at 110V and 2000Hz generates a generous amount of inference. At night, it is especially striking.
For the back panel I designed the letters in photoshop to look like fabric shoelaces. I printed them, then carefully cut them out. I left the lace tips unaffixed for a touch of flair.
Around the back I bent steel wire sleeved in protective vinyl to add rigidity to the structure and to create the two hooks needed to mount it to a typical shelf. This flexible system can bend to fit into any display, included peg boards if the wire is cut to form sharp tips.
Since I couldn't find a suitable, small, LCD screen, I used my phone. I cut out a square the same size as the display and removed material in the shape of the phone so it is as flush as possible to the foamboard's surface.
The Kria KV260 itself sits safely on a shelf and rests in place secured by a back panel. A small hole allows vision through to the AR1335 camera module. Black electrical tape strategically obscures portions of the ambient lights.
For software development, after going through all the examples available on the Xilinx website, I decided to continue my project in an Ubuntu environment. I thought this is best since I would need to mirror my application onto my smart phone via a local network. My only solution was to install VLC and cast the desktop to a localhost video stream.
$ sudo apt install vlc
$ vlc screen:// :screen-fps=5 :screen-caching=100 --sout '#transcode{vcodec=mp4v,vb=4096,acodec=mpga,ab=256,scale=1,width=1280,height=800}:rtp{dst=192.168.1.6,port=1234,access=udp,mux=ts}'
Running Ubuntu, VLC and the Smart Camera application at the same time resulted in all four CPU cores operating at 100% capacity. I think this is why own simple test scripts ran very slow. In the future I'll avoid installing Ubuntu.
I'll continue to work on this project and present it to a local store to see if they'd be interested in deploying it. During these past few months, I've fallen in love with the Kria K26 System-on-Module and I already have a few more projects in mind I plan to realize. I hope my prototype build guide inspired your own projects. Thank you!
Comments