go_away

Author Topic: My Wheelchair Robot - Anna  (Read 1335 times)

0 Members and 1 Guest are viewing this topic.

Offline jlizotteTopic starter

  • Jr. Member
  • **
  • Posts: 44
  • Helpful? 2
My Wheelchair Robot - Anna
« on: March 19, 2013, 01:27:33 PM »


Wheelchair base. Wi-fi enabled. Onboard camera. All controlled from the laptop using an Arduino microcontroller. Six ultrasonic sensors are waiting to be installed for basic obstacle avoidance.

I interfaced the Arduino between the 2-axis joystick and the controller board in the joystick housing. One wire for X-axis, one for Y-axis, plus power and ground.

Microsoft Robotic Developers Studio will be used to program speech recognition, conversation, and autonomous behavior, including “follow me” capability and gesture recognition using the Kinect sensor.

I’ll post more pics, videos and a technical write-up as soon as I can.

And the best part…total cost so far:  $40.  Yep, you read that right. Forty dollars for the Arduino. Everything else was donated or recycled!

I'm finding it impossible to find any information about communication between the Arduino and MRDS. If anyone here has any input or experience doing that, PLEASE SHARE! lol

John

P.S. I've been lurking here at SOR for months...learning a lot...I'd like to say "thank you" to all of you for sharing such great information. I couldn't have done it without you. And thanks, Admin, for hosting this board.  8)

Offline jwatte

  • Supreme Robot
  • *****
  • Posts: 1,343
  • Helpful? 81
Re: My Wheelchair Robot - Anna
« Reply #1 on: March 19, 2013, 02:00:36 PM »
Can MRDS communicate with a serial port? The Arduino is just a serial port, from the point of view of the host. You can then develop an Arduino sketch to react to whatever commands the host is sending, and send data back as needed.

Offline jlizotteTopic starter

  • Jr. Member
  • **
  • Posts: 44
  • Helpful? 2
Re: My Wheelchair Robot - Anna
« Reply #2 on: March 19, 2013, 02:06:22 PM »
Yes, MRDS can talk via serial. I imagine I'll run "Firmata" on the Arduino...this basically puts it in "wait for a serial command then do it and respond" mode. I've only just begun learning MRDS, and the curve is very steep. I'll figure it out eventually, and make the code available when I do.
« Last Edit: March 20, 2013, 06:27:35 PM by jlizotte »

Offline Azraels

  • Full Member
  • ***
  • Posts: 57
  • Helpful? 1
Re: My Wheelchair Robot - Anna
« Reply #3 on: March 20, 2013, 05:55:17 PM »
Great ideas!
Hope to see more of it later.
If your first post is, "I want to build a super complex robot with object recognition, etc..but I have never done programming or electronics...etc." 
Your doing it wrong. Start Simple and Work Up.

Offline jlizotteTopic starter

  • Jr. Member
  • **
  • Posts: 44
  • Helpful? 2
Re: My Wheelchair Robot - Anna
« Reply #4 on: March 24, 2013, 12:58:13 PM »
Here's the write up from my blog about how I put her together. This week I'm adding the six ultrasonic sensors, and working on that code, as well as building/compartmentalizing the power distribution and electronics boxes. I'm also going to document my wiring and code before I get too far along, and work on some coding to make testing and maintenance easier ie: running the motors in an extended timed-loop to help cycle the batteries.

Anyway, Anna's introductory post from my blog at www.JohnLizotte.com/Robotics:

I need to do some research on Smart Wheelchair technology, and what better way to do it than on an actual wheelchair?
 
Well, the better way was upcycling 3 broken wheelchairs into one working wheelchair-based robot. Total cost for the entire project: $40 for an Arduino and some ultrasonic sensors. I call her AnnaBot.
 
Quick glance as of today : Wheelchair base. Wi-fi enabled. Onboard camera. All controlled from the laptop using an Arduino microcontroller. Six ultrasonic sensors are waiting to be installed for basic obstacle avoidance.
 
