1. I made Robot IO control have a separate IO thread for doing the actual IO operations.
2. Modified the Dynamixel code to use the new IO thread.
3. Optimized the Dynamixel code to pull back all needed data for a servo in a single packet. This decreased the time to retrieve data for a single servo from ~35 ms to ~15 ms. Also, modified the code to send position and velocity commands synchronously.
Added code to set the limits on the actual servo to match the limits specified in the simulation.
Fixed a bug where the attenutation of lights was not being initialized correctly at startup.
Fixed a bug where the normals of a mesh were being modified when the mesh was being scaled. This was screwing up the lighting. I added code to re-normalize them after the scaling.
1. Fixed a bug where the world matrix was not taking the COM into consideration when getting set. If you had static objects that altered the COM this could be a problem because the world position that was reported out would be incorrect.
I got the robot arm moving both joints very nearly identical to the simulation in real time!!

1. Added a ShutdownIO method so the RobotIOControl and parts can shutdown cleanly. I was using this with the Dynamixels to stop any any ongoing movement so they do not keep going to the maximum values after the sim stops.
2. I fixed a bug in the dynamixel synchronous write code that was messing up when more than 1 servo was updated at the same time.
3. Added code to the NextGoalVelocity code so that if a velocity of 0 is set then it treats it differently and resets the position to the current position and the velocity to its lowest value. I was seeing an issue where if I set velocity of 0 then it still had the goal position of 0 or 1023 and velocity was 1 so it gradually moved when it should not have.
4.