Shop OBEX P1 Docs P2 Docs Learn Events
Omni Wheel Configuration — Parallax Forums

Omni Wheel Configuration

BrainStrainBrainStrain Posts: 30
edited 2013-06-29 13:14 in Robotics
I have reached the point in my Standing Wheel Chair project where it is time to build the motorized omni wheel base. Oh, yeah, almost forgot. I have built a working standing chair prototype. I am very pleased with the design. It works and I have stood up several young ladies who are paralyzed below the waist. I can hardly wait to test it with powered wheels. I had three paraplegic young ladies at my house to test the chair a couple of months ago. I thought they would be excited at the prospect of scooting around the house standing so they could cook, wash dishes, brush their teeth, etc. But they got all giggly at the thought of standing up to put on their make up!

So the first step in building Prototype II is to design and build a running omni wheel base. Then I can design the rest of the chair frame around it. I have attached a picture of an omni wheel attached to my test mount. I am going to use short bicycle chains to run the wheels.

OmniWheel_Pillow_Mount_2.jpg


After spending a chunk of time drawing possible wheel base configurations, I ran into an omni wheel configuration issue. First, I am going to use three omni wheels; two at the corners of the chair front, and one centered in the back. I can't use an equilateral triangle to position the wheels because in order to properly support the chair the triangle would be too large to fit through door ways. So I stretched the triangle until the rear wheel fit where it needed to. This led me to drawing and calculating angles for the front wheels and various circumcenter points for my new triangle(s) so I could get the chair to spin left and spin right somewhat centered from the rider's perspective. I can't have the chair gyrating around like an out-of-balance washing machine. During this exercise, I realized that I could not position the front omni wheels much below 45 degrees relative to the front of the chair because of the loss of "omni" function and a battery-killing loss of efficiency. As you move the angle of the wheels closer to parallel with the front of the chair, they begin to point at each other. That is good for spinning in circles and going sideways, but at some point the wheels would completely lose the ability to move the chair forward and backwards. Every degree of change puts the wheels in position to fight against each other more and more, which spells dead batteries.

So, I was thinking that I might want to angle the wheels as much as 60 degrees relative to the front of the chair. This would maximize the efficiency of going forward and backwards because every change in degree points the wheels more in the forward direction. And forward, or almost forward, is the direction the rider will be moving most of the time. However, this would make the spin left and spin right geometry somewhat complicated. So, finally, my question is, can I position the wheels at about 60 degrees and then correct the behavior of the wheel base's motion with programming, or do omni wheels demand that I position them at 45 degrees?
720 x 703 - 383K

