留言板

尊敬的读者、作者、审稿人, 关于本刊的投稿、审稿、编辑和出版的任何问题, 您可以本页添加留言。我们将尽快给您答复。谢谢您的支持!

姓名
邮箱
手机号码
标题
留言内容
验证码

Kinematics of Free Floating Robots Using Dual Quaternions

Piotr A FELISIAK Kai-yu QIN Gun LI

FELISIAKPiotr A, 秦开宇, 李滚. 对偶四元数法求解自由浮动机器人运动学[J]. 电子科技大学学报, 2019, 48(2): 278-287. doi: 10.3969/j.issn.1001-0548.2019.02.019
引用本文: FELISIAKPiotr A, 秦开宇, 李滚. 对偶四元数法求解自由浮动机器人运动学[J]. 电子科技大学学报, 2019, 48(2): 278-287. doi: 10.3969/j.issn.1001-0548.2019.02.019
FELISIAK Piotr A, QIN Kai-yu, LI Gun. Kinematics of Free Floating Robots Using Dual Quaternions[J]. Journal of University of Electronic Science and Technology of China, 2019, 48(2): 278-287. doi: 10.3969/j.issn.1001-0548.2019.02.019
Citation: FELISIAK Piotr A, QIN Kai-yu, LI Gun. Kinematics of Free Floating Robots Using Dual Quaternions[J]. Journal of University of Electronic Science and Technology of China, 2019, 48(2): 278-287. doi: 10.3969/j.issn.1001-0548.2019.02.019

对偶四元数法求解自由浮动机器人运动学

doi: 10.3969/j.issn.1001-0548.2019.02.019
详细信息
    作者简介:

    FELISIAK Piotr A.(1987-), 男, 博士, 主要从事基于逻辑的人工智能、机器人学、计算机自动化设计、计算机代数和多集理论方面的研究.Email:piotr.felisiak@yandex.com

  • 中图分类号: TP301

Kinematics of Free Floating Robots Using Dual Quaternions

More Information
    Author Bio:

    FELISIAK Piotr A. was born in 1987, and his research interests include logic-based artificial intelligence, robotics, computer automated design, computer algebra and multiset theory

  • 摘要: 在卫星维修,空间建造和轨道碎片清理等任务中,在轨服务机器人是最佳选择。在轨服务空间机器人通常由基座卫星和与其相连接的一个或多个机械臂组成。由于基座不固定,空间机械臂运动学比地面固定机械臂的情况要复杂得多。该文提出了一种求解在轨服务自由浮动机器人的运动学正逆解方法,以及它的速度运动学正逆解方法。该方法采用对偶四元数来进行运动学求解,因此比基于齐次变换的经典方法的计算效率更高。通过将动量守恒定律引入到运动学模型中来求解运动学问题,该方法适用于具有任意数量的机械臂、混合移动铰链和转动关节的空间机器人。已通过运动控制过程模拟对该方法进行了验证。
  • Figure  1.  An example of the robot architecture

    Figure  2.  Simulated control process

    Figure  3.  Velocity error

    Figure  4.  Position of manipulator 2 end-effector

    Table  1.   Symbols for the partial derivatives equations

    Result $\nu $ Equation nr ${\zeta _Y}$ $X$ $Y$ $Z$
    ${}^{ij}{J_{ij\langle \nu c0\rangle }}$ $p$ (54) $i$ 0 $ij$ $ij$
    $\psi $ (55)
    ${}^{ij}{J_{ij\langle \nu wj\rangle }}$ $d$ (57) $wj$
    $\theta $ (58)
    ${J_{Ej\langle \nu c0\rangle }}$ $p$ (54) ${n_j}$ ${n_j}j$ $Ej$ $N$
    $\psi $ (55)
    ${J_{Ej\langle \nu wj\rangle }}$ $d$ (57)
    $\theta $ (58)
    ${}^{C0}{J_{C0\langle \nu c0\rangle }}$ $p$ (54) 0 0 $C0$ $C0$
    $\psi $ (55)
    ${}^{Cij}{J_{Cij\langle \nu c0\rangle }}$ $p$ (54) $i$ $ij$ $Cij$ $Cij$
    $\psi $ (55)
    ${}^{Cij}{J_{Cij\langle \nu wj\rangle }}$ $d$ (57)
    $\theta $ (58)
    ${}^{CEj}{J_{CEj\langle \nu c0\rangle }}$ $p$ (54) ${n_j}$ ${n_j}j$ $CEj$ $CEj$
    $\psi $ (55)
    ${}^{CEj}{J_{CEj\langle \nu wj\rangle }}$ $d$ (57)
    $\theta $ (58)
    下载: 导出CSV
  • [1] LONGMAN R W. The kinetics and workspace of a satellite-mounted robot[J]. Journal of the Astronautical Sciences, 1993, 38(4):423-440. http://cn.bing.com/academic/profile?id=db603bf6957724e049777c5306f99ff1&encoded=0&v=paper_preview&mkt=zh-cn
    [2] UMETANI Y. Continuous path control of space manipulator mounted on OMV[J]. Acta Astronautica, 1987, 15(12):981-986. doi:  10.1016/0094-5765(87)90022-1
    [3] ALI S, MOOSAVIAN A. On the kinematics of multiple manipulator space free-flyers and their computation[J]. Journal of Field Robotics, 2015, 15(4):207-216. http://cn.bing.com/academic/profile?id=081dec7614c718d592c52d7032011c01&encoded=0&v=paper_preview&mkt=zh-cn
    [4] ELLERY A. An introduction to space robotics[J]. Measurement Science & Technology, 2001, 12(11):2019. http://cn.bing.com/academic/profile?id=67d9bafe48d0d8dbeb0b3949dc6488a6&encoded=0&v=paper_preview&mkt=zh-cn
    [5] YOSHIDA K, KURAZUME R, UMETANI Y. Dual arm coordination in space free-flying robot[C]//IEEE International Conference on Robotics and Automation. Sacramento, CA, USA: IEEE, 1991. https://ieeexplore.ieee.org/document/132004
    [6] FLORES-ABAD A, MA O, PHAM K, et al. A review of space robotics technologies for on-orbit servicing[J]. Progress in Aerospace Sciences, 2014, 68:1-26. doi:  10.1016/j.paerosci.2014.03.002
    [7] FILIPE N, VALVERDE A, TSIOTRAS P. Pose-tracking without linear and angular velocity feedback using dual quaternions[J]. IEEE Transactions on Aerospace and Electronic Systems, 2016, 52(1):411-422. doi:  10.1109/TAES.2015.150046
    [8] WU Y, HU X, HU D, et al. Strapdown inertial navigation system algorithms based on dual quaternions[J]. IEEE Transactions on Aerospace Electronic Systems, 2005, 41(1):110-132. doi:  10.1109/TAES.2005.1413751
    [9] GUI H, VUKOVICH G. Dual-quaternion-based adaptive motion tracking of spacecraft with reduced control effort[J]. Nonlinear Dynamics, 2016, 83(1-2):597-614. doi:  10.1007/s11071-015-2350-4
    [10] BRODSKY V, SHOHAM M. Dual numbers representation of rigid body dynamics[J]. Mechanism & Machine Theory, 1999, 34(5):693-718. http://cn.bing.com/academic/profile?id=58dc8d90264684a8b536559d4690b75b&encoded=0&v=paper_preview&mkt=zh-cn
    [11] CRAIG J J. Introduction to robotics:Mechanics and control[M]. 3rd ed. NJ, USA:Prentice Hall, 2004.
    [12] BENOÎT J, GAËL G. Documentation of the Eigen library[EB/OL].[2019-02-28]. http://eigen.tuxfamily.org.
    [13] FELISIAK P A. Advanced mechanics and control of robots for on-orbit servicing[R]. Chengdu: University of Electronic Science and Technology of China, 2018.
  • [1] 张桃红, 郭学强, 郑瀚, 罗继昌, 王韬, 焦力群, 唐安莹.  Dual-Path Vision Transformer用于急性缺血性脑卒中辅助诊断 . 电子科技大学学报, 2024, 53(2): 307-314. doi: 10.12178/1001-0548.2023081
    [2] Rui HUANG, Hong CHENG, Hong-liang GUO.  Learning Virtual Impedance for Control of a Human-Coupled Lower Exoskeleton . 电子科技大学学报, 2018, 47(3): 321-329. doi: 10.3969/j.issn.1001-0548.2018.03.001
    [3] Di-wei LIU, Yang YAN, Sheng YU, Wen-jie FU, Sheng-gang LIU.  Theoretical and Experimental Investigations on a Dual-Frequency Operation Coaxial Gyrotron with Two Electron Beams . 电子科技大学学报, 2016, 45(4): 701-706. doi: 10.3969/j.issn.1001-0548.2016.04.024
  • 加载中
图(4) / 表(1)
计量
  • 文章访问数:  3577
  • HTML全文浏览量:  1260
  • PDF下载量:  90
  • 被引次数: 0
出版历程
  • 收稿日期:  2018-05-24
  • 修回日期:  2018-11-27
  • 刊出日期:  2019-03-30

