We wanted Alejandro to have a power wheelchair. We wanted him to be able to move through the world by his own volition and it’s clear that the ability to independently explore his environment is important for his cognitive development on multiple levels. We tried going through the typical process of obtaining a power wheelchair but met numerous obstacles:
- A new power wheelchair was much too expensive for our family to purchase out of pocket.
- Blue Cross Blue Shield of Illinois wouldn’t pay for one because they already paid for a medical stroller when Alejandro was 9 months old. We were told that we needed to wait 5 years. This was much too long to wait, especially during these early years which are so important developmentally.
- Recent cuts to the Illinois Medicaid program have made it very difficult to obtain funding for such devices.
- Alejandro is very weak and it was difficult to find an off the shelf access method that he could use. While there are a number of sensitive switches, joysticks and sensors available none of them seemed feasible as they all required a precise and delicate positioning that would be lost the moment his wheelchair hit a bump. Furthermore, finding this positional sweet spot took too much time for practical use.
Our best option was to for me to try to build something myself.
While looking for motors and wheels on Ebay I stumbled across a used adult Invacare TDX3 with MK5 electronics for relatively cheap ($800, shipping included, batteries not). I decided that starting with this was a signifiant head start on the project and was well worth the money. I purchased the wheelchair with the intention of using the motorized base and controller and then add new seating and a customized access method. I also purchased a wheelchair programmer, a device that allows you to configure and modify the wheelchair’s internal drive and control parameters.
Seating
The chair from Alejandro’s EasyS stroller fits him well and provides decent support as well as being reclinable and adjustable. It can detach from the stroller base and attach to a ‘Hi-Lo’ base for use around the house and it also allows you to attach a tray.
I fabricated a mating piece to be fixed to the power wheelchair base, allowing the EasyS chair to clip into it the same way it clips into the stroller base or the Hi-Lo base. Below is a photo of the piece that I built from plywood which is sturdy and adequate although at some point I’ll have someone weld up a metal version now that I have a working prototype.
Due to the adjustable and reclinable nature of the EasyS there are two sliding extruded aluminum rails that extend below and behind the seat. They protrude the most when the chair is in an upright position, which is necessary for driving. I was able to acquire a pair of shorter versions of this piece which allowed me to get the entire seat assembly as low and small as possible. I wanted the seat to be low for stability and also because I want my kid to move through the world at a height which is typical for people his age.
MK5 Interface
None of the available methods that I investigated seemed to be feasible for Alejandro to be able to consistently and reliably control a wheelchair. It was pretty clear that I’d have to come up with something myself and I would somehow have to interface this with the wheelchair electronics in order to drive it. The Invacare MK5 electronics communicate with the user controls via a proprietary serial protocol. Other’s have tried to hack this without success and I really don’t have time to try my hand at it so I decided to find a more simple route.
I originally purchased a 1554M5 Sip & Puff interface on Ebay which connects the the MK5 electronics. The 1554M5 has a mini-DIN connector for a Proportional Attendant Control and also a DB9 connector for switch inputs. The DB9 connector pinout is documented and has inputs for forward, reverse, left and right. I tested this by connecting some pushbuttons but was disappointed with its functionality. Pressing the forward button moves the chair forward at the programmed speed and pressing the left button rotates the chair in place as well. Unfortunately pressing the forward and left buttons simultaneously moves the chair in the expected direction, but at a speed which seems to be the sum of the programmed forward and turning speeds. This is a speed which is greater than both the forward and turning speeds resulting in a somewhat jerky operation when switching headings. I played with the drive parameters for quite awhile but was never able to get any reasonably smooth transition from forward to a turn. Besides this I really wanted Alejandro to have a proportional control if at all possible.
The pinout for the Proportional Attendant Control is not published but I was able to figure it out by poking around and making some educated guesses based on the documented functionality and by following circuit board traces. There are three analog inputs for X/Y and an overall speed control, as well as a switch input to override the user control and enable the attendant control. Unfortunately the the MK5 electronics do not allow you to provide drive profile settings for the attendant control. There are no adjustments for acceleration, braking, torque etc., these are all set at some pre-programmed values. I wanted to be able to program different drive profiles for indoor, outdoor, learning etc., so my search continued.
What I finally settled on was a modified Invacare 1812 Joystick. The 1812 is a proportional (analog) joystick which connects to the MK5 electronics and can be assigned to the drive profile(s) of your choice. The 1812 contains an analog joystick and a round circuit board which measures the joystick X/Y voltages and transmits them via proprietary serial protocol to the MK5 electronics. The analog joystick outputs voltages that vary between 0V and 5V, where 2.5V is the center of each axis. I found that the 1812 that I purchased had very poor sensitivity and linearity in the left direction, even after performing a joystick throw calibration. I initially thought that I had received a broken unit so I got another one, but the second unit that I received exhibited the exact same behavior. I’m pretty sure that there isn’t a problem with the MK5 electronics or the wheelchair motors as the MPJ joystick that came with the wheelchair drives with great linearity in all directions. At this point I’m chalking it up to a firmware bug in either the 1812 or the MK5 electronics. I was able to work around this by exchanging the X and Y axes in the drive profile. This moves the poor sensitivity/linearity from the left to the reverse direction which is much less of an issue as I’m primarily concerned with steering symmetry and poor sensitivity in the reverse direction can be compensated for by adjusting the reverse speed in the drive profile.
I modified the 1812 module by replacing the analog joystick with a small circuit board that I designed which simulates its output. The circuit board uses a microcontroller and D/A converter to receive serial data packets and converts them to analog X/Y voltages. These voltages are fed to the 1812 electronics where they are converted back to digital and sent to the MK5 controller. This works great and allows me to send proportional drive commands to the wheelchair without having to deal Invacare’s proprietary protocol.
I call my 1812 adapter board SERDAC (serial D/A converter). The firmware expects to see a serial X/Y data packet every 100ms or faster. If 100ms passes without the receipt of a valid packet the SERDAC immediately outputs neutral X/Y voltages (2.5V) which stops the wheelchair. This could happen if the control data source malfunctions or if the serial data cable becomes disconnected. The SERDAC will continue to output neutral X/Y voltages until it has received valid control data for a full two seconds. The last thing I want is a runaway wheelchair.
In place of the joystick I mounted a 5-pin XLR connector on the 1812 module which connects GND, serial RX and also passes along 15V power from the wheelchair for the controller and regulated 5V from the 1812 PCB.
To test it all out I wrote a simple Max patch to convert mouse movements to X/Y serial data packets and used a Bus Pirate to interface my laptop to the modified 1812 joystick module. Success! The serdac schematic and source code can be downloaded here.
Access
At the time of this writing Alejandro is able to move his left index finger, his right thumb and some toes on both feet, all with very little force. About six months ago he had the opportunity to demo a power wheelchair. At that point in time his right big toe was relatively strong and he was able to deflect a small, snesitive, very carefully placed joystick in both the up and down directions. His movement was essentially planar but we had hopes that he might somehow learn to also move the joystick left and right too. As it turned out, a couple of weeks later, over the course of a couple of days he suddenly lost the ability to move that toe at all. Such is the progression of a degenerative neuromuscular condition.
We’ve always hoped that Alejandro would somehow be able to drive a wheelchair with a proportional access method. It’s clear that this allows much greater control and maneuverability. It’s difficult to find proportional access methods for people who are only able to perform planar movement and it seems generally accepted that in these cases switched access is the only option. Nevertheless I was determined to do my best to find a proportional access method that he could use. Alejandro’s toes, while quite weak, seem to respond faster to his motor intentions than his two working fingers, so I decided to focus my efforts there.
I was reminded of how tracked vehicles like tanks and bulldozers are driven. In the simplest form there are two levers, each which control the speed and direction of the associated track. The vehicle is driven using these two controls and can go forward, reverse, turn or even rotate in place. I planned to emulate some variation of this method of operation using variable amounts of force applied with Alejandro’s toes.
We have a digital kitchen scale which we use primarily to weigh out Alejandro’s feeding formula. About the time that I was thinking about all of this the scale broke. I decided to take it apart to see if I could fix it, which I couldn’t, but it gave me an idea. An electronic scale contains something called a ‘load cell’. This is a machined aluminum bar which is supported at one end and has a pair of strain gages epoxied to it. Placing items on the scale applies force to the unsupported end of the load cell and causes the bar to bend by a microscopic amount. When the bar bends the strain gages stretch and compress which modulates their resistances. Using a wheatstone bridge and high gain amplifier a voltage can be generated which is proportional to the amount of force applied. With the appropriate load cell and amplifier even fractions of a gram of force can be easily measured.
I thought that a load cell and amplifier might be a good way to measure the small amounts of force that Alejandro is able to willfully apply with his toes. I took the load cell out of our broken kitchen scale and began experimenting with it. The results were good. The next challenge was to find some way to easily and repeatably position his toes to press on the sensor. What I came up with are a pair of sensor pedals that his feet strap into, pictured below.
I built the pedals by gluing a pair of sandals to platforms made of plexiglass. The top level of the platform supports the bulk of the sandal and the bottom level supports one end of a load cell. The unsupported end of the load cell has a nylon standoff attached to it which protrudes through a hole in the top level of the platform and makes physical contact with the toe of the sandal. The nylon standoff was filed down to be the precise length necessary. When force is applied to the toe of the sandal it causes the load cell to flex by a measurable yet visually imperceptible amount.
Now that I had a pair of pressure sensitive pedals that Alejandro could operate I had to somehow connect them via serial interface to the power wheelchair so that he could drive it. While I was at it I also wanted to have the option of using these same pedals to control a computer via HID protocols. I designed a circuit board which includes the load cell amplifiers, a microcontroller with A/D converters, bluetooth and USB interfaces, and power supply with support for rechargeable battery powered operation.
The controller PCB also includes a 3 axis accelerometer. The pedals are very sensitive and are capable of moving the wheelchair with only a few grams of force. I was concerned that driving the wheelchair on bumpy surfaces could potentially cause unwanted forces to be applied to the pedals creating oscillations and instability in the system. The accelerometer was included to to offer the possibility of applying an intelligent damping algorithm to prevent this. At the time of this writing this has not been implemented or necessary.
I also designed a second daughter PCB with LED indicators and a pair of pushbutton switches. The LEDs are used to provide a visual display the forces applied to each pedal and the computed heading. The pushbutton switches are used to put the device in ‘standby’ mode, reset the system, perform calibration, and initiate a USB bootloader for firmware changes.
The wheelchair is driven using a virtual joystick who’s position is computed in polar coordinates from the combination of the forces applied to the pedals. The distance (speed) component is simply taken as the greater of the two forces. The angle (heading) component is computed from the balance of the forces applied to the pedals using the following equations:
\(\Large balance=\frac{L}{L+R} – \frac{R}{L+R}\)
\(\Large angle=\frac\pi2 + (balance \times range)\)
The result is an angle which is +/- range radians from the positive Y axis. I chose a range value of about 1.9 radians (109º).
The polar coordinates of the virtual joystick position are converted to cartesian (X/Y) coordinates and filtered using a second order lowpass filter with an fc of about 0.7 Hz, before being transmitted via serial interface to the SERDAC board mounted in the 1812 joystick housing. The lowpass filter corner frequency was chosen experimentally as the best compromise between responsiveness and smooth operation.
The 218º range of steering allows a center wheel drive wheelchair to not only rotate in place, but at the very extremes of the range it will actually make a turn while also moving in reverse. Although it is not possible to drive straight in reverse the user can still back out of a position using a ‘tacking’ type of motion. Obviously a 360º range of steering would be ideal but 218º seemed to be adequate, considering the challenges. My feeling is that a wider range of steering while providing more maneuverability also creates a less intuitive experience for the driver. At some point, once Alejandro has gained some level of mastery I may try further increasing the steering range if it seems advantageous.
Prior to each use, after Alejandro’s feet have been strapped into the pedals, a simple calibration must be performed to establish a baseline force while his toes are relaxed. When Alejandro is not intentionally applying any force to the pedals a button is pressed which stores the current values for each pedal. These values represent an offset and are subtracted from the continuously measured pedal values.
Thresholding with hysteresis is applied to the offset pedal values. This prevents small amounts of mechanical or electrical noise from causing the wheelchair to ‘creep’ while stopped. Additionally, while the current pedal values are below the threshold, the previously established offsets are very slowly adjusted to approach the current (below threshold) pedal values. This compensates for any long term mechanical or electrical drift in the system. In practice this technique has worked quite well.
I also wrote a Max patch which monitors the system via bluetooth connection. This allows me to observe the sensor values in realtime while Alejandro operates the wheelchair and make adjustments to the control algorithm.
Success
So far the system has been working great and Alejandro has quickly been learning to drive his power wheelchair. His right foot is somewhat stronger than his left and at first he had a tendency to drive in circles, continually turning right. I was tempted to increase the sensitivity of the left pedal to compensate, but under advice from his physical therapist I resisted this temptation and eventually he has learned to compensate on his own and apply less pressure with his right foot in order to go straight.
It has been truly thrilling for us as parents to watch as Alejandro persistently works at learning to control his own movement in space. His motivation is amazing. For a kid like Alejandro there is nothing quite like finally being able to explore your environment all by yourself.
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
nice ‘work’ 😉
Really amazing work you’ve done. Your son is beautifully positioned and the foot switch is quite unobtrusive.
Excellent
Alejandro has a caring, knowledgable, and talented Dad. I have to assume that there are many similar parents out there who just as caring, but who lack the knowledge and talent to do something similar for their children. Is there a way to team up persons who have the ability to replicate something like this with with parents/children that have the need? I can’t think of anything more worthwhile than being able to help expand a child’s horizons like this. Surely groups for this purpose already exist? Pointers? Thanks very much.
This is something that my wife and I think about often. Each time our child achieves something amazing and new with the help of some contraption that I come up with our hearts are filled with a bittersweet joy, knowing that there are 1000 more children (or adults for that matter) out there that could benefit from the same, but the technology is out of reach for them. While there are growing number of low cost, open-source technologies available for people with disabilities, it seems to be difficult to find the people with the skills and motivation to help apply these technologies to the lives of individuals. The only organization that currently I’m aware of is the Speak Your Mind Foundation, which focuses on providing assistive technologies to people with disabilities so that they can communicate. Hopefully there are other similar groups, but I haven’t found them yet. In most cases, the requisite technologies are cheap and simple enough that they could be implemented by an engineering student or electronics hobbyist. I would very much like to see a website that serves as a repository for low cost open-source assistive technologies, as well as a way to connect people with the skills necessary to apply these technologies with the people who need them. Unfortunately I myself don’t have the time to spearhead such a project right now, but would be excited to contribute however possible if such a thing were to exist.
I also just learned about the Tetra Society.
There is something almost like what you are talking about. http://thecontrollerproject.com/ aims to help people with disabilities by pairing makers with them to help them figure out a solution.
I am glad that you created this hack so your son could travel through the world. Also, I wanted to tell you that your hack look very professional.
An idea that I think would be useful is combining the feet control that you created together with an eye tracking device and a neuro-headset. That could add more options to your son in order to interact with the world around him.
I wish the best for you and your family.
I am asking myself if more functionality could be added by combining your hack together with the google glasses or the competition of the google classes
There are two other projects that I’m currently working on. The first is a low cost wireless EEG brain computer interface and the other is implementing the pupil headset as an augmentative communication device. Things always move more slowly than I would like around here, life can be complicated, but I’ll be sure to post what I come up with.
I also read this and thought of Google Glass and of the brain controlled chair we had at my hackerspace. Hmmmm.
Your work is truly inspirational. Well done, sir!
You should be proud of the work you’ve done. This is really touching and heartwarming.
This is amazing. I work in medicine, and we need more people like you!!!!
i used to work for a dutch company responsible for maintaining that brand of wheelchairs amongst others for some of the states in our countrie and even for us pro’s it was realy hard to get any support from the manufacturer or even a key to get intoo the electronics/programming to adjust it for speed ramp up and down and such
hat of to you for being able to break intoo the system and get it to work with the system you build for it
Some of your photos are beautiful unto themselves, page layout concise..Thank you for taking the time to explain and inspire.
Bless your heart for this hack! Truly wonderful and really made my day to see this, so thank you and God bless!
You sir, are amazing. Alejandro has one of the coolest dads ever. The amount of knowledge needed to do what you have done is astounding. God Bless.
“Thresholding with hysteresis”, what a novel way to approach the issue. Hats off to you as a Dad and inventor. Are you an engineer? I am the the son and father of engineers. Dad got his degree in Zurich 1936, Son Boulder Co. 2011
This is freaking awesome. Thank you for doing such a great writeup and including all the details and photos! Fantastic! Would you like to repost this on Hackabilityblog.com? A bunch of us also have a mailing list for tinkering, modding, inventing, and hacking mobility and accessibility equipment over here: https://www.noisebridge.net/mailman/listinfo/hackability
Fantastic. Brilliant.
My baby nephew diagnosed a year ago with a very rare type of muscular dystrophy has been hospitalized for a year now at Hopkins. This gives me hope. Thank-you for your invention and for your devotion to your son!
Truly remarkable mate. loved this story and your passion. if there were more like you, the world would be a wonderful place. inspirational.
I am truly inspired by your creativity. God bless you and your family.
Bravo!
Very well done! Wish you and your family all the best!
faith in humanity restored. you are a father, a real father. this an is inspiration for everyone. thank you so much for this!
you should visit wheelchairdriver.com! a lot of powerchairs hacks in there!
Excellent
Wow de verdad que eres un padre fascinante, eso es lo que se debe hacer para su amado hijo, de verdad muy buen trabajo, saludos y mucho amor y suerte para tu hijo y toda tu familia, Cuídate.
this is a big wow…you are one talented guy and a wonderful parent, love to you
dutch, husband of blmeyer
You, sir, are a fine human being. Inspiring
Well done! wish you and your family all the best !
You remind me of my husband, Dan, Shea. He is most impressed, as we all are at Dragonmobility. Lots of our Dragonmobility followers on facebook have joined in the praise! Our project started over 30 years ago when Dan responded in a similar way as a father. We are also an SMA family, so I know how pressured you life must be just in caring for him. My love and prayers for you and your wife and to Alejandro, together with great admiration and congratulations. You have given your son a great gift.
wow.
Congrats on your hack!. Im trying to do same hack on VR2 controller. Please, post schematics and code. Thanks!
You can get the schematics and source code for the serdac board here.
I’ll work on publishing the source code and schematics for foot control part of the project when I get a chance.
I was suggested this web site by means of my cousin.
I’m now not sure whether or not this put up is written by
means of him as no one else recognize such unique
approximately my trouble. You are incredible!
Thank you!
“the other is implementing the pupil headset as an augmentative communication device”
Just in case there’s any interest:
TalkingEyes: Eye-tracking and ALS Google+ Community: https://plus.google.com/communities/103103072435695270907
Eye Tracking subreddit: http://www.reddit.com/r/EyeTracking
Lastly, I’m not sure if this will help, but here’s an interesting Indiegogo project that has backing from the United Cerebral Palsy organization:
Google Glass Eye-Control App for Wheelchairs
I will create controls for powered wheelchairs using the Google Glass eye-tracking technology to provide mobility for disabled persons, with support from UCP.
http://www.indiegogo.com/projects/google-glass-eye-control-app-for-wheelchairs%5B1%5D
Technology
The patent Google issued for eye-tracking technology as part of their Google Glass product (US 8,235,529) indicates there will be rather precise tracking of the right eye’s movement relative to objects presented in the user’s line of sight. With this level of precision, users will be able to seamlessly use subtle eye motions to select controls that change the speed and direction of the chair by staring at a particular button for a determined period of time just long enough for the app to distinguish between a casual glance and a deliberate action. Being able to rely on subtle eye motions for button-like control will also allow the app to track for more extreme eye movements to provide system overrides, such as an emergency stop.
(Wrong link; here’s the correct one):
http://www.indiegogo.com/projects/google-glass-eye-control-app-for-wheelchairs
This is the most beatiful thing I have ever seen for a while thank you to fulfill my heart with hope! God bless you, hope your son will be in better condition for next years. Keep up the good work!
Great job … the embedded engineers at my office think it’s awesome, so do i.
you must be the best Dad ever.
Good job!
tip: put the video on start of the post.
Really great project and super awesome human, you are a great person and father to do this.
I hope to see this on kickstarter or a way to keep iterating on it with funding. Donations and crowdsourced funding for projects like this should be plenty. Hope to see you do more since you are very skilled at it.
You do awesome work I need to learn from you.
Your son is blessed for having you as a parent!!!!!
This is fantastic.
On the one hand you could say that it’s a pitty that you could not afford a proper wheelchair. On the other hand I think it’s great to have a challenge like this and being able to make it.
Fate often challenges people to prove their power. And you have a lot of power. Your son must be very proud of you!
I hope you will have more great ideas like this for your son. There are not many people to face this kind of challenge!
Keep up the great work!
wooow amazing. This is awesome work.
Wow, well done! I am a wheelchair user myself (and I was a wheelchair using child ages ago). To move around independently is so important for children. It’s a great thing you did for your son. Keep up the good work! 🙂
The fact that you could not afford a wheelchair, hacked used one, and then gave away the process for others for free makes me tear. Hats off and all the best for you and your kid.
This URL is an article just published in Medical Design Technology. The first paragraph explains the experiments being conducted. This may be a future solution for your son.
Excerpt from MDT online: An experimental device is letting paralyzed people drive wheelchairs simply by flicking their tongue in the right direction.
http://www.mdtmag.com/news/2013/12/tongue-pierce-lets-paralyzed-drive-wheelchairs?goback=.gde_85363_member_5814014122974527488#!
Good luck Dad!
Thanks for the inspiration. I was feeling frustrated after frying the controls from a Rascal 250 I was attempting to convert to a power beach chair for my son, but thanks to your story I’m back on the job. No matter how hard we work to find solutions for our kids with disabilities, we won’t work as hard or show as much courage as they do every day.