Frame Position and Orientation
Before we create the frame position and orientation system, we need to copy the wheels and caterpillar for the left side of the tank. But, there's a problem that we need to deal with. After clone the caterpillar, the original caterpillarSpline will have the skin with the cloned helpers as bones and not the original ones. Fortunately there's a trick to avoid this, just turn off the caterpillarSpline skin modifier.
Hide the Frame, the turret and cannon objects. Select all the wheels, helpers, pieces, and control objects of the right side. You can do it in the top view drawing a selection rectangle over all the objects (see picture below), unselect the ProjectedPlane after this. Press ctrl+v, and check copy in both options.
Now select by name the caterpillarSpline and turn on its skin modifier, do it also with the caterpillarSpline01.
Select by name the Helper_Attached_14, in the motion panel change its A and B values to set its new position (probably you only need to set A=0), do the same process with the 13, 12, 11, and 10 Helper_Attached objects. The front wheel will be different, change its Face number too (Face=2), set A=1 and B=0, and rotate it 180 degrees over its local z-axis.
To mirror the position of the Helper_Attached_09 and Helper_Attached_08 (the new Wheel_Small helpers) change their x-position value from negative to positive value.
Now, select all the Control_Wheel objects and change its object position with the "Affect Object Only" button activated in the hierarchy panel, put them in the opposite side of the wheels.
With these axles we can control the frame's orientation. After creating them, the frame will have their orientation average. We'll be using bones with IK solvers.
Hide all but the wheels and the projectedPlane. From the top view create a bone from each of the left wheels to each of the right wheels using the snap tool with pivot activated, set width and height to 0.3 in the create panel and don't delete the end bones. Name the big bones as Axle_Main_01, Axle_Main_02....and the End bones as Axle_End_01, 02, 03...etc. Add an IK solver to each pair of bones, you can decrease the IK goal size in the motion panel, link the main axle's bones to their respective wheels and do the same with the IK solvers (see picture).
Now, the Axles have an orientation in respect to the wheels, but they also need an extra orientation in respect the overall system, we'll be using the IK Solver swivel angle for this. That'll be useful, for example, in ground inclines where the frame needs to rotate forwards or backwards.
Create a point helper; this helper will be the target of the IK solvers swivel angle, so we need to place it at the centre of the tank. Select this helper name it Helper_AxlesSwivelTarget and align it to the middle axle, in the Align DialogBox check "centre" in the "Target Object" group and make sure all position axis are checked. Then, link it to the middle axle.
Select the first IK goal, in the motion panel set the Helper_AxlesSwivelTarget as target using the pick button in the IK solver plane group, do the same with the other IK goals but the middle one. This middle bone won't have swivel target, for this reason, we cannot leave it linked to the wheel, if we do, it will spin with the wheel.
Select the middle Axle_Main bone and link it to the ProjectedPlane. Then add a position constraint to it with the Wheel as target, this is to replace the job that the link was doing before without the spinning issue, select the middle IK goal and set the Swivel Angel=180, with this value this axle will have the same orientation of the other ones.
We have now a little problem to solve, the front axles; the Axle_Main_04 and Axle_Main_05 have a difference of 180 degrees in respect the other axles. Therefore, the orientation constraint won't work as we desire for these bones. What we can do is to create helpers for these axles having a 180 degrees rotation offset. Create and Name them as Helper_Axle_04 and Helper_Axle_05, align them to their respective axle checking all position and orientation axis and the "Centre" option in the "Target Object" group. Link them to their respective axle and rotate them 180 degrees over their local x-axis.
Create another helper with a different size and shape, align it to the AxlesSwivelTarget and name it Helper_Frame. Add a position constraint to it and add as target all the wheels (motion panel). Then add an orientation constraint and add as target the Axle_Main_01, Axle_Main_02, Axle_Main_03, Helper_Axle_04 and the Helper_Axle_05. Unhide the Frame and link it to this new helper.
Our Frame orientation and position system is done!, you can check it out by moving the wheels over their z-axis.
Frame, Turret and Cannon Control Object Set-Up
Just like we did before with the wheels' control objects, we're going to do the same with the Frame, turret and cannon objects.
Unhide all, Select the Control_Frame and align it to the frame, check the entire position and rotation axis and the pivot option in the "Target Object" group. With "Affect Object Only" button in the hierarchy panel, create an orientation and position offset until you find a good place and orientation for this object (see picture below). Since this control object will have the same transform controller of the frame, is good to align its pivot to the frame to ensure we'll have the same position and orientation after copy-instance the controllers.
Do the same with the rest of the control objects with their respective tank objects.
Create the hierarchy of the tank's parts; link the turret to the frame, the cannon_base to the Turret and the cannon_extension to the cannon_base.
As we did with the wheel's control object, we need to link the control objects to their respective objects' parent.
In the track view copy-instance the transform controllers for each object and its control object, you can do it easier in the mini curve editor.
Now we can get the projectedPlane where it was before, select it, align it to the Control_Main (position and orientation) and activate its Conform Binding Modifier.