The arm will be roughly SCARA configuration. Rather than having a motor directly at each joint, both the motors will be located at the shoulder of the arm, and the arms second link will be driven with a linkage. This will make the arm light and low inertia, so it can be moved back and forth quickly.
I got some excellent motors for the arm from Charles at Swapfest. They're a pair of ServoDisc Platinum UD9-E. They have built in optical encoders, and because they're a real part rather than hobby grade equipment, they have an incredibly detailed spec sheet. The ServoDiscs are coreless axial flux DC motors. So basically a mini brushed etek. Since the rotor is just copper windings, without any steel laminations, so there's zero cogging and very low rotor inertia, which make for extremely fast response.
To make the arm as fast as possible, I wrote some code to optimize the tip speed of the second segment of the arm over the gear ratio - arm length space. Since I'm taking
The main thing I 'd like to change about the code at this point is to implement one of the actual built-in ODE integrating functions. Rather than figuring out how to use the stock ones I just used my own extremely simple fixed-timestep integrator. It works fine, but it is pretty slow if you want good output resolution.
Since I know the basic construction method I would use for the arm as well as the motor specs, I was able to model the arm pretty easily. The model arm is a 1.5" diameter carbon fiber tube I found the mass per length number for online, with a 70 gram mass at the end of it. The arm is attached to an aluminum HTD timing belt pulley, which is described as an aluminum disc. For a given arm length and pulley size, you can easily find the moment of inertia of the arm about its rotation point. From there, you can use the torque-speed curve of the motor to get an expression for angular acceleration of the arm.
The code simulates the arm starting from standstill and applies constant voltage to the motor until a specified change in arm angle is reached (I've been using between 30 and 90 degrees). Then the average speed of the tip of the arm over the motion can be found. To get an idea of what ratios/lengths are optimal, you just repeat this process over a bunch of arm lengths and gear ratios.
Here's the Python code:
The plotSurface function generates a nice 3D picture of the tip velocity vs number of pulley teeth on the arm and arm length:
Finally, I contacted NAC Harmonic, and they're sending me (for free!) a 50:1 harmonic drive component set, which may or may not be used in the arm.