algorithmic modeling for Rhino
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.
Tags:
Comment
Nice work, Jeg.
Daniel...the "updated" version of Lobster, any ideas when you might be making this public?
Daniel,
A less elegant solution - but still a very useful one!!
Thanks for the help!
~J
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...
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
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.
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 ?
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
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.
Welcome to
Grasshopper
© 2024 Created by Scott Davidson. Powered by
You need to be a member of Grasshopper to add comments!