**5. Simulation Results**

We designed an overactuated underwater robot with *m* = 8 thrusters and *n* = 6 degrees of freedom. Two cases were simulated: the general case and the given position case. In the general case, we have to identify both the positions and orientations of eight thrusters optimizing the performance indices. In the given position case, the thrusters are installed at the corners of a cube, and we only have to determine the directions of the thrusters. In this simulation, the thruster characteristics were chosen as in [5], then the maximum and minimum values of the thrusters forces were *Fimax* = 1.1*N* and *Fimin* = −0.4*N*, respectively. The desired values of the performance indices were subsequently *I<sup>d</sup> <sup>m</sup>* = 1, *Id <sup>e</sup>* = 1.2248, *I<sup>d</sup> wF* = 597.7, *<sup>I</sup><sup>d</sup> wT* = 597.7, *<sup>I</sup><sup>d</sup> re* = 0.6124 (*σmax* = - 2 *<sup>m</sup> <sup>n</sup>* = 1.6330; see Table 2 for more details).

**Table 2.** Desired values of the indices.


### *5.1. General Case*

In this case, the robot is called a ball robot, and the positions and orientations of the thrusters are not known. The problem (40) is solved as follows.

#### 5.1.1. Phase 1

The optimization toolbox was used to solve the problem (40) with the desired goal vector, and the constraints were **V***goal* = [*I<sup>d</sup> <sup>m</sup> I<sup>d</sup> <sup>e</sup>* <sup>1</sup> *Id w Id re*]=[1 1.2248 0.0033 0.6124] *T*, the constraint set <sup>A</sup>¯ <sup>=</sup> {**<sup>A</sup>** <sup>∈</sup> <sup>R</sup>6×8/**<sup>u</sup>***<sup>i</sup>* <sup>=</sup> 1, *<sup>τ</sup>i*<sup>≤</sup> 1, *<sup>τ</sup><sup>T</sup> <sup>i</sup>* **ui** = 0}, and the attainment vector **w** = [0 0 0 0.0036] *<sup>T</sup>*. The attainment vector allows setting the overachievement or underachievement of the individual goals. At the moment, there is no general method

to choose this attainment vector. It was chosen by trial and error. By our approach, we found that some values of this vector can be assigned zero (this imposes hard constraints), except the workspace index (because of the upper-bound value).

The simulation results are shown in Figures 12 and 13a,b. The configuration matrix **A** and optimal values are shown in Table 3. Specifically, in Figure 12, the positions of the thrusters are at the top of the blue line, and the orientations of the thrusters are shown as the red arrow. Furthermore, we can see that the isotropic property of the robot is guaranteed (see Figure 13a,b) with the sphere shapes of the attainable spaces of the forces and torques. From Table 3, the obtained values of the manipulability index, the energetic index, and the reactive index were almost the same as the desired values. However, the obtained workspace index was smaller than the desired one.

**Figure 12.** Positions and directions of the thrusters (general case) (XI-axis = **u**-axis; YI-axis = **v**-axis; ZI-axis=**w**-axis).

**Figure 13.** Attainable spaces in the general case (Fx-axis = **u**-axis; Fy-axis = **v**-axis; Fz-axis = **w**-axis). (**a**) Force space. (**b**) Torque space.


**Table 3.** Configuration matrix in the general case.

#### 5.1.2. Phase 2

In this phase, the robustness index was checked. The optimal configuration matrix **A** in Table 3 satisfies the robustness constraint. Specifically, the maximum number of thrusters that are acceptable (for failures) is two.

#### *5.2. Given Position Case*

In this case, the robot is called the cube robot, and the positions of thrusters are at the corners of the cube. We only had to find their orientations. The number of variables in the problem (40) was reduced. The desired objective vector and attainment vector were the same as in general case. The results are presented in the sequel.

#### 5.2.1. Phase 1

The optimization toolbox was used to solve our problem, and the simulation results are shown in Figures 14 and 15a,b and Table 4. The directions of the thrusters are depicted as red arrows in Figure 14. Being similar to the general case, the isotropic property is also guaranteed in this case (see Figure 15a,b). One Pareto-optimal configuration matrix is shown in Table 4. We can see that the obtained objective values in Table 4 are the same as the general case.

**Figure 14.** Robot design with the directions of the thrusters (given position case) (XI-axis = **u**-axis; YI-axis = **v**-axis; ZI-axis = **w**-axis).

**Figure 15.** Attainable spaces in the given position case (Fx-axis = **u**-axis; Fy-axis = **v**-axis; Fz-axis = **w**-axis). (**a**) Force space. (**b**) Torque space.



#### 5.2.2. Phase 2

The optimal configuration matrix **A** in Table 4 satisfies the conditions of the robustness index. Similarly, the maximum number of thrusters that can fail is two.

#### *5.3. A Comparison of Two Configurations*

In this section, a comparison of two configurations is illustrated. The choice of the configurations corresponds to a real robot (cube robot), which is used in the experiments in the next section. The first one is a normal configuration (denoted as **C**1) in which the thrusters are distributed vertically or horizontally (in practice, this configuration is easier to install, as Figure 21 shows). The configuration matrix of the **C**<sup>1</sup> configuration, denoted as **A**1, is shown in Equation (41).

$$\mathbf{A}\_{1} = \begin{pmatrix} 0 & 1 & 0 & 0 & 0 & 0 & -1 & 0 \\ 1 & 0 & 0 & -1 & 1 & 0 & 0 & 0 \\ 0 & 0 & -1 & 0 & 0 & 1 & 0 & -1 \\ 0.2\mathcal{T} & 0 & -0.2\mathcal{T} \ 0.2\mathcal{T} \ 0.2\mathcal{T} & 0 & 0.2\mathcal{T} & 0 & 0.2\mathcal{T} \\ 0 & -0.2\mathcal{T} & 0.2\mathcal{T} & 0 & 0 & 0.2\mathcal{T} & -0.2\mathcal{T} & -0.2\mathcal{T} \\ 0.2\mathcal{T} & -0.2\mathcal{T} & 0 & 0.2\mathcal{T} & 0 & 0.2\mathcal{T} & 0 \\ \end{pmatrix} \tag{41}$$

The second one (denoted as **C**2) is an optimal configuration, denoted as **A**2, which is a solution of the optimization problem (given position case) thanks to the thruster characteristics of BlueRobotics (Figure 16), and the optimal configuration matrix is shown in Equation (42).

$$\begin{array}{rcl} \mathbf{A}\_{2} &=& \begin{pmatrix} 0.6616 - 0.8122 & 0.4785 & 0.0836 - 0.0836 - 0.4785 & -0.8122 & -0.6616 \\ 0.7452 & 0.3337 & 0.3337 & 0.7452 & 0.7452 & 0.3337 - 0.3337 & 0.7452 \\ -0.0836 & -0.4785 - 0.8122 & 0.6616 - 0.6616 & 0.8122 & -0.4785 & 0.0836 \\ 0.1608 & 0.0111 & -0.2459 - 0.3708 & 0.2642 & 0.2015 & 0.0011 - 0.1658 \\ -0.0989 & 0.3556 & 0.3633 - 0.0989 - 0.1056 & 0.3508 & -0.3456 - 0.1056 \\ 0.3906 & 0.2292 & 0.0044 & 0.1583 - 0.1649 - 0.0254 & 0.2392 & -0.3708 \end{pmatrix} \end{array} \tag{42}$$

Note that the configuration matrices **A**<sup>1</sup> and **A**<sup>2</sup> were calibrated with the corresponding geometrical properties of the real cube robot at the LIRMM Institute, Montpellier University. The attainable force space and torque space corresponding to the two configurations **C**<sup>1</sup> and **C**<sup>2</sup> are illustrated in Figure 17a,b. It is obvious that the **C**<sup>2</sup> configuration is more isotropic than the **C**<sup>1</sup> configuration. However, for some specific points of the attainable force and torque spaces, the **C**<sup>1</sup> configuration is better than the **C**<sup>2</sup> configuration.

**Figure 17.** Attainable spaces for different configurations (X-axis = **u**-axis; Y-axis = **v**-axis; Z-axis = **w**-axis). (**a**) **C**1(blue), **C**2(red). (**b**) **C**1(blue), **C**2(red).

Thanks to the properties of matrices **A**<sup>1</sup> and **A**<sup>2</sup> (Equations (41) and (42)) and the thruster characteristics (Figure 16), Table 5 shows the values of the performance indices for both configurations. The performances of the **C**<sup>2</sup> configuration are better than **C**1. Because of the calibration (the distance *di* is different between the motors), the manipulability index (*Im*) is larger than one (Note that, theoretically, the distances of all thrusters with respect to the center of mass were assumed the same (without loss of generality, they were assigned one). However, in practice, for our cube robot, these distances were not completely the same, and we had to calibrate the configuration matrix.).


**Table 5.** Comparison between the two configurations (*Iro* shows the maximum number of thrusters that can fail to make sure that *rank*(**A** = 6)).

In order to verify the attainability of the two configurations (workspace index), incremental torques were applied about the **u**-, **v**-, and **w**-axis, respectively (Figures 18a, 19a and 20a), and the corresponding Pulse-Width Modulation (PWM) inputs (**c***m*) of the eight thrusters were computed. The results are shown in Figures 18b,c, 19b,c and 20b,c, in which the two PWM saturation values of the thrusters (upper saturation value: 1900, lower saturation value: 1100) are plotted with two bold lines. We can see that the performances of the robot with the two configurations are almost the same for the rotation about the **u**- and **v**-axis. However, the **C**<sup>2</sup> configuration showed better performance for the rotation about the **w**-axis. In fact, the thrusters with the **C**<sup>1</sup> configuration reached saturations very earlier in comparison with the thrusters with the **C<sup>2</sup>** configuration (Figure 20b,c).

In order to validate the robustness of the optimal configuration (**C**2) in comparison with the normal configuration (**C**1), the rank of matrices **A**<sup>1</sup> and **A**<sup>2</sup> was checked when one or two arbitrary columns have been nullified. When the resulting matrices are rank deficient, this means that the robustness is not guaranteed because one direction is not actuated. Therefore, we cannot control all 6 DoFs independently. The robustness index in Table 5 shows the checking results. In particular, when the fifth thruster of the **C**<sup>1</sup> configuration fails, the robustness is not guaranteed.

**Figure 18.** The simulation of the cube rotation about the **u**-axis for **C**<sup>1</sup> and **C**<sup>2</sup> (X-axis = **u**-axis). (**a**) Applied torque about the **u**-axis. (**b**) PWM inputs of **C**<sup>1</sup> . (**c**) PWM inputs of **C**2.

**Figure 19.** The simulation of the cube rotation about the **v**-axis for **C**<sup>1</sup> and **C**<sup>2</sup> (Y-axis = **v**-axis). (**a**) Applied torque about the **v**-axis. (**b**) PWM inputs of **C**<sup>1</sup> . (**c**) PWM inputs of **C**2.

**Figure 20.** The simulation of the cube rotation about the Z-axis for **C**<sup>1</sup> and **C**<sup>2</sup> (Z-axis = **w**-axis). (**a**) Applied torque about the **w**-axis. (**b**) PWM inputs of **C**1. (**c**) PWM inputs of **C**2.