Microsoft Robotic Developers Studio will be used to program speech recognition, conversation, and autonomous behavior, including “follow me” capability and gesture recognition using the Kinect sensor.
 
The first thing I did was take stock of the parts I could use that I already had around the house. I found an old laptop and a webcam. I was already playing with MRDS. That left me with two parts to find: a working wheelchair, and a microcontroller to interface to it.
 
I like my gadgets, so I ordered an Arduino Mega 2560 and some ultrasonic sensors. However, my budget didn’t allow for spending several hundred dollars on a used wheelchair.  Here’s where I got creative.
 
I talked to several nursing homes, a hospital, and anyone who would listen, to tell them what I was trying to do. I also put an ad on craigslist. Wanted: electric wheelchairs, working or not.  One man’s trash is another man’s treasure. That really paid off for me. Over a two week span, I got 3 wheelchairs. None of them working. None of them cost me a cent. I took the frame and motors from one, the wheels and electronics from another, and batteries and a charger from the third. I put it all together, said the magic word, and presto, I had one working wheelchair and a heap of spare parts after a few evenings of work.
 
So, the most challenging part was reusing the onboard electronics for the motor control. There’s lots of safety features built in, and they aren’t easy to hack. But they are designed to handle the high motor current. I wanted to keep them.
 

Inside the joystick


 
Originally, I was hoping to interface to a port on the outside of the controller, but this wasn’t possible. I had to hack the joystick. I got lucky again. You can see in the picture of the joystick, it’s only 4 wires. One X-axis, one Y-axis, plus power and ground.
 
I used a multimeter to measure the voltages of the joystick on the blue and yellow wires at neutral, full forward, reverse, left, and right. Then I used the Arduino PWM output to give me those voltages. Should have worked, right? Nope. Two problems. First, the electronics on the chair were sensitive enough to see that the voltage wasn’t steady, and they errored out. I fixed this by putting the PWM through what I call a “smoothing circuit”. I connected the PWM to a resistor, then to the positive leg of a capacitor. The negative leg of the cap went to ground. Then I connected the positive leg of the cap to the joystick control circuit. This let’s the cap carry the voltage in between the pulses, and it was enough to fool the chair’s controller.
 
The next problem was a joystick fault every time I changed motor directions. This was solved by connecting the Arduino’s ground bus to the ground bus inside the joystick. Giving them a common ground reference solved the last of my electrical problems.
 
Currently, I’ve got the Arduino programmed to send the proper voltage to move in whatever direction I choose, based on a keypress. “8″ drives it forward, “2″ reverse, “4″ is left, “6″ is right, etc. (The arrows on the number pad). Eventually, this will be under the control of MRDS.
 
The ultrasonic sensors are going on it next. Then it’s ready to start being somewhat autonomous. For now, I remote desktop into the laptop on Anna. I can access her webcam to see what she’s doing, and I use a simple serial port monitor to send her commands and recieve her responses.
 
I’m very happy with how this project came together. Much better and much cheaper than “SAM”, the little white robot I built back in the late 80′s. He was based on an 80286 desktop computer that I powered by battery. He had speech recognition, a webcam, and joystick control. For about $500 in 1987 dollars. lol.


 

SAM was ahead of his time…25 years ago.
 
My next step is to interface the Arduino to MRDS. Then I want to develop some low-cost cliff sensors, chair-based remote home automation,  and such that will enhance the wheelchair user’s day to day safety and comfort. At an affordable price so that those who need it can actually afford it.
 
Thank you for reading about Anna

Offline jwatte

  • Supreme Robot
  • *****
  • Posts: 1,343
  • Helpful? 81
Re: My Wheelchair Robot - Anna
« Reply #5 on: March 25, 2013, 12:14:35 PM »
What you call a "smoothing circuit," most people would call a "RC low-pass filter" :-)
Wikipedia has a cool article on that, if you want to see formulas for cut-off frequencies/response times, etc.

