Grasshopper

generative modeling for Rhino

# Evolutionary Solver finds 6-axis Robot Solutions

Experimenting with an evolutionary solver (Galapagos) to find solutions for a 6-axis robot.

--> Input: The Genome is made up of the 6 angle values (each with a different range) for the 6 axes.

--> Fitness Value: I tested a few different combinations - initially trying to minimise difference in X,Y,Z Vectors for the Robot Plane and Plane to Align With, and minimise Distance between the 2 Plane origins.

In the video shown, I've used minimise distance between the end points of the 3 Vectors and minimise origin distance. This has the advantage of making all the fitness values in the same units (mm, cm, etc) rather than needing to combine angles and lengths.

I was surprised with how good a result Galapagos found. The angle of each axis affects those further along the robot 'arm', therefore a good solution for the final 5 axes can still appear to be a poor one just because the 1st axis value is far out. As a result I think this problem is one where good solutions are hidden in 'noise' and hard to distinguish.

See David Rutten's discussion for more on this:
http://ieatbugsforbreakfast.wordpress.com/2011/03/04/fitness-functions/

So Galapagos isn't really the right tool for this -- far better to just determine the exact solution using inverse kinematics (i.e. Lobster, et all) -- but it's fun testing its limits.

*****

Utilizes Galapagos, by David Rutten.

Views: 332

Comment

### You need to be a member of Grasshopper to add comments!

Join Grasshopper

Comment by Jeg on February 10, 2013 at 4:14am

Daniel,

A less elegant solution - but still a very useful one!!

Thanks for the help!

~J

Comment by Daniel Piker on February 5, 2013 at 5:47am

Hi Jeg,

My interpolate frames component makes use of quaternions, which aren't available in Rhino4

I guess one could write a new quaternion library, but it didn't seem worth it just for the sake of compatibility.

However, as in many cases, there is a geometric solution, which I posted about years ago here:

http://www.grasshopper3d.com/forum/topics/finding-axis-angle-for-a

I just took that and made a cluster from it, which gives you the interpolate frames functionality in a Rhino4 compatible form. I posted the file here:

http://www.grasshopper3d.com/xn/detail/2985220:Comment:783515

(as I can't attach files in a comment on a video)

though I think that the quaternion method is more elegant and efficient...

Comment by Jeg on February 5, 2013 at 2:08am

Thibault,

Thanks for that suggestion. I've read your webpage documentation for HAL a couple of times, but have yet to try it --- maybe this is the excuse I needed!

~J

Comment by Thibault SCHWARTZ on February 3, 2013 at 7:38am

Hi Jeg,

I don't know what is the "interpolate frames" command that is used by Daniel in his workshops, but if it can help, in HAL there is a tool which is computing intermediary targets (working for the moment only on linear interpolations, but a MoveAbsJ compatible one should be available soon as well). It is called "TP Smooth/ Toolpath interpolation". You can open an example file to test it via right click on the component. All the components of HAL are compatible with Rhino 4 and 5.

Comment by Jeg on January 27, 2013 at 5:41pm

Daniel,

No I wasn't aware that was how Lobster began. It's been a great tool to experiment with over the last year, so I certainly look forward to the new iteration with further functions.

Slightly changing the subject, the other great product to emerge from workshops with you was the Interpolate Frames command. I use it all the time, and in quite diverse processes. It's just a pity that it only works in Rhino5. Would you know a way to implement it in Rhino4 GH ?

Comment by NYCCTfab (Brian Ringley) on January 27, 2013 at 9:10am

Hi Daniel,

Very excited to hear that you may be revisiting Lobster. We will be receiving our new ABB robotic arm shortly and I'll be throwing a lot of apps at it to find ideal workflows including Lobster, HAL, RobotStudio, and the DelCam PowerMILL robotics module. Thanks for all your work!

And Jeg - awesome stuff - thanks for sharing!

Best,

Brian

Comment by Daniel Piker on January 24, 2013 at 8:53am

Hi Jeg,

Nice video!

Did you know that Lobster actually started out after some similar experiments with Galapagos

see this old thread from mid 2010:

http://www.grasshopper3d.com/forum/topics/inverse-kinematics

It was after trying it as an interesting test case for Galapagos that I got interested in doing it more efficiently, and the day after I made the first version of what became Lobster.

As far as I'm aware, I was the first to show this way of solving the inverse kinematics of these arms, using the geometric functions of rhino rather than the more usual systems of equations. Later on other plugins such as KukaPRC and HAL followed a very similar approach (cough cough!)

I'm actually finally revisiting Lobster just recently, after not touching it for several years - and hope to post an updated version soon, with an improved way of dealing with ambiguities that arise between multiple possible solutions for the same end position...

Also - although an efficient closed form solution exists for such 6 axis arms - so as you say, using a genetic algorithm isn't really the ideal tool there - redundant manipulators with more degrees of freedom generally don't allow such an easy solution, so iterative methods are sometimes the only way.

by Alex

by Alex

by Alex

• Add Photos
• View All

## Videos

• ### [RvsR]₂ - Sound Eliminator

Added by Mgeorgio

• ### [RvsR]₂ - Weather Control Box

Added by Mgeorgio

• ### [RvsR]₂ - RKR

Added by Mgeorgio

• ### [RvsR]₂ - Light Septums

Added by Mgeorgio

• ### Woodpecker Use Case III: A parametric roof structure

Added by Hanno Stehling

• ### Woodpecker Use Case II: Exporting an existing model

Added by Hanno Stehling

• Add Videos
• View All

© 2013   Created by Scott Davidson.   Powered by