How to simulate tensegrity with fixed compressive elements

Hello Everyone,

I have been trying to simulate a simple tensegrity module in grasshopper, kangaroo. I think it works pretty well apart from one big issue. All components of the module behave like elastic strings, both the sticks and the strings. This means that after running kangaroo solver the sticks end up being shorter. I would need the length of the sticks to remain the same throughout the process (as they are the compressive elements, same as in reality). Does anyone know how I could fix the stick length?
I have tried obviously keeping length of the stick as original and decrease the other length lines around, that does not work. I tried increasing the strength of the length line of the stick as much as I could, but then the whole module would be fighting/wiggling around too much or fly away completely. :sweat_smile: There must be an easer way. I would be grateful for any advice.
Thank you
Niki

below is the script.
understanding tensegrity script.gh (33.8 KB)
script png!
script2|690x249

compressive element before and after

before kangaroo run

after kangaroo run

Hi @nikca.wolkova

You are using the Bouncy solver with effectively a negative amount of damping here, making it artificially unstable.
As described on the input of the component it should be a value between 0 and 1 for how much velocity is preserved between iterations. Setting a value higher than one means energy is is constantly being added to the system.

The bouncy solver option is also only included for when people specifically want to see the oscillations, such as for animation.
For form-finding applications the regular one (the component just called Solver) is the one to use.

With the regular solver (or the bouncy one with correct damping) you can set the strength of the compressive elements billions of times higher than that of the tensile ones and it will still converge fast and without any instability.

understanding tensegrity script.gh (31.2 KB)

Well … Daniel covered 100% the relaxation part … but I can hardly justify why relax a tensegrity truss: in real AEC life (and for “free forms”) we use a “template”/base/quide for these like a BrepFace or a Mesh. Very rarely this “template” derives from a random proximity graph and the likes, There’s a very good reason for doing that: the serious issue (in real-life) with similar structures (hideous cost apart) is the numerous clash events that occur in the nodes - cable tensioners, anchors, strut sleeves, ball joint type of linkages in light structures blah, blah (BTW: you can’t design these with R/GH not even in a million years). So by adding an arbitary level of freedom (going from some start “form” to some end “form” via K2 for instance) yields an unsolvable problem (again: in real-life) if you have some sort of “free-form” Topology in mind.

Unless of course this is purely for artistic/installation purposes and you deal with clash situations … err … hmm … with ways not allowed in the AEC market sector.

Hello @DanielPiker

Thank you very much for your advice. I actually used bouncy solver on purpose as I found the whole process of finding the equilibrium between forces interesting. But as long as I get a result with the basic solver that is great. And thank you for explaining the damping parameter, I was not really sure what it was doing.

Have a nice day.
Nikola

1 Like