Offline jlizotteTopic starter

  • Jr. Member
  • **
  • Posts: 44
  • Helpful? 2
Re: My Wheelchair Robot - Anna
« Reply #6 on: March 25, 2013, 01:14:01 PM »
lol jwatte. Thanks! I knew it had a name, I just couldn't pull it out of my butt when I wrote this. All my electronics and programming is self-taught, so I've got plenty of gaps in my knowledge, too.

Thanks for the tip on the article. I'll go check it out.

Offline jlizotteTopic starter

  • Jr. Member
  • **
  • Posts: 44
  • Helpful? 2
Re: My Wheelchair Robot - Anna
« Reply #7 on: April 09, 2013, 03:02:53 PM »
Update April 9, 2013 - My Wheelchair Robot Becomes a Teleoperated ROV

It’s been a couple of weeks since I posted anything about Anna, my wheelchair robot I’m using for Smart Chair Technology research. I’ve been busy with family obligations, but I’ve still managed to make some great progress. Here’s a very short update. I’ll try to add a video as soon as I can get my hands on a decent camera!First, I found some open-source robotic software from Oculus used to control their “netbook based” tele-robots. Lucky for me, their controller board is compatible with the Arduino that I’m using. I downloaded the source code for their firmware, made some tweaks, and I now have full remote control/tele-operation of Anna via wifi from any internet connection anywhere in the world, and also via an app on my Iphone. This is a far cry from the simple keyboard control of her I had just a few weeks ago!
 

 
This is a screen-grab from my laptop. I remoted in to Anna who was on the other side of the house in the basement, and this is what her camera is looking at. If you can manage to read the screen-grab, you’ll see have I full speed and directional control of her, all while she streams full video and audio to my phone or laptop computer. The status display on the top right is great…battery condition, docked or not-docked status, moving or not, ping time (there is a keep-alive timer that will shut down Anna for safety reasons in the event communications are lost), and more. It’s also got pan/tilt control once I hook a servo up to my camera.
 
On the hardware side, I made some progress, too. I extended the 24 volts from the wheelchair batteries up into her electronics box, and threw in a 24 to 12 volt DC-DC converter (5 amp), and a 24 to 5 volt DC-DC converter at 10 amps. These will give me the power I need for the Kinect sensor and my ultrasonic and IR sensors, as well as some servos. I brought all three of these voltages out to terminal strips for ease of access. In the center of the picture you can see (from left to right) an 8-relay board, my breadboard for prototyping, and her microcontroller, an Arduino Mega 2560. The phone jack you see in the very lower right corner is where I tapped into the wheelchair’s joystick/controller. If I plug in the Arduino, I’ve got computer control of Anna. If I plug in a loopback jack, she reverts to normal wheelchair mode controlled by her joystick. I did this for ease of moving her around, and safety when I have to take her in public to demonstrate some of the technology I’m working on.
 

 
And last, but not least, I put a stable platform on Anna to safely house and isolate her electronics. Although it looks hideous, it kept within my budget (zero dollars for scrap wood. lol). One nice feature to this box is that the wheelchair frame had a reclining seat. By mounting the box between the arm brackets, I am able to release 2 levers at the front of the chair, and the entire electronics box raises up and back to the rear. This makes it easier to work on the batteries and other electronics in her base, and it also doubles the space I can use for electronics because the platform raises up enough that I can mount components on the underside of the board you see in the picture above.


 
I’ve still got some ultrasonic sensors to mount. Then I’m going to work on tweaking her software until I can purchase a copy of RoboRealm and a Kinect sensor.

So far, I've only got $75 invested (total) in Anna. That only puts me...oh....$75 over budget! lol
 
Thanks again for reading about Anna! Stay tuned for more Adventures with Anna :)
« Last Edit: April 09, 2013, 03:29:36 PM by jlizotte »

 


Get Your Ad Here