1 Introduction

Maintaining an underwater robot’s attitude is critical in autonomous manipulation so as not disturb the position of a manipulator’s end-effector. When the manipulator reaches out to grasp an object, the underwater robot’s thrusters work to maintain the attitude of the robot body compensating for the weight of the manipulator. The heavy weight of a manipulator can cause problems to maintain attitude, when the thrusters do not have enough thrust.

If the robot has a redundancy of the DOF, the robot can make another motion without disturbing the main task. Zghal et al. avoided the limit joint of joint angle using redundancy [1] and Nakamura and Hanafusa used redundancy for making the robust singularity avoidance algorithm [2]. Antonelli, Chiaverini used redundancy for making the task priority for the underwater robot [3] Kang et al. used redundancy for dynamic stability of underwater using zero moment point [4].

In this paper, a motion planning method decreasing the underwater robot’s thrust using null-space compliance is proposed. If the thrust of the robot is higher than the thrust limit, we move the position of the robot body and manipulator joint angle to reduce the force and torque due to the manipulator’s weight by moving the position of the center of the mass (COM) of the manipulator. The desired position and orientation of the robot body and the manipulator are provided using null-space so as not disturb the main task. The result of motion planning was performed in a simulator, free-floating gazebo that supports underwater dynamic simulation [5].

2 System Configuration

2.1 Model

In this paper, we constructed a 12-DOF robot including 6-DOF for the body and 6-DOF for the manipulator. The simulation is shown in Fig. 1. The robot was manufactured made by Korea Research Institute of Ship and Ocean Engineering (KRISO). It has eight thrusters, of which there are four vertical thrusters and four horizontal thrusters. These thrusters are used to control the body’s position and orientation. The model of the manipulator used is the ARM 7E mini of the Eca group having six joints and one gripper.

Fig. 1.
figure 1

12-DOF underwater robot with Arm 7E mini manipulator in simulation.

The kinematics of the robot body and the manipulator are shown in Fig. 2. The robot body has six virtual joints that comprises three prismatic joints that control the position of the robot body and three revolute joints that control the orientation of the robot body. \( q_{1} , q_{2} , q_{3} \) denote the virtual prismatic joints of the robot body for the z, y, x Cartesian coordinates, respectively, in the global frame. \( q_{4} , q_{5} , q_{6} \) denote the virtual revolute joints of the robot body for the yaw, pitch, roll in the global frame. \( q_{7} , q_{8} , q_{9} , q_{10} , q_{11} , q_{12} \) denote the revolute joints of the manipulator. The underwater robot includes 12 joints to perform tasks, of which there are six virtual joints of the body and six joints for the manipulator. The mass of the underwater robot’s body is 136.6 kg and the mass of the manipulator in the water is 31.4 kg.

Fig. 2.
figure 2

Kinematics of a 12-DOF underwater robot with the Arm 7E mini manipulator.

2.2 Motion Planning

In this section, we explain how to plan motions with a 12-DOF robot. There are three tasks for controlling the robot, robot body orientation, and end-effector position and orientation. The robot body position is not considered to be a task and remains redundant. The equation for the motion of the underwater robot is given by

$$ \delta q = J^{ + } \delta x + \left( {I - J^{ + } J} \right)\delta q_{0} . $$
(1)

q denotes the \( 12 \times 1 \) vector of the joint angle that includes the virtual joints of the body and the joint of the manipulator. x denotes the \( 8 \times 1 \) vector of the position and orientation of the end-effector and orientation of the body, roll, and pitch in the global frame. J denotes the \( 8 \times 12 \) Jacobian matrix of the position and orientation of the end-effector and orientation of the robot body. \( J^{ + } \) denotes the pseudo inverse of J. I denotes the \( 12 \times 12 \) identity matrix. \( q_{0} \) denotes the \( 12 \times 1 \) vector of sub-task joint angle. The inputs of the robot are x and \( q_{0} \), and these represent a main task and a sub task respectively. To grasp an object, we control the position and orientation of the end-effector in the global frame, to maintain a stable body state, we control the orientation of the body. While performing a main task, we reduce the thrust of the body using a sub task, \( q_{0} \).

2.3 Sub Task

When the underwater robot grasps an object, the manipulator reaches out to the object in order to grasp it. The reaching out of manipulator means that the COM of the manipulator goes farther away from the body and the body needs more thrust to compensate for it. To reduce the thrust of the robot, we move the robot body and the manipulator without disturbing the main task using null-space compliance.

At first, we identify the relationship between the limit of the thrust of the robot body and the COM of the manipulator. The \( 8 \times 1 \) vector of the thruster force T and the \( 3 \times 1 \) vector of the force and the torque on the body due to the manipulator’s weight, F is given by

$$ - \delta F = B\delta T. $$
(2)

