This is from an email from someone at sony (unknown, before my time), may be considered confidential.
/*! @fn MotionManager::setPID(unsigned int joint, const double pids[3])
 * @if INTERNAL
 * The data on the motor joints of ERS-2100 is as below, althought each robot varies somewhat.\n
 * Maximum output torque at each actuator 
 * - Head
 *   - Tilt  2.4 kgfcm 
 *   - Pan   2.0 kgfcm 
 *   - Roll  1.0 kgfcm 
 * - Leg
 *   - Joint     5.0 kgfcm 
 *   - Shoulder  4.0 kgfcm 
 *   - Knee      4.3 kgfcm 
 *
 * Idling speed
 * - Head
 *   - Tilt   51 rpm 
 *   - Pan   101 rpm 
 *   - Roll  127 rpm 
 * - Leg
 *   - Joint     51 rpm 
 *   - Shoulder  55 rpm 
 *   - Knee      55 rpm 
 *  
 * PGAIN: Proportional gain (16bit depth) \n
 * IGAIN: Integral gain (16bit depth) \n
 * DGAIN: Differential gain (16bit depth) \n
 *   
 * PSHIFT: Proportional gain shift amount (4bit) \n
 * ISHIFT: Proportional gain shift amount  (4bit) \n
 * DSHIFT: Proportional gain shift amount  (4bit) \n
 *   
 * For each of P, I, D, value, respectively:
 * - Multiply the gain G to the error between the desired value Vd and current value Vc\n
 *   @f$F = (Vd - Vc ) * G@f$
 * - shift (0x10 - SHIFT) bits to the right side. \n
 *   @f$F = F >> SHIFT@f$
 *     - Namely, SHIFT=0x0E  (0x10 - 0x0E) = 2 bit shift
 * 
 * Assume Vd = 50, Vc= 20, Gain = 0x16=22, SHIFT=0xE.
 * The operation will be:
 * - @f$(50 - 20) * 22 = 660 =1010010100_2 @f$
 * - @f$1010010100_2 >> 2 = 10100101_2 = 165 @f$
 * @endif
 * @see RobotInfo::DefaultPIDs @see RobotInfo.h
 */

