## Related terms:

- Numerical Library
- Recursion
- Domain Decomposition
- Inverse Dynamic Model
- Joint Acceleration
- Joint Position

## Motion control

W Khalil, E Dombre, in Modeling, Identification and Control of Robots, 2002

### 14.4.2.5 Practical computation of the computed torque control laws

The control laws [14.22] and [14.31] can be computed by the inverse dynamic Newton-Euler algorithm (§ 9.5) without requiring explicit knowledge of **A** and **H**. The algorithm provides the joint torques as a function of three arguments, namely the vectors of joint positions, velocities and accelerations. By comparing equations [14.2] and [14.22], we can conclude that:

- –
to compute the control law [14.22] (Figures 14.3 and Figure 14.4), the input arguments of the Newton-Euler algorithm should be:

- –
the joint position is equal to the current joint position

**q**;- –
the joint velocity is equal to the current joint velocity $\dot{\text{q}}$;

- –
the joint acceleration is equal to

**w**(t);

- –
to compute the control law[14.31], the input arguments of the Newton-Euler algorithm should be:

- –
the joint position is equal to the desired joint position

**q**^{d};- –
the joint velocity is equal to the desired joint velocity

**q**^{d};- –
the joint acceleration is equal to

**w**(t).

The computational cost of the computed torque control in the joint space is therefore more or less equal to the number of operations of the inverse dynamic model. As we stated in Chapter 9, the problem of on-line computation of this model at a sufficient rate is now considered solved (Chapter 9). Some industrial robot controllers offer a partial implementation of the computed torque control algorithm.

View chapterPurchase book

Read full chapter

URL:

https://www.sciencedirect.com/science/article/pii/B9781903996669500142

## Dynamic modeling of serial robots

W Khalil, E Dombre, in Modeling, Identification and Control of Robots, 2002

### 9.5.3 Practical form of the Newton-Euler algorithm

Since **J**_{j} and **MS**_{j} are constants when referred to their own link coordinates, the Newton-Euler algorithm can be efficiently computed by referring the velocities, accelerations, forces and moments to the local link coordinate system [Luh 80b]. The forward recursive equations become, for j = 1, …, n:

[9.84]${\text{\hspace{0.17em}}}^{\text{j}}{\text{\omega}}_{\text{j}-1}={\text{\hspace{0.17em}}}^{\text{j}}{\text{A}}_{\text{j}-1}{\text{\hspace{0.17em}}}^{\text{j}-1}{\text{\omega}}_{\text{j}-1}$

[9.85]${\text{\hspace{0.17em}}}^{\text{j}}{\text{\omega}}_{\text{j}}={\text{\hspace{0.17em}}}^{\text{j}}{\text{\omega}}_{\text{j}-1}+{\overline{\text{\sigma}}}_{\text{j}}\text{\hspace{0.17em}}{\dot{\text{q}}}_{\text{j}}{\text{\hspace{0.17em}}}^{\text{j}}{\text{a}}_{\text{j}}$

[9.86]${\text{\hspace{0.17em}}}^{\text{j}}{\dot{\text{\omega}}}_{\text{j}}={\text{\hspace{0.17em}}}^{\text{j}}{\text{A}}_{\text{j}-1}{\text{\hspace{0.17em}}}^{\text{j}-1}{\dot{\text{\omega}}}_{\text{j}-1}+{\overline{\text{\sigma}}}_{\text{j}}({\ddot{\text{q}}}_{\text{j}}{\text{\hspace{0.17em}}}^{\text{j}}{\text{a}}_{\text{j}}+{\text{\hspace{0.17em}}}^{\text{j}}{\text{\omega}}_{\text{j}-1}\times {\dot{\text{q}}}_{\text{j}}{\text{\hspace{0.17em}}}^{\text{j}}{\text{a}}_{\text{j}})$

[9.87]${\text{\hspace{0.17em}}}^{\text{j}}{\dot{\text{V}}}_{\text{j}}={\text{\hspace{0.17em}}}^{\text{j}}{\text{A}}_{\text{j}-1}({\text{\hspace{0.17em}}}^{\text{j}-1}{\dot{\text{V}}}_{\text{j}-1}+{\text{\hspace{0.17em}}}^{\text{j}-1}{\text{U}}_{\text{j}-1}{\text{\hspace{0.17em}}}^{\text{j}-1}{\text{P}}_{\text{j}})+{\text{\sigma}}_{\text{j}}({\ddot{\text{q}}}_{\text{j}}{\text{\hspace{0.17em}}}^{\text{j}}{\text{a}}_{\text{j}}+2{\text{\hspace{0.17em}}}^{\text{j}}{\text{\omega}}_{\text{j}-1}\times {\dot{\text{q}}}_{\text{j}}{\text{\hspace{0.17em}}}^{\text{j}}{\text{a}}_{\text{j}})$

[9.88]${\text{\hspace{0.17em}}}^{\text{j}}{\text{F}}_{\text{j}}={\text{M}}_{\text{j}}{\text{\hspace{0.17em}}}^{\text{j}}{\dot{\text{V}}}_{\text{j}}+{\text{\hspace{0.17em}}}^{\text{j}}{\text{U}}_{\text{j}}{\text{\hspace{0.17em}}}^{\text{j}}\text{M}{\text{S}}_{\text{j}}$

