Shop OBEX P1 Docs P2 Docs Learn Events
Lynxmotion Hexapod II from yesteryear — Parallax Forums

Lynxmotion Hexapod II from yesteryear

dwaynedwayne Posts: 3
edited 2013-03-28 21:25 in BASIC Stamp
I have an unfinished hexapod kit that I purchased from Lynxmotion back in '02. I tried their tech support for this request, but the answer I got was that it was so old no one had even heard of what I am looking for. I did a search here on this forum with no luck...

So, what I am looking for is a software program called Hexagression. My kit consisted of a NextStep 2.0 carrier board for my Parallax BS2e chip, and the Hexagression floppy (yes, it came on a 3.5" floppy back then) would give me several modes of pre-programmed walking techniques for the 6 legged robot. Would anyone on this forum recall anything like it and possibly have it to share? I have scoured my house, found all the original documentation and printed emails with Lynxmotion from back then, but no software (the engineer from the old emails has since retired...).

My recourse is to purchase newer electronics but I would really like to exhaust my options on a couple of forums before giving up. Any help is GREATLY appreciated!

Comments

  • CrazyrabbitCrazyrabbit Posts: 116
    edited 2013-03-21 21:21
    Wow, I have a similar problem. I have Lynxmotion II PE with 2 DOF legs off Ebay. It had an Atom board with a a BS2sx but didn't work. The legs did go to mid position but never moved. It was setup fpr a PS2 controller. I found the BS2 stamp was shot using the BS2 test setup from this forum. Same as you, no software. I'll do some digging. I might have some stuff I googled for this robot and from Lynxmotion archives about 6 months ago. I just put it on the shelf for a while. Is your hexapod similar to mine? I would like to see the docs if similar. It is a solid build design.

    Lynxmotion II PE hexapod 2DOF.jpg
  • Duane DegnDuane Degn Posts: 10,588
    edited 2013-03-21 22:01
    FYI, The Propeller can handle the servos on these hexapods without breaking a sweat. There's code available for 3DOF hexapods on the forum. I'm not sure how hard it would be to convert the 3DOF code to 2DOF, but I'd think it would be doable.

    The hexapod code I've seen is set up to use a PlayStation 2 controller.

    You don't need an expensive servo control board. I've used a QuickStart to control an 18 servo hexapod and I also used a QuickStart to drive 32 servos (for the heck of it). I think a QuickStart would be an inexpensive way to get your bots up and running.

    The Propeller Protoboard and the Propeller Project board are a couple of other good options for your robots. I'm using a Propeller Protoboard to control this hexapod.

    The Prop can handle computing the IK equations for each of the 18 servos at a 50Hz refresh rate without any trouble.

    I case you hadn't guessed by now, I think the Prop makes a great robot controller.

    BTW, I heavily modified one of the PS2 objects to use the analog buttons on the PS2 controller. Most of the buttons on a PS2 controller are pressure sensitive but not many PS2 drivers take advantage of this fact.
  • dwaynedwayne Posts: 3
    edited 2013-03-26 05:09
    Thank you for the replies... Duane (my name is Dwayne, btw!), are you controlling the motion of your hexapod in that video by a wireless interface and a PS2 controller? May be a silly question but I've been out of it for some time - you are controlling where the thing walks, correct? How long does your batteries last? Just dinking around with the servos my 12 eat up a battery quick. I've ordered new batteries, this one is over 10 years old, but still, I'm wondering how the power consumption is on newer servos and electronics.
  • Duane DegnDuane Degn Posts: 10,588
    edited 2013-03-26 09:48
    I haven't added remote control on my hexapod yet. The figure 8 was programmed in ahead of time. I just had it continuously changing the direction of travel until it was walking forward again then changed direction the other way.

    It's relatively trivial (once you've done it many times before) to add a remote. I wanted to get my IK calculations worked out before adding a remote.

    Paul K. has posted working IK code using a PS2 as the controller. I'm not using his code since I wanted to see if I could figure the IK stuff out on my own.

    I'm using an 800mAh two cell LiPo from HobbyKing as the battery. I haven't timed how long it lasts since I've only been making short test walks with my hexapod so far.

    If you're not using LiPo cells in your Hexapod, you really ought to give them some thought. They have a weight advantage over the other chemistries.
  • dwaynedwayne Posts: 3
    edited 2013-03-28 05:07
    My new LiPo battery pack just came in. I'm going to zero out my servos this morning, that is all my hex will do presently anyway. I have just the servos mounted to the legs and the servo controller hooked up. Apply power, they zero themselves... yeah, I have a long way to go.

    I do not see any of this older code so my choices are to go the hard way, try writing my own code from scratch, or upgrade to more contemporary hardware and have, at least, some code out there to play with to learn. The company (not sure if it is cool to name them...) suggested a botboarduino and associated hardware. Thoughts?
  • Duane DegnDuane Degn Posts: 10,588
    edited 2013-03-28 09:24
    The code is attached to post #1 of this thread.

    A $25 QuickStart or Propeller Project board would work as a controller. It might be easier to use the Propeller Project board since there's room on it for adding servo connectors. With the QuickStart, you'd need make a connecting board or use one of Jeff's servo boards at PropellerPowered.com.

    I have some code that makes it easier to zero out the servos. I'll find it and add it to this thread.
  • Duane DegnDuane Degn Posts: 10,588
    edited 2013-03-28 21:25
    It turned out my adjust centers program was part of my larger hexapod program. I trimmed the code down to just the part to adjust the center position of the servo.

    The default centers are stored in the header file. I thought it would be easier to reuse the code with different hexapods if I moved the hexapod specific constants to a header file. You'll need to adjust the constants in the header file so the I/O pins associated with each servo are correct. I started my servos with I/O pin 8.

    The program as it is now presents you with two choices:
    Press one of following to change robot action.
    C) Adjust center positions
    Z) Zero center positions
    

    Pressing "z" will set the pulse lengths of all the servos to 1500 us. Pressing "c" will allow you to adjust the center position of a specific servo.

    When you press "c" the program will display the following:
    You entered "c".Enter Servo ID to Adjust (followed by "enter")
    {Leg #}[servo#][pin#] = pulseLength
    {0}[0][8] =1500,[1][9] =1400,[2][10] =1570,{1}[3][11] =1567,[4][12] =1430,[5][13] =1590,
    {2}[6][14] =1500,[7][15] =1417,[8][16] =1560,{3}[9][17] =1500,[10][18] =1516,[11][19] =1540,
    {4}[12][25] =1530,[13][24] =1440,[14][23] =1540,{5}[15][22] =1500,[16][21] =1440,[17][20] =1470,
    

    The numbers "{0}[0][8]" indicate it's leg #0, servo #0, I/O pin #8. The servo and pin numbers displayed for each servo while the leg number is only displayed every third servo.

    After these sets of numbers the current pulse length is displayed.

    To adjust the center position of one of the servos type in the servo number. In this example, I'm adjusting servo #0, so I type "0" followed by the enter key. This is the output from the program after entering the servo number.
    Servo ID entered = 0Enter "+" or "*" to increase pulse length for center.
    Enter "-" or "/" to decrease pulse length for center.
    Enter any other key to adjust different servo.
    Enter "x" to exit AdjustCenters method.
    

    I'd suggest using the "*" and "/" keys to adjust your servo position initially and then use "+" and "-" for fine tuning the position. IMO, it's hard to see a difference with a change of just a few microseconds. The "*" and "/" keys add or subtract ten microseconds to/from the pulse length. The "+" and "-" keys change the pulse length by one microsecond.

    Here's some sample output:
    You entered "*".Increasing pulse length = 1510
    You entered "*".
    Increasing pulse length = 1520
    You entered "*".
    Increasing pulse length = 1530
    You entered "*".
    Increasing pulse length = 1540
    You entered "*".
    Increasing pulse length = 1550
    You entered "*".
    Increasing pulse length = 1560
    

    You'll want to make a note of the final pulse length so you can hard code it into your constants. As instructed by the program, press "x" to stop adjusting the position of the current servo.

    This will be the output on exiting:
    You entered "x".Exiting AdjustCenters Method
    These new center settings will only remain in effect
    while the power is one. You will need to change the
    center positions in the header in order to make these
    changes permanent.960
    Enter Servo ID to Adjust (followed by "enter")
    {Leg #}[servo#][pin#] = pulseLength
    {0}[0][8] =1560,[1][9] =1400,[2][10] =1570,{1}[3][11] =1567,[4][12] =1430,[5][13] =1590,
    {2}[6][14] =1500,[7][15] =1417,[8][16] =1560,{3}[9][17] =1500,[10][18] =1516,[11][19] =1540,
    {4}[12][25] =1530,[13][24] =1440,[14][23] =1540,{5}[15][22] =1500,[16][21] =1440,[17][20] =1470,
    
    
    Press one of following to change robot action.
    C) Adjust center positions
    Z) Zero center positions
    

    I found it a lot easier to adjust the centers this way than repeatedly entering different constant values and having to recompile and reload the changed code to see if the new value was correct.

    As I mentioned, this program was part of a much larger program. While I removed the other methods, I left the many unused variables and constants. Hopefully these instructions here will be enough to allow others to use this program to find the center positions of their servos.
Sign In or Register to comment.