Robotics 1
notes , released 30. 11. 2022, updated 16. 12. 2022; available in [PDF]
Preface
This website contains my lecture notes from a lecture by Lorenzo Masia from the academic year 2022/2023 (University of Heidelberg). If you find something incorrect/unclear, or would like to contribute, feel free to submit a pull request (or let me know via email).
Note that since the course hasn’t ended yet, the notes are not complete and won’t be until the end of the semester.
Robotics Components
Definition (link/member): individual bodies making up a mechanism
Definition (joint): connection between multiple links
Definition (kinematic pair): two links in contact such that it limits their relative
- low-order kinematic pairs: point of contact is a surface (eg. revolute/prismatic/spherical)
- high-order kinematic pairs: point of contact is a dot/line (eg. gears)
Definition (kinematic chain): assembly of links connected by joints
- is a closed loop (left image) if every link is connected to every other by at least two paths (including the ground – imagine it as a single link), else it’s open (right image)
Degrees of Freedom
Definition (deegree of freedom) of a mechanical system is the number of independent parameters that define its configuration. It can be calculated by the Grübler Formula:
where
- DOF of the operating space (3 for 2D, 6 for 3D)
- in 2D it’s 2 for orientation and 1 for position
- in 3D it’s 3 for orientation and 3 for position
- number of links
- number of kinematic pairs
- degree of constraint of the -th kinematic pair
- eg. a revolute joint in 2D takes away 2 DOF (we can only rotate)
For example, the following has DOF:
Definition (coincident joints): when there are more than two kinematic pairs in the same joint
Actuators
Definition (actuator): a mechanical device for moving or controlling something
- DC brushed motor: based on Lorentz’ force law (electromagnetic fields)
- brushed because the metal brush powers the magnets (they’re turning)
- brushless uses the position of the motor to turn on/off currents for specific windings
- usually contains gears reductions to trade torque for speed and sensors to measure the position of the motor (see further)
- since the voltage controls the motor but setting it to a specific value is impractical, pulse width modulation (PWM) is used:
- to measure the position of the motor, optical shaft encoders (incremental/absolute) are used:
Kinematics
- establishment of various coordinate systems to represent the positions and orientations of rigid objects and with transformations among these coordinate systems
- the dimension of the configuration space () must be larger or equal to the dimension of the task space () to ensure the existence of kinematic solutions
Forward (direct) Kinematics
Definition (forward/direct kinematics): the process of finding the position/orientation of the end-effector given a set of joint parameters .
Body Pose
The pose/frame of a rigid body can be described by its position and orientation (wrt. a reference frame).
- the position is a vector
- the rotation is an orthonormal matrix with (a determinant of would flip the object, we only want rotation)
- due to orthogonality:
The elementary rotations about each of the axes are the following:
- important to remember for calculating robot kinematics (or just think about what the rotation about an axis is doing to the other two axes, it’s not too hard to remember)
- positive values for the rotation are always counter-clockwise
When discussing multiple frames, we use the following notation:
E.g. if we have the same point in three different frames, we know that
For a minimal representation, we will use Euler’s ZYZ angles, which does three rotations:
For the inverse problem (calculating angles from a matrix of numbers), we can do
- if we divide by zero somewhere we get degenerate solutions where we can only get the sum of the angles (one of the problems with Euler angles)
- alternative is RPY angles, which are also three rotations (roll, pitch, yaw) and are just as bad
Denavit & Hartenberg Notation
For relating the base and the end effector, we need to both rotate and translate, so we’ll use homogeneus coordinates (matrix is , encoding both rotation and translation):
To create the homogeneous coordinates in a standardized way, we use the Denavit & Hartenberg (DH) notation which systematically relates the frames of two consecutive links. We have 4 parameters, each of which relates frame to frame :
parameter | meaning |
---|---|
link length | distance between and along |
link offset | distance between and along |
link twist | angle between and around |
joint angle | angle between and around |
Example: anthropomorphic arm (3 revolute joins):
1 | ||||
2 | ||||
3 |
We then get the following transformations:
To get the final transformations, we can multiply the matrices and get
Inverse Kinematics
Definition (inverse kinematics): the process of finding a set of joint parameters given the position/orientation of the end-effector .
Definition (primary workspace): set of all positions that can be reached with at least one orientation
Definition (secondary workspace): set of all positions that can be reached with any orientation
Analytical solution (closed form)
- preferred (if it can be found)
- use geometric inspection, solve system of equations
Example: spherical wrist (3 revolute joins):
The matrix is a ZYZ Euler rotation matrix and can be solved as such (see Body pose).
- we use indexes to , because the wrist is usually at an end of another manipulator
Definition (decoupling): dividing inverse kinematics problem for two simpler problems, inverse position kinematics and inverse orientation kinematics
- is applicable for manipulators with at least 6 joints where the last 3 intersect at a point
The general approach is the following:
- calculate the orientations and position where the wrist needs to be
- calculate the orientations of the rest of the robot
Numerical solution (iterative form)
TBA
- Gradient method derivation (might be on the exam)
# will be typeset shortly
H(q) = 1/2 ||r_d f_r(q)||^2
dH / dq = 1/2 2 (-1) [r_d - f_r(q)]^T J_r(q)
dH / dq = (-1) [r_d - f_r(q)]^T J_r(q) // nabla transposes
nabla q H(q) = (-1) [r_d - f_r(q)] J_r(q)^T // nabla transposes