• Linear algebra
    • Use vector for location
    • Add vectors to translate
    • Multiply by appropriate matrix to rotate (see Rotation Matrix)
    • Note that rotation is not commutative
  • Kinematics: Find the location of the limb given the joint angles
    • Start at base of robot limb
    • Repeat
      • Translate along next limb segment
      • Rotate to account for joint angle
    • Note that for the camera stuff we want both location and angle of the camera
      • For angle:
      • Start a unit vector at the origin pointing in a reference direction
      • Do the same thing as for location, but leave out the translations
    • source
      • trunk/robot/actuatorControl/legsGeometry.cc
        • Line 69 - robot geometry
        • Line 156 - leg kinematics
      • trunk/robot/vision/PointProjection.h
        • Line 701 - head kinematics
  • Inverse Kinematics: Given a desired location of a limb, find the joint angles required
    • Often an under-specified problem
    • AIBO legs
      • First use total distance of end-point to find knee angle
      • Then treat entire leg as one piece
      • Get distance sideways from body with abductor
      • Get forward-back distance with rotator
    • AIBO head
      • Approach has changed as head geometry has changed
      • Assume Crane is 90 degrees
      • Find tilt using just y and z (y = height, z = forward, x = left)
      • Assume that we're only getting tilt to do part of this (65%)
      • Fix tilt at that value, then use crane and pan to point at the final point
      • Note that camera is offset
    • source
      • trunk/robot/actuatorControl/legsGeometry.cc
        • Line 190
      • trunk/robot/actuatorControl/HeadKinematics.cc
        • Line 99