Lynxmotion Tech Support

www.lynxmotion.com
It is currently Tue Sep 07, 2010 4:02 pm

All times are UTC - 6 hours [ DST ]




Post new topic Reply to topic  [ 149 posts ]  Go to page 1, 2, 3, 4, 5 ... 10  Next
Author Message
 Post subject: BlackWido
PostPosted: Sat May 31, 2008 11:03 am 
Offline
Roboteer
User avatar

Joined: Wed Nov 28, 2007 7:48 am
Posts: 806
Location: Netherlands
Hi all,

I’ve just mailed the first release (v1.0) of my onboard code to Beth. She will open a project page where you can find the last version of my code. I thought this was a good time to start a topic about my project.

As some of you may know I’ve been working on my Hexapod called BlackWido. It is almost a copy of Zenta’s Phoenix so for mechanical-design honors goto Zenta ;) For more information you can visit the following topic: viewtopic.php?t=3763

Ok, more about my code. At first, it is still far from completed! I’ve got inverse kinematics for legs and body working. The gait isn’t included it the first version because it is far from done. (and not readable at all ;))

The inverse kinematics is very accurate but isn’t perfect either. The calculations are perfect and very accurate but the code needs to be optimized a lot. I want to replace the sin, cos and atan calculations with a byte table. This will improve the calculation time. I also want to replace all the floats to swords and shift the decimal number to get the same accurate but decrease memory.

You should be able to use the code on your "phoenix". The only thing that you need to do is change the body and leg dimensions. 8)

If you have any suggestions or questions please feel free to post them!

Greetings Xan


Top
 Profile  
 
 Post subject: Re: BlackWido
PostPosted: Mon Jun 02, 2008 10:49 am 
Offline
OMNOMNOMNOM!!
User avatar

Joined: Mon Oct 31, 2005 10:43 am
Posts: 713
Location: Illinois
Xan wrote:
I’ve just mailed the first release (v1.0) of my onboard code to Beth. She will open a project page where you can find the last version of my code. I thought this was a good time to start a topic about my project.

I have received your email and will get the project page done as soon as possible; probably tomorrow. I'll send you a link when it's done!

_________________
Image Beth
Lynxmotion, Inc
http://www.lynxmotion.com

Captain Kirk is climbing a mountain. Why is he climbing a mountain?


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jun 03, 2008 11:50 am 
Offline
OMNOMNOMNOM!!
User avatar

Joined: Mon Oct 31, 2005 10:43 am
Posts: 713
Location: Illinois
I've got the project page uploaded! Let me know either here or via email if you'd like anything changed.

http://www.lynxmotion.com/images/html/proj102.htm

_________________
Image Beth
Lynxmotion, Inc
http://www.lynxmotion.com

Captain Kirk is climbing a mountain. Why is he climbing a mountain?


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jun 03, 2008 1:31 pm 
Online
Robot Guru
User avatar

Joined: Thu Nov 09, 2006 5:46 am
Posts: 1263
Location: Norway
Hi,
Excellent Xan and Beth!
I think I'll soon have to put my Felix project on hold and move back to the Phoenix project again :wink:
I'm not an expert but most of the code seem to be very lucid. I don't have a Wii-remote, but should there be any trouble to replace it with a PS-2 controller?

Redefining the Pin numbers for SSC32 should be no trouble, I think the standard setup is Coxa = PIN0, Femur = PIN01 and Tibia= PIN02...

Thanks for sharing your code Xan!

_________________
Kåre Halvorsen, Zenta
-----------------------------------------
Zenta's blog
Zenta's YouTube channel
-----------------------------------------


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jun 04, 2008 8:41 am 
Offline
Roboteer

Joined: Sun May 04, 2008 6:36 am
Posts: 29
zenta wrote:
Hi,
Excellent Xan and Beth!
I think I'll soon have to put my Felix project on hold and move back to the Phoenix project again :wink:
I'm not an expert but most of the code seem to be very lucid. I don't have a Wii-remote, but should there be any trouble to replace it with a PS-2 controller?

