Haptic Cycle Navigation System
I started writing this article as an idea in the last summer on the train journey back from the Custard Factory in Birmingham and decided to prototype it in late August. Since then I have had little time to develop it further, and am unlikely to either, so now seems a good time to share the idea.
Last summer I attended Young Rewired State’s Festival of Code, it was a really amazing experience and I was lucky enough to make it through to the finals with a word of the day iOS app called Snnpt. I was impressed by the many original and novel ideas, including a project named PiCycle which went on to win “Best In Show”.
I Like To Ride My PiCycle #
Inspired by PiCycle, a bicycle Sat-Nav system which gave instructions to turn left or right by flashing LED’s on the handlebar, I felt that cycle navigation had serious potential, but that there must have been a better way of implementing it.
Some problems were:
- Expensive components
- Lights were not that bright, and would be difficult to see in daylight
- Very large and clunky
- No control of routes, or ability to re-route ad-hoc
- Limited battery life
Using a Raspberry Pi and a GPS is expensive both in price and battery consumption. Any project that uses a Pi is going to be fairly chunky and also I felt that a GPS was being needlessly used, considering most people already have one in their pocket.
I believe that lights are not a good indicator as they are easily missed, and in hazardous locations such as busy London roads it may not be safe to be continuously checking your handlebar.
A Solution #
A Bluetooth LE receiver controlling vibration motors powered by a small battery, all embedded inside the handlebars. Vibrations in different areas and of varying intensity would be controlled from a connected smartphone, calculating and sending turn-by-turn directions in realtime.
Feeling Is Believing #
To test haptic feedback further I ordered two Pico Vibe 12mm Vibration Motor’s and a more powerful Precision Haptic 8mmm Vibration Motor and fixed them inside a short length of 1" copper pipe (mimicking a handlebar). I was concerned about not being able to determine the source of the vibration (left or right) and detecting discrete levels of intensity.
I found the vibrations were surprisingly powerful and gripping the bar sent a tingling sensation up your arm, and for spacings greater than ~10cm it was really easy to determine the origin of vibration.
Copper pipe test bar
I decided the easiest way to prototype the electronics would be using an Arduino. As the vibration motors are high power, I used TIP120 Darlington Transistor’s to control them, following this circuit, powering them from the 5v pin.
There were very few Bluetooth LE shield’s available for sale at the time, and I ended up choosing one from Red Bear Labs - which took about 3 weeks to arrive.
Unlike traditional bluetooth, you connect to Bluetooth LE devices directly from your app without any pairing in the Settings app or [Apple MFi nonsense](mfi.apple.com/faqs).
Red Bear Labs provided a slightly patchy iOS framework for their shield, which has since been vastly improved and updated for iOS 7.
I wrote a set of commands for communicating vibration instructions between the Arduino and the iPhone. Then for testing purposes I made an app that controlled the motors by pressing the corresponding side of the screen, with a central press activating both.
(Confusingly I had the wires crossed!)
Introduced in iOS 7 MKDirectionsRequest seemed ideal for calculating directions, providing a list waypoints with coordinates and a MKRoute object that has polyline of the route. However it’s not deigned for turn by turn navigation, requiring you to manually check that the user does not deviate from the route, and if so, to recalculate the route.
The most frustrating part was that at the time iOS 7 was still under NDA and most of Apple’s documentation
was is still incomplete, making the process very experimental.
At this point my original fear of writing an entire turn-by-turn wrapper for MapKit proved true. Looking for alternatives I did find a commercial framework called MTDirectionsKit, which sort of did what I wanted but would end up costing me hundreds of pounds. As the project had never been about this, and more of a hardware proof-of-concept I decided to return to user testing.
Follow The Yellow Brick Road #
Deciding to conduct a “Wizard of Oz” experiment, I cycled around with a friend behind controlling the motors from the app. The experience was quite strange at first but quickly felt intuitive. One problem I found was that my grip positions vary depending on speed, terrain and tiredness. While I was also worried that vibrations caused by the road surface would interfere, I found as the vibrator frequency felt uniform it was easily distinguishable.
Here is some sample feedback of what I think might work well, user testing may prove some/all of these suggestions wrong.
There are 4 pulse levels: slow, medium, fast and continuous and the vibrators can operate a both high and low intensities.
|Action||Distance (m)||Pulse level||Intensity||Duration (s)|
25m ahead: continuous high intensity for 3s, then pulse number of times according to exit
I Can Ride My Bike With No Handlebars #
As all functionality is controlled from the smartphone, new features could easily be added through just an update to the app. One example could be the whole bar vibration for incoming calls or texts, as these are often missed when cycling. In theory control buttons could be added to the bars, which could be programmed by the user in the app to change the volume, start a playlist, record their current speed, start a stopwatch, calculate a route home and hundreds of things more.
The batteries could be recharged through Micro-USB, or even via a dynamo, and would last a very long time between charges as the whole thing is very low power.
Although no expert, I’m pretty confident that if made in bulk the cost of electronics could be reduced to less than $25. Including the costs of R&D, manufacturing, and materials I could see it selling at around £120 (still less than a Brooks saddle) - although realistically I wouldn’t want to pay more than £80.
This idea is still far from perfect or complete, however I am pleased with the results. The project was a proof-of-concept and I am almost certain that I have proved the idea to be somewhat viable, to myself and friends at least!
If you have any questions or comments please email me and I will endeavour to reply.
You can view the source for the iOS controller app and the Arduino sketch on GitHub