[9.89]${\text{\hspace{0.17em}}}^{\text{j}}{\text{M}}_{\text{j}}={\text{\hspace{0.17em}}}^{\text{j}}{\text{J}}_{\text{j}}+{\text{\hspace{0.17em}}}^{\text{j}}{\dot{\text{\omega}}}_{\text{j}}+{\text{\hspace{0.17em}}}^{\text{j}}{\text{\omega}}_{\text{j}}\times \left({\text{\hspace{0.17em}}}^{\text{j}}{\text{J}}_{\text{j}}{\text{\hspace{0.17em}}}^{\text{j}}{\text{\omega}}_{\text{j}}\right)+{\text{\hspace{0.17em}}}^{\text{j}}\text{M}{\text{S}}_{\text{j}}\times {\text{\hspace{0.17em}}}^{\text{j}}{\dot{\text{V}}}_{\text{j}}$

[9.90]${\text{\hspace{0.17em}}}^{\text{j}}{\text{U}}_{\text{j}}={\text{\hspace{0.17em}}}^{\text{j}}{\hat{\dot{\text{\omega}}}}_{\text{j}}+{\text{\hspace{0.17em}}}^{\text{j}}{\hat{\text{\omega}}}_{\text{j}}{\text{\hspace{0.17em}}}^{\text{j}}{\hat{\text{\omega}}}_{\text{j}}$

For a stationary base, the initial conditions are ${\text{\omega}}_{0}=0,\text{\hspace{0.17em}}\text{\hspace{0.17em}}{\dot{\text{\omega}}}_{0}=0\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{a}\text{n}\text{d}\text{\hspace{0.17em}}{\dot{\text{V}}}_{0}=-\text{g}$.

The use of^{j}**U**_{j} saves 21n multiplications and 6n additions in the computation of the inverse dynamic model of a general robot [Kleinfinger 86a].

It is to be noted that ${\text{\hspace{0.17em}}}^{\text{j}}{\dot{\text{V}}}_{\text{j}}$ means ${\text{\hspace{0.17em}}}^{\text{j}}{\text{A}}_{0}{\text{\hspace{0.17em}}}^{0}{\dot{\text{V}}}_{\text{j}}$, and not the time derivative of^{j}**V**_{j}, since ${\text{\hspace{0.17em}}}^{\text{j}}{\dot{\text{V}}}_{\text{j}}={\frac{\mathrm{d}}{\text{d}\text{t}}}^{\text{j}}{\text{V}}_{\text{j}}{+}^{\text{j}}{\text{\omega}}_{\text{j}}{\times}^{\text{j}}{\text{V}}_{\text{j}}$. On the contrary,${\text{\hspace{0.17em}}}^{\text{j}}{\dot{\text{\omega}}}_{\text{j}}$ is equal to the time derivative of ^{j}**ω**_{j}.

The backward recursive equations, for j = n, …, 1, are:

[9.91]${\text{\hspace{0.17em}}}^{\text{j}}{\text{f}}_{\text{j}}={\text{\hspace{0.17em}}}^{\text{j}}{\text{F}}_{\text{j}}+{\text{\hspace{0.17em}}}^{\text{j}}{\text{f}}_{\text{j}+1}+{\text{\hspace{0.17em}}}^{\text{j}}{\text{f}}_{\text{e}\text{j}}$

[9.92]${\text{\hspace{0.17em}}}^{\text{j}-1}{\text{f}}_{\text{j}}={\text{\hspace{0.17em}}}^{\text{j}-1}{\text{A}}_{\text{j}}{\text{\hspace{0.17em}}}^{\text{j}}{\text{f}}_{\text{j}}$

[9.93]${\text{\hspace{0.17em}}}^{\text{j}}{\text{m}}_{\text{j}}={\text{\hspace{0.17em}}}^{\text{j}}{\text{M}}_{\text{j}}+{\text{\hspace{0.17em}}}^{\text{j}}{\text{A}}_{\text{j}+1}{\text{\hspace{0.17em}}}^{\text{j}+1}{\text{m}}_{\text{j}+1}+{\text{\hspace{0.17em}}}^{\text{j}}{\text{P}}_{\text{j}+1}\times {\text{\hspace{0.17em}}}^{\text{j}}{\text{f}}_{\text{j}+1}+{\text{\hspace{0.17em}}}^{\text{j}}{\text{m}}_{\text{e}\text{j}}$

[9.94]${\text{\Gamma}}_{\text{j}}={\left({\text{\sigma}}_{\text{j}}{\text{\hspace{0.17em}}}^{\text{j}}{\text{f}}_{\text{j}}+{\overline{\text{\sigma}}}_{\text{j}}{\text{\hspace{0.17em}}}^{\text{j}}{\text{m}}_{\text{j}}\right)}^{\text{T}}{\text{\hspace{0.17em}}}^{\text{j}}{\text{a}}_{\text{j}}+{\text{F}}_{\text{s}\text{j}}\text{\hspace{0.17em}}\text{s}\text{i}\text{g}\text{n}\left({\dot{\text{q}}}_{\text{j}}\right)+{\text{F}}_{\text{v}\text{j}}\text{\hspace{0.17em}}{\dot{\text{q}}}_{\text{j}}+\text{I}{\text{a}}_{\text{j}}\text{\hspace{0.17em}}{\ddot{\text{q}}}_{\text{j}}$