Redefining the Pin numbers for SSC32 should be no trouble, I think the standard setup is Coxa = PIN0, Femur = PIN01 and Tibia= PIN02...

Thanks for sharing your code Xan!


Hi zenta,Xan and Beth,

If you want to use wirless, why not try my way.
Later i will release a software package. Include onboard and PC side.
For the using it and control it, I put some video into youtube as topic SFIPEXE.

If you are interesting, please let me know, I can give you more details about the hardware you need and probably how much and where to buy.

The wireless include video/audio/servo coontrol command communication. accessing by internet ip address.

Please let me know if I can help in your project.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jun 04, 2008 10:07 am 
Offline
Roboteer
User avatar

Joined: Wed Nov 28, 2007 7:48 am
Posts: 806
Location: Netherlands
Hi Beth,

Snailkeeper (Admin) wrote:
I've got the project page uploaded! Let me know either here or via email if you'd like anything changed.

http://www.lynxmotion.com/images/html/proj102.htm

Thanks for hosting the project on your web. I'm very happy with my Lynxmotion project page 8) If there are any updates I will send them to you! :)


Hi Zenta,

Zenta wrote:
Redefining the Pin numbers for SSC32 should be no trouble, I think the standard setup is Coxa = PIN0, Femur = PIN01 and Tibia= PIN02...

I hope that my code will be of any use for your phoenix. I didn't looked at the wiring "Standards" when i wired everything up but I don't think it is any problem to change those.

Zenta wrote:
I don't have a Wii-remote, but should there be any trouble to replace it with a PS-2 controller?


I don't have a PS2 controller so I don't have a clue of how they work but I can tell you that my PC is taking care of all the Wii Remote stuff. The only thing that I’m sending to the onboard program is some raw data in a frame and copy that to some internal variables. You can replace the "WiiInput" part by something compatible with your PS2 remote. You will need to copy the received data to the following variables:

BodyPosX, BodyPosY, BodyPosZ will move the body
BodyRotX, BodyRotY, BodyRotZ will rotate the body
RFPosX, RFPosY, RFPosZ will change the position of the corresponding feet (Right Front in this example)


Hi Tonald,

I saw you video and you've build yourself some interesting bot!

tonald wrote:
If you are interesting, please let me know, I can give you more details about the hardware you need and probably how much and where to buy.


Currently i'm also using a wireless connection using a BlueSmirf. The first idea was to connect it directly to my Wii-remote but sadly I didn't paid enough attention because the BlueSmirf cannot connect to a HID device. :( So currently I’m using my PC to convert the data received from my Wii-remote using the HID protocol to the SPP protocol that can be used with the BlueSmirf. Maybe there are some better ways to do that so I will be happy to take some look at your solution! :)

Greetings Xan


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jun 10, 2008 3:08 pm 
Offline
Roboteer
User avatar

Joined: Wed Nov 28, 2007 7:48 am
Posts: 806
Location: Netherlands
Hi all,

I've just uploaded a new video on youtube which shows my latest progress. http://www.youtube.com/watch?v=5ro_1-6ADQM

As you can see I fully implemented the ripple gait. As you can see I can start walking or change direction without the need for initialization. If you look closely you can see that the legs are overstretched sometimes. This happens if I'm walking on full speed and change the direction at once. I think that I can solve this by increasing the travel of a single step and speedup the servos so the max speed stays about the same.

BlackWido is still a kind of slippery on the wooden floor. I didn't calibrated the servos since the last movie. Yep, I still hate that part ;) I think that calibration also makes the body to be more still when walking.

Xan


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jun 10, 2008 3:39 pm 
Offline
The Boss
User avatar

Joined: Mon Oct 31, 2005 10:46 am
Posts: 7184
Location: my quiet place
Xan wrote:
Hi all,

