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.
For this project, we used the following hardwares:
-
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.
-
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.
-
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.
-
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.
-
We will probably mount those LEDs on a Velcro. VELCRO Brand Thin Fasteners Tape is our choice.
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.