Getting stuck with Kangaroo levers simulation

I’m getting started with Kangaroo 2, trying to simulate some mechanical actions like an actuator moving an object.

I’ve been struggling figuring this out as tutorials seem to start off at a more advanced level, normally using meshes.

My current experiment simulates an actuator pushing an elbow to raise the angle of an arm fixed at one end (I’m working up to modelling solar panel mounts which track the season).

It’s working better than I’d expected (thought I’d be asking for help to just get started) but I can’t get the arm to follow the lifting motion.

I’m using Rhino 8 on Mac (8.5.24072.13002, 2024-03-12), with Grasshopper 1.0.0008.

As indicated in the images below, I can’t get the ‘bracket’ on the lifting lever to stay fixed to the target arm.



Jack.3dm (2.0 MB)
Jack.gh (15.3 KB)

Any suggestions? Hopefully I’m overlooking something simple.

Hi Ray

Just as and idea you can probably solve this using 2D trigonometry. The arms should describe circles that can move along axis and define the next position.

Was trying it out but don’t know what lengths and angles need to remain fixed

Is it something like this? Where the arm L length and the angle are fixed, and the connection slides?

There are a lot of possible solutions depending on what is fixed and what is variable, if it has too many degrees of freedom it can have multiple solutions, as in multiple positions as one thing shortens

Thanks for taking a look at this. Referring back to my diagram the two points circled in blue are fixed in position but can rotate. The 2 points circled in green are supposed to be linked together. I tried a coincident goal as well as an anchor.

The desired result is so when the actuator moves the line along the top (the load) changes its incline angle. (I’ve added more annotations to better indicate this).

I got as far as the actuator moving and dragging the L-arms it’s attached to, but it wouldn’t bring the load down. Or in other words, the two points I was asking to be coincident were ignoring my request.

1 Like

Having played around with this some more, as best as I can tell the issue has something to do with what points the goal solver considers (not even sure how to word it properly).

It seems that if 2 lines share a common end point, that point is shared by both lines and moving one moves the other. However if a point is derived from a line (e.g. midpoint) that point isn’t based on the Kangaroo solved line, but stays tied to the original geometry.

Still trying to get my head around it and whether there is a solution.

Hi Ray

I tested on mine. You can try fiddling with the strength of the forces to ensure some goals take priority over others, but I couldn’t get those points to be coincident either

The work around is drawing the arm with the points that do work in Kangraoo, like the three base lines do behave as expected and you know the long arm has to pass by the anchor point and the end of the short arm so you can draw it using that vector and maintaining the length


JackNL.gh (13.4 KB)

I might try again tomorrow see if there is a better way.

You can do this with simple rotations in GH and avoid kangaroo all together I think.

I did end up shrinking the line down to share its end point and that worked as desired.

I wish I could. This example is the simplest one I could think of to cut my teeth on. However my target is a mounting bracket which lifts and tilts through a combination of arms and pivots. It will never make it beyond a virtual gadget as benefits wouldn’t justify the cost of fabrication. But I do want to see if conceptually I can achieve it.