{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "[Table of Contents](table_of_contents.ipynb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Topic 13. Adjoint Operators\n", "Author: Christian Sorensen c.sorensen2002@gmail.com\n", " " ] }, { "attachments": { "Spaces.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "## Introduction\n", "**Adjoint Operators**\n", "The adjoint of an operator (also known as Hilbert adjoint, not to be\n", "confused with the adjugate or adjoint matrix) is a linear operator that,\n", "“undoes” a corresponding operator. If operator A takes a vector from\n", "space S1 and maps it to space S2, the adjoint maps a vector from S2 back\n", "to S1.\n", "\n", "The definition is given as \\<Ax,y\\>=\\<x,A\\*y\\> where A\\* is the adjoint\n", "of the operator A. While most engineering students are used to seeing\n", "matrix adjoints (transposes), any linear operator can have an adjoint. A\n", "given operator may not have an adjoint. Adjoints are important because\n", "their range and null spaces make up 2 of the 4 fundamental subspaces of\n", "the operator.\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Explanation of the theory\n", "\n", "**Mathematical Definition:**\n", "\n", "\n", "$< Ax,y > = < x,A^{*}y > ;\\ \\ A^{*}\\text{ is the adjoint of A}$\n", "\n", "Properties of the adjoint (in a Hilbert space):\n", "\n", "1. $\\left( A_{1} + A_{2} \\right)^{*} = A_{1}^{*} + A_{2}^{*}$\n", "\n", "2. $\\left( \\text{aA} \\right)^{*} = \\overline{a}A^{*}\\ (where\\ \\overline{a}\\ is\\ the\\ complex\\ conjugate\\ of\\ a)$\n", "\n", "3. $\\left( A_{2}\\ A_{1} \\right)^{*} = A_{1}^{*}A_{2}^{*}\\ (The\\ order\\ has\\ been\\ reversed,\\ similar\\ to\\ inversion)$\n", "\n", "4. $\\text{If }\\exists\\ A^{- 1},\\ \\left( A^{- 1} \\right)^{*} = \\left( A^{*} \\right)^{- 1}$\n", "\n", "An operator is said to be self adjoint (Hermetian) if the following is\n", "true:\n", "\n", "$$A = A^{*}$$\n", "\n", "While all operators may have an adjoint, from here on out the adjoint\n", "will be applied strictly to matrices, although some of the definitions\n", "may apply more generally. (Everything up to this point is applicable to\n", "all linear operators and their adjoints) For matrices the following are true:\n", "\n", "$$\\forall\\ A\\ \\epsilon\\ R^{\\text{NxN}},\\ A^{*} = A^{T} and\\ \\forall \\ A \\ \\epsilon \\ C^{\\text{NxN}},A^{*} = A^{H}$$\n", "\n", "$$\\left( A^{T} \\right)^{- 1} = \\left( A^{- 1} \\right)^{T}\\text{ or }\\left( A^{H} \\right)^{- 1} = \\left( A^{- 1} \\right)^{H}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simple Numerical Examples\n", "\n", "**Simple Numerical Example:**\n", "\n", "$$\\text{For }A = \\ \\left( \\begin{matrix}1 & -1 \\\\ -2 & 3 \\end{matrix} \\right), \\text{ find } A^{*}$$\n", "\n", "$$< Ax,y > = < x,A^{*}y >$$\n", "\n", "$$y^{T}\\text{Ax} = {{(A}^{*}y)}^{T}x$$\n", "\n", "$$\\left( y_{1}\\ y_{2} \\right)\\left( \\begin{matrix}1 & -1 \\\\ -2 & 3 \\end{matrix} \\right)x = {{(A}^{*}\\left( \\begin{matrix}y_{1} \\\\ y_{2} \\end{matrix} \\right))}^{T}x$$\n", "\n", "$$\\left( y_{1}\\ y_{2} \\right)\\left( \\begin{matrix}1 & -1 \\\\ -2 & 3 \\end{matrix} \\right) = {{(A}^{*}\\left( \\begin{matrix}y_{1} \\\\ y_{2} \\end{matrix} \\right))}^{T}$$\n", "\n", "$$\\left( \\begin{matrix} y_{1} - 2y_{2}& - y_{1} + 3y_{2} \\end{matrix}\\right) = \\left( \\begin{matrix} a_{1}^{*} & a_{2}^{*} \\\\ a_{3}^{*} & a_{4}^{*} \\end{matrix} \\right) \\left( \\begin{matrix} y_{1} \\\\ y_{2} \\end{matrix} \\right)$$\n", "\n", "$$\\left( \\begin{matrix} y_{1} - 2y_{2} & - {y}_{1} + 3y_{2} \\end{matrix} \\right) = \\left( \\begin{matrix} a_{1}^{*}y_{1} + a_{2}^{*}y_{2} \\\\ a_{3}^{*}y_{1} + a_{4}^{*}y_{2} \\end{matrix} \\right)^{T}$$\n", "\n", "$$\\left( \\begin{matrix} y_{1} - 2y_{2} & - {y}_{1} + 3y_{2} \\end{matrix} \\right) = \\left( \\begin{matrix} a_{1}^{*}y_{1} + a_{2}^{*}y_{2} & a_{3}^{*}y_{1} + a_{4}^{*}y_{2} \\end{matrix} \\right)^{T}$$\n", "\n", "$$\\left( \\begin{matrix} a_{1}^{*} & a_{3}^{*} \\\\ a_{2}^{*} & a_{4}^{*} \\end{matrix} \\right) = \\left( \\begin{matrix}1 & -2 \\\\ -1 & 3 \\end{matrix} \\right) = A^{T}$$\n", "\n", "**Matlab Implementation**\n", "\n", "The matlab implementation of the adjoint for a matrix is simple. Let A be a matrix, then the adjoint of that matrix can be calculated by A'\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## An Engineering Application\n", "\n", "**Engineering application:**\n", "\n", "Inverse kinematics of a robotic manipulator with redundant degrees of\n", "freedom.\n", "\n", "In robotics the Jacobian is the matrix that describes the transformation\n", "between Joint and task space. For an n DOF robot it will look something\n", "like the following:\n", "\n", "$$\\begin{pmatrix}\n", "\\dot{x} \\\\\n", "\\dot{y} \\\\\n", "\\dot {z} \\\\\n", "\\dot{\\alpha} \\\\\n", "\\dot{\\beta} \\\\\n", "\\dot{\\gamma} \\\\\n", "\\end{pmatrix} = \\begin{pmatrix}\n", "J_{11} & \\cdots & J_{1n} \\\\\n", " \\vdots & \\ddots & \\vdots \\\\\n", "J_{61} & \\cdots & J_{6n} \\\\\n", "\\end{pmatrix}\\begin{pmatrix}\n", "\\dot{q_{1}} \\\\\n", "\\dot{q_{2}} \\\\\n", " \\vdots \\\\\n", "\\dot{q_{n}} \\\\\n", "\\end{pmatrix}$$\n", "\n", "Where the LHS of the equation are the cartesian velocities of the end effector of the robot, and\n", "the $\\dot{q}$ vector is the robots joint velocities.\n", "\n", "In the case of a 7+ DOF robot, the robot is kinematically redundant,\n", "there are more joint states then cartesian states, meaning there are\n", "multiple joint configurations that give the same cartesian pose.\n", "\n", "The inverse kinematics problem is as follows—given a desired cartesian\n", "pose determine the joint configuration of the robot. This problem is\n", "stated as:\n", "\n", "$$\\dot{\\xi} = J\\dot{q}$$\n", "\n", "Due to the redundancy, there is no matrix inverse $J^{- 1}$ that can be\n", "used to solve the problem exactly. This is where the adjoint of the\n", "Jacobian comes into play.\n", "\n", "We need to choose a specific $\\dot{q}$ vector, and it is convenient to\n", "choose the $\\dot{q}$ vector that with minimum norm, because the energy\n", "associated with a movement increases with the square of the $\\dot{q}$\n", "vector.\n", "\n", "Expressing the constraint mathematically leads to the following\n", "solveable problem:\n", "\n", "Choose a vector $\\dot{q}$ s. t. $\\dot{\\xi} = J\\dot{\\text{q }}$and\n", "$\\left\\| \\dot{\\text{q}} \\right\\|_{2}$ is minimized.\n", "\n", "Let $n \\in N\\left( J \\right)$ and let $\\dot{q_{0}}$ be a solution of\n", "$\\dot{\\xi} = J\\dot{q}$. This means that $\\dot{q_{0}} + n$ is also a\n", "solution of $\\dot{\\xi} = J\\dot{q}$. Because we are operating inside of a\n", "Hilbert space, there is a unique vector that satisfies the equation with\n", "minimum norm.\n", "\n", "That solution will have $n = 0$ or in otherwords will be orthogonal to\n", "$N\\left( J \\right)$.\n", "\n", "Understanding the fundamental theorem of linear algebra (see the associated chapter in\n", "the jupyter notebook titled 4 fundamental subspaces) gives that\n", "$\\left\\lbrack N\\left( J \\right) \\right\\rbrack^{\\bot} = R\\left( J^{*} \\right) = R(J^{T})$\n", ".\n", "\n", "This means the minimum-norm solution of our equation is\n", "\n", "$$\\dot{q} \\in R\\left( J^{T} \\right) = J^{T}z\\ $$\n", "\n", "Where z is given as the solution of\n", "$\\left( JJ^{T} \\right)z = \\dot{\\xi}$\n", "\n", "If we take the inverse of $\\left( JJ^{T} \\right)$, whose\n", "existance can be proven as long as the jacobian isn’t singular, we can\n", "solve for $\\dot{q}$.\n", "\n", "$$\\dot{q} = J^{T}\\ \\left( JJ^{T} \\right)^{- 1}\\dot{\\xi}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Challenge Problem\n", "\n", "Add a homework assignment that might take 10 minutes to complete. Make sure you can work the problem yourself, but you do not need to submit a solution to the problem." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.9" } }, "nbformat": 4, "nbformat_minor": 2 }