Basic Pick and Place¶
The Pick-Place Pipeline¶
- Perceive object pose
- Plan approach trajectory
- Execute grasp
- Move to goal
- Release object
Spatial Algebra¶
Rotation Representations¶
- Euler angles
- Quaternions
- Axis-angle
Homogeneous Transforms¶
\[T = \begin{bmatrix} R & p \\ 0 & 1 \end{bmatrix}\]
Forward Kinematics¶
Using Drake's MultibodyPlant:
plant = builder.AddSystem(MultibodyPlant(time_step))
parser = Parser(plant)
parser.AddModelFromFile("robot.sdf")
plant.Finalize()
context = plant.CreateDefaultContext()
X_WB = plant.CalcForwardKinematics(context)
Inverse Kinematics¶
Numerical IK with Drake¶
def solve_ik(plant, context, X_WG):
ik = InverseKinematics(plant, context)
ik.AddOrientationConstraint(...)
ik.AddPositionConstraint(...)
result = Solve(ik.prog())
return result.GetSolution()
Grasp Selection¶
- Predefined grasp poses
- Grasp quality metrics
- Grasp planning algorithms