Now could this have been a result from the fact the code runs in a linear fashion? It seems unlikely but since I was lazy and didnt feel like removing 30 lbs. of robot and breaking chains again I sought for another answear, could the slight delay of a linear program when driven through 12 volt moters and chains result it a rotation?
Probably not. It would probably take a delay on the order of 10s of milliseconds or longer to produce a noticeable rotation, especially given how heavy your robot was. In your case, the weight gives your robot more inertia, which would further decrease the effect of any time lag between when the two motors were told to move.
What microcontroller were you using and how fast was it running? Could you have somehow introduced a delay in software between when you told one motor to start moving and when you told the other to start moving? For example, if your "set motor speed" function was insanely inefficient and took 100ms to carry out its job and return, then you might see an initial rotation kick.
Was the behavior an initial rotation followed by more-or-less straight motion, or was your robot constantly curving? If it's the latter, I'd blame the behavior primarily on a disparity between your motors and a failure to compensate for their differing characteristics in software.
- Ben