Comments

  • Duane DegnDuane Degn Posts: 10,588
    edited 2013-03-20 19:36
    By 60 degrees do mean like this?

    attachment.php?attachmentid=77484&d=1295649440

    I thought this was the "standard" configuration for three omni wheels.

    I haven't done a lot of testing with three omni wheels yet, but it's on my todo list.

    I have found my omni wheel bot doesn't drive in a straight line on carpet (the only surface I've tested it on) when the wheels aren't distributed symetrically around the line of travel.

    In the picture above, let's call the wheel closest to the camera the back wheel. The robot will travel straight if I give it a command to travel forward of backward but travelling to the side isn't as easy.

    My control algorithm computes the wheel speed based on the wheels angle to the line of travel but the actual direction of travel is a little off from the computed direction. This isn't noticeable when I'm controlling the robot by remote so I doubt it would be a problem if your robot is being guided by a human.

    Here's my robot driving in a figure 8 as part of erco's figure eight challenge.

    I thought the 45 degree configuration was used with four omni wheels?

    I think just about any angle could be used (within reason) as long as the correct angles were used in the algorithm to compute wheels speeds.

    I haven't seen any algorithms for computing wheel speeds on these types of omni wheels online (not that I've looked very hard). The algorithm I came up with seems to work pretty well and I'd be happy to share it if you'd like. It's not really very complicated IIRC it computes the individual wheels speeds by multiplying target speed of the robot by the cosine of the angle the wheel makes with the line of travel (sorry if you already know this).

    I'm pretty sure there are modifications to the algorithm that would improve it's ability to travel in a straight line when the wheel directions aren't symmetrical.

    Let me know if you'd like me to post the code I have.

    Edit: I see I've already posted the code. I'm still very willing to help.
  • BrainStrainBrainStrain Posts: 30
    edited 2013-03-21 00:23
    Duane - As much time as I took to write my post and the time I spent drawing don't explain how I could have gotten my thinking twisted over backwards to the flip side of 90 degrees. When I went back to my drawing I saw that I had positioned my wheels at 30 degrees rather than 60 degrees. Somehow in making and erasing several triangles inside my square frame, and keeping track of measurements and circumcenters, I lost my perspective. I erased and re-drew my wheel positions again and magically they looked right, just like my WowWee Tri-Bot; 60 degrees. It is amazing how our eyes won't tell us we are wrong when our brains are telling us we are right. Thanks.

    However, that still leaves me with a second issue, which is how to get the wheel chair to spin left or right and otherwise steer correctly when the circumcenter for the wheel base is a mismatch with the center of the chair and the vertical position of the rider's head. Remember, I stretched the rear wheel backwards about 4.5" past where it would have been for an equilateral triangle.

    Now that my drawing is fixed I think the next step will be to build the wheel base. Then I will take a serious look at your code, and I very much appreciate your offer to help! I certainly need some help to bring this project to fruition. I am very much looking forward to the moment when I connect the wheel base to my three-axis joy stick and start testing code. By the way, I have progressed far enough with my joy stick programming that I think I'm ready to work on the motor control. Very exciting times.

    When I eventually get the omni wheels running based on a equilateral triangle configuration, then I'll see how the chair performs and make adjustments to a desirable circumcenter point.

    And, no, I have not already figured out the trig to coordinate the wheels. It's been about 40 years since I've been in a math class, so my trig is a bit rusty.


    Before I forget, there is a good circumcenter calculator at:

    http://easycalculation.com/analytical/circumcenter-triangle-calculator.php

    Thank you again, Duane, for your willingness to help.
  • BrainStrainBrainStrain Posts: 30
    edited 2013-03-21 00:24
    One more thing, very slick figure eight work in your video!
  • Duane DegnDuane Degn Posts: 10,588
    edited 2013-03-21 02:47
    There's another consideration with wheel geometry I failed to mention earlier. It's the rotation ability of the robot.

    In most omni wheel designs I've seen, when all the wheels are turning at the same speed the robot will rotate about its center. I think this is one of your concerns since your configuration may need a modified algorithm for turning in place.

    I don't think this modification will be very difficult. It will just require a little additional math compared to more conventional configurations.

    I do think your configuration may cause some practical problems. It seems like there would be an advantage if the mass of the robot could be evenly distributed across the three wheels. If the mass can't be evenly distributed over the three wheels, I'd think it would be better to have the mass closer to two of the wheels rather than closer to a single wheel. I'd think you would probably be better off if you had the two wheels at the back of the robot rather than the front of the robot since the center of mass of the robot will likely be towards its rear.

    I wonder if some consideration should be given to the likelihood the robot will spend more time travelling forward than other directions. Is there a wheel geometry that favors forward motion?

    Writing this last question reminds me of an advantage Mecanum wheels have over the wheels you're using. All four motors turn may turn at there full speeds when travelling forward with Mecanum wheels. These other omni wheels require at least one of the wheels to turn at less than full speed.
  • BrainStrainBrainStrain Posts: 30
    edited 2013-03-21 22:16
    Duane, glad you brought up the issue of the chair going forward most of the time. [I still can't believe I said I was wondering about 60 degree angles in my first post. I disassembled a WowWee Tri-Bot and used it to support a styrofoam mock-up of my chair before I started this project. Those wheels were set at 60 degrees; the wheels being 120 degrees apart.] Getting back to going forward most of the time. Yes, I was wondering if I the omni wheels would still function properly if I set them at about 70 degrees. As they are positioned closer to the direction of forward travel, 90 degrees, the better the battery life, based on the idea the chair will be moving forward most of the time. But, for now, I have to get back to my basic project rules: First, build a chair that works well. Work on improvements later.

    I agree with you completely about distributing the load on the wheels. We don't want the rear wheel and motor to take too much of the load. I plan to put two swivel casters behind the rear corners of the chair. Together with the centered rear omni wheel they should provide plenty of support. The omni wheels I'm using are rated for 250 lbs each. I don't like using casters, but even if I used four omni/mecanum wheels, the chair needs to have a couple of wheels a few extra inches behind the rider so she can't tip over backwards.

    I say the rider is "she" because the first riders will all be women, the girls on Chelsie's HotWheelz wheel chair dance team:

    http://www.facebook.com/TeamHotwheelz

    http://montereybayareanews.com/2013wheelchairs-wont-slow-these-women-down/

    I have included a picture of my styrofoam mock-up chair with the WowWee Tri-Bot base for you. :smile:

    Styrofoam_MockUp_w_Motor.jpg
    1024 x 1365 - 159K
  • FranklinFranklin Posts: 4,747
    edited 2013-03-22 11:59
    SparkFun has a new wheel out. https://www.sparkfun.com/products/11578
  • ercoerco Posts: 20,256
    edited 2013-03-22 16:12
    @Brainstrain: I think I recognize the motor in your photo as one from an electric scooter/bike such as http://tncscooters.com/index.php?route=product/product&path=52_55&product_id=53 If that's correct, that's quite a stump puller and fast, too. I used one of those before to make a pretty fast electric bike. Do you need that much power & speed on a wheelchair?

    Oops, my 9000th post. Who knew???

    Actually Whit did, he PM'ed me that I was fast approaching #9000! Although only a dozen of those actually contained any useful information. :)
  • BrainStrainBrainStrain Posts: 30
    edited 2013-03-22 16:45
    Erco, yes, that is a TNC bike motor, 24V, 250W. I was thinking about using the 450W motors, but I'll see how these perform. And a second yes. I think I need quite a bit of power because the chair is going to weigh about 160 lbs (thumb in the air estimate) and the rider could weigh as much as.... maybe 200 lbs. The Team HotWheelz girls are all somewhere in the low 100s, I'd guess. I've stood myself up in the chair a bunch of times and I will be testing it once I get it completed, so there is going to be plenty of load to pull. Also, omni wheels are inefficient, a trade off for maneuverability, and the rear wheel has to work mostly by itself to run the chair sideways. Then there is the handicap ramp issue. Can the chair pull 6 degrees or otherwise run uphill? I was thinking of putting a 450W motor in the rear, for the sideways power, but a power systems engineer who has agreed to help me a bit said that he wouldn't mix motors. Maybe someday I'll put a 450W motor in the chair and just not tell him! :)
  • BrainStrainBrainStrain Posts: 30
    edited 2013-03-22 17:14
    Thanks, Franklin. Good sources are good to have.
  • ercoerco Posts: 20,256
    edited 2013-03-22 17:21
    Assuming your plan is one motor per wheel, you're way overpowered already. No need for a 450W motor. I was getting 24 MPH on my bike with one 250W motor: http://www.youtube.com/watch?v=eYh2JaHsdak

    PS: Don't let this happen to you! :) Not me... http://www.youtube.com/watch?feature=fvwp&NR=1&v=KvYRMqRlipk
  • BrainStrainBrainStrain Posts: 30
    edited 2013-03-22 23:30
    From my understanding of motors it is probably a good thing to be overpowered. I suspect the motors will run as efficiently as they can and perhaps be responsive at low speeds, I hope. That will work well in both performance and battery life. I'd read that the motors can get hot, so if I don't use all of their power they should run cool.

    Slick video riding the bike, fast! I've talked to my wife about converting our bikes to electric. That would call for a lull in my wheel chair project.

    Here is a picture of a motor connected to an omni wheel for testing. I ordered the motor with a mounting bracket. The $10 for the bracket was well worth the money because it gave me templates for both the motor gear head profile and the mounting holes. Note that in this picture my wheel mount is facing with the top up, as it should be. Testing the motor driving the wheel with a chain on the bench worked out well. It showed me that the sprockets needed to be better aligned. I made an adjustment to the way the sprockets were mounted to the wheels. Now they run as smoothly as I could hope for. All is well.

    IMG_0138a.jpg
    1024 x 1194 - 175K
  • ercoerco Posts: 20,256
    edited 2013-03-23 07:39
    You may find that 12V is all your 24V motors need in this application. Maybe less.
  • BrainStrainBrainStrain Posts: 30
    edited 2013-03-28 22:45
    I'm looking forward to when I have had enough time running a finished chair to know how much power it needs. Fine tuning is a good thing. For now, the motors, wheels, and other parts are in my shop waiting to be transformed into a standing wheel chair. Yesterday I finished building an initial mount to hold the motor and wheel as one assembly. The wheel assemblies have to be removeable, so that gives me something else to look forward to, building the lower portion of the chair frame so I have a frame to attach the wheels to. At that point I will probably go back and forth between playing with, uh, programming the emerging omni wheel platform and finishing the whole chair.

    I have attached some pictures to show how my motor/wheel hookup stands at the moment. I had to prop it up to take a picture of it. When I was doing that I got a wild idea and flipped the assembly over, upside down. It balanced beautifully and simply stood there in front of me. If anyone asks, I just might say I planned it that way :)

    .
    Wheel_Mounted_and_Balanced_a.jpg
    Wheel_Mounted_to_Motor_a.jpg


    Today the Walk and Roll Foundation posted a link to a piece Chelsie did on CNN recently. I'd forgotten that there was a CNN surprise meeting as part of her recent trip to the Abilities Expo in Atlanta:

    cleardot.gif
    http://www.cnn.com/video/?hpt=he_mid#/video/health/2013/03/28/hm-wheelchair-dancing.cnncleardot.gif

    Today UPS delivered a major part I needed to start the lower chair frame. Now I'm ready to dive in.... except I have to get my taxes done first....
    1024 x 1112 - 127K
    1024 x 1193 - 179K
  • Duane DegnDuane Degn Posts: 10,588
    edited 2013-03-31 10:26
    That looks very cool.
    \
    I keep thinking about those omni wheels you have. Those are metal rollers right? I'm afraid those rollers are going to end up tearing up flooring wherever they go. I'd think they'd gouge hardwood and vinyl flooring even carpet might not be able to handle frequent passage of those wheels.

    I'd think some sort of hard rubber roller would be needed to both protect floors and smooth out the ride.

    Vex has a new "Pro" line of products. There have some larger omni and Mecanum wheels that look pretty tough. I wonder if they have something that would be useful for this project?

    I just really worry about those metal rollers tearing up flooring.
  • BrainStrainBrainStrain Posts: 30
    edited 2013-04-01 12:41
    Duane, Thanks for the compliment on my wheel/motor mount. This week should show some significant progress in getting the lower section of the frame fleshed out and improvement to the design of the omni wheel/motor assemblies. I plan to make them easily removeable. It is going to be cool to be able to disconnect and remove the motors/wheels in just a few seconds. If, er... when all goes according to plan I should make a video of the attachment and removal process, with a stop-watch running. I've been giving some thought to the physical process of removing the wheels and batteries, then loading the chair in a vehicle, taking it back out and re-attaching stuff. Each wheel/motor set will weigh about 7 pounds. Four batteries will weigh about 45 pounds. I want to get the core chair to weigh well under 100 pounds so that a reasonably strong person (including me) can transport it. As for a construction issue, the wheel/motor assemblies have to fit snuggly so they don't wriggle and rattle around, giving the chair a bangy, clangy sound and feel.

    The wheels are made by Rotacaster and sold by Magnus Mobility. The rollers are made of a very tough polyurethane, suitable for hand trucks, loading docs, pavement. One of the executives at Magnus assured me the wheels would not damage hard wood or vinyl floors. Time will tell for that. Rotacaster is coming out, maybe this month, with a softer roller. The new rollers are still supposed to wear very well. I'm looking forward to buying a set of wheels with the new rollers.
  • Duane DegnDuane Degn Posts: 10,588
    edited 2013-04-02 08:19
    Good to know those are polyurethane rollers. I was seeing metal rollers in the photos and imagining a trail of sawdust as they crossed a hardwood floor.

    Thanks for the clarification.
  • BrainStrainBrainStrain Posts: 30
    edited 2013-04-21 22:59
    Here are some pictures of my latest progress getting my omni wheel drive train built and programmed. I reached the point where it was time to design the beginnings of a frame to get the wheel/motor assemblies attached to. My plan is to build enough of the wheel chair frame to mount the wheels so I can work on programming the omni wheels and building the rest of the chair at the same time. If I stay away from the programming much longer I might forget what I've learned!

    04122013_Frame_3D.jpg
    04172013_Frame_Steel.jpg
    04092013_Frame_Wood_w_Wheel.jpg


    First I tinkered around with designing the beginnings of a frame out of wood before I welded one up. The last thing I wanted to do was make a steel frame and then have to make multiple changes to it... as in throwing it out and starting over. Once I got a wooden mock-up designed and built I decided to make a 3D CAD file of it before I made one out of steel. I needed to start learning CAD anyway. It took a few sessions to learn enough of Google's SketchUp program to draw the frame, but I got it done. I plan to draw as many parts as I can in SketchUp. One thing the program did for me was give me exact dimensions, better than I could measure manually. Finally I made the unit out of steel. All went well. Now it is time to go vertical with the frame. I'll get the wheels/motors mounted and then move on to the rest of the chair. Tricky business.
    1024 x 725 - 35K
    1024 x 768 - 188K
    1024 x 768 - 89K
  • BrainStrainBrainStrain Posts: 30
    edited 2013-06-29 13:14
    Last week I visited a power systems engineer in Livermore who has offered to help me. I showed him my frame and wheel/motor configuration to date. I asked him if he could test the stall amperage for the 24VDC, 250W motors. First, he clamped one of my motor assemblies in a vice, put a wrench on the shaft nut, and connected one of my 12 volt batteries to it. Well, the wrench went flying across the garage. This fellow is 6'2" and has forearms like Popeye. I think it just caught him by suprise. He commented that the motor was pretty torquey... He didn't break his fingers, but he wedged the wrench up against his vice for the next test (Erco mentioned he thought the chair might be over-powered)! The motors are rated to pull 13.4 amps at full duty. Next, he hooked the motor up to a power supply he had for testing, and started turning up the voltage, slowly. Testing showed the motor pulled 5 amps, stalled at 1 volt. Then it pulled 10 amps stalled at 2 volts. The test power supply was limited to 10 amps, so we could not go higher. The engineer said stall properties for DC motors were usually linear, so we could extrapolate that the stall current at 24 volts would be about 120 amps. In actual use the batteries would sag under that load, so the system would see something less than 120 amps per motor, in theory. In practice, the chair's current will be limited with 20 amp circuit breakers behind each motor, so it will be safe. BTW, Pololu mentions in its PDF document that stall current can be an order of magnitude more than normal operating current, and even more if you take a motor running forward and slam it into reverse. My concern would be that under a heavy load the motor's wires could melt and start a fire. That is rule number one, no fire.

    Now it is time for motor control. I hooked up three Pololu 24v23 controllers to my 12V batteries, wired for 24 volts. Then I connected a Pololu controller to my Propeller Proto USB board that I've been using for my joy stick work. I could not get a controller to make a motor run, or even twitch. I used Pololu's Serial Transmitter software on my PC and got a motor running at different speeds, forward and reverse through a USB cable. I studied Pololu's PDF document, Simple_Motor_Controllers.PDF and used the four-byte and five-byte hex code they showed as examples. So I have gathered a basic understanding of the hex values used to run the controllers, but that did not translate into my beginner SPIN programming. I found some code in the forums that Beau Schwabe and Zhen Hua came up with in 2010; FMS Serial Joystick DEMO Driver v1.0.a. Their code looked something like what I am attempting, so I was encouraged by that. I am using Pololu's auto-sensing baud rate, so the hex code starts with $AA, as required. I have not yet figured out just how the controller wants to see the transmitted signal, so I won't consume a bunch of verbiage speculating about it here. This is basically the code I tried:

    PUB MotorTest

    dira [16]~~
    outa [16]~~
    'pst.StartPST (9600)
    pst.start (17, 16, 0, 9600) '(rxpin, txpin, mode, baudrate)
    repeat
    pst.tx ($AA) 'Specifies Pololu auto baud rate sensing
    pst.tx ($0d) 'Controller is Pololu device # 13.
    pst.tx ($05) 'Set motor forward command byte with most significant bit cleared
    pst.tx ($00) 'Data byte 1
    pst.tx ($32) 'Data byte 2, hex 32 = half speed.

    Oh, I'm in learning mode when it comes to clearing most significant bits.

    I am just using the RX pin from the controller and a ground (VSS). That appears to be the simplest requirement in the Pololu PDF document. If anyone can help me get one of my motors to spin, I will be on my way to motor control. Of course, once I get the Prop and the controllers communicating, then the fun begins!

    I have included a few pictures of my wiring and Prop, joystick set up. I made the motor controller connections to the batteries and then stacked the Prop with the joy stick on top. The picture shows many too many wires connected to the controllers. I took most of those off, as noted above.


    06232013_Controllers_n_Terminals.jpg
    06232013_Stacked_Boards.jpg
    06232013_Base_TV_Output.jpg




    Thanks
    1024 x 1363 - 150K
    1024 x 729 - 72K
Sign In or Register to comment.