Next large robot

1192021222325»

Comments

  • AwesomeCronkAwesomeCronk Posts: 426
    edited 2019-01-06 - 20:01:28
    For one-wire leg comms, you might have each of the leg computers listen for serial data on the line, and have them ignore each data packet if it does not stay with it’s ID number. With that, you don’t have all six legs reacting to leg 1’s commands and so on.
    The greatest thing about logic is that, once you have followed the thought train, it is then your own.
  • For one-wire leg comms, you might have each of the leg computers listen for serial data on the line, and have them ignore each data packet if it does not stay with it’s ID number. With that, you don’t have all six legs reacting to leg 1’s commands and so on.
    That’s pretty much the design I’m using now. Each data packet identifies the leg #, the motor # and then the position in degrees. An earlier suggestion was to send a data packet with the leg #, then the 3 motor position data. That cuts down the number of transmissions in the long run. I didn’t initially go that direction since up until recently I was only testing one leg and one motor at a time. I think that I’ll try this protocol out once I get the remaining legs calibrated.
    One item that I didn’t think about until I reattached 4 of the legs is that removing 5” from the battery section means that that the leg is just barely touching the ground with the femur at 90º and tibia at 0º while it is sitting on my test stand. I need to find something to prop the body up higher so erratic leg movements don’t cause an unintended incident!
  • What's it sitting on now?
    The greatest thing about logic is that, once you have followed the thought train, it is then your own.
  • What's it sitting on now?
    My ‘test stand’ is an old wooden shoe storage box we had for some unknown reason that I repurposed as it was almost the right height when stood on end.
    I went down an took some quick photos of the robot from different angles. One nice thing I noticed is that I can access the computers on the top level much easier now! Right now I have the battery being charged and monitoring the charge process using the digital display panel.

    EB1E9C5D-6A11-46F1-9062-EA03F962E310.jpegD2F23789-68EF-499E-A6D3-7176AECA15C7.jpegDDB982F8-CF38-4252-9B2F-39B24C267B51.jpegEF27EB12-7D63-4A81-86A3-CCD3C5F749FC.jpeg
  • well now program all legs to stretch and put a second wooden box under it.
    I am just another Code Monkey.
    A determined coder can write COBOL programs in any language. -- Author unknown.
    Press any key to continue, any other key to quit

    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this post are to be interpreted as described in RFC 2119.
  • DiverBob wrote: »
    What's it sitting on now?
    My ‘test stand’ is an old wooden shoe storage box we had for some unknown reason that I repurposed as it was almost the right height when stood on end.

    The base off an old 5 wheel office chair makes a good starting point for an adjustable height stand. Just add two 24" concentric pipes and a small top. May not even need the pipes if the post the chair comes with is high enough.
    In science there is no authority. There is only experiment.
    Life is unpredictable. Eat dessert first.
  • msrobots wrote: »
    well now program all legs to stretch and put a second wooden box under it.
    That’s actually a pretty good idea!
    Was planning on getting the last 2 legs installed but other duties took up the last couple of days. Finally got to the basement and started work on Leg #3. I had to work on the springs that connected the coxa encoder, they were way to loose so encoder output was all over the place when I was moving the leg manually. After getting that taken care of I installed the leg and started up the calibration routines. I started with the coxa and the leg went to one extreme and stayed there. It would not come off the CW limit, however I could hear the motor turning. Getting a flashlight I found the gear on the motor shaft was slipping. This required me to remove the leg, disassemble the gear train so I could file a flat on the shaft and drill/tap for a set screw on the motor output gear. This was supposed to be machined to be 0.0003” oversized for a friction fit but apparently I didn’t quite get it right. After getting everything put back together I called it a night and will install and calibrate the leg tomorrow instead.
    I also got the 5th RoboPi computer tested and installed for Leg #3. Only one more leg controller to finish up for Leg #2!

  • Yesterday was some fun ending up with me having to yell for the wife to come to my rescue!
    To start with I finished up work on Leg #3, installed and calibrated fairly easily (maybe I’m finally getting the hang of it!). So I started in on leg #2, the last one! The mechanical check went well so I tested the RoboPi board, no issues found. Installed the leg and it also went through the calibration routines with flying colors. That’s when the fun started.
    I wanted to slowly raise 3 legs in a tripod stance to maximum height so I could get an additional support under the battery base and the test stand. Now the robot is located just behind the programming computer and bench that I normally sit at. It’s at arms reach since I need space for the legs closest to me to move without me being in its path. So I start to raise leg #2 and I entered the wrong command. Instead of raising one leg about an inch, the leg goes to full extension! So now I’m off my chair trying to keep the robot from tipping over. Luckily I had one leg on the opposite side that was just touching the floor so that helped steady it. Now I can just reach my keyboard with one hand. This is where bad decision/mistake comes into play, instead of lowering the leg I decided to raise leg #4 to the same position and get a tripod setup. So I swap the programming plug to the computer board of leg #4. I am just able with one hand to load the program on the computer and type in the command for leg #4 to extend while steadying the robot with the other hand. The problem is now I plugged into the wrong leg controller and got leg #3 extended instead. This totally unbalances the robot requiring 2 hands to keep it from falling over and even worse, now its tipping away from the computer so I can’t reach the keyboard or the stand that I wanted to put under the robot. Now I’m yelling from the basement to try and get my wife’s attention since she had just been down in the basement to say she was heading out! My first bit of luck was that she heard me as she was going out the door and came to my rescue! Together we were able to get the support under the battery box and now it is resting much more securely.
    To help reduce future issues from selecting the wrong controller I put some large vinyl numbers beside each controller. Next question is how to prevent stupid decisions in the future! I’m thinking of putting a hook and rope from the ceiling to a pad eye on the robot so it can only tip over from vertical a limited amount. Now that I’ll be working with multiple legs at the same time more often I will need some additional fall protection as programming mistakes will happen it learns to walk.
    On a brighter note I did come up with a way to improve data packet transmission by the individual leg computers, just need to program and test it now.
  • Yeah there is a reason why most of Boston Dynamics prototypes are tethered first.

    If you can hang it secure then a big red stop button could pull up all legs before shutting down.

    Enjoy!

    Mike
    I am just another Code Monkey.
    A determined coder can write COBOL programs in any language. -- Author unknown.
    Press any key to continue, any other key to quit

    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this post are to be interpreted as described in RFC 2119.
  • msrobots wrote: »
    Yeah there is a reason why most of Boston Dynamics prototypes are tethered first.

    If you can hang it secure then a big red stop button could pull up all legs before shutting down.

    Enjoy!

    Mike

    I just need to hang a rail along the ceiling with a roller on the rail so it can actually move when it starts to walk! I wonder if that would be a selling point when I finally sell the house? Of course at this point I’m not sure how I’m going to get my metal lathe and milling marchine out of the basement anyway...
  • Today was a great day, the robot did not fall over! Today I tested the calibration on each leg and each leg operated as designed! This is still based on plugging into each leg controller separately and using the keyboard on the programming computer via the PST interface to send it commands and see how the leg responds.
    I changed the input command sequence to $,Leg#,FemurAngle,TibiaAngle,CoxaAngle and tested it on each leg successfully. This is to reduce the amount of time needed for the master to output to each leg. Instead of 3 seperate commands to move one leg, only one command changes leg position.
    I need to make up cables to connect all the leg inputs together for serial communications with the master computer serial output. Got figure out how I want to do that so I can test running all legs manually from the master before I let the master start running legs on its own. There will be a seperate 2-way communication loop between the legs and master for everything else except leg movement commands. That interface has to be figured out and coded later. Initially it will just feedback to the master on the current status of each leg and that info will be shown using the 4 RGB LEDs above each leg.
    Talked to my wife and she was agreeable to me rigging up a ceiling padeye into a joist and another padeye on top of the robot for the next phase of testing. There is too much of a risk of it falling unexpectedly. This would protect it from damage to it and myself from falls also.
    I noticed today that this thread has over over 70.1K views since I started it in November 2011! Thank you for everyone that is still following along to see if I can get this monstrosity working!

    Bob Sweeney
  • I think it is a very good sign that your wife agrees to keep you save and not get smashed by some robot in your basement. I had a couple of wife's in my life (I am a slow learner) and with some of them I would not be sure about that.

    But jokes aside, when you start programming gaits and testing them it might be sensible to have some mechanism on the tether-rope to lift the robot off ground fast. No idea yet how, but it seems to make sense.

    I have a Irish Wulfhound. Her name is Lilly. She is very gentile and friendly, but still is 225lbs in motion. And in opposite to your robot reacts when you cry. So maybe some sound sensor for stopping the robot is needed, just in case you can't reach the keyboard since it chased you into a corner?

    just cautious,

    Mike
    I am just another Code Monkey.
    A determined coder can write COBOL programs in any language. -- Author unknown.
    Press any key to continue, any other key to quit

    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this post are to be interpreted as described in RFC 2119.
  • A sound impact from Parallax would do the trick.
    The greatest thing about logic is that, once you have followed the thought train, it is then your own.
  • DiverBob wrote: »
    .....
    Talked to my wife and she was agreeable to me rigging up a ceiling padeye into a joist and another padeye on top of the robot for the next phase of testing. There is too much of a risk of it falling unexpectedly. This would protect it from damage to it and myself from falls also....

    Bob Sweeney

    LOL - Just pictured your basement ceiling with "C" channel fastened every two feet to the joists and another "C" channel at 90 degrees with a winch to hang your robot from while it learns to walk. Worlds largest XYZ table?
    In science there is no authority. There is only experiment.
    Life is unpredictable. Eat dessert first.
  • It’s been a couple of busy days but I verified all the calibration data and the new communications scheme to the legs. Fixed a few issues both in software and hardware that popped up and got all the legs finally installed, copied the leg program to EEPROM, and ready for the next stage.

    554A4FF9-B2FD-471A-BEE2-3B04A71037C5.jpeg

    The only connections to the robot in the photo is the 9v power supply to the master computer (need to wire in a power connector from the DC-DC converter still) and the prop plug cable from the programming computer. The next stage was testing out the master to leg controller communications setup. I made up just one cable that can be seen in the photo below, its the wire that goes around the entire computer deck (I need to make the next cable with a longer wire between the drops, this cable is almost too tight and the connections are not reliable for when this starts moving). It has one connection to the master and a single wire to the each leg controller. This is a one way communications link from the master to the legs only with no leg feedback. I’ll be adding a seperate line just for independent feedback to the master, that coding will be a bit more complex than the master just blasting out movement commands to the legs.

    The initial test was to hard code a movement command for single legs and see if they responded. This test was successful and showed that the individual leg controllers were ignoring commands not specifically sent to them.

    The next test sent hard coded commands to all six controllers at one time. The results were that only Leg #1, 3, and 5 responded. There was no movement out of leg 2, 4, or 6. After checking all the connections and then thinking about it, I modified the hard coded movement command to include a hard return character after each leg command ($1,900,0,900,CR). After this I got every leg to move to the position shown in the first photo with the exception of Leg #6. I ran out of time to figure out what is happening with #6 but I think that since it was the last leg to have its EEPROM loaded and I may have messed that up. I had to leave the house then for a dive club meeting so I’ll check that tomorrow and try again.

    B923F999-6342-416F-BC87-4D7FFD87701A.jpeg

    I will get the video camera down stairs again and start videoing the legs moving together so I can post them here. I’ll be programming in some movements to try out the ability of the linear positioners to reliably move a heavy robot. Plus, I want to have some quick and successful movements now, maybe have it moving between a tall narrow stance and a short and wide stance. It’s finally starting to come together, I got excited when I saw more than one leg move at the same time! If I don’t have too many setbacks maybe I’ll have this thing taking its first steps before spring!

    Bob
  • Alright! You are certainly inspiration for all roboticists!
    The greatest thing about logic is that, once you have followed the thought train, it is then your own.
  • usually I say go Bob go, to cheer you up, but now it might be time to cheer up the robot, go whateveryournameis, go!

    so has your creation a name yet?

    curious,

    Mike
    I am just another Code Monkey.
    A determined coder can write COBOL programs in any language. -- Author unknown.
    Press any key to continue, any other key to quit

    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this post are to be interpreted as described in RFC 2119.
  • msrobots wrote: »
    so has your creation a name yet?
    Still no name, I always said that I wasn’t going to name it until it took its first step! Unfortunately I really have no names in mind. I’ve had my boat for 12 years and still haven’t named it either, its just ‘the boat’. Apparently I don’t have much imagination! I keep hoping for some inspiration someday. I might have to work harder on this item, things are moving faster to its first step!

    I did get Leg #6 to work today so I can command any of the 6 legs via the master computer using the input string $,Leg#, Femur, Tibia, Coxa followed by CR. I’m trying to figure out how to replace the 4 integer values with variables. So far no luck so I posted the question over in the Prop 1 side.
  • Shall I initiate the imagination protocol for robot names?
    The greatest thing about logic is that, once you have followed the thought train, it is then your own.
  • I got a great answer from ersmith over on the Prop1 forum on my question of mixing 4 integers and strings together. He threw together an example code that worked the first time I tried it!

    Based on that I put together a quick set of hard-code movements and video’d the results. Unfortunately when I reviewed the video it was extremely out of focus so I had to delete the footage. I found my old GoPro and charged it up, I’ll try and get a quick movement sequence video’d tonight.

    In the meantime I started re-adding previously tested code snippets back into this version of the controller software. I was directly entering leg motor angle commands via the keyboard, so I put the IK routines back in. This allows entry of x,y,z distances and seeing how the legs react. I’ll use it to raise and lower the robot body using a command sequence. I don’t have a feedback mechanism running yet, so I’ll use code pauses to allow the motors to catch up. I need to solder together 2 more ‘network’ wires for the feedback loop. Got the wires cut and ready to go, time to apply solder.

    Bob
Sign In or Register to comment.