The previous algorithm can be numerically programmed for a general serial robot. Its computational complexity is *O*(n), which means that the number of operations is linear in the number of degrees of freedom. However, as we will see in the next section, the use of the base inertial parameters in a customized symbolic algorithm considerably reduces the number of operations of the dynamic model.

View chapterPurchase book

Read full chapter

URL:

https://www.sciencedirect.com/science/article/pii/B9781903996669500099

## Creativity in Computing and DataFlow SuperComputing

L. Gan, ... G. Yang, in Advances in Computers, 2017

### 5.2 Algorithmic Offsetting

The identical rule to compute the fluxes on a common edge of two consecutive mesh elements (remarked in Section 5.1) offers us a big optimizing space by means of the streaming offsetting model. We thus propose an algorithmic offsetting method to simplify the Euler stencil kernel.

Algorithm 3—Part 1 shows a fragment of the State Reconstruction step to compute east-direction intermediate variables *qe*[0], *qe*[1], and west-direction intermediate variable *qw*[1]. We can figure out that computing *qe*[0] and *qw*[1] is applying an identical rule on different elements from input stream *x*, and computing *qe*[1] and *qe*[0] is applying similar rules on different elements. We further use Fig. 9 to illustrate the streaming pipelines that are deployed to compute the parts of *qe*[0] and *qw*[1] shown in bold in Algorithm 3—Part 1. The operations connected by solid pipelines are deployed to compute the part of *qe*[0] shown in bold, and the operations connected by dotted pipelines are deployed to compute the part of *qw*[1] shown in bold. Obviously, the operations in the two pipelines are identical, and the input elements for dotted pipeline are one time step backward of elements for solid pipeline. As a result, all the operations connected by dotted lines can be replaced by offsetting existing stream one time step backward (*offset(− 1)*). Similarly, we only need to compute the stream *qe*[0] in Algorithm 3. By offsetting stream *qe*[0] one time step backward, we can get the stream of *qw*[1] at current time step. As for *qe*[1], similar offsetting methods could also be applied with few modifications. The approach of algorithmic offsetting is shown in Algorithm 3—Part 2.

By applying algorithmic offsetting on both the State Reconstruction and Riemann Solver steps, we manage to eliminate 40% of the total floating operations (“ALG offsetting” row in Table 2).

Table 2. Number of Floating-Point Operations per Sweep of Euler

Part 1 | +, − | × | ÷ | Pow,Sqrt | Offset |
---|---|---|---|---|---|

Original ALG | 1192 | 697 | 170 | 48 | 132^{a} |

ALG offsetting | 619 | 549 | 76 | 21 | 30^{a} + 140^{b} |

Look-up table | 424 | 460 | 51 | 21 | 30^{a} + 140^{b} |

- a
- Offset operations on original input streams.
- b
- New offset operations generated after using ALG offsetting.

Algorithm 3

Demonstration of the Algorithmic Offsetting Method

(*q*_{e}[0], *q*_{e}[1], *q*_{w}[1] are intermediate variables in State Reconstruction of Euler algorithm)

__Part 1: Original code.__

*qe*[0] = **24*x[k,j,i] - (x[k,j,i+1]+x[k,j,i-1]+x[k,j+1,i]+x[k,j-1,i]+x[k+1,j,i]+x[k-1,j,i])** +

3*(x[k,j,i+1]+x[k,j,i-1]) - 2*(x[k,j,i+1]-x[k,j,i-1]);

*qe*[1] = 24*x[k,j,i+1] - (x[k,j,i+2]+x[k,j,i]+x[k,j+1,i+1]+x[k,j-1,i+1]+x[k+1,j,i+1]+x[k-1,j,i+1]) +

3*(x[k,j,i+2]+x[k,j,i]) + 2*(x[k,j,i+2]-x[k,j,i]);

*qw*[1] = **24*x[k,j,i-1] - (x[k,j,i]+x[k,j,i-2]+x[k,j+1,i-1]+x[k,j-1,i-1]+x[k+1,j,i-1]+x[k-1,j,i-1])** +

3*(x[k,j,i]+x[k,j,i-2]) - 2*(x[k,j,i]-x[k,j,i-2]);

__Part 2: Algorithmic offsetting method.__

*tmp*1 = 24*x[k,j,i]-(x[k,j,i+1]+x[k,j,i-1]+x[k,j+1,i]+x[k,j-1,i]+x[k+1,j,i]+x[k-1,j,i])+

3*(x[k,j,i+1]+x[k,j,i-1]);

*tmp*2 = 2*(x[k,j,i+1]-x[k,j,i-1]);

*qe*[0](**t**) =*tmp*1 - *tmp*2;

*qe*[1](**t**) =*tmp*1(**t+1**) + *tmp*2(**t+1**);

*qw*[1](**t**) =qe[0](**t-1**);

View chapterPurchase book

Read full chapter

URL:

https://www.sciencedirect.com/science/article/pii/S0065245816300614

## Dynamics of robots with complex structure

W Khalil, E Dombre, in Modeling, Identification and Control of Robots, 2002

### Example 10.1

Dynamic model of the Acma SR400 robot. The geometry and the constraint equations of the loop of this robot are treated in Example 7.1. The inverse dynamic model of the tree structured robot is computed using the recursive Newton-Euler algorithm quoted in§ 10.2.2. To compute the dynamic model of the closed chain, we have to calculate the Jacobian matrix **G** representing the derivative of the variables **q**_{tr} with respect to the variables **q**_{a}. We recall that:

$\begin{array}{ll}{\text{q}}_{\text{a}}\hfill & =\text{\hspace{0.17em}}{\left[\begin{array}{cccccc}{\text{\theta}}_{1}& {\text{\theta}}_{2}& {\text{\theta}}_{4}& {\text{\theta}}_{5}& {\text{\theta}}_{6}& {\text{\theta}}_{7}\end{array}\right]}^{\text{T}}\hfill \\ {\text{q}}_{\text{p}}\hfill & =\text{\hspace{0.17em}}{\left[\begin{array}{cc}{\text{\theta}}_{3}& {\text{\theta}}_{8}\end{array}\right]}^{\text{T}}\hfill \\ {\text{q}}_{\text{t}\text{r}}\hfill & =\text{\hspace{0.17em}}{\left[\begin{array}{cccccccc}{\text{\theta}}_{1}& {\text{\theta}}_{2}& {\text{\theta}}_{4}& {\text{\theta}}_{5}& {\text{\theta}}_{6}& {\text{\theta}}_{7}& {\text{\theta}}_{3}& {\text{\theta}}_{8}\end{array}\right]}^{\text{T}}\hfill \end{array}$

The constraint equations are obtained in Example 7.1 as:

$\begin{array}{ll}{\text{\theta}}_{3}\hfill & =\text{\hspace{0.17em}}{\text{\theta}}_{7}+\text{\pi}/2-{\text{\theta}}_{2}\hfill \\ {\text{\theta}}_{8}\hfill & =\text{\u2212}\text{\hspace{0.17em}}{\text{\theta}}_{7}+{\text{\theta}}_{2}\hfill \end{array}$

From these equations, we obtain:

${\text{G}}^{\text{T}}\text{\hspace{0.17em}}=\text{\hspace{0.17em}}\left[\begin{array}{cccccccc}1& 0& 0& 0& 0& 0& 0& 0\\ 0& 1& 0& 0& 0& 0& -1& 1\\ 0& 0& 1& 0& 0& 0& 0& 0\\ 0& 0& 0& 1& 0& 0& 0& 0\\ 0& 0& 0& 0& 1& 0& 0& 0\\ 0& 0& 0& 0& 0& 1& 1& -1\end{array}\right]$

The actuated torques of the closed chain robot is computed in terms of the joint torques of the tree structure as:

$\begin{array}{ll}{\text{\Gamma}}_{\text{c}\text{l}1}\hfill & =\text{\hspace{0.17em}}{\text{\Gamma}}_{\text{t}\text{r}1}\hfill \\ {\text{\Gamma}}_{\text{c}\text{l}2}\hfill & =\text{\hspace{0.17em}}{\text{\Gamma}}_{\text{t}\text{r}2}-{\text{\Gamma}}_{\text{t}\text{r}3}+{\text{\Gamma}}_{\text{t}\text{r}8}\hfill \\ {\text{\Gamma}}_{\text{c}\text{l}4}\hfill & =\text{\hspace{0.17em}}{\text{\Gamma}}_{\text{t}\text{r}4}\hfill \\ {\text{\Gamma}}_{\text{c}\text{l}5}\hfill & =\text{\hspace{0.17em}}{\text{\Gamma}}_{\text{t}\text{r}5}\hfill \\ {\text{\Gamma}}_{\text{c}\text{l}6}\hfill & =\text{\hspace{0.17em}}{\text{\Gamma}}_{\text{t}\text{r}6}\hfill \\ {\text{\Gamma}}_{\text{c}\text{l}7}\hfill & =\text{\hspace{0.17em}}{\text{\Gamma}}_{\text{t}\text{r}7}+{\text{\Gamma}}_{\text{t}\text{r}3}-{\text{\Gamma}}_{\text{t}\text{r}8}\hfill \end{array}$

where **Γ**_{clj} and **Γ**_{trj} denote the torque of joint j in the closed structure and in the tree structure respectively.

View chapterPurchase book

Read full chapter

URL:

https://www.sciencedirect.com/science/article/pii/B9781903996669500105

## Compliant motion control

W Khalil, E Dombre, in Modeling, Identification and Control of Robots, 2002

### 15.6 Hybrid position/force control

Using the previous methods, we can specify a desired dynamic behavior of the robot but we cannot prescribe a desired wrench. In the following, we address some methods where both position and force can be specified. Much work has been carried out on this topic such as that of [Nevins 73], [Reboulet 85], [Merlet 86], [Robert 86], [Perdereau 91], [Dégoulange 93], [Morel 94], etc. Two families ofcontrol schemes with force control loops are introduced: parallel hybrid position/force control and external hybrid control.

#### 15.6.1 Parallel hybrid position/force control

The parallel hybrid position/force control finds its roots in the work of Raibert and Craig[Raibert 81]. It satisfies simultaneously the desired position and force constraints of the task. Positions and forces are specified according to the Mason formulation: directions that are constrained in position are force controlled, while those that are constrained in force (zero force) are position or velocity controlled.Duffy[Duffy 90] has shown that it is not correct to consider the velocity subspace and the force subspace as orthogonal as suggested in [Raibert 81]. Rather, it is the position or velocity controlled directions and the force controlled directions that have to be orthogonal in the compliance frame.

