- 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
- trunk/robot/actuatorControl/HeadKinematics.cc