Hi Liam,
First I'd like to name a possible cause. I guess all three drums use the same mesh, so for the second and third one, you loaded the mesh file, then used Move to move them to their initial locations, then the rotating motion is realized in the script by using some family-based angular velocity specification. The problem with that is, that the Move method will change how the solver views the CoM of the mesh, and that will be the location you "moved" it to (you can check out the method's comments, it's in fact the inverse operation of InformCentroidPrincipal, therefore not for moving objects but for setting CoM). So what you should do is either use SetInitPos, you use a tracker to SetPos after system initialization.
If you did not do what I just guessed, then probably I'll need to know what you did first. I say because there are many ways to get it done. I'd suggest you have a look into
this conversation. There, I tried to answer a question about assigning "composite motion" to an object, which appears to be similar to what you need. You can use a tracker to set the pos/vel of the drums step-by-step, if calculating this information yourself is easier than having the solver do it for you; or you can still use family-based prescribed motions, but remember the rotational motions you specify there are always wrt to the CoM of the mesh.
Thank you,
Ruochun