In the parallel hybrid control method, the robot is controlled by two complementary feedback loops, one for the position, the other for the force. Each has its own sensory system and control law. The control laws of both loops are added before being sent to the actuator as a global control signal **G** (Figure 15.8). Each degree of freedom of the compliant frame is controlled by the position or force loop through the use of a *compliance selection matrix***S**, which is diagonal such that:

[15.18]$\text{S}=\text{diag}\left({\text{s}}_{1},\text{\hspace{0.17em}}\text{\hspace{0.17em}}{\text{s}}_{2},\text{\hspace{0.17em}}\cdots {\text{s}}_{6}\right)$

where s_{j} = 1 if the j^{th} degree of freedom of the compliance frame is position controlled or S_{j} = 0 if it is force controlled.

Since both loops act cooperatively, each joint contributes to the realization of both the position control and the force control.

Three forms of hybrid control schemes can be distinguished according to the type of the global control signal **G**:

- •
**G**is equivalent to joint torques (Figure 15.9);- •
**G**is equivalent to displacements or velocities in the task space and has to be multiplied by the robot inverse Jacobian to obtain joint positions (Figure 15.10);- •
**G**is equivalent to forces in the task space and has to be multiplied by the transpose of the Jacobian matrix (Figure 15.11).

In these figures, the frame transformation computations for velocities, forces and for the Jacobian matrix are not indicated. Practically, the matrices **S** and (**I** –**S**) are applied to signals expressed in the compliance frame. For position control in the joint space (Figures 15.9 and15.10), we can use one of the laws presented in Chapter 14, for example the PID controller of equation [14.5], which is:

[15.19]$\text{\Gamma}={\text{K}}_{\text{p}}\left({\text{q}}^{\text{d}}-\text{q}\right)+{\text{K}}_{\text{d}}\left({\dot{\text{q}}}^{\text{d}}-\dot{\text{q}}\right)+{\text{K}}_{1}{\displaystyle \underset{\text{t}0}{\overset{\text{t}}{\int}}\left({\text{q}}^{\text{d}}-\text{q}\right)\text{d}\text{\tau}}$

whereas for a PID control in the task space (Figure 15.11), we have (equation [14.17]):

[15.20]$\text{\Gamma}={\text{J}}^{\text{T}}\left[{\text{K}}_{\text{p}}\left({\text{X}}^{\text{d}}-\text{X}\right)+{\text{K}}_{\text{d}}\left({\dot{\text{X}}}^{\text{d}}-\dot{\text{X}}\right)+{\text{K}}_{1}{\displaystyle \underset{\text{t}0}{\overset{\text{t}}{\int}}\left({\text{X}}^{\text{d}}-\text{X}\right)}\text{\hspace{0.17em}}\text{d}\text{\tau}\right]$

Normally, the force control law is chosen as:

[15.21]$\text{\Gamma}={\text{J}}^{\text{T}}\left[{\text{f}}^{\text{d}}+{\text{K}}_{\text{f}}\left({\text{f}}^{\text{d}}-\text{f}\right)-{\text{K}}_{\text{f}\text{d}}\dot{\text{X}}+{\text{K}}_{\text{f}\text{I}}{\displaystyle \underset{\text{t}0}{\overset{\text{t}}{\int}}\left({\text{f}}^{\text{d}}-\text{f}\right)}\text{\hspace{0.17em}}\text{d}\text{\tau}\right]$

Note that, due to the noise of force sensors, the velocity in the task space is used with the derivative gain rather than the derivative of the force.

In these schemes, we can also include feedforward compensation for the nonlinear dynamics of the robot. For example, the position loop of the hybrid control of Figure 15.11 may be realized by the nonlinear decoupling control law in the task space described in § 14.4.3. The corresponding block diagram is given inFigure 15.12[Khatib 87]. The computation of the control vector Γ can be achieved with the Newton-Euler algorithm in a similar way to that described in Appendix 10, with the following arguments:

- –
the joint position is equal to the current joint position

**q**;- –
the joint velocity is equal to the current joint velocity $\dot{\text{q}}$;

- –
the joint acceleration is equal to:

[15.22]$\ddot{\text{q}}={\text{J}}^{-1}\text{\hspace{0.17em}}\text{S}\left[{\ddot{\text{X}}}^{\text{d}}+{\text{K}}_{\text{d}}\left({\dot{\text{X}}}^{\text{d}}-\dot{\text{X}}\right)+{\text{K}}_{\text{p}}\left({\text{X}}^{\text{d}}-\text{X}\right)-\dot{\text{J}}\text{\hspace{0.17em}}\dot{\text{q}}\right]$

- –
the force exerted by the terminal link on the environment can be taken to be equal to:

[15.23]${\text{f}}_{\text{e}\text{n}}=\left(\text{I}-\text{S}\right)\left[{\text{f}}^{\text{d}}+{\text{K}}_{\text{f}}\left({\text{f}}^{\text{d}}-\text{f}\right)-{\text{K}}_{\text{f}\text{d}}\text{\hspace{0.17em}}\ddot{\text{X}}+{\text{K}}_{\text{f}\text{i}}{\displaystyle \underset{\text{t}0}{\overset{\text{t}}{\int}}\left({\text{f}}^{\text{d}}-\text{f}\right)\text{\hspace{0.17em}}\text{d}\text{\tau}}\right]$