I've just uploaded a new video on youtube which shows my latest progress. http://www.youtube.com/watch?v=5ro_1-6ADQM


Very nice! 8)

_________________
Jim Frye, the Robot Guy
http://www.lynxmotion.com
Get this damn robot off me!


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jun 10, 2008 5:40 pm 
Online
Robot Guru
User avatar

Joined: Thu Nov 09, 2006 5:46 am
Posts: 1263
Location: Norway
Hi Xan!

It looks great! You solved the initialization very well. Awesome!! Have you been thinking more about the balance gesture :wink: ?
Not to complain Xan :oops: , you mentioned the speed, but was this at full speed?

Xan wrote:
If you look closely you can see that the legs are overstretched sometimes. This happens if I'm walking on full speed and change the direction at once. I think that I can solve this by increasing the travel of a single step and speedup the servos so the max speed stays about the same.

hmm :? , I was thinking decreasing the travel of a single step to avoid overstretching (or am I wrong ?)

Looking forward to try your code on one of my Phoenix's. (Right now I'm building my red Lynxmotion Phoenix with the BotBoard II + PS2 controller.

Great work Xan! 8)

_________________
Kåre Halvorsen, Zenta
-----------------------------------------
Zenta's blog
Zenta's YouTube channel
-----------------------------------------


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jun 11, 2008 3:02 am 
Offline
Roboteer
User avatar

Joined: Wed Nov 28, 2007 7:48 am
Posts: 806
Location: Netherlands
Hi Zenta,

zenta wrote:
Have you been thinking more about the balance gesture :wink: ?


Don't worry, i'm still planning to implement the balance calculations in my code. As a matter of fact, I already included the positions part which is turned off at the video because I didn’t had enough time to test it. ;) I’ve got about 2 weeks to my vacation 8) so I can’t promise to work that out before I’m leaving…

zenta wrote:
Not to complain Xan :oops: , you mentioned the speed, but was this at full speed?


I’m not running on maximum speed right now but I don’t know what the maximum speed is. My code calculates angles of the servos corresponding to the new inputs, then starts waiting for the SSC to complete the previous step. After that I’ll update the servo angles.

I could lower the time value that I’m sending to the SSC to complete the movements. On a certain point the calculations will take more time than the servos to move to the next position. I can test that now but my code needs to be optimized to get maximum calculation speed first. I hope this makes any sense…

zenta wrote:
hmm :? , I was thinking decreasing the travel of a single step to avoid overstretching (or am I wrong ?)


I’m using 3 different travel lengths at the moment. One for X, one for Z and one for rotating. What I need to do is decrease the total travel distance and still keep the single travel distance. This way I can still walk maximum speed on one direction but the speed will slow down when I change more than one input at once. Haven’t got a clue how to do that though… :roll:

zenta wrote:
Looking forward to try your code on one of my Phoenix's. (Right now I'm building my red Lynxmotion Phoenix with the BotBoard II + PS2 controller.


I’m looking forward to see another Phoenix using my code to get around! 8) Just let me know if you have any questions (or improvements). I’m planning to send Beth an update of my code as soon as possible.

Xan


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jun 11, 2008 9:17 am 
Online
Robot Guru
User avatar

Joined: Thu Nov 09, 2006 5:46 am
Posts: 1263
Location: Norway
Hi Xan,
Xan wrote:
Don't worry, i'm still planning to implement the balance calculations in my code. As a matter of fact, I already included the positions part which is turned off at the video because I didn’t had enough time to test it. ;)

Sounds great! Did you implement balance for all axis or only 2D (as I demonstrated on the video)? Yes, I understand about the time issue... :roll: , with wife, kids and work ++ I have to spend late nights (when the rest of my family are sleeping) on robots :lol: .

Xan wrote:
I could lower the time value that I’m sending to the SSC to complete the movements. On a certain point the calculations will take more time than the servos to move to the next position. I can test that now but my code needs to be optimized to get maximum calculation speed first. I hope this makes any sense…

