robot kinematics - frank dellaert
TRANSCRIPT
CS 3630
Robot Kinematics:Planar Arms
Robot Armsβ’ A robot arm (aka serial link manipulator) consists of a series of rigid
links, connected by joints (motors), each of which has a single degree of freedom.β’ Revolute Joint: Single degree of freedom is rotation about an axis.
β’ Prismatic joint: Single degree of freedom is translation along an axis.
Revolute Joint Prismatic Joint
Describing Serial Link Armsβ’ Number the links in sequence. β’ For a robot with π joints:
β’ Base (which does not move) is Link 0.β’ End-effector (tool) is attached to Link π.β’ Joint π connects Link π β 1 to Link πβ’ We define the joint variable ππ for joint π as:
ππ = αππ if joint π is revolute
ππ if joint π is prismatic
Two-link Planar Arm: β’ π = 2, β’ both links are always coplanar (no rotation
out of the plane). β’ π1 = π1, π2 = π2
Manipulator Kinematicsβ’ Kinematics describes the position and motion of a robot, without
considering the forces required to cause the motion.
β’ Forward Kinematics: Given the value for each joint variable, ππ ,determine the position and orientation of the end-effector (gripper, tool) frame.
The basic idea: β’Assign lots of coordinate frames,
and express these frames in terms of the joint variables, ππ.
General Approachβ’ Each link is a rigid body.
β’ We know how to describe the position and orientation of a rigid body:β’ Attach a coordinate frame to the body.
β’ Specify the position and orientation of the coordinate frame relative to some reference frame.
β’ If two links, say link π β 1 and link π are connected by a single joint, then the relationship between the two frames can be described by a homogeneous transformation matrix ππ
πβ1 which will depend only on the value of the joint variable!
Homogeneous Transformations
π·π
1= πΉπ
ππ·π + π π
1=
πΉππ π π
02 1π·π
1
We can simplify the equation for coordinate transformations by augmenting the vectors and matrices with an extra row:
ΰ·¨π0 = π10 ΰ·¨π1
ΰ·¨π0 = π·π
1, ΰ·¨π1 = π·π
1
β’πππ is called a homogeneous transformation matrix
β’ ΰ·©ππ are the homogeneous coordinates for ππ
Composition of Transformations
π₯0
π¦1
π¦2
π¦0π₯1
π₯2
π
ΰ·¨π1 = π21 ΰ·¨π2
ΰ·¨π0 = π10 ΰ·¨π1
From our previous results, we know:
ΰ·¨π0 = π10π2
1 ΰ·¨π2
ΰ·¨π0 = π20 ΰ·¨π2
π20 = π1
0π21
But we also know:
π10
π21
π20
This is the composition law for homogeneous transformations.
What about robot arms??
π10
π21
π20
β’ Attach a coordinate frame to each link of the robot!
β’ Frame 0 is attached to Link 0, which is merely the fixed mounting point to the environment.
β’ Now, the trick is to express πππβ1 as a function
of ππ
A special case
π₯0
π¦1
π¦2π¦0
π₯1
π₯2
π21 =
cosπ2 βsin π2 π2 cos π2sin π2 cos π2 π2 sin π20 0 1
π10 =
cos π1 βsin π1 π1 cos π1sin π1 cos π1 π1 sin π10 0 1
π1
π2π1 π2
πππβ1 =
cos ππ βsin ππ 0sin ππ cos ππ 00 0 1
1 0 ππ0 1 00 0 1
=cos ππ βsin ππ ππ cos ππsin ππ cos ππ ππ sin ππ0 0 1
Suppose the axis π₯π is collinear with the origin of Frame π β 1:β’ π₯1 is collinear with the origin of Frame 0β’ π₯2 is collinear with the origin of Frame 1
Use this to simplify link coordinate frames!
Assigning Coordinate Frames to Links
β’ Frame 0 (the base frame) has its origin at the center of Joint 1 (on the axis of rotation).
β’ Frame π is rigidly attached to Link π, and has itβs origin at the center of Joint π + 1.
β’ The π₯π-axis is collinear with the origin of Frame π β 1.
β’ The link length, ππ is the distance between the origins of Frames π and π β 1.
β’ The homogeneous transformation that relates adjacent frames is given by:
πππβ1 =
cos ππ βsin ππ ππ cos ππsin ππ cos ππ ππ sin ππ0 0 1
Assigning Link Frames
π1 is the angle from π₯0to π₯1
β’ π₯1 is collinear with the origin of Frame 0
π₯0
π¦0
π₯1
π₯2 is collinear with the origin of Frame 1
π₯2
π2 is the angle from π₯1to π₯2
β’ Frame π is the end-effector frame. It can be attached to link π in any manner that is convenient.
β’ In this case, π = 2, so Frame 2 is the end-effector frame.
The Forward Kinematic Mapβ’ The forward kinematic map gives the position and orientation of the
end-effector frame as a function of the joint variables:
ππ0 = πΉ(π1, β¦ , ππ)
β’ For the two-link planar arm, we have
π20 =
cos π1 βsin π1 π1 cos π1sin π1 cos π1 π1 sin π10 0 1
cos π2 βsin π2 π2 cos π2sin π2 cos π2 π2 sin π20 0 1
=cos(π1+π2) β sin(π1+π2) π1 cos π1 + π2 cos(π1+π2)sin(π1+π2) cos(π1+π2) π1 sin π1 + π2 sin(π1+π2)
0 0 1
Simple Geometryβ¦
π2
π1 cos π1
π1 sin π1π2 cos(π1+π2)
π2 sin(π1+π2)
π1
π1 + π2
Simple Geometryβ¦
π1 + π2
π1 cos π1
π1 sin π1π2 cos(π1+π2)
π2 sin(π1+π2)
π20 =
cos(π1+π2) β sin(π1+π2) π1 cos π1 + π2 cos(π1+π2)sin(π1+π2) cos(π1+π2) π1 sin π1 + π2 sin(π1+π2)
0 0 1
Three-Link Planar Arm π₯3π¦3
π30 =
πΆ123 βπ123 π1πΆ1 + π2πΆ12 + π3πΆ123π123 πΆ123 π1π1 + π2π12 + π3π1230 0 1
π30 =
cosπ β sinπ ππsinπ cosπ ππ0 0 1
πΆ123 = cos π1 + π2 + π3 , etc.
(ππ , ππ)
π
We can parameterize the end effector frame by (πΏπ, ππ, π)
About the Forward Kinematic Map
β’ For the two-link arm, we can position the end-effector origin anywhere in the armβs workspace: two inputs (π1, π2) and two βoutputsβ (ππ , ππ).
β’ For the three-link arm, we can position the end-effector origin anywhere in the armβs workspace, and we can choose the orientation of the frame: three inputs (π1, π2, π3) and three βoutputsβ (ππ , ππ , π).
β’ Suppose we had a four-link arm?β’ Infinitely may ways to achieve a desired end-effector configuration (ππ , ππ , π).
More General Robot Arms
β’ With a bit of work, this can be generalized to arbitrary robot arms.
β’ We shall not do this bit of work in CS3630.
Motion Control
β’ Trajectory following is important
β’ Spray-painting
β’ Sealing
β’ Welding
β’ Three main approaches:
β’ Trajectory replay
β’ Joint-space Motion Control
β’ Cartesian Motion Control
Image by Roboguru
Trajectory Replay
β’ Teaching by demonstration
β’ Define a set of waypoints by βshowingβ the robot
β’ Similar to keyframe animation in graphics
β’ Still need to interpolate between waypoints
RRR example
β’ End-effector == frame 3
RRR example, contβd
β’ Multiply 3 matrices
β’ Note R in upper left
β’ Check orientation!
Proportional Feedback Control
β’ Feedback law:
β’ At every time step:β’ Calculate joint space error
β’ Increase of decrease proportional to et
β’ Kp is proportional gain parameter
Proportional Feedback Control
β’ Properties:β’ Closer to goal -> smaller steps
β’ Automatically reverses sign if we overshoot
β’ Generalizes to vector-valued control
β’ Value of Kp really matters: β’ too high: overshoot
β’ too low: slow convergence
β’ Special case of PID control
https://arduinoplusplus.wordpress.com/2017/06/21/pid-control-experiment-tuning-the-controller/
The Manipulator Jacobian
β’ Velocity of end-effector if we move any given joint?
β’ Given by arrows:
β’ R=joint 1
β’ G=joint 2
β’ B=joint 3
Jacobian = linear map
β’ Linear relationship between joint space velocity and cartesian velocity (pose space!)
β’ J is 3xn matrix:
β’ Each Ji(q) column corresponds to arrow.
β’ Partial derivative of pose wrt qi
Worked Example: RRR manipulator
β’ Remember:
β’ Extracting x, y, theta:
β’ So what is Jacobian???
Worked Example: RRR manipulator
β’ x, y, theta:
β’ Jacobian:
Cartesian Motion Control
β’ Convert direction in cartesian space to direction in joint space
β’ Yields straight-line paths
How do we convert?
β’ We want a straight line!
β’ Calculate (scaled) direction of the line
β’ Error in cartesian space:
β’ Then, simple proportional control:
Small print: we have to take care when subtracting angles, as they are not unique
Summary
1. Forward Kinematics is just multiplying transforms
2. We went through an RRR Worked Example
3. Joint-Space Motion Control creates paths that minimize distance in joint space
4. The Manipulator Jacobian provides a relationship between cartesian and joint-space velocities/displacements
5. Cartesian Motion Control exploits this relationship to provide predictable paths in cartesian space