Kinematics of Free Floating Robots Using Dual Quaternions

doi: 10.3969/j.issn.1001-0548.2019.02.019
    作者简介:

    FELISIAK Piotr A. was born in 1987, and his research interests include logic-based artificial intelligence, robotics, computer automated design, computer algebra and multiset theory

  • 中图分类号: TP301

摘要: 在卫星维修,空间建造和轨道碎片清理等任务中,在轨服务机器人是最佳选择。在轨服务空间机器人通常由基座卫星和与其相连接的一个或多个机械臂组成。由于基座不固定,空间机械臂运动学比地面固定机械臂的情况要复杂得多。该文提出了一种求解在轨服务自由浮动机器人的运动学正逆解方法,以及它的速度运动学正逆解方法。该方法采用对偶四元数来进行运动学求解,因此比基于齐次变换的经典方法的计算效率更高。通过将动量守恒定律引入到运动学模型中来求解运动学问题,该方法适用于具有任意数量的机械臂、混合移动铰链和转动关节的空间机器人。已通过运动控制过程模拟对该方法进行了验证。

English Abstract

FELISIAKPiotr A, 秦开宇, 李滚. 对偶四元数法求解自由浮动机器人运动学[J]. 电子科技大学学报, 2019, 48(2): 278-287. doi: 10.3969/j.issn.1001-0548.2019.02.019
引用本文: FELISIAKPiotr A, 秦开宇, 李滚. 对偶四元数法求解自由浮动机器人运动学[J]. 电子科技大学学报, 2019, 48(2): 278-287. doi: 10.3969/j.issn.1001-0548.2019.02.019
FELISIAK Piotr A, QIN Kai-yu, LI Gun. Kinematics of Free Floating Robots Using Dual Quaternions[J]. Journal of University of Electronic Science and Technology of China, 2019, 48(2): 278-287. doi: 10.3969/j.issn.1001-0548.2019.02.019
Citation: FELISIAK Piotr A, QIN Kai-yu, LI Gun. Kinematics of Free Floating Robots Using Dual Quaternions[J]. Journal of University of Electronic Science and Technology of China, 2019, 48(2): 278-287. doi: 10.3969/j.issn.1001-0548.2019.02.019
  • Space robots for on-orbit servicing enable refueling, repairing and upgrading of satellites on orbit, construction of space structures and orbital debris removal. All these tasks can be performed by the robots with much lower economical cost and risk than in the case of a manned mission.

    The authors consider space robots for on-orbit servicing missions consisting of an unmanned base satellite and one or more manipulators attached to the base. In such a system, gravity forces are reduced and the base is not fixed. Hence, motions of the manipulators cause reaction forces and moments, which disturb the base satellite position and attitude. This complicates the robot kinematics and dynamics. Obviously, control methods intended for ground-fixed manipulators cannot provide a precise operation and accurate models of the robot kinematics and dynamics are needed.

    A space robot, having the base which is completely free to rotate and translate under the motion of the manipulators, is called a free floating robot. Free floating mode is economically the most desired since it does not require any fuel. In most cases, intervention of reaction wheels in the base satellite is pointless, since motions of the manipulators cause saturation of the wheels easily. On the other hand, dynamics of the free floating robot may be used for control of the base attitude.

    At some configurations in the manipulator's joint space, the manipulator is unable to move its end-effector in some directions of the inertial space. These singular configurations cannot be determined solely by the kinematics of the system, instead, they also depend on the system's inertia properties. Hence, they are called dynamic singularities.

    One of first significant works on spacecraft manipulator kinematics is given in [1], where it is shown that by the principle of momentum conservation it is possible to get the inertial position and orientation of a satellite. However, the main drawback of this approach is a large fuel consumption. Reference [2] developed an inverse kinematics solution for a robot with a single manipulator with revolute joints. The solution was obtained by defining the generalized Jacobian matrix (GJM). This concept will be extended to a more general case in this investigation. In Reference [3] developed and compared two kinematics models of multiple-arm free flying space robots, called the barycentric vector approach and the direct path method. The direct path method is more computationally efficient, however the dynamics model obtained based on the direct path approach would have to be reduced by computationally expensive algorithms. Kinematics and dynamics of a dual-arm space manipulator system, called ATLAS, are given in [4]. The case where one from two manipulators is used to compensate the reaction on the base satellite is discussed in [5]. A comprehensive review of orbital robot technologies is given in [6].

    In this investigation, dual quaternions are employed for representation of a body position and orientation. Ordinary quaternions were introduced by W. R. Hamilton in 1843. Dual quaternion algebra was invented in 1898 by A. McAulay, while A. Kotelnikov developed dual vectors and dual quaternions for use in the study of mechanics.

    Dual quaternions may represent both position and orientation in a neat and compact way. The application of dual quaternions in this study is justified that they are free from gimbals' lock and they are computationally efficient, comparing with the classical approach in robotics, which bases on homogeneous transforms. A dual quaternion can be described by 8 parameters, while the equivalent homogeneous transform requires 16. More on dual quaternions with applications can be found in [7] to [9].

    In this paper, direct kinematics and direct velocity kinematics models are obtained in the dual quaternion domain. By introduction of a dual momentum into the kinematic equations, the inverse velocity kinematics problem of a free floating robot is solved. The inverse velocity kinematics is then used in the kinematic control simulation to verify the accuracy of the models. Such a control is known as resolved motion rate control. This method allows for linear treatment of the kinematic problems. Positions and orientations of the end-effectors may be then easily obtained by an integration. The method requires an assumption that there are no external forces nor torques, so the momentum conservation law may be applied.

    According to the authors' knowledge, this work is the first one approaching the free floating robot kinematics by using dual quaternions.

    This paper consists of five sections. In Section 1, spatial transformations using dual quaternions will be discussed. Kinematics of the robot will be described in Section 2. A simulation of a kinematic control process will be given in Section 3. Section 4 will provide concluding remarks.

    • The following subsections will present basic definitions used in the kinematic models.

    • Before an introduction of the dual quaternions, let us consider ordinary quaternions. A quaternion may be defined as

      $$ \tilde q = {q_0} + {q_1}\tilde \imath + {q_2}\tilde \jmath + {q_3}\tilde k $$ (1)

      where ${q_0}$, ${q_1}$, ${q_2}$ and ${q_3}$ are real numbers, whereas $\tilde \imath ,\tilde \jmath $ and $\tilde k$ are hipercomplex numbers, having properties

      $$ \begin{gathered} \tilde \imath \tilde \imath = \tilde \jmath \tilde \jmath = \tilde k\tilde k = \tilde \imath \tilde \jmath \tilde k = - 1 \\ \tilde \imath \tilde \jmath = - \tilde \jmath \tilde \imath = \tilde k,\;\tilde \jmath \tilde k = - \tilde k\tilde \jmath = \tilde \imath ,\;\tilde k\tilde \imath = - \tilde \imath \tilde k = \tilde \jmath \\ \end{gathered} $$ (2)

      The scalar component of quaternion $\tilde q$ is defined as and the vector component as , where the superscript ${\text{T}}$ denotes transposition.

      Let us describe a quaternion by a vector, e.g.,

      $$ \tilde q = {[\begin{array}{*{20}{c}} {{q_0}}&{{q_1}}&{{q_2}}&{{q_3}} \end{array}]^{\text{T}}} $$ (3)

      Multiplication of quaternion $\tilde q$ by a scalar $s$ gives

      $$ \tilde qs = {[\begin{array}{*{20}{c}} {{q_0}s}&{{q_1}s}&{{q_2}s}&{{q_3}s} \end{array}]^{\text{T}}} $$ (4)

      Addition of quaternion $\tilde g = {g_0} + {g_1}\tilde \imath + {g_2}\tilde \jmath + {g_3}\tilde k$ to quaternion $\tilde h = {h_0} + {h_1}\tilde \imath + {h_2}\tilde \jmath + {h_3}\tilde k$ acts in a component-wise way

      $$ \begin{gathered} \tilde g + \tilde h = \\ {g_0} + {h_0} + ({g_1} + {h_1})\tilde \imath + ({g_2} + {h_2})\tilde \jmath + ({g_3} + {h_3})\tilde k \\ \end{gathered} $$ (5)

      The product of quaternions $\tilde g$ and $\tilde h$ is

      $$ \begin{gathered} \tilde g\tilde h = ({g_0}{h_0} - {g_1}{h_1} - {g_2}{h_2} - {g_3}{h_3}) + \\ ({g_1}{h_0} + {g_0}{h_1} - {g_3}{h_2} + {g_2}{h_3})\tilde \imath + \\ ({g_2}{h_0} + {g_3}{h_1} + {g_0}{h_2} - {g_1}{h_3})\tilde \jmath + \\ ({g_3}{h_0} - {g_2}{h_1} + {g_1}{h_2} + {g_0}{h_3})\tilde k \\ \end{gathered} $$ (6)

      Assume that ${ {\mathbb{R}}^{m \times n}}$ is the set of all $m \times n$ matrices of real numbers. Consider the matrix

      $$ {\mathit{\boldsymbol{g}}} = \left[ {\begin{array}{*{20}{c}} {{{\mathit{\boldsymbol{g}}}_{11}}}&{{\text{ }}{{\mathit{\boldsymbol{g}}}_{12}}} \\ {{{\mathit{\boldsymbol{g}}}_{21}}}&{{\text{ }}{{\mathit{\boldsymbol{g}}}_{22}}} \end{array}} \right] \in {\mathbb{R}^{4 \times 4}} $$ (7)

      where ${{\mathit{\boldsymbol{g}}}_{11}} \in \mathbb{R}$, ${{\mathit{\boldsymbol{g}}}_{12}} \in {\mathbb{R}^{1 \times 3}}$, ${{\mathit{\boldsymbol{g}}}_{21}} \in {\mathbb{R}^{3 \times 1}}$ and ${{\mathit{\boldsymbol{g}}}_{22}} \in {\mathbb{R}^{3 \times 3}}$. Now, let us define the product of matrix ${\mathit{\boldsymbol{g}}}$ and quaternion $\tilde h$:

      $$ {\mathit{\boldsymbol{g}}}\tilde h = \left[ {\begin{array}{*{20}{c}} {{{{\mathit{\boldsymbol{g}}}_{11}}}\bar S\left[\kern-0.15em\left[ {\tilde h} \right]\kern-0.15em\right]}&{{\text{ }}{{\mathit{\boldsymbol{g}}}_{12}}\bar V\left[\kern-0.15em\left[ {\tilde h} \right]\kern-0.15em\right]} \\ {{{\mathit{\boldsymbol{g}}}_{21}}\bar S\left[\kern-0.15em\left[ {\tilde h} \right]\kern-0.15em\right]}&{{\text{ }}{{\mathit{\boldsymbol{g}}}_{22}}\bar V\left[\kern-0.15em\left[ {\tilde h} \right]\kern-0.15em\right]} \end{array}} \right] $$ (8)

      Note that the above product is a quaternion.

      The conjugate of quaternion $\tilde q$ is defined as

      $$ {\tilde q^*} = {q_0} - ({q_1}\tilde \imath + {q_2}\tilde \jmath + {q_3}\tilde k) $$ (9)

      The quaternion norm $\left\| {\tilde q} \right\|$ can be defined by

      $$ {\left\| {\tilde q} \right\|^2} = \tilde q{\tilde q^*} $$ (10)

      A quaternion $\tilde q$ with the norm $\left\| {\tilde q} \right\| = \tilde 1$ is called a unit quaternion, assuming that $\tilde 1$ is the quaternion identity defined as

      $$ \tilde 1 = {[\begin{array}{*{20}{c}} 1&0&0&0 \end{array}]^{\text{T}}} $$ (11)
    • Let ${{\mathit{\boldsymbol{{\hat a}}}}}$ be a unit vector specifying an axis of rotation. Let $\varphi $ be an angle of rotation about axis ${{\mathit{\boldsymbol{{\hat a}}}}}$. Then the rotation may be described by a unit quaternion

      $$ \tilde r\left[\kern-0.15em\left[ {{{\mathit{\boldsymbol{\hat a}}}},\varphi } \right]\kern-0.15em\right] = \left[ {\begin{array}{*{20}{c}} {\cos \frac{\varphi }{2}} \\ {{{\mathit{\boldsymbol{\hat a}}}}\sin \frac{\varphi }{2}} \end{array}} \right] $$ (12)

      Assume that roll ${\psi _1}$, pitch ${\psi _2}$ and yaw ${\psi _3}$ describe a rotation of frame $\{ B\} $ about fixed axes $\{ {{{\mathit{\boldsymbol{\hat a}}}}_{1A}},{{{\mathit{\boldsymbol{\hat a}}}}_{2A}},{{{\mathit{\boldsymbol{\hat a}}}}_{3A}}\} $ of frame $\{ A\} $. This set of angles can be converted to an equivalent unit quaternion, representing the rotation

      $$ \begin{gathered} \tilde r\left[\kern-0.15em\left[ {{\psi _1},{\psi _2},{\psi _3}} \right]\kern-0.15em\right] = \\ \tilde r\left[\kern-0.15em\left[ {{{{{\mathit{\boldsymbol{\hat a}}}}}_{3A}},{\psi _3}} \right]\kern-0.15em\right]\;\tilde r\left[\kern-0.15em\left[ {{{{{\mathit{\boldsymbol{\hat a}}}}}_{2A}},{\psi _2}} \right]\kern-0.15em\right]\;\tilde r\left[\kern-0.15em\left[ {{{{{\mathit{\boldsymbol{\hat a}}}}}_{1A}},{\psi _1}} \right]\kern-0.15em\right] \\ \end{gathered} $$ (13)

      Let the origin of frame $\{ H\} $ coincide with the origin of frame $\{ G\} $. Suppose that $\{ H\} $is rotated relative to $\{ G\} $ by roll, pitch and yaw expressed by an orientation vector . Let be a vector expressed in $\{ H\} $. We can convert $^H{{\mathit{\boldsymbol{a}}}}$ into quaternion using

      $$ ^H\tilde a = {[\begin{array}{*{20}{c}} 0&{^H{a_1}}&{^H{a_2}}&{^H{a_3}} \end{array}]^{\text{T}}} $$ (14)

      Let $_H^G\tilde r$ be an unit quaternion, which maps the quaternion $^H\tilde a$ written with respect to frame $\{ H\} $ into quaternion $^G\tilde a$ expressed in frame $\{ G\} $. Then,

      $$ ^G\tilde a = {}_H^G\tilde r\;{}^H\tilde a\;{}_H^G{\tilde r^*} $$ (15)

      The unit quaternion ${}_H^G\tilde r$, which represents rotation of frame $\{ H\} $ relative to $\{ G\} $, can be found using (13) and $^G{{{\mathit{\boldsymbol{\psi }}}}_H}$. The inverse transformation to the one described by (15) can be obtained using ${}_G^H\tilde r = {}_H^G{\tilde r^*}$:

      $$ {}^H\tilde a = {}_G^H\tilde r\;{}^G\tilde a\;{}_G^H{\tilde r^*} $$ (16)
    • A dual number is defined as

      $$ D = {n_r} + E{n_d} $$ (17)

      where ${n_r}$ is the real part, ${n_d}$ is the dual part, and ${E^2} = 0$ but $E \ne 0$. The objects ${n_r}$ and ${n_d}$ can be real numbers, vectors, quaternions etc.; or more generally, elements of an algebraic field. The real part of a dual number $D$ may be denoted by and the dual part by .

      The multiplication of a dual number $D$ by a real number $s$ results in

      $$ Ds = {n_r}s + E{n_d}s $$ (18)

      Assume that dual numbers $G$ and $H$ are such that $G = {g_r} + E{g_d}$ and $H = {h_r} + E{h_d}$, then their sum is

      $$ G + H = {g_r} + {h_r} + E({g_d} + {h_d}) $$ (19)

      and their product is

      $$ GH = {g_r}{h_r} + E({g_r}{h_d} + {g_d}{h_r}) $$ (20)
    • A dual quaternion $Q$ is defined as

      $$ Q = {\tilde q_r} + E{\tilde q_d} $$ (21)

      which is a dual number, where both the real part ${\tilde q_r}$ and the dual part ${\tilde q_d}$ are ordinary quaternions.

      The addition of dual quaternions and multiplication of dual quaternion by a scalar or another dual quaternion are under the same rules as operations on dual numbers described in Section 1.3. According to (20), the product of dual matrix $G = {{\mathit{\boldsymbol{g}}}_r} + E{{\mathit{\boldsymbol{g}}}_d}$ and dual quaternion $H = {\tilde h_r} + E{\tilde h_d}$ is

      $$ GH = {{\mathit{\boldsymbol{g}}}_r}{\tilde h_r} + E({{\mathit{\boldsymbol{g}}}_r}{\tilde h_d} + {{\mathit{\boldsymbol{g}}}_d}{\tilde h_r}) $$ (22)

      where ${{\mathit{\boldsymbol{g}}}_r} \in {\mathbb{R}^{4 \times 4}}$, ${{\mathit{\boldsymbol{g}}}_d} \in {\mathbb{R}^{4 \times 4}}$ and the product of a $4 \times 4$ matrix and an ordinary quaternion is given by (8). In the special case, ${{\mathit{\boldsymbol{g}}}_r} = {\mathit{\boldsymbol{g}}}\frac{{\text{d}}}{{{\text{d}}E}}$, where is a differential operator [10], and ${\mathit{\boldsymbol{g}}} \in {\mathbb{R}^{4 \times 4}}$, we may write

      $$ GH = {\mathit{\boldsymbol{g}}}{\tilde h_d} + E{{\mathit{\boldsymbol{g}}}_d}{\tilde h_r} $$ (23)

      In the both cases, the product is a dual quaternion.

      Suppose that

      $$ Q = {[\begin{array}{*{20}{c}} 0&{{a_1}}&{{a_2}}&{{a_3}} \end{array}]^{\text{T}}} + E{[\begin{array}{*{20}{c}} 0&{{b_1}}&{{b_2}}&{{b_3}} \end{array}]^{\text{T}}} $$ (24)

      then the transformation $\bar C$ of a dual quaternion $Q$ is defined as

      $$ \bar C\left[\kern-0.15em\left[ Q \right]\kern-0.15em\right] = {[\begin{array}{*{20}{c}} {{a_1}}&{{a_2}}&{{a_3}}&{{b_1}}&{{b_2}}&{{b_3}} \end{array}]^{\text{T}}} \in {\mathbb{R}^{6 \times 1}} $$ (25)

      Let ${{\mathit{\boldsymbol{Q}}}}$ be $m \times n$ matrix of dual quaternions such that

      $$ {{\mathit{\boldsymbol{Q}}}} = \left[ {\begin{array}{*{20}{c}} {{Q_{11}}}&{{Q_{12}}}& \ldots &{{Q_{1n}}} \\ {{Q_{21}}}&{{Q_{22}}}& \ldots &{{Q_{2n}}} \\ \vdots & \vdots & \ddots & \vdots \\ {{Q_{m1}}}&{{Q_{m2}}}& \ldots &{{Q_{mn}}} \end{array}} \right] $$ (26)

      then transformation is defined as

      $$ \begin{gathered} \bar M\left[\kern-0.15em\left[ {{\mathit{\boldsymbol{Q}}}} \right]\kern-0.15em\right] = \\ \left[ {\begin{array}{*{20}{c}} {\bar C\left[\kern-0.15em\left[ {{Q_{11}}} \right]\kern-0.15em\right]}&{\bar C\left[\kern-0.15em\left[ {{Q_{12}}} \right]\kern-0.15em\right]}& \ldots &{\bar C\left[\kern-0.15em\left[ {{Q_{1n}}} \right]\kern-0.15em\right]} \\ {\bar C\left[\kern-0.15em\left[ {{Q_{21}}} \right]\kern-0.15em\right]}&{\bar C\left[\kern-0.15em\left[ {{Q_{22}}} \right]\kern-0.15em\right]}& \ldots &{\bar C\left[\kern-0.15em\left[ {{Q_{2n}}} \right]\kern-0.15em\right]} \\ \vdots & \vdots & \ddots & \vdots \\ {\bar C\left[\kern-0.15em\left[ {{Q_{m1}}} \right]\kern-0.15em\right]}&{\bar C\left[\kern-0.15em\left[ {{Q_{m2}}} \right]\kern-0.15em\right]}& \ldots &{\bar C\left[\kern-0.15em\left[ {{Q_{mn}}} \right]\kern-0.15em\right]} \end{array}} \right] \\ \end{gathered} $$ (27)

      A dual quaternion $Q$ indeed has three conjugates. In this study we will use one of them

      $$ {Q^*} = \tilde q_r^* + E\tilde q_d^* $$ (28)

      The dual quaternion norm $\left\| Q \right\|$ is defined as

      $$ {\left\| Q \right\|^2} = Q{Q^*} $$ (29)

      The dual quaternion identity is

      $$ I = {[\begin{array}{*{20}{c}} 1&0&0&0 \end{array}]^{\text{T}}} + E{[\begin{array}{*{20}{c}} 0&0&0&0 \end{array}]^{\text{T}}} $$ (30)

      A dual quaternion $Q$ such that $\left\| Q \right\| = I$ is called a unit dual quaternion.

    • Both the rotation and translation of a frame $\{ H\} $ relative to a frame $\{ G\} $ can be represented by the unit dual quaternion

      $$ {}_H^GT = {}_H^G\tilde r + E\;{}_H^G\tilde t $$ (31)

      wherein ${}_H^G\tilde r$ is an unit quaternion representing rotation, which can be found by using (13) and

      $$ {}_H^G\tilde t = \frac{1}{2}\left[ {\begin{array}{*{20}{c}} 0 \\ {{}^G{{{\mathit{\boldsymbol{p}}}}_H}} \end{array}} \right]{}_H^G\tilde r $$ (32)

      Equation (32) is a quaternion which represents translation of $\left\{ H \right\}$ relative to $\left\{ G \right\}$ by a vector ${}^G{{{\mathit{\boldsymbol{p}}}}_H}$. Given $_H^GT$, we may find

      $$ \left[ {\begin{array}{*{20}{c}} 0 \\ {{}^G{{{\mathit{\boldsymbol{p}}}}_H}} \end{array}} \right] = 2{}_H^G\tilde t{}_H^G{\tilde r^*} = 2\bar D\left[\kern-0.15em\left[ {_H^GT} \right]\kern-0.15em\right]\bar R{\left[\kern-0.15em\left[ {_H^GT} \right]\kern-0.15em\right]^*} $$ (33)

      Let $_G^HT$ represent the inverse transformation to the one described by $_H^GT$, then

      $$ _G^HT = {}_H^G{T^*} $$ (34)

      A unit dual quaternion, which describes only frame rotation by an angle $\varphi $ about an axis represented by an unit vector ${{\mathit{\boldsymbol{\hat a}}}}$, may be expressed as

      $$ {T_R}\left[\kern-0.15em\left[ {{{\mathit{\boldsymbol{\hat a}}}},\varphi } \right]\kern-0.15em\right] = \left[ {\begin{array}{*{20}{c}} {\cos \frac{\varphi }{2}} \\ {{{\mathit{\boldsymbol{\hat a}}}}\sin \frac{\varphi }{2}} \end{array}} \right] + E{[\begin{array}{*{20}{c}} 0&0&0&0 \end{array}]^{\text{T}}} $$ (35)

      An unit dual quaternion, which represents only a translation along ${{\mathit{\boldsymbol{\hat a}}}}$ by a distance $p$, is given by

      $$ {T_T}\left[\kern-0.15em\left[ {{{\mathit{\boldsymbol{\hat a}}}},p} \right]\kern-0.15em\right] = {[\begin{array}{*{20}{c}} 1&0&0&0 \end{array}]^{\text{T}}} + E\frac{1}{2}\left[ {\begin{array}{*{20}{c}} 0 \\ {{{\mathit{\boldsymbol{\hat a}}}}p} \end{array}} \right] $$ (36)

      Let ${}^H{{\mathit{\boldsymbol{a}}}} \in {\mathbb{R}^{3 \times 1}}$ and ${}^H{{\mathit{\boldsymbol{b}}}} \in {\mathbb{R}^{3 \times 1}}$ be free vectors written with respect to a frame $\{ H\} $ and

      $$ {}^HQ = \left[ {\begin{array}{*{20}{c}} 0 \\ {{}^H{{\mathit{\boldsymbol{a}}}}} \end{array}} \right] + E\left[ {\begin{array}{*{20}{c}} 0 \\ {{}^H{{\mathit{\boldsymbol{b}}}}} \end{array}} \right] $$ (37)

      then we may map this dual quaternion into

      $$ {}^GQ = \left[ {\begin{array}{*{20}{c}} 0 \\ {{}^G{{\mathit{\boldsymbol{a}}}}} \end{array}} \right] + E\left[ {\begin{array}{*{20}{c}} 0 \\ {{}^G{{\mathit{\boldsymbol{b}}}}} \end{array}} \right] $$ (38)

      which is written in terms of frame $\{ G\} $, using the transformation

      $$ \begin{gathered} {}_H^G{T_\varrho }\left[\kern-0.15em\left[ {{}^HQ} \right]\kern-0.15em\right] = {}^GQ = \bar R\left[\kern-0.15em\left[ {_H^GT} \right]\kern-0.15em\right]\bar R\left[\kern-0.15em\left[ {{}^HQ} \right]\kern-0.15em\right]\bar R{\left[\kern-0.15em\left[ {_H^GT} \right]\kern-0.15em\right]^*} + \\ E\;\bar R\left[\kern-0.15em\left[ {_H^GT} \right]\kern-0.15em\right]\bar D\left[\kern-0.15em\left[ {{}^HQ} \right]\kern-0.15em\right]\bar R{\left[\kern-0.15em\left[ {_H^GT} \right]\kern-0.15em\right]^*} \\ \end{gathered} $$ (39)

      where $_H^GT$ is a unit dual quaternion which describes a pose (position and orientation) of $\{ H\} $ with respect to $\{ G\} $.

    • This section presents direct and inverse velocity kinematics of a multi-arm free-floating robot. An example of the robot architecture with basic symbol definitions is depicted in Fig. 1. In the case of vectors denoting a position or velocity relative to an inertial frame $\{ N\} $, superscripts and subscripts $N$ will be omitted.

      Figure 1.  An example of the robot architecture

    • Assume that frame $\{ 0\} $ is arbitrarily affixed to the base satellite. Let be a vector pointing the origin of $\{ 0\} $, and be the orientation of $\{ 0\} $, wherein ${\psi _{10}}$ is roll, ${\psi _{20}}$ is pitch and ${\psi _{30}}$ is yaw; also let both ${{{\mathit{\boldsymbol{p}}}}_0}$ and ${{{\mathit{\boldsymbol{\psi }}}}_0}$ be expressed in the inertial frame $\{ N\} $. We define

      $$ {{\mathit{\boldsymbol{ \boldsymbol{\varPhi} }}}_0} = \left[ {\begin{array}{*{20}{c}} {{{{\mathit{\boldsymbol{p}}}}_0}} \\ {{{{\mathit{\boldsymbol{\psi }}}}_0}} \end{array}} \right] $$ (40)

      Assume that unit dual quaternion ${}_0^NT$ represents position and orientation of the base satellite frame $\left\{ 0 \right\}$ relative to the inertial reference frame $\{ N\} $ and

      $$ {}_0^NT = {}_0^N\tilde r + E{}_0^N\tilde t $$ (41)

      where the quaternion representing translation of frame $\{ 0\} $ relative to $\{ N\} $ is given by

      $$ {}_0^N\tilde t = \frac{1}{2}\left[ {\begin{array}{*{20}{c}} 0 \\ {{{{\mathit{\boldsymbol{p}}}}_0}} \end{array}} \right]{}_0^N\tilde r $$ (42)

      and the quaternion ${}_0^N\tilde r$ representing rotation of $\{ 0\} $ relative to $\{ N\} $ may be found using (13) and ${{{\mathit{\boldsymbol{\psi }}}}_0}$.

      Suppose that frame $\{ ij\} $ is fixed to $i{\text{ - th}}$ joint of $j{\text{ - th}}$ manipulator (see Fig. 1) and defined by unit vector triad $\{ {{{\mathit{\boldsymbol{\hat a}}}}_{1ij}},{{{\mathit{\boldsymbol{\hat a}}}}_{2ij}},{{{\mathit{\boldsymbol{\hat a}}}}_{3ij}}\} $. Further, assume that ${{{\mathit{\boldsymbol{\hat a}}}}_{3ij}}$ is coincident with the axis of $i{\text{ - th}}$ joint of $j{\text{ - th}}$ manipulator and ${{{\mathit{\boldsymbol{\hat a}}}}_{1ij}}$ is coincident with mutually perpendicular line connecting the axes of $i{\text{ - th}}$and $(i + 1){\text{ - th}}$ joints of $j{\text{ - th}}$ manipulator. Such an assignment of frames is fully consistent with the convention used in [11]. Let us assume that unit dual quaternion ${}_{ij}^{i - 1|j}T$ describes orientation of $\{ ij\} $ relative to frame $\{ i - 1|j\} $. Then, ${}_{ij}^{i - 1|j}T$ can be formulated as a function of four Denavit-Hartenberg parameters: link length ${l_{i - 1|j}}$, link twist angle ${\alpha _{i - 1|j}}$, joint offset ${d_{ij}}$ and joint angle ${\theta _{ij}}$:

      $$ \begin{gathered} {}_{ij}^{i - 1|j}T = {T_R}\left[\kern-0.15em\left[ {{}^{i - 1|j}{{{{\mathit{\boldsymbol{\hat a}}}}}_{1|i - 1|j}},{\alpha _{i - 1|j}}} \right]\kern-0.15em\right]{T_T}\left[\kern-0.15em\left[ {{}^{i - 1|j}{{{{\mathit{\boldsymbol{\hat a}}}}}_{1|i - 1|j}},{l_{i - 1|j}}} \right]\kern-0.15em\right] \\ {T_R}\left[\kern-0.15em\left[ {{}^{ij}{{{{\mathit{\boldsymbol{\hat a}}}}}_{3ij}},{\theta _{ij}}} \right]\kern-0.15em\right]{T_T}\left[\kern-0.15em\left[ {{}^{ij}{{{{\mathit{\boldsymbol{\hat a}}}}}_{3ij}},{d_{ij}}} \right]\kern-0.15em\right] \\ \end{gathered} $$ (43)

      where and can be found by using (35) and (36), respectively.

      A pose of $i{\text{ - th}}$ joint of $j{\text{ - th}}$ manipulator relative to $w{\text{ - th}}$ joint of the same manipulator, for $w < i$, is given by

      $$ {}_{ij}^{wj}T = {}_{w + 1|j}^{wj}T{}_{w + 2|j}^{w + 1|j}T \ldots {}_{i - 1|j}^{i - 2|j}T{}_{ij}^{i - 1|j}T = \prod\limits_{k = w + 1}^i {{}_{kj}^{k - 1|j}T} $$ (44)

      where ${}_{kj}^{k - 1|j}T$ can be found by using (43). If $w = i$, then ${}_{ij}^{wj}T = I$, given by (30). For $w = 0$, we have ${}_{ij}^{wj}T = {}_{ij}^0T$. A pose of $i{\text{ - th}}$ joint of $j{\text{ - th}}$ manipulator, expressed in the inertial frame $\{ N\} $ is given by

      $$ {}_{ij}^NT = {}_o^NT\;{}_{ij}^oT $$ (45)

      Let ${n_j}$ denote the number of joints of $j{\text{ - th}}$ manipulator and frame $\{ Ej\} $ be rigidly fixed to the end-effector of this manipulator. Assume that ${}_{Ej}^{{n_j}j}T$ is a unit dual quaternion, describing pose of $\{ Ej\} $ in the frame of the last joint $\{ {n_j}j\} $ (wrist frame), then the direct kinematics of $j{\text{ - th}}$ end-effector may be written as

      $$ {}_{Ej}^NT = {}_{{n_j}j}^NT\;{}_{Ej}^{{n_j}j}T $$ (46)

      where ${}_{Ej}^NT$ describes the pose of the end-effector with respect to the inertial frame $\{ N\} $ and ${}_{{n_j}j}^NT$ can be found by using (45).

    • Both the linear velocity ${}^{ij}{{\mathit{\boldsymbol{ \boldsymbol{v} }}}_{ij}}$ as well as the angular velocity ${}^{ij}{{\mathit{\boldsymbol{ \boldsymbol{\omega } }}}_{ij}}$ of $i{\text{ - th}}$ joint of $j{\text{ - th}}$ manipulator, relative to the inertial frame $\{ N\} $, may be expressed in the joint frame $\{ ij\} $ itself by a dual quaternion

      $$ {}^{ij}{V_{ij}} = \left[ {\begin{array}{*{20}{c}} 0 \\ {{}^{ij}{{\mathit{\boldsymbol{ \boldsymbol{\omega } }}}_{ij}}} \end{array}} \right] + E\left[ {{{\begin{array}{*{20}{c}} 0 \\ {{}^{ij}{\mathit{\boldsymbol{ \boldsymbol{v} }}}} \end{array}}_{ij}}} \right] $$ (47)

      Define a $\zeta \times 1$ joint vector for $j{\text{ - th}}$ manipulator,

      $$ {{\mathit{\boldsymbol{ \boldsymbol{\varTheta} }}}_{\zeta j}} = {[\begin{array}{*{20}{c}} {{\nu _{1j}}}&{{\nu _{2j}}}& \cdots &{{\nu _{\zeta j}}} \end{array}]^{\text{T}}} $$ (48)

      where ${\nu _{wj}} = {d_{wj}}$ if $w{\text{ - th}}$ joint is prismatic and ${\nu _{wj}} = {\theta _{wj}}$ if the joint is revolute.

      Suppose that the frame $\{ X\} $ is rigidly fixed relative to ${\zeta _X}{\text{ - th}}$ body of $j{\text{ - th}}$ manipulator and the dual velocity of $\{ X\} $ written in this frame itself and relative to the inertial frame $\{ N\} $ is given by

      $$ {}^X{V_X} = {}^X{{{\mathit{\boldsymbol{J}}}}_{X\left\langle 0 \right\rangle }}{{\mathit{\boldsymbol{ \boldsymbol{\dot \varPhi} }}}_0} + {}^X{{{\mathit{\boldsymbol{J}}}}_{X\left\langle M \right\rangle }}{{\mathit{\boldsymbol{ \boldsymbol{\dot \varTheta} }}}_{{\zeta _X}j}} $$ (49)

      where ${}^X{{{\mathit{\boldsymbol{J}}}}_{X\left\langle 0 \right\rangle }}$ is a $1 \times 6$ Jacobian matrix of dual quaternions, which is related to the velocity of $\{ X\} $ caused by the motion of the base satellite,

      $$ \begin{gathered} {}^X{{{\mathit{\boldsymbol{J}}}}_{X\left\langle 0 \right\rangle }} = \\ \left[ {{}^X{J_{X\left\langle {p10} \right\rangle }}{}^X{J_{X\left\langle {p20} \right\rangle }}{}^X{J_{X\left\langle {p30} \right\rangle }}{}^X{J_{X\left\langle {\psi 10} \right\rangle }}{}^X{J_{X\left\langle {\psi 20} \right\rangle }}{}^X{J_{X\left\langle {\psi 30} \right\rangle }}} \right] \\ \end{gathered} $$ (50)

      and ${}^X{{{\mathit{\boldsymbol{J}}}}_{X\langle M\rangle }}$ is a $1 \times {\zeta _X}$ Jacobian matrix of dual quaternions, which is related to the velocity of $\{ X\} $ caused by motion of the joints of j-th manipulator

      $$ \begin{gathered} {}^X{{{\mathit{\boldsymbol{J}}}}_{X\langle M\rangle }} = \\ \left[ {\begin{array}{*{20}{c}} {{}^X{J_{X\langle \nu 1j\rangle }}}&{{}^X{J_{X\langle \nu 2j\rangle }}}& \cdots &{{}^X{J_{X\langle \nu {\zeta _X}j\rangle }}} \end{array}} \right] \\ \end{gathered} $$ (51)

      Now, suppose that frame $\{ Y\} $ is fixed relative to the ${\zeta _Y}$-th body of j-th manipulator, whereas ${\zeta _Y} \geqslant {\zeta _X}$ and ${\zeta _Y} \geqslant 1$. The dual velocity of $\{ Y\} $, expressed in frame $\{ Z\} $ and relative to $\{ N\} $ may be found by

      $$ {}^Z{V_Y} = {}^Z{{{\mathit{\boldsymbol{J}}}}_{Y\langle 0\rangle }}{{\mathit{\boldsymbol{ \boldsymbol{\dot \varPhi} }}}_0} + {}^Z{{{\mathit{\boldsymbol{J}}}}_{Y\langle M\rangle }}{{\mathit{\boldsymbol{ \boldsymbol{\dot \varTheta} }}}_{{\zeta _Y}j}} $$ (52)

      where

      $$ \begin{gathered} {}^Z{{{\mathit{\boldsymbol{J}}}}_{Y\langle 0\rangle }} = \\ {\left[ {{}^Z{J_{Y\langle p10\rangle }}{}^Z{J_{Y\langle p20\rangle }}{}^Z{J_{Y\langle p30\rangle }}{}^Z{J_{Y\langle \psi 10\rangle }}{}^Z{J_{Y\langle \psi 20\rangle }}{}^Z{J_{Y\langle \psi 30\rangle }}} \right]^T} \\ \end{gathered} $$ (53)

      wherein, for $c \in \left\{ {1,2,3} \right\}$,

      $$ {}^Z{J_{Y\langle pc0\rangle }} = {}_X^Z{T_\varrho }\left[\kern-0.15em\left[ {{}^X{J_{X\langle pc0\rangle }}} \right]\kern-0.15em\right] $$ (54)
      $$ {}^Z{J_{Y\langle \psi c0\rangle }} = {}_X^Z{T_\varrho }\left[\kern-0.15em\left[ {{}^X{J_{X\langle \psi c0\rangle }} + E\left[ {\begin{array}{*{20}{c}} 0 \\ {{}^X{{{{\mathit{\boldsymbol{\hat a}}}}}_S} \times {}^X{{{\mathit{\boldsymbol{p}}}}_Y}} \end{array}} \right]} \right]\kern-0.15em\right] $$ (55)

      whereas, ${}^X{{{\mathit{\boldsymbol{\hat a}}}}_S}$ is a unit vector directing the axis of rotation of the base satellite relative to the inertial frame $\{ N\} $ and ${}^X{{{\mathit{\boldsymbol{p}}}}_Y}$ is a vector pointing the origin of frame $\{ Y\} $. Note that both ${}^X{{{\mathit{\boldsymbol{\hat a}}}}_S}$ and ${}^X{{{\mathit{\boldsymbol{p}}}}_Y}$ are written in the frame $\{ X\} $. Using the assumed way of orientation description, the subscript $S$ may be replaced with $cN$. Meanwhile,

      $$ {}^Z{{{\mathit{\boldsymbol{J}}}}_{Y\langle M\rangle }} = \left[ {\begin{array}{*{20}{c}} {{}^Z{J_{Y\langle \nu 1j\rangle }}}&{{}^Z{J_{Y\langle \nu 2j\rangle }}}& \cdots &{{}^Z{J_{Y\langle \nu {\zeta _Y}j\rangle }}} \end{array}} \right] $$ (56)

      For $w \in \{ 1, \cdots ,{\zeta _Y}\} $, if w-th joint is prismatic, then

      $$ {}^Z{J_{Y\langle \nu wj\rangle }} = {}_X^Z{T_\varrho }\left[\kern-0.15em\left[ {{}^X{J_{X\langle \nu wj\rangle }}} \right]\kern-0.15em\right] $$ (57)

      If $w$-th joint is revolute, then

      $$ {}^Z{J_{Y\langle \nu wj\rangle }} = {}_X^Z{T_\varrho }\left[\kern-0.15em\left[ {{}^X{J_{X\langle \nu wj\rangle }} + E\left[ {\begin{array}{*{20}{c}} 0 \\ {{}^X{{{{\mathit{\boldsymbol{\hat a}}}}}_L} \times {}^X{{{\mathit{\boldsymbol{p}}}}_Y}} \end{array}} \right]} \right]\kern-0.15em\right] $$ (58)

      where ${}^X{{{\mathit{\boldsymbol{\hat a}}}}_L}$ is an unit vector directing the axis of $w{\text{ - th}}$ joint and expressed in frame $\{ X\} $. Using the assumed way of joint frames assignment, the subscript $L$ may be replaced with $3wj$.

      For the dual velocity equations, we need to obtain $c{\text{ - th}}$ axis of rotation of the base satellite relative to an inertial frame, expressed in the base frame, for $c \in \{ 1,2,3\} $. This axis is described by a unit vector ${}^0{{{\mathit{\boldsymbol{\hat a}}}}_{cN}}$, directing the $c{\text{ - th}}$ axis of the inertial frame $\{ N\} $ and expressed in the main base frame $\{ 0\} $, such that

      $$ \left[ {\begin{array}{*{20}{c}} 0 \\ {{}^0{{{{\mathit{\boldsymbol{\hat a}}}}}_{cN}}} \end{array}} \right] = {}_N^0\tilde r\left[ {\begin{array}{*{20}{c}} 0 \\ {{{{{\mathit{\boldsymbol{\hat a}}}}}_{cN}}} \end{array}} \right]{}_N^0{\tilde r^*} $$ (59)

      where ${{{\mathit{\boldsymbol{\hat a}}}}_{cN}}$ is the $c{\text{ - th}}$ axis of $\{ N\} $ written in this frame itself and ${}_N^0\tilde r = {}_0^N{\tilde r^*}$. In (54) and (55), for $X = 0$ we have and ${}^0{J_{0\left\langle {\psi c0} \right\rangle }} = $ , respectively.

      For $w \leqslant i$, let . If $X = ij$ and $w = 0$, then ${}_{wj}^{ij}\tilde r = {}_0^X\tilde r$, we may obtain the unit vector

      $$ \left[ {\begin{array}{*{20}{c}} 0 \\ {{}^X{{{{\mathit{\boldsymbol{\hat a}}}}}_S}} \end{array}} \right] = {}_0^X\tilde r\left[ {\begin{array}{*{20}{c}} 0 \\ {{}^0{{{{\mathit{\boldsymbol{\hat a}}}}}_{cN}}} \end{array}} \right]{}_0^X{\tilde r^*} $$ (60)

      According to the assumed convention of joint frames assignment, we have .

      In (57) and (58), for $X = wj$, we have

      $$ {}^X{J_{X\left\langle {\nu wj} \right\rangle }} = {}^{wj}{J_{wj\left\langle {dwj} \right\rangle }} = E\left[ {\begin{array}{*{20}{c}} 0 \\ {{}^{wj}{{{{\mathit{\boldsymbol{\hat a}}}}}_{3wj}}} \end{array}} \right] $$ (61)
      $$ {}^X{J_{X\left\langle {\nu wj} \right\rangle }} = {}^{wj}{J_{wj\left\langle {\theta wj} \right\rangle }} = \left[ {\begin{array}{*{20}{c}} 0 \\ {{}^{wj}{{{{\mathit{\boldsymbol{\hat a}}}}}_{3wj}}} \end{array}} \right] $$ (62)

      respectively.

      For $X = ij$, we may find the unit quaternion directing the axis of $w{\text{ - th}}$ joint of $j$-th manipulator, expressed in the frame of $i{\text{ - th}}$ joint of the same manipulator,

      $$ \left[ {\begin{array}{*{20}{c}} 0 \\ {{}^X{{{{\mathit{\boldsymbol{\hat a}}}}}_L}} \end{array}} \right] = {}_{wj}^{ij}\tilde r\left[ {\begin{array}{*{20}{c}} 0 \\ {{}^{wj}{{{{\mathit{\boldsymbol{\hat a}}}}}_{3wj}}} \end{array}} \right]{}_{wj}^{ij}{\tilde r^*} $$ (63)

      In (55) and (58), if $X = wj$ and $Y = ij$, then

      $$ \left[ {\begin{array}{*{20}{c}} 0 \\ {{}^X{{{\mathit{\boldsymbol{p}}}}_Y}} \end{array}} \right] = 2\bar D\left[\kern-0.15em\left[ {{}_{ij}^{wj}T} \right]\kern-0.15em\right]\bar R{\left[\kern-0.15em\left[ {{}_{ij}^{wj}T} \right]\kern-0.15em\right]^*} $$ (64)

      This includes the case of $w = 0$.

      The velocity of an arbitrary robot component can be calculated using Jacobian matrix elements given by (54), (55), (57) and (58); whereas the symbols used in these equations are substituted according to Table 1, for prismatic joints the symbol $\nu $ is replaced with $d$ and in the case of a revolute joint $\nu $ is replaced with $\theta $. A dual quaternion ${}_X^ZT$ for the transformation ${}_X^Z{T_\varrho }$ can be calculated using methods from Section 2.1. However, some Jacobian elements, e.g., ${J_{Ej\langle pc0\rangle }}$, ${J_{Ej\langle \psi c0\rangle }}$ and ${J_{Ej\langle \nu wj\rangle }}$ in the end-effector's velocity equation, can be calculated after ${}^{{n_j}j}{J_{{n_j}j\langle pc0\rangle }}$, ${}^{{n_j}j}{J_{{n_j}j\left\langle {\psi c0} \right\rangle }}$ and ${}^{{n_j}j}{J_{{n_j}j\langle \nu wj\rangle }}$ are found first. Let

      Table 1.  Symbols for the partial derivatives equations

      Result $\nu $ Equation nr ${\zeta _Y}$ $X$ $Y$ $Z$
      ${}^{ij}{J_{ij\langle \nu c0\rangle }}$ $p$ (54) $i$ 0 $ij$ $ij$
      $\psi $ (55)
      ${}^{ij}{J_{ij\langle \nu wj\rangle }}$ $d$ (57) $wj$
      $\theta $ (58)
      ${J_{Ej\langle \nu c0\rangle }}$ $p$ (54) ${n_j}$ ${n_j}j$ $Ej$ $N$
      $\psi $ (55)
      ${J_{Ej\langle \nu wj\rangle }}$ $d$ (57)
      $\theta $ (58)
      ${}^{C0}{J_{C0\langle \nu c0\rangle }}$ $p$ (54) 0 0 $C0$ $C0$
      $\psi $ (55)
      ${}^{Cij}{J_{Cij\langle \nu c0\rangle }}$ $p$ (54) $i$ $ij$ $Cij$ $Cij$
      $\psi $ (55)
      ${}^{Cij}{J_{Cij\langle \nu wj\rangle }}$ $d$ (57)
      $\theta $ (58)
      ${}^{CEj}{J_{CEj\langle \nu c0\rangle }}$ $p$ (54) ${n_j}$ ${n_j}j$ $CEj$ $CEj$
      $\psi $ (55)
      ${}^{CEj}{J_{CEj\langle \nu wj\rangle }}$ $d$ (57)
      $\theta $ (58)
      $$ {\mathit{\boldsymbol{ \boldsymbol{\varTheta} }}} = {[\begin{array}{*{20}{c}} {{\mathit{\boldsymbol{ \boldsymbol{\varTheta} }}}_1^{\text{T}}}&{{\mathit{\boldsymbol{ \boldsymbol{\varTheta} }}}_2^{\text{T}}}& \cdots &{{\mathit{\boldsymbol{ \boldsymbol{\varTheta} }}}_{{n_M}}^{\text{T}}} \end{array}]^{\text{T}}} $$ (65)

      where ${{\mathit{\boldsymbol{ \boldsymbol{\varTheta} }}}_j} = {{\mathit{\boldsymbol{ \boldsymbol{\varTheta} }}}_{{n_j}j}}$ and ${n_M}$ is the number of manipulators. Assuming that ${{\mathit{\pmb{0}}}_{1 \times {n_j}}}$ is a row vector of zero dual quaternions, the direct velocity kinematics of all end-effectors of a multi-arm free floating robot can be expressed as

      $$ \begin{gathered} \overbrace {\left[ {\begin{array}{*{20}{c}} {{V_{E1}}} \\ {{V_{E2}}} \\ \vdots \\ {{V_{E{n_M}}}} \end{array}} \right]}^{{{{\mathit{\boldsymbol{V}}}}_E}} = \overbrace {\left[ {\begin{array}{*{20}{c}} {{{{\mathit{\boldsymbol{J}}}}_{E1\langle 0\rangle }}} \\ {{{{\mathit{\boldsymbol{J}}}}_{E2\langle 0\rangle }}} \\ \vdots \\ {{{{\mathit{\boldsymbol{J}}}}_{E{n_M}\langle 0\rangle }}} \end{array}} \right]}^{{{{\mathit{\boldsymbol{J}}}}_{E\langle 0\rangle }}}{\mathop {\mathit{\boldsymbol{ \boldsymbol{\varPhi} }}}\limits^. _0} + \\ \overbrace {\left[ {\begin{array}{*{20}{c}} {{{{\mathit{\boldsymbol{J}}}}_{E1\langle M\rangle }}}&{{{\mathit{\pmb{0}}}_{1 \times {n_2}}}}& \ldots &{{{\mathit{\pmb{0}}}_{1 \times {n_{{n_M}}}}}} \\ {{{\mathit{\pmb{0}}}_{1 \times {n_1}}}}&{{{{\mathit{\boldsymbol{J}}}}_{E2\langle M\rangle }}}& \ldots &{{{\mathit{\pmb{0}}}_{1 \times {n_{{n_M}}}}}} \\ \vdots & \vdots & \ddots & \vdots \\ {{{\mathit{\pmb{0}}}_{1 \times {n_1}}}}&{{{\mathit{\pmb{0}}}_{1 \times {n_2}}}}& \ldots &{{{{\mathit{\boldsymbol{J}}}}_{E{n_M}\langle M\rangle }}} \end{array}} \right]}^{{{{\mathit{\boldsymbol{J}}}}_{E\left\langle M \right\rangle }}}\mathop {\mathit{\boldsymbol{ \boldsymbol{\varTheta} }}}\limits^{\bf{.}} \\ \end{gathered} $$ (66)
    • The inverse velocity kinematics of a free floating robot need to be solved with consideration of the system dynamical parameters.

      Let frame $\{ B\} $ be rigidly fixed to a body $B$ and origin of frame $\{ CB\} $ be coincident with the center of mass of $B$. Let${m_B}$ be the mass of body $B$ and ${}^{CB}{I_{ccB}}$ be the mass moment of inertia of $B$, where $c \in \{ 1,2,3\} $ is an axis number. Now define the dual inertia matrix of the body $B$ relative to $\{ CB\} $ as

      $$ \begin{gathered} {}^{CB}{N_B} = \left[ {\begin{array}{*{20}{c}} 0&0&0&0 \\ 0&{{m_B}}&0&0 \\ 0&0&{{m_B}}&0 \\ 0&0&0&{{m_B}} \end{array}} \right]\frac{{\text{d}}}{{{\text{d}}E}} + \\ E\left[ {\begin{array}{*{20}{c}} 0&0&0&0 \\ 0&{{}^{CB}{I_{11B}}}&0&0 \\ 0&0&{{}^{CB}{I_{22B}}}&0 \\ 0&0&0&{{}^{CB}{I_{33B}}} \end{array}} \right] \\ \end{gathered} $$ (67)

      where $\frac{{\text{d}}}{{{\text{d}}E}}$ is a differential operator invented in [10].

      Define a matrix of dual quaternions

      $$ {{{\mathit{\boldsymbol{N}}}}_{\langle 0\rangle }} = \left[ {\begin{array}{*{20}{c}} {\begin{array}{*{20}{c}} {{N_{\langle p10\rangle }}} \\ {{N_{\langle p20\rangle }}} \\ {{N_{\langle p30\rangle }}} \end{array}} \\ {\begin{array}{*{20}{c}} {{N_{\langle \psi 10\rangle }}} \\ {{N_{\langle \psi 20\rangle }}} \\ {{N_{\langle \psi 30\rangle }}} \end{array}} \end{array}} \right] $$ (68)

      where for $\nu \in \{ p,\psi \} $ and $B \in \{ 0,ij,Ej\} $,

      $$ \begin{gathered} {N_{\langle \nu c0\rangle }} = {}_{C0}^N{T_\varrho }\left[\kern-0.15em\left[ {{}^{C0}N_0^{C0}{J_{C0\langle \nu c0\rangle }}} \right]\kern-0.15em\right] + \\ \sum\limits_{j = 1}^{{n_M}} {\sum\limits_{i = 1}^{{n_j}} {{}_{Cij}^N{T_\varrho }} } \left[\kern-0.15em\left[ {{}^{Cij}N_{ij}^{Cij}{J_{Cij\langle \nu c0\rangle }}} \right]\kern-0.15em\right] + \\ \sum\limits_{j = 1}^{{n_M}} {{}_{CEj}^N{T_\varrho }} \left[\kern-0.15em\left[ {{}^{CEj}N_{Ej}^{CEj}{J_{CEj\langle \nu c0\rangle }}} \right]\kern-0.15em\right] \\ \end{gathered} $$ (69)

      Note that the products of the dual matrices and Jacobian elements are defined according to (23).

      Also, define

      $$ {{{\mathit{\boldsymbol{N}}}}_{\langle Mj\rangle }} = [\begin{array}{*{20}{c}} {{N_{\langle \nu 1j\rangle }}}&{{N_{\langle \nu 2j\rangle }}}& \cdots &{{N_{\langle \nu {n_j}j\rangle }}} \end{array}] $$ (70)

      where, for $w \in \{ 1, \cdots ,{n_j}\} $, if $w{\text{ - th}}$ joint is prismatic then the symbols $\nu w$ are replaced by $dw$, if the joint is revolute then $\nu w$ are replaced by $\theta w$, and

      $$ \begin{gathered} {N_{\langle \nu wj\rangle }} = \sum\limits_{i = w}^{{n_j}} {{}_{Cij}^N{T_\varrho }} \left[\kern-0.15em\left[ {{}^{Cij}N_{ij}^{Cij}{J_{Cij\langle \nu wj\rangle }}} \right]\kern-0.15em\right] + \\ {}_{CEj}^N{T_\varrho }\left[\kern-0.15em\left[ {{}^{CEj}N_{Ej}^{CEj}{J_{CEj\langle \nu wj\rangle }}} \right]\kern-0.15em\right] \\ \end{gathered} $$ (71)

      Note that the Jacobian elements can be calculated by using (54), (55), (57) and (58), whereas the symbols in these equations are substituted according to Table 1. Now, both the linear and angular momentum of the robot can be expressed by a dual momentum

      $$ M = {{{\mathit{\boldsymbol{N}}}}_{\langle 0\rangle }}{{\mathit{\boldsymbol{ \boldsymbol{\dot \varPhi} }}}_0} + {{{\mathit{\boldsymbol{N}}}}_{\langle M\rangle }}{\mathit{\boldsymbol{ \boldsymbol{\dot \varTheta} }}} $$ (72)

      where

      $$ {{{\mathit{\boldsymbol{N}}}}_{\langle M\rangle }} = [\begin{array}{*{20}{c}} {{{{\mathit{\boldsymbol{N}}}}_{\langle M1\rangle }}}&{{{{\mathit{\boldsymbol{N}}}}_{\langle M2\rangle }}}& \cdots &{{{{\mathit{\boldsymbol{N}}}}_{\langle M{n_M}\rangle }}} \end{array}] $$ (73)

      With the knowledge on initial dual momentum $M$ and joint velocities ${\mathit{\boldsymbol{ \boldsymbol{\dot \varTheta} }}}$, we may employ (72) to find

      $$ \begin{gathered} {\mathop {\mathit{\boldsymbol{ \boldsymbol{\varPhi} }}}\limits^{\bf{.}} _0} = \bar M{\left[\kern-0.15em\left[ {{{{\mathit{\boldsymbol{N}}}}_{\langle 0\rangle }}} \right]\kern-0.15em\right]^{ - 1}}\bar C\left[\kern-0.15em\left[ {M - {{{\mathit{\boldsymbol{N}}}}_{\langle M\rangle }}\mathop {\mathit{\boldsymbol{ \boldsymbol{\varTheta} }}}\limits^{\bf{.}} } \right]\kern-0.15em\right] = \\ \bar M{\left[\kern-0.15em\left[ {{{{\mathit{\boldsymbol{N}}}}_{\langle 0\rangle }}} \right]\kern-0.15em\right]^{ - 1}}\bar C\left[\kern-0.15em\left[ M \right]\kern-0.15em\right] - \\ \bar M{\left[\kern-0.15em\left[ {{{{\mathit{\boldsymbol{N}}}}_{\langle 0\rangle }}} \right]\kern-0.15em\right]^{ - 1}}\bar M\left[\kern-0.15em\left[ {{{{\mathit{\boldsymbol{N}}}}_{\langle M\rangle }}} \right]\kern-0.15em\right]\mathop {\mathit{\boldsymbol{ \boldsymbol{\varTheta} }}}\limits^{\bf{.}} \\ \end{gathered} $$ (74)

      where the transformations $\bar C$ and $\bar M$ are given by (25) and (27), respectively, and the superscript $^{ - 1}$ denotes an inverted matrix. Substituting (74) into (66), the fowling equation is obtained:

      $$ \begin{gathered} {{{\mathit{\boldsymbol{V}}}}_E} = \overbrace {\left( {{{{\mathit{\boldsymbol{J}}}}_{E\langle M\rangle }} - {{{\mathit{\boldsymbol{J}}}}_{E\langle 0\rangle }}\bar M{{\left[\kern-0.15em\left[ {{{{\mathit{\boldsymbol{N}}}}_{\langle 0\rangle }}} \right]\kern-0.15em\right]}^{ - 1}}\bar M\left[\kern-0.15em\left[ {{{{\mathit{\boldsymbol{N}}}}_{\langle M\rangle }}} \right]\kern-0.15em\right]} \right)}^{{{{\mathit{\boldsymbol{J}}}}_\mathcal{G}}}\mathop {\mathit{\boldsymbol{ \boldsymbol{\varTheta} }}}\limits^{\bf{.}} + \\ \underbrace {{{{\mathit{\boldsymbol{J}}}}_{E\langle 0\rangle }}\bar M{{\left[\kern-0.15em\left[ {{{{\mathit{\boldsymbol{N}}}}_{\langle 0\rangle }}} \right]\kern-0.15em\right]}^{ - 1}}\bar C\left[\kern-0.15em\left[ M \right]\kern-0.15em\right]}_{{{{\mathit{\boldsymbol{V}}}}_\mathcal{M}}} \\ \end{gathered} $$ (75)

      where ${{{\mathit{\boldsymbol{J}}}}_\mathcal{G}}$ is ${n_M} \times {n_M}$ generalized Jacobian matrix in the dual quaternion domain.

      In the case where each manipulator has exactly six joints, we may solve the inverse velocity kinematics by

      $$ \mathop {\mathit{\boldsymbol{ \boldsymbol{\varTheta} }}}\limits^{\bf{.}} = \bar M{\left[\kern-0.15em\left[ {{{{\mathit{\boldsymbol{J}}}}_\mathcal{G}}} \right]\kern-0.15em\right]^{ - 1}}\bar M\left[\kern-0.15em\left[ {{{{\mathit{\boldsymbol{V}}}}_E} - {{{\mathit{\boldsymbol{V}}}}_\mathcal{M}}} \right]\kern-0.15em\right] $$ (76)

      However, in a practical application, inversion of the Jacobian in the above equation is not feasible, especially when ${n_M} > 1$. It is recommended to obtain $\mathop {\mathit{\boldsymbol{ \boldsymbol{\varTheta} }}}\limits^{\bf{.}} $ by an employment of a linear equations solver.

    • To verify the obtained kinematic models, a computer simulation of kinematic control process is executed. The process is illustrated in Fig. 2. In this process, the inverse velocity kinematics solver given by (76) calculates joint variables rates, which are fed into the direct velocity kinematics model (75). Then we may analyze the error between the desired and the obtained velocity of end-effectors. The kinematic models require the current base pose, hence the model of base velocity (74) is introduced. A robot with two different manipulators has been considered. Both the manipulators have six degrees of freedom and identical end-effectors.

      Figure 2.  Simulated control process

      The control system has been implemented as a library in C++ language, with an application of the Eigen library [12] for solution of sets of linear equations. 32-bit representation of real numbers has been used.

      Data such as parameters of the simulated robot base, parameters of the links and end-effectors of the robot, initial conditions, and desired velocity of end-effectors, are given in [13].

      The errors between the desired and the obtained velocities are shown in Fig. 3. For some example, the calculated joint velocities result in position of manipulator 2 end-effector depicted in Fig. 4. Note that the position is given relative to the initial poses.

      Figure 3.  Velocity error

      Figure 4.  Position of manipulator 2 end-effector

    • This paper presents methods for solution of the direct and inverse velocity kinematics of a free floating robot. The methods are based on the concept of generalized Jacobian matrix, which enables a consideration of the dynamical interactions between manipulators and the base satellite.

      The presented methods may be applied to robots with an arbitrary number of manipulators, where the manipulators may have an arbitrary order of prismatic and revolute joints. The kinematic models are functions of parameters widely used in robotics (such as Denavit–Hartenberg parameters). The methods may be used for manipulators with nonconventional joint twist angles.

      However, approaches based on the generalized Jacobians are sensitive to dynamical singularities. Therefore, they require a supervisory system for an intelligent trajectory via-points planning.

      Computational efficiency, especially important in the systems with complicated kinematics, has been improved by an application of dual quaternions for body pose representation.

      The correctness of the methods is demonstrated by a computer simulation, with consideration of practical robot parameters. The used simulation software enables observation of many important parameters, such as end-effectors' pose, velocity or the base displacement, which is useful in the design of a practical system.

参考文献 (13)

目录

    /

    返回文章
    返回