How to IK rig a nested hard surface mechanism arm with attached vehicle?

Dear all,

the setup is to create an armature for a hard surface mechanism. It consists of a three step radial joint arm, and a lateral moving vehicle, moving on rails, that is controlled by that arm.
The arm is fixed on one end, here at Joint C. The vehicle and the arm are connected via an excentrical joint, here Joint A.

The question is how to set up a IK controller, here B, to control the whole mechanism, so that the arm rotates around its fixed joint C, AND the vehicle moves lateral on its rails. The IK controller should also allow a circular movement
around Joint A.

How can the vehicle and the arm be connected, so that both - the vehicle and the arm - are controlled by the IK controller only? Here is the blend file with the example situation:

Rigging_Issue_00.blend (1.4 MB)

any help is appreciated.

Thank you in advance,

Karl Andreas Groß

Here’s what I would probably do:

I’ve simplified your starting chain a bit. Some meshes have moved a bit, presumably because they were inheriting some skew or something.

We have a three bone IK chain, 1 2 and 3, targeting ikTarg. Individual bones have axis locks in the IK settings.

The base is parented to a new bone, base, which is parented to 3. Base has a locked track constraint targeting an additional bone to keep it pointing along the track.

You can see here that the position in which I’ve placed ikTarg requires that the structure rotate around Joint A (leading to the clipping between car and cylinder.002.)

This structure, of course, doesn’t have a solution for a lot of potential positions of ikTarg. If ikTarg goes up or down, or goes too far, then the arm can’t reach it. If ikTarg leaves the track, the arm might reach it, leading to the derailment of car. The solution? Don’t put ikTarg someplace it shouldn’t be. (There are other solutions, but “the doctor says then don’t move your arm like that” is simpler and faster than anything else.)

If we want to manually control the rotation of Joint A (or of any of the bones, really) we can rotate 3, which will lead to a different IK solution. This structure is already doing what’s required to rotate about Joint A, but that doesn’t mean that there’s only one solution to that problem in a lot of cases. Multiple solutions require multiple controls. If we want to control the precise solution chosen for Joint A, using only ikTarg, we can give 3 a driver that gives it rotation from some property of IKTarg that we’re not using (like its rotation). But doing that doesn’t actually reduce the number of controls, it just moves them around.

Dear bandages,

first of all, sorry for the late reply.
Your suggestions helped me to solve the issue. I did some variations to your solution, but basically used it as you described.
Please find the working armature with one IK Controller as blend file attached.
Again, thanks for your support!

Armature_Standalone.blend (803.9 KB)