Yes, it make sense. Optimizing code are probably a good way to go anyway.

Xan wrote:
I’m using 3 different travel lengths at the moment. One for X, one for Z and one for rotating. What I need to do is decrease the total travel distance and still keep the single travel distance. This way I can still walk maximum speed on one direction but the speed will slow down when I change more than one input at once. Haven’t got a clue how to do that though… :roll:

I'm not sure if I understand you here, but how large/small are your steps? Or what distance does the tars move between each calculation?
More calculations in one gait cycle gives you a smoother (more accurate) movement. BTW: how many steps does one gait cycle consists of? I experimented with 6 and 12 steps in a gait.

Maybe the balance gesture would make all this alot easier (or harder :? )?

Xan wrote:
I’m planning to send Beth an update of my code as soon as possible.

Looking forward to it! 8)
Thanks Xan.

_________________
Kåre Halvorsen, Zenta
-----------------------------------------
Zenta's blog
Zenta's YouTube channel
-----------------------------------------


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 12, 2008 6:29 am 
Offline
Roboteer
User avatar

Joined: Wed Nov 28, 2007 7:48 am
Posts: 806
Location: Netherlands
Hi Zenta,

zenta wrote:
Did you implement balance for all axis or only 2D (as I demonstrated on the video)?


I only in 2D and just the position without the Z rotation. I’ve just spent a few minutes on that part since I wanted to finish the gait first. I still need to figure out where I can fit in the rotation. My code works only with position inputs. If I’ve got your calculations right, I need to have a sum of the angles from each coax. Currently this is the output of my IK calculations which will be send directly to the servos. So I need to figure out if I need to do the same calculations twice or if I can find another way to work around that…

It would sure help if you could send me a example of your excel sheet. Is that possible?

zenta wrote:
I'm not sure if I understand you here, but how large/small are your steps? Or what distance does the tars move between each calculation?


My steps are between 0 and 128mm depending on the remote. But I can easy change this by divide or multiply this value. Those steps are both in X and Z so if I walk diagonal the step is about 181mm. If I change the direction at once the step will be -181mm so the leg that’s in the air will go to that position but the other legs are still in the “oldâ€


Top
 Profile  
 
 Post subject: Importance of calibration
PostPosted: Thu Jun 12, 2008 6:50 pm 
Online
Robot Guru
User avatar

Joined: Thu Nov 09, 2006 5:46 am
Posts: 1263
Location: Norway
Hi Xan,
Xan wrote:
I only in 2D and just the position without the Z rotation. I’ve just spent a few minutes on that part since I wanted to finish the gait first. I still need to figure out where I can fit in the rotation. My code works only with position inputs. If I’ve got your calculations right, I need to have a sum of the angles from each coxa.

I use the global coordinates for the feet to calculate the rotation for each leg relative to center of body (not the coxa).

Xan wrote:
It would sure help if you could send me a example of your excel sheet. Is that possible?

I have to warn you but my code are a mess.. :oops: But I can send you a copy of the new (not finished) PEP ver 1.07. Send me your email on a PM.

[quote="Xan"]
As you may know, I still need to do a good calibration for the positions of the legs. When I did the calibrations the first time I followed the instructions from LM by placing the servos in the middle position (P1500). But since the “normalâ€

_________________
Kåre Halvorsen, Zenta
-----------------------------------------
Zenta's blog
Zenta's YouTube channel
-----------------------------------------


Top
 Profile  
 
 Post subject: Re: Importance of calibration
PostPosted: Fri Jun 13, 2008 5:45 am 
Offline
Roboteer
User avatar

Joined: Wed Nov 28, 2007 7:48 am
Posts: 806
Location: Netherlands
Hi zenta,

zenta wrote:
I use the global coordinates for the feet to calculate the rotation for each leg relative to center of body (not the coxa).

