Giter Site home page Giter Site logo

wannj / wearable-dance-party Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 7.77 MB

An Arduino-based machine learning project aiming to create a flashing jacket which can recognize the hand gestures made by the cyclists so that produce corresponding LED signals to effectively protect the cyclists' night safety.

Home Page: http://jackwan.win/Wearable-Dance-Party/

Python 2.79% Makefile 0.12% C++ 7.77% C 89.24% QMake 0.08%

wearable-dance-party's Introduction

Wearable LEDs

INNOVATIONS

Hand signals are given by cyclists and some motorists to indicate their intentions to other traffic. Under the terms of the Vienna Convention on Traffic, bicycles are considered to be vehicles and cyclists are considered to be drivers. The traffic codes of most countries reflect this.
In some countries (such as in the Czech Republic, Canada, and the United States), hand signals are designated not only for cyclists, but for every vehicle that does not have signal lights or has damaged signal lights. For example, drivers of older cars and mopeds may be required to make hand signals.

Similar to automobile signaling, there are three primary signals: Left turn/overtaking, Right turn, and Stopping/braking.
From Wiki Page Hand Signals

Although these hand signals will probably work fine during daytime, they may be very hard to be recognized by car drivers during night, which is our innovation to create a LEDs system that can effectively protect cyclists' night safety. In addition, the LED matrix can also react to the music playing in its vicinity, from which "Wearable Dance Party" derives.

HARDWARES

For this project, we used the following hardwares:

  1. Arduino Nano as the microcontroller, for it has nice library support and it's open source, but finally we chose Feather M0 for it's more portable(it also supports Arduino's library). It has 256KB of FLASH and 32KB of RAM. And it's based on a ATSAMD21G18 ARM Cortex M0 processor(32bits), which is clocked at 48MHz and at 3.3V logic.

  2. The LEDs have to be sewable and addressable for we won't have enough pins to control those LEDs separately. Neopixel might be a good choice, which also has a reasonable price.

  3. We used Adafruit 9-DOF Accel/Mag/Gyro+Temp Breakout Board. 5 of them might be enough, for a IMU has every thing we need - 3-axes accelerometers, a gyroscope and even a magnetometer. Its accelerometers has ±2/±4/±8/±16 g ranges. Its gyros have the same ±245/±500/±2000 dps ranges.

  4. Our sample rate must be twice the maximum frequency of interest, according to Nyquist–Shannon sampling theorem. So in this case, maybe 7000Hz is enough, for telephone networks work up to about 3400Hz(Although human can hear sounds up to 20kHz). Finally, we chose Adafruit I2S MEMS Microphone, which has a range of about 50Hz - 15KHz.

  5. We will probably mount those LEDs on a Velcro. VELCRO Brand Thin Fasteners Tape is our choice.

Software implementation

One way to handle transferring the high dimensional signal into simple categories is Machine Learning. LDA plus Gaussian naive Bayes will probably work for us, and which is indeed the final version. Alternatively, raw data window plus KNN using a dynamic time warping should work, too.

The ability to take inputs from a serial port connected to a laptop will really help us to test/debug without really riding a bike. Also, if we wish to send back state/sensor information over the serial port, protobufs is recommended by Marcel, one of our GSIs.

And we will use a state machine model to construct this whole system. The high level overview is in the Docs folder under the root directory.

wearable-dance-party's People

Contributors

wannj avatar alexmichon avatar dnshp avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.