where all terms are computed in the compliance frame R_{c}.

An and Hollerbach [An 87] showed that the control schemes of Figures 15.9 and 15.10, which require the inverse of the Jacobian matrix, have an unstable behavior when implemented on a robot with revolute joints, even in non-singular configurations. They assigned this instability to an interaction between the inertiamatrix and the inverse kinematic model **J**^{−1}, whereas the scheme using**J**^{T} (Figure 15.11) always produces stable results. Fisher and Mutjaba [Fisher 92] showed that this instability comes from the formulation of the inverse kinematic model in the position loop of the hybrid scheme. Using the selection matrix**S** to separate position and force requirements in the task space is conceptually straightforward. Geometrically, the selection matrix is a projection that reduces the task space to a desired subspace of interest. Problems may arise when this selected task subspace is mapped onto the joint space using the robot Jacobian matrix. From the classical scheme of Figure 15.9 and equation [5.2], we can write that:

[15.24]$\text{S}\text{\hspace{0.17em}}\text{d}\text{X}=\left(\text{S}\text{J}\right)\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{dq}$

From this equation, it can be seen that the selection matrix **S** reduces the task space of the robot, which becomes redundant with respect to the displacement task. Thus, instabilities of the hybrid control scheme of Craig and Raibert are the consequence of an erroneous formulation of the projection of the task error vector into the joint space. In fact, knowing that (**SJ**)^{+}**S** = (**SJ**)^{+}, the general solution of [15.24] is:

[15.25]$\text{dq}={\left(\text{SJ}\right)}^{+}\text{dX}+\left[\text{I}-{\left(\text{SJ}\right)}^{+}\left(\text{SJ}\right)\right]\text{\hspace{0.17em}}\text{Z}$

Fisher and Mutjaba [Fisher 92] showed that choosing **Z** =**J**^{−1}**S dX** as the optimization term in equation [15.25] is equivalent to the inverse kinematic relation**dq** =**J**^{−1}**S dX**. This choice of**Z** does not ensure stability and explains the instabilities that can appear with the hybrid control scheme. Indeed, they showed that the first term of equation[15.25], which is the minimal norm solution, is always stable. Consequently, as indicated in Figure 15.13, the position loop reference input should be:

[15.26a]$\text{dq}={\left(\text{SJ}\right)}^{+}\text{\hspace{0.17em}}\text{dX}$

In a similar manner, they showed that the force loop reference input could remain as the original one:

[15.26b]$\text{d\gamma}={\left[\left(\text{I}-\text{S}\right)\text{\hspace{0.17em}}\text{J}\right]}^{\text{T}}\left({\text{f}}^{\text{d}}-\text{f}\right)$

More general solutions with optimization terms are:

[15.27a]$\text{dq}={\left(\text{SJ}\right)}^{+}\text{dX}+\left[\text{I}-{\text{J}}^{+}\text{J}\right]\text{\hspace{0.17em}}{\text{Z}}_{\text{q}}$

[15.27b]$\text{d\gamma}={\left[\left(\text{I}-\text{S}\right)\text{\hspace{0.17em}}\text{J}\right]}^{\text{T}}\left({\text{f}}^{\text{d}}-\text{f}\right)+\left[\text{I}-{\text{J}}^{+}\text{J}\right]\text{\hspace{0.17em}}{\text{Z}}_{\text{f}}$

where **Z**_{q} and **Z**_{f} are arbitrary position and force vectors in the joint space respectively.

#### 15.6.2 External hybrid control scheme

The external hybrid control scheme is composed of two embedded control loops [De Schutter 88], [Perdereau 91]: the outer loop controls force while the inner one controls position (Figure 15.14). The output of the outer loop is transformed into a desired position input for the inner loop. The resulting displacement of the robot permits exertion of the desired contact force on the environment. The external hybrid control scheme is relatively easy to implement and requires a rather small amount of computation. It can be implemented in industrial robots while keeping their conventional controllers [Thérond 96].

The position control loop can be achieved either in the task space or in the joint space by implementing one of the methods presented in Chapter 14.

The additional displacement reference signal is given by:

[15.28]$\text{d}{\text{X}}_{\text{f}}={\hat{\text{K}}}_{\text{e}}^{-1}\left[{\text{f}}^{\text{d}}+{\text{K}}_{\text{f}}\left({\text{f}}^{\text{d}}-\text{f}\right)+{\text{K}}_{\text{f}\text{I}}{\displaystyle \underset{\text{t}0}{\overset{\text{t}}{\int}}\left({\text{f}}^{\text{d}}-\text{f}\right)\text{\hspace{0.17em}}\text{d}\text{\tau}}\right]$

where ${\hat{\text{K}}}_{\text{e}}$ is an estimate of the stiffness of the environment.

Thanks to the integral force action, the wrench error$({\text{f}}^{\text{d}}-\text{f})$ is allowed to prevail over the position error (**X**^{d} –**X**) at steady state [Pujas 95].

This control can be applied with a nonlinear decoupling impedance control in the task space [Chiaverini 93] by setting **w**(t) as the sum of two terms, **w**_{X}(**t**) and **w**_{F}(t), which are the contributions of the position loop and the force loop respectively:

