I have seen a few tutorials recently animating tank treads using the Array -> Curve modifier method. The problem with this method is when you start adding rotations and movement to the tank. The treads act erratically and the rotation of the individual treads is not what is expected.
I used Animations Nodes to solve this. No matter the rotation and location values of the tank, the treads remain aligned as they should be. This method uses the origin of the main tank body and the tread curve to produce an alignment vector for the individual components.
At the moment the movement along the curve is a function of the current keyframe... This can be changed to an animated value for time independent movement.