where, \( \delta T \) is

$$ \delta T = \left\{ {\begin{array}{*{20}l} {if\,T_{i} > T_{i,limit} ,} \hfill & {\delta T_{i} = T_{i} - T_{i,limit} .} \hfill \\ {if\,T_{i} < T_{i,limit} ,} \hfill & {\delta T_{i} = 0.} \hfill \\ \end{array} } \right. $$
(3)

i denotes the number of thrusters and B denotes the \( 3 \times 8 \) matrix that indicates the relation between the thruster force and the thrust of the body. We define \( \delta T \) to activate the sub task when the thrust of the thruster exceeds the thrust limit. The force and the torque acting on the robot body due to the manipulator mass and the COM of the manipulator is given by

$$ m_{m} \hat{g}^{T} \delta x_{com} = \delta F. $$
(4)

where \( m_{m} \) denotes the mass of the manipulator, \( x_{com} \) denotes the \( 3 \times 1 \) COM vector of the manipulator \( F \), \( g \) denotes the \( 3 \times 1 \) vector of gravity and the \( 3 \times 3 \) matrix \( \hat{g} \) is given as

$$ \hat{g} = \left[ {\begin{array}{*{20}c} {0 } & { - g_{3} } & {g_{2} } \\ {g_{3} } & 0 & { - g_{1} } \\ { - g_{2} } & {g_{1} } & 0 \\ \end{array} } \right]. $$
(5)

where,

$$ g = \left[ { g_{1} , g_{2} , g_{3} } \right]^{T} . $$
(6)

By combining Eqs. (2) and (4), we get Eq. (7) as

$$ \delta x_{com} = - \frac{1}{{m_{m} }}\hat{g}^{ - T} B\delta T. $$
(7)

The relationship between sub tasks, \( \delta q_{0} \) and \( \delta x_{com} \) is

$$ \delta q_{0} = J_{com}^{ + } \delta x_{com} . $$
(8)

where, \( J_{com} \) denotes the 3 × 12 center-of-mass Jacobian matrix of manipulator and \( J_{com}^{ + } \) denotes the pseudo inverse matrix of \( J_{com} \). Combining Eqs. (7) and (8), the relationship between the sub task \( \delta q_{0} \) and thruster’s force, \( \delta T \) in Eq. (9)

$$ \delta q_{0} = - \frac{1}{{m_{m} }}J_{com}^{ + } \hat{g}^{ - T} B\delta T. $$
(9)

The sub task \( \delta q_{0} \) makes the robot body move axially decreasing the thrust of the robot by moving the body and the manipulator without disturbing the main task by multiplying the null-space matrix N. Here N is given by,

$$ N = \left( {I - J^{ + } J} \right) $$
(10)

Then the motion q is

$$ \delta q = J^{ + } \delta x - \frac{1}{{m_{m} }}NJ_{com}^{ + } \hat{g}^{ - T} B\delta T. $$
(11)

3 Simulation

The simulation environment was developed using Free-floating Gazebo, an underwater environment simulation software that added the functions of thrust and buoyancy.

While the underwater robot carried out the main task, moving the robot body and reaching the end-effector to the point where it was farther away from the initial end-effector position, the thrust of the robot exceeds its limit by activating the sub task. The simulation results are shown in Figs. 3 and 4.

Fig. 3.
figure 3

Shift of the COM of the manipulator in the robot frame.

Fig. 4.
figure 4

Eight thrust plots of the underwater robot. The blue line indicates the sub-task activated state, and the red line indicates the non-sub-task activated state. (Color figure online)

Figure 3 shows the transition of the COM of x, z coordinates in the robot frame. When the sub-task activated states, the decrease of the COM of x direction is clearly shown. Figure 4 represents the reduction in thrust. During the simulation when the sub-task is activated, the position of the manipulator COM is closer to the robot body the thrust of the robot is lower than that during non-activated simulation. The thrusters 1, 2, 3, 4 are vertical thrusters used for the vertical movement for the body and compensating for the weight of the manipulator. The thrusters 5, 6, 7, 8 are horizontal thrusters used for horizontal movement for the body. The decrease of the vertical thrusters is specifically shown, because the transition of the torque on the body due to the transition of the COM of manipulator is almost compensated by the virtual thrusters.

4 Conclusion

In this paper, motion planning that reduces the thrust of the robot using null-space is presented. The thrust is reduced by moving the COM of the manipulator by moving the robot’s position and the manipulator’s joint angle. The relocation of the manipulator’s COM does not disturb the main task by multiplying the null-space matrix. The result of simulation shows the shift of the COM of the manipulator and the decrease of the thrust of the robot.

We are going to use motion planning for experimenting with a real robot through teleoperation and autonomous manipulation and add more sub tasks with task-priority redundancy for dexterous and autonomous underwater manipulation.