[15.29]$\text{w}\left(\text{t}\right)={\text{w}}_{\text{X}}\left(\text{t}\right)+{\text{w}}_{\text{F}}\left(\text{t}\right)$

[15.30]${\text{w}}_{\text{X}}\left(\text{t}\right)={\ddot{\text{X}}}^{\text{d}}+{\text{\Lambda}}^{-1}\left[{\text{K}}_{\text{d}}\left({\dot{\text{X}}}^{\text{d}}-\dot{\text{X}}\right)+{\text{K}}_{\text{p}}\left({\text{X}}^{\text{d}}-\text{X}\right)\right]$

[15.31]${\text{w}}_{\text{F}}\left(\text{t}\right)={\text{\Lambda}}^{-1}\left[{\text{K}}_{\text{f}}\left({\text{f}}^{\text{d}}-\text{f}\right)+{\text{K}}_{\text{f}\text{I}}{\displaystyle \underset{\text{t}0}{\overset{\text{t}}{\int}}\left({\text{f}}^{\text{d}}-\text{f}\right)}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{d}\text{\tau}\right]$

Note that **w**_{F}(t) is obtained by multiplying the force signal by **Λ**^{−1} because it is equivalent to an acceleration. The decoupled control law is obtained from equation[15.15] as:

[15.32]$\text{\Gamma}={\text{J}}^{\text{T}}\left[{\hat{\text{A}}}_{\text{x}}\left(\text{q}\right)\left({\text{w}}_{\text{X}}+{\text{w}}_{\text{F}}\right)+{\hat{\text{C}}}_{\text{x}}\left(\text{q},\text{\hspace{0.17em}}\dot{\text{q}}\right)\dot{\text{X}}+{\hat{\text{Q}}}_{\text{x}}\left(\text{q}\right)+\text{f}\right]$

If the robot dynamic model is perfectly known, combining equations [15.30],[15.31] and [15.32] yields:

[15.33]$\text{\Lambda}\left({\ddot{\text{X}}}^{\text{d}}-\ddot{\text{X}}\right)+{\text{K}}_{\text{d}}\left({\dot{\text{X}}}^{\text{d}}-\dot{\text{X}}\right)+{\text{K}}_{\text{p}}\left({\text{X}}^{\text{d}}-\text{X}\right)+{\text{K}}_{\text{f}}\left({\text{f}}^{\text{d}}-\text{f}\right)+{\text{K}}_{\text{f}\text{I}}{\displaystyle \underset{\text{t}0}{\overset{\text{t}}{\int}}\left({\text{f}}^{\text{d}}-\text{f}\right)\text{\hspace{0.17em}}\text{d}\text{\tau}=0}$

When **K**_{f} =**0** and **K**_{fl} =**0**, the control law[15.32] becomes equivalent to the impedance control (Figure 15.7). Besides, if **Λ** =**I**, it reduces to the decoupling nonlinear control in the task space such as that shown in Figure 14.5.

View chapterPurchase book

Read full chapter

URL:

https://www.sciencedirect.com/science/article/pii/B9781903996669500154

## FAQs

### Does Euler's method give exact solutions? ›

In particular, **Euler's method will only be exact if the solution is affine** (of the form y=ax+b) so that all derivatives beyond the first derivative are zero.

**What is Euler algorithm? ›**

Methodology. Euler's method uses the simple formula, to construct the tangent at the point x and obtain the value of y(x+h) , whose slope is, In Euler's method, you can approximate the curve of the solution by the tangent in each interval (that is, by a sequence of short line segments), at steps of h .

**Did Katherine Johnson use Euler's method? ›**

As told in the book (and movie) Hidden Figures, Katherine Johnson led the team of African-American women who did the actual calculation of the necessary trajectory from the earth to the moon for the US Apollo space program. **They used Euler's method to do this.**

**Why is the Euler method inaccurate? ›**

**Euler's Method will only be accurate over small increments and as long as our function does not change too rapidly**. Consequently, we need to ensure that our step-size isn't too large or our numerical solution will be inaccurate.

**Why is Euler's method accurate? ›**

The solution is concave up which would make us think that Euler's method would produce an underestimate. However, **the solution to this equation is a line, so all of our approximations will be exact**. This means Euler's method will actually give us an exact answer.

**What is Euler's formula in simple explanation? ›**

It is written **F + V = E + 2**, where F is the number of faces, V the number of vertices, and E the number of edges. A cube, for example, has 6 faces, 8 vertices, and 12 edges and satisfies this formula.

**Is Euler's method single step? ›**

A **one-step method** for first order initial value problems may be formed as follows. Suppose y_{n} is known. Advance one step using Euler's method (13.11) with step size h; let y(x_{n}_{+} _{l}; h) be the resulting approximation to y(x_{n}_{+}_{1}). Advance from y_{n} again, using two steps of Euler's method with step size h/2.

**Is Euler's method more accurate? ›**

The accuracy of the Euler method **improves only linearly with the step size is decreased**, whereas the Heun Method improves accuracy quadratically .

**Where is Euler's method used in real life? ›**

Euler's method is commonly used in **projectile motion including drag**, especially to compute the drag force (and thus the drag coefficient) as a function of velocity from experimental data.

**What math does NASA use? ›**

Thanks to **trigonometry** we know the distances between the planets from the Earth. When an astronaut needs to calculate the speed they are moving in the spacecraft, if they already know the distance from a particular location they can use trigonometry to calculate the unknown distance to another location point.

