My wife Andrea, AKA Feorlen, had foot surgery a few weeks ago. Part of her recovery is to stay completely off her feet for about 6 weeks or so. She gets around the neighborhood and our apartment on a knee-scooter that keeps her healing foot up in the air and lets her push off with the other one. It has a very tight turning radius for moving close up to tables, shelves, furniture, etc.
One thing she asked of me to help her get around was to make her a simple sort of backup sensor so she wouldn’t bump her foot against something when she was moving around and not always able to see directly behind her.
So it was off to the drawing board and parts bin with me where I hacked away on a few ideas. Her requirements/specs were:
- Simple to use
- No wires hanging around to tangle on the scooter itself
- Audio-only. As cool as a visual “RADAR”-like display might be, it would be distracting to have to look at that while trying to navigate around.
- Hands-free operation. Manuevering the scooter around is a two-handed operation, so again we couldn’t have anything that took attention or hands away from driving.
- Simple to attach/detach from the scooter.
This kind of ruled out an iPhone or IOIO-board-based approach as cool as that might have been. Instead, I decided to use an plain old Arduino Diecimila board for the microcontroller with a MaxBotix EZ1 sonar module and a large piezo beeper from Radio Shack. There was some fiddling and dremel-ing of plastic and no small amount of cursing but I managed to squeeze it all into a project box. I drilled a few holes to pass cables through. The “front panel” consists of an On/Off toggle and a “Indoor/Outdoor” range mode switch.
Note the programming port up at the top, consisting of a male/female pair of USB ‘B’ components soldered back-to-back.
Soldering the connectors together was a bit fiddly but I don’t have to take the darn thing out of the box every time I want to flash an update onto it.
I had an old handlebar strap laying around in the parts box with racheting notches on it. That’s screwed onto the bottom of the box and wraps around the frame of the scooter quite nicely to hold it in place.
Ranging/distance data is acquired by using a Maxbotix LV-EZ1 sonar sensor.
The code from the SaucerBot project made a good starting point for the code here. Even though I’m using sonar and the SaucerBot uses SharpIR rangers, they’re both working on basically the same problem: Using analog sensors to rapidly keeping up with closing distances between themselves and nearby objects and alerting as necessary. For the Saucerbot this means not running off the edge of the table. For this project, it meant not running into things.
There was some tweaking and adjusting that needed to be made because Andrea’s foot hangs off the back of the scooter about 10-12″ ahead of where the back of the scooter is and about 8-12″ down from the “seat” of the scooter. This meant that there was really only one or two places I could mount the box and have a clear, unobstructed view behind.
Since this wasn’t for the robots or a hack to amuse myself with, I actually spent a lot of time talking to my end-user population about design and requirements
Working with the people that are going to use the things you make and letting them help shape the design can be pretty challenging because it can involve giving up on pre-conceptions, pet ideas, pet technologies and, well, basically control over the whole thing. And that’s just for a project with off-the-shelf parts that’s put together in a weekend or two. Add in a target price, budget and deadlines and assorted administrivia and it’s easy to see why user feedback and design sometimes gets the short end. For things that are actually going to be useful to people though, it’s critical.