If I’ve got this right, you are doing the angle calculations twice, ones for each leg (coxa) and ones for the body. I have to take another good look at that ;)

zenta wrote:
I have to warn you but my code are a mess.. :oops: But I can send you a copy of the new (not finished) PEP ver 1.07. Send me your email on a PM.

I know what you mean… my code often look like his programmer does on Sunday morning :P (PM is on his way ;))

zenta wrote:
You are pointing to a very important part here. It seems like some people underestimate the importance of correct calibration for servos.

Actually most servos are not 100% linear at 180 deg of travel, and the unlinearity vary very much from one servo to another. So when only calibrating the center position 1500 = 0 deg you'll get great difference in travel when commanding all servos to ex. 90 deg.

Therefore, calibrating are very important!!
I used SEQ SSC32 setup to calibrate the servos. First set the 0 deg (around 1500 value), then set the max and min position. Measure the max and min angle and enter the value into the SEQ SSC32 setup. Some might think that the only reason for doing this is to avoid the servo to go further than the max/min values. That's wrong! Take a look at this sheet/table:

Image
The 90 deg, 0 deg and -90 deg values are from my SSC32 setup for my Phoenix (the femur servos). Take a look at the green values, they are the difference between the 90 -> 0 deg and 0 -> -90 deg.
Then take a look at the bright yellow values, as pointed out in the table one deg of travel equals this amount of servo value. EDIT: So if ex. Servo 2 need to move to the -45 deg position, simply do the math: final position = 1523 - (10,289 x 45).

The interesting part is that traveling between 0 -> -90 deg does not always have the same amount of servo value as for traveling 90 -> 0 deg. I'm not sure what cause this, maybe a combination of some unlinearity of the potmeter and the coarse metal gear? :roll:

Calibrating this way would give you a pretty accurate servo, I hope :)


Ah, again some good quality information! I know that calibrating is imported but I assumed that the travel of the servos where pretty linear. I’ve noticed in time that this isn’t what I hoped… my mistake!

So if I understand this right SEQ SSC32 does the math for the final position different for each servo? Maybe there is a way to let the SSC32 take care of that onboard. I have read something about expanding the SSC32 with some external memory so it wasn’t necessary to send the servo offsets very time. Maybe it is also possible to store the character of the servo (multiplier) so the servo will act as a perfect linear servo. I don’t know if this is possible, just thinking out loud… :roll:

I’ve got some free hours tomorrow, I think I can spent some time on calibrating and/or the balance system.

Xan


Top
 Profile  
 
 Post subject: Re: Importance of calibration
PostPosted: Fri Jun 13, 2008 9:21 am 
Offline
The Boss
User avatar

Joined: Mon Oct 31, 2005 10:46 am
Posts: 7184
Location: my quiet place
Xan wrote:
I have read something about expanding the SSC32 with some external memory so it wasn’t necessary to send the servo offsets very time. Maybe it is also possible to store the character of the servo (multiplier) so the servo will act as a perfect linear servo. I don’t know if this is possible, just thinking out loud… :roll:


The SSC-32 V2 has registers to hold the servo offsets. It's easy to set up and when done you no longer need to send servo offsets in your program. In fact even sending software position offsets of 0 will mess up the offsets. So comment these out when the register offsets are used.

This does not require the external eeprom to be installed. It uses the one in the atmel 168. There is no way to implement servo profiling in the SSC-32 as it is right now. Perhaps in a future update. ;)

Here is a tutorial explaining how to do it. (Steps 5 through 10)
http://www.lynxmotion.com/images/html/build128.htm

Even if you implement some sort of profiling scheme, I highly recommend you calibrate the SSC-32 to your servos. At least 1500uS results in perfectly centered servos. 8)

_________________
Jim Frye, the Robot Guy
http://www.lynxmotion.com
Get this damn robot off me!


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 149 posts ]  Go to page 1, 2, 3, 4, 5 ... 10  Next

All times are UTC - 6 hours [ DST ]


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group