### Who invented Euler's method? ›

First off, Euler's Method is indeed pretty old, if not exactly ancient. It was developed by **Leonhard Euler** (pronounced oy-ler), a prolific Swiss mathematician who lived 1707-1783.

**What type of mathematics does NASA need Katherine to perform? ›**

Katherine studied how to use **geometry** for space travel. She figured out the paths for the spacecraft to orbit (go around) Earth and to land on the Moon. NASA used Katherine's math, and it worked! NASA sent astronauts into orbit around Earth.

**What is the main disadvantage of Euler's method? ›**

Advantages: ➢Euler's method is simple and direct. ➢It can be used for nonlinear IVPs. Disadvantages: ➢**It is less accurate and numerically unstable**.

**What are the limitations of Euler formula? ›**

Limitation of Euler's Formula

**The column always has crookedness, and the load may not be exactly axial**.

**Does Euler's method always underestimate? ›**

The fact that the function is concave up means that the value for the derivative at the beginning of an interval is smaller than the value for the derivative at the end of the interval. The result is that **Euler's method continually underestimates the actual value of the result**.

**Why Euler number is important? ›**

Euler's number is used in everything from **explaining exponential growth to radioactive decay**. In finance, Euler's number is used to calculate how wealth can grow due to compound interest.

**Is Euler's method stable? ›**

Thus, **Euler's method is only conditionally stable**, i.e., the step size has to be chosen sufficiently small to ensure stability. The set of λh for which the growth factor is less than one is called the linear stability domain D (or region of absolute stability).

**Why is Euler's method first order? ›**

The Euler method is a first-order method, which means that **the local error (error per step) is proportional to the square of the step size, and the global error (error at a given time) is proportional to the step size**.

**How many steps are in Euler's method? ›**

Similarly, the approximate values in the column corresponding to h=0.025 are actually the results of **40 steps** with Euler's method. Table 3.1. 1 : Numerical solution of y′+2y=x3e−2x, y(0)=1, by Euler's method.

**Which is the most accurate method of numerical integration? ›**

If the functions are known analytically instead of being tabulated at equally spaced intervals, the best numerical method of integration is called **Gaussian quadrature**. By picking the abscissas at which to evaluate the function, Gaussian quadrature produces the most accurate approximations possible.

### Is Runge Kutta better than Euler? ›

**Euler's method is more preferable than Runge-Kutta method because it provides slightly better results**. Its major disadvantage is the possibility of having several iterations that result from a round-error in a successive step.

**Is Euler's Identity useful? ›**

Why Is Euler's Identity Important? **Mathematicians love Euler's identity because it is considered a mathematical beauty since it combines five constants of math and three math operations, each occurring only one time**. The three operations that it contains are exponentiation, multiplication, and addition.

**How do you know if a solution is exact? ›**

A first-order differential equation (of one variable) is called exact, or an exact differential, **if it is the result of a simple differentiation**. The equation P(x, y)^{dy}_{dx} + Q(x, y) = 0,or in the equivalent alternate notation P(x, y)dy + Q(x, y)dx = 0,is exact if ^{∂}^{P}^{(}^{x}^{,} ^{y}^{)}_{∂}_{x} = ^{∂}^{Q}^{(}^{x}^{,} ^{y}^{)}_{∂}_{y}.

**What is the disadvantage of Euler's method? ›**

Advantages: ➢Euler's method is simple and direct. ➢It can be used for nonlinear IVPs. Disadvantages: ➢**It is less accurate and numerically unstable**.

**Is Euler's method old or new math? ›**

First off, Euler's Method is indeed **pretty old, if not exactly ancient**. It was developed by Leonhard Euler (pronounced oy-ler), a prolific Swiss mathematician who lived 1707-1783. "He was one of the greatest in history," said Po-Shen Loh, a mathematician at Carnegie Mellon University in Pittsburgh.

**How do you determine if an equation is true? ›**

To make a true equation, **check your math to make sure that the values on each side of the equals sign are the same**. Ensure that the numerical values on both sides of the "=" sign are the same to make a true equation. For example, 9 = 9 is a true equation. 5 + 4 = 9 is a true equation.

**How can you tell if a solution makes both equations true? ›**

To determine if an ordered pair is a solution to a system of two equations, we substitute the values of the variables into each equation. **If the ordered pair makes both equations true, it is a solution to the system**.

**Why is exact solution important? ›**

The exact solution for any physical model is of great importance in the applied science. Such exact solution **leads to the correct physical interpretation and it is also useful in validating the approximate analytical or numerical methods**.

**What are the assumptions of Euler's theory? ›**

Euler postulated a theory for columns based on the following assumptions: **Column is very long in proportion to its cross sectional dimensions**. Column is initially straight and the compressive load is applied axially. Material of the column is elastic, homogeneous and isotropic.

**Who disproved Euler's theorem? ›**

Counterexamples. Euler's conjecture was disproven by **L. J. Lander and T. R.** **Parkin** in 1966 when, through a direct computer search on a CDC 6600, they found a counterexample for k = 5. This was published in a paper comprising just two sentences.

### Why is Euler's method a first order method? ›

The Euler method is a first-order method, which means that **the local error (error per step) is proportional to the square of the step size, and the global error (error at a given time) is proportional to the step size**.