Issue 
Mechanics & Industry
Volume 21, Number 5, 2020
Scientific challenges and industrial applications in mechanical engineering



Article Number  512  
Number of page(s)  16  
DOI  https://doi.org/10.1051/meca/2020037  
Published online  11 August 2020 
Regular Article
Design and control of a lowcost autonomous profiling float
^{1}
ENSTABretagne, LabSTICC,
2 rue François Verny,
29806
Brest, France
^{2}
ENSTABretagne, Institut de Recherche Dupuy de Lôme (IRDL),
2 rue François Verny,
29806
Brest, France
^{3}
Univ. Brest, CNRS, IRD, Ifremer, Laboratoire d’Océanographie Physique et Spatiale (LOPS), IUEM,
Brest, France
^{*} email: thomas.le mezo@enstabretagne.org
Received:
12
October
2019
Accepted:
28
April
2020
This paper presents the development made around the SeaBot, a new lowcost profiling float design for shallow water. We introduce a simplified dynamical model of the float and propose a state feedback depth controller coupled with an Extended Kalman Filter (EKF) to estimate model parameters. We show experimental results of the depth control that validate the model and the controller. We finally propose a loop design method to build lowcost floats by highlighting key design choices along with design rules.
Key words: Float / state feedback / depth control / lowcost design / Extended Kalman Filter
© T. Le Mézo et al., published by EDP Sciences 2020
This is an Open Access article distributed under the terms of the Creative Commons Attribution License (http://creativecommons.org/licenses/by/4.0), which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.
1 Introduction
Profiling floats, which are a specific kind of Autonomous Underwater Vehicle (AUV) widely used in oceanography, can only regulate their depth. They are commonly equipped with instruments such as temperature, pressure, conductivity or biochemical sensors that measure the state of the water column. Most of them carry out profiles in the open ocean and the last generation can dive up to 4000 m [1]. They help to a better understanding of the ocean and provide crucial data to oceanographic models through several years missions. The most wellknown profiling floats are those of the Argo project [2]: about 4000 floats that gather data continuously all over the world.
More recently, the oceanographic community has been focused on swarm of profiling floats for shallow water [3,4] to better understand submesoscales dynamics (<1−10 km). In shallow water, the vertical and horizontal variation of biochemical parameters can be important. This is why oceanographers seek to increase the density of data gathered.
Designing a lowcost profiling float that can conduct shallow water mission is then a key challenge. By lowcostwe mean a fast design and development phase, low or no calibration steps before using the float and obviously a low cost per unit, while maintaining a high level of energetic and dynamical performances. The cost of the whole life cycle should be taken into account.
After introducing the dynamic model of a float, a focus will be given on the mechanical and electronic parts. A new command law based on a full state feedback coupled with an Extended Kalman Filter (EKF) will then be introduced and validated with experimental trials. We will finally propose a loop iteration design that are guidance rules to build such robots.
2 Float dynamics
A profiling float controls its buoyancy to regulate its vertical position. There exists several mechanical systems to perform this task that either adjust the mass or the volume of the float. They are mainly based on hydraulic pump or piston system. Some floats are also equipped with a passive system: they are designed to stabilize themselves at a unique density.
We will choose the case of a piston based system (see Fig. 1) which is simple to design and suitable for shallow water.
The principle is to adjust the volume of the float by pushing in or pulling out a piston that will modify the density and so the buoyancy. A float is primarily subject to gravity, buoyancy and drag forces. We make the assumption that the float has only vertical motion, with no rotation, that it is in thermal equilibrium with surrounding water, that the density of water is constant and that there is no vertical water velocity. A more complex model could be developed for more precise studies but a basic one seems to be sufficient to achieve an effective control (see the experimental results in Sect. 5). We have: $$\left({m}_{f}+{m}_{a}\right)\ddot{z}={\mathcal{F}}_{b}+{\mathcal{F}}_{d}{m}_{f}g$$(1)
where ${\mathcal{F}}_{b}$ and ${\mathcal{F}}_{d}$ are respectively the buoyancy force and the drag force. m_{f} is the mass of the float and m_{a} is the added mass which cannot be neglected in the case of water [5]. Table 1 summarizes all the parameters. The virtual mass m_{v} = m_{f} + m_{a} is the sum of the two masses. We then have $$\begin{array}{ll}{m}_{v}\ddot{z}\hfill & =\rho g{V}_{t}\frac{1}{2}{C}_{d}S\rho \left\dot{z}\right\dot{z}{m}_{f}g\hfill \end{array}$$(2)
where V_{t} is the total volume of the float composed of the sum of the piston volume V_{p} and the float volume V_{f}. Note that the volume of the float V_{f} is supposed to be equal at zero depth to m_{f}∕ρ: the float has a neutral buoyancy. The piston volume V_{p} is then defined as a positive or negative volume from neutral buoyancy at zero depth. Equation (2) can then be simplified to: $$\begin{array}{ll}{m}_{v}\ddot{z}\hfill & =\rho g\left({V}_{f}+{V}_{p}\right)\frac{1}{2}{C}_{d}S\rho \left\dot{z}\right\dot{z}\rho {V}_{f}g\hfill \\ \ddot{z}\hfill & =\frac{\rho g}{{m}_{v}}{V}_{p}\frac{{C}_{d}S\rho}{2{m}_{v}}\left\dot{z}\right\dot{z}\hfill \end{array}$$(3)
A last phenomenon must be taken into account: the compressibility of the float. While increasing external pressure, the float’s volume will decrease. This is also the case for water. The isothermal compressibility ${\mathcal{K}}_{T}=\frac{1}{V}{\left(\frac{\partial V}{\partial P}\right)}_{T}$ measures the relative change of volume as a response to a pressure. We will assume that the water and float temperatures are constant which means that ${\mathcal{K}}_{w}$, the water compressibility, and ${\mathcal{K}}_{f}$, the float compressibility are constant. We will also assume that the relation between the pressure P and the depth z is linear equal to P(z) = ρgz.
We can then deduce the loss of buoyancy of the float which is explained by the relative variation of volume δV of the float compared to the equivalent one of water under the same pressure: $${\mathcal{F}}_{\mathcal{K}}=\rho g\delta V=\rho g\text{}\left({\mathcal{K}}_{f}{\mathcal{K}}_{w}\right)\text{}P(z){V}_{f}=\left({\mathcal{K}}_{f}{\mathcal{K}}_{w}\right)\text{}{m}_{f}\rho {g}^{2}z.$$(4)
Note that we have neglected the loss associated to the piston volume and we have supposed that the volume of the float is constant. Equation (3) can then be rewritten to take into account the compressibility: $$\ddot{z}=\frac{\rho g}{{m}_{v}}{V}_{p}\frac{{C}_{d}S\rho}{2{m}_{v}}\left\dot{z}\rightz+\left({\mathcal{K}}_{f}{\mathcal{K}}_{w}\right)\frac{{m}_{f}\rho {g}^{2}z}{{m}_{v}}.$$(5)
We set $\chi ={m}_{f}\left({\mathcal{K}}_{f}{\mathcal{K}}_{w}\right)g$, the loss of volume per meter depth, which is homogeneous to m^{2}. We obtain $$\ddot{z}=\frac{\rho g}{{m}_{v}}\left({V}_{p}\chi z\right)\frac{{C}_{d}S\rho}{2{m}_{v}}\left\dot{z}\right\dot{z}.$$(6)
Set $A=\frac{\rho g}{{m}_{v}}$ and $B=\frac{{C}_{d}S\rho}{2{m}_{v}}$, we obtain: $$\ddot{z}=A\left({V}_{p}\chi z\right)B\left\dot{z}\right\dot{z}.$$(7)
The sign of the χ coefficient significantly affects the stability of the system. The float is stable for a negative χ and unstable for a positive value. Let us take a float that is neutral buoyant for a depth z. Let us then move the float of δz in the case of a negative χ: the variation of volume δV will be of the same sign as δz which will produce a force in the opposite direction of the movement. The float will then go back to its previous depth z. In the case of a positive χ the movement is on the contrary amplified by the variation of volume. Figure 2 shows the trajectory over time of two floats with a negative and positive χ. The float is stable for z = 0 and was moved of δz = 0.1 m. In the case of a negative χ the drag force progressively reduces the oscillations while in the case of a positive χ the system is clearly unstable and reaches rapidly a constant positive velocity.
Fig. 1 Float equipped with a piston system. 
Float physical parameters.
Fig. 2 Evolution of float depth for a positive and a negative χ. 
3 Robot design
The SeaBot float is a 80 cm lowcost system design for shallow water up to 50 m (see Fig. 3). The whole system uses as much as possible standard and offtheshelf mechanical and electronic components. We also tried to limit machining operations for manufacturing the robot.
Fig. 3 The Seabot float. 
3.1 Mechanical architecture
We will givehere an overview of the different design problems that have to be considered in order to build a lowcost float. The idea is to give simple and first step design rules.
3.1.1 Float hull
To avoid corrosion phenomenon and to facilitate the development of the float, we have chosen to use a full plastic hull and a transparent tube. The caps and the piston are in polyoxymethylene (POMC) and the tube is in polycarbonate (PC).
To design the thickness of the tube and the tube caps, we have to verify that [6,7]:

${e}_{\text{pipe}}>\frac{P\cdot {d}_{\text{pipe}}}{2{\sigma}_{e}}$ where e_{pipe} is the thickness of the tube, P the external pressure, d_{pipe} the diameter of the tube, σ_{e} the elastic limit,

${e}_{\text{caps}}>{r}_{\text{caps}}\sqrt{\frac{2}{3}\frac{P}{{\sigma}_{e}}}$ where r_{caps} is the radius of the caps.
In the case of the SeaBot, we obtain, for a 50 m depth limit and a 120 mm tube, using Table 2, e_{pipe} > 0.4 mm. We have chosen a thickness of 5 mm that takes into account a safety coefficient and that limits the compressibility issue which will be studied later. We obtain e_{caps} > 8 mm for the caps.
Using stainless steel or aluminum would have allowed to reduce the thickness of the tube to few millimeters but it raises issues with the propagation of wireless signal, with the tube ovalization at small thickness and with the issue of galvanic corrosion. Moreover stainless steel is more dense than plastic materials, so the gain in thickness should be balanced with the additional mass that reduces the payload mass.
Approximate values of material mechanical properties.
3.1.2 Float compressibility
Estimating the float compressibility is important to know if the system will be stable or unstable. At a first approximation, we can model the tube by an infinite cylinder. We know from classic results [8, p.240] that the total radial travel for the external radius of a pressured thickwalled tube is: $$u=\frac{1\nu}{E}\frac{{a}^{2}{P}_{I}{b}^{2}{P}_{E}}{{b}^{2}{a}^{2}}b+\frac{1+\nu}{E}\frac{{a}^{2}{b}^{2}({P}_{I}{P}_{E})}{\left({b}^{2}{a}^{2}\right)b}$$(8)
where u is the total radial travel, ν the poisson’s ratio, E the young modulus, a the internal radius, b the external radius, P_{E} the external pressure and P_{I} the internal pressure.
If we neglect the effect of the two caps, the loss of volume can be approximated by: $${V}_{\text{lost}}=\pi ({b}^{2}{(bu)}^{2})L$$(9)
where L is the length of the tube. We can then deduce an approximation of the float compressibility: $${\mathcal{K}}_{f}=\frac{{V}_{\text{lost}}}{{V}_{f}{P}_{E}}$$(10)
In the case of the SeaBot float, we obtain a mean compressibility for P_{E} = 5 bar, P_{I} = 0.6 bar and L =0.6 m of ${\mathcal{K}}_{f}=4.30{\times}^{9}\text{\hspace{0.17em}}{\text{Pa}}^{1}$. We can then deduce the loss of volume per meter χ = 7.22 ×^{−7} m^{3} m^{−1}. The float is found to be passively unstable.
The χ_{theory} is similar to the χ_{measured} ≃ 2.14 ×^{−6} m^{3} m^{−1}. A more detailed study using numerical simulation should be undertaken to obtain a better estimation of the χ_{theory}. By comparison, a 2 mm thick aluminum tube would have made the float less compressible than water.
3.1.3 Autoballasting system
The autoballasting system (ABS) is based on a 5 cm diameter piston that moves along a M12 steel threaded rod which is rotated with a brushed motor. The position of the piston is given by an optical codewheel (48 counts per revolution) and two reed switches that provide two mechanical zero position and maximum position references. Figure 4 shows the mechanical design of the system.
The required torque that the motor has to deliver can be calculated classically [6,7] by the following equation: $$\mathcal{T}={F}_{P}{r}_{\text{mean}}\mathrm{tan}\left(i+\phi \right)$$(11)
where $\mathcal{T}$ is the torque (in N m), F_{P} is the normal force applied to the piston (in N), r_{mean} the mean radius of the threaded rod (in m), i the thread angle and φ the angle of friction that depends on the materials.
In the SeaBot case, we have F_{P} = ρgz_{max}S, r_{mean} = 6 mm, the screw thread is 1.75 mm which gives i = 8° and if we assume a friction coefficient of 0.4 between steel and POMC, φ = 22°. We obtain ${\mathcal{T}}_{\text{max}}=3.4\text{\hspace{0.17em}}\text{N}\text{\hspace{0.17em}}\text{m}$.
The SeaBot motor (MFA Como 970D1561) is a ${\mathcal{P}}_{m}=19.8\text{\hspace{0.17em}}W$, of 0.015 N m at maximum efficiency and 0.1 N m at the maximum torque, with a 156:1 reduction gearbox, which gives a maximum output torque between 2.34 N m and $15.6\text{\hspace{0.17em}}\text{N}\text{\hspace{0.17em}}\text{m}>{\mathcal{T}}_{\text{max}}$. The output rotation speed is 93RPM so we can compute the theoretical maximum volume variation of the piston per time: ${\dot{V}}_{p}=5.32{\times}^{6}\text{\hspace{0.17em}}{\text{m}}^{3}\text{\hspace{0.17em}}{\text{s}}^{1}$.
A compromise has to be found between the diameter of the piston, the maximum torque of the motor and the maximum volume rate of the piston.
Fig. 4 Mechanical design of the ABS system. 
3.1.4 Additional systems
The SeaBot float is also equipped with two lowcost thrusters that can be used at surface to correct its position.
In addition, the internal part of the float is maintained at a pressure of 600 mbar. This low pressure maintains the Orings an the two caps even at the surface of the sea. This also provides an easy way to detect important leak issues.
3.2 Electronic system
The main electronic is based on a Raspberry Pi 3 B+ board and microcontrollers (μC) dedicated to real time control and hardware interfaces.
The float is equipped with a 18 cm accuracy, 0.1 mm resolution pressure sensor, an external temperature sensor, a MEMS IMU, a GNSS receiver, an Iridium transceiver, an optical codewheel for the piston and an internal temperature, pressure and humidity sensor to detect water leak issues. Figure 5 shows the electronic architecture.
Monitoring the humidity level appears to be more efficient to detect small leaks than monitoring the internal pressure which requires important water ingress to change.
The float has four 5Ah 3S LiPo batteries that provide a total of 20Ah. This gives around 226 W h which means about one day autonomy.^{1} The electronic system without the motor and thrusters consumes around 2.5 W. The electronic energy consumption could be greatly optimized in a second step design.
Fig. 5 Electronic design. 
3.3 Software architecture
The software is based on the ROS middleware. It is built around nodes that handle specific tasks and can communicate with each other. The SeaBot source code is available online (https://github.com/ThomasLeMezo/ seabot). Figure 6 shows a simplified functional architecture of the software. Note that the robot implements a safety observer that constantly checks the parameters of the float (maximum depth, leak issue, etc.) and triggers an emergency surfacing if necessary.
Fig. 6 Software functional architecture. 
4 Depth controller
In this section, we will deal with the depth controller of the float during diving. A key point, in the context of lowcost actuators and sensors,is to implement an efficient control law that minimizes the energy consumption while maintaining a low error relative to the depth set point.
Several approaches have been used in the literature: a survey of profiling float controllers can be found in [9]. Classic PID based controllers are not suitable in the context of lowcost floats as underlined in [10] because of the time required to tune experimentally their coefficients. State of the art float controllers now use state feedback [4] or adaptive controller [11] techniques. The main difficulty of those controllers is the ability to know an accurate dynamical model of the robot. Indeed, several parameters such as buoyancy depend on the surrounding water’s properties. An online estimator must therefore be implemented. To solve theproblem, several techniques have been used including fuzzy inferences [4] and full state observers [10].
In the following section, we will propose a new method built on a state feedback controller and on an online estimator based on an Extended Kalman Filter (EKF). This new method better takes into account the compressibility of the float. It also drives the float with a velocity constraint which is new. Indeed, from a theoretical point of view, the energy loss of the system is mainly due to drag forces which are linked to the velocity of the float. A precise control of the float velocity is therefore crucial.
The float system can be modeled through the following equation: $\stackrel{.}{x}=f\left(x,u\right)$ where $x={\left(\dot{z},z,{V}_{p}\right)}^{\u22ba}$ is the state vector of the system, f the evolution function of the system and u the input. From equation (7), we obtain: $$\stackrel{.}{x}=\left(\begin{array}{c}\ddot{z}\\ \dot{z}\\ {\dot{V}}_{p}\end{array}\right)=\left(\begin{array}{c}A\left({V}_{p}\chi z\right)B\left\dot{z}\right\dot{z}\\ \dot{z}\\ u\end{array}\right)$$(12)
where u is the piston volume rate.
4.1 Control law
In a context of low energy consumption, we want to avoid as much as possible any overshoot of the control which would cause unnecessary movements of the piston. In terms of energy, the mechanical work of the piston depends of the velocity and of the loss of volume per meter χ. If χ = 0, the float can move from an equilibrium depth position to an other with an ɛ move of the piston: the work is then directly linked to the velocity of the movement and not to the traveled depth.
To be able to limit the velocity while reaching the desired depth, we chose to control the float with a vector field that links the velocity and the depth error to the depth setpoint (see Fig. 7): $$\dot{z}=\beta \mathrm{arctan}\left(\frac{\overline{z}z}{\alpha}\right)$$(13)
where $\overline{z}$ is the depth setpoint and $\left(\alpha ,\beta \right)$ is a pair of constant parameters. Other functions such as sigmoids could have been chosen as long as they are smooth, as this is required to apply state feedback techniques. The coefficients α and β will be chosen depending on the performances required by the user application in particular the maximum velocity ${\dot{z}}_{\text{max}}=\beta \frac{\pi}{2}$ and the deceleration phase near the depth setpoint though $\frac{\beta}{\alpha}$. The adjustment of these parameters will be discussed in Section 6. Unless stated otherwise, we will let α =1.
To apply state feedback linearization technique [12], we chose for the system output $y=\dot{z}\beta \mathrm{arctan}\left(\frac{\overline{z}z}{\alpha}\right)$. Our system has a relative degree of 2 which requires to derive two times the output. $$\begin{array}{lll}\dot{y}\hfill & =\hfill & \ddot{z}\frac{\beta}{\alpha}\frac{\dot{z}}{1+{e}^{2}}=\ddot{z}+\gamma \frac{\dot{z}}{D}\hfill \end{array}$$(14)
where $e=\frac{1}{\alpha}\left(\overline{z}z\right)$, D = 1 + e^{2}, $\gamma =\frac{\beta}{\alpha}$, $$\begin{array}{lll}\ddot{y}\hfill & =\hfill & \stackrel{\u20db}{z}+\gamma \frac{\ddot{z}D\dot{z}\dot{D}}{{D}^{2}}=\stackrel{\u20db}{z}+\gamma \frac{\ddot{z}D+2{\alpha}^{2}e{\dot{z}}^{2}}{{D}^{2}}\hfill \end{array}$$(15)
as Ḋ = −2α^{−2}eż and with $\stackrel{\u20db}{z}=A(u\chi \dot{z})2B\left\dot{z}\right\ddot{z}$, $$\ddot{y}=Au+A\chi \dot{z}2B\left\dot{z}\right\ddot{z}+\gamma \frac{\ddot{z}D+2{\alpha}^{2}e{\dot{z}}^{2}}{{D}^{2}}.$$(16)
We then chose u such that y is solution of λ_{3}ÿ + λ_{2}ẏ + λ_{1}y = 0 where λ_{1}, λ_{2}, λ_{3} are constant coefficients. In order to avoid any overshoot we want a single negative pole s such that the characteristic equation of the previous equality is ${\left(1s\right)}^{2}$, which gives the coefficient values: λ_{3} = 1, λ_{2} = −2s and λ_{1} = s^{2}. The control law can be then expressed as: $$u=\frac{1}{A}\left(2s\dot{y}+{s}^{2}y+\gamma \frac{\ddot{z}D+2{\alpha}^{2}e{\dot{z}}^{2}}{{D}^{2}}2B\left\dot{z}\right\ddot{z}\right)+\chi \dot{z}.$$(17)
This allows y to converge towards 0 at a speed of ~ e^{st}. The pole s should be chosen according to the dynamics of the system.
The previous model is only valid when the float is completely immersed. This is not the case at surface when antennas are emerged. This is why a simple finitestate machine switches between a simple sinking procedure that slowly retracts the piston until a certain depth z_{f} is reached, and a state feedback controller that is activated below this depth.
Fig. 7 Map of the setpoint velocity as a function of the depth error δ_{z}. 
4.2 Estimation of unknown parameters
The main issue, with the control law described above, is that the exact volume V_{p} of the piston and the χ parameter are unknown. Concerning the volume, we measure with a high precision the volume of the piston V_{m} from a mechanical zero reference but we do not know the offset V_{o} such that the float is at equilibrium for a zero depth (V_{p} = V_{m} + V_{o}). The parameter χ is even more complex to estimate as it also depends of surrounding water properties.
This is why an EKF will be used to estimate V_{o} and χ. Note that some of the modeling errors would be also compensated by the estimation of both variables. By using equation (12), we can obtain a specific system for the estimation of V_{o} and χ. Note that V_{p} is here considered as the input u. We measure z and we assume that V_{0} and χ are constant over time. With the state vector $x={\left(\dot{z},z,{V}_{0},\chi \right)}^{\u22ba}$, we have for the continuous system: $$\{\begin{array}{ll}\stackrel{.}{x}={f}_{c}\left(\stackrel{.}{x},u\right)\hfill & =\left(\begin{array}{c}A\left(u\chi z\right)B\left\dot{z}\right\dot{z}\\ \dot{z}\\ 0\\ 0\end{array}\right)\hfill \\ y=g\left(x\right)\hfill & =\left(z\right)\hfill \end{array}$$(18)
We recall the Kalman prediction and corrector equations^{2}, in the case of a discrete time system, with an Euler integration scheme at step k, and a dt duration between steps:

Prediction

Update
where

${A}_{k}=\frac{\partial f({\widehat{x}}_{k\mid k},{u}_{k})}{\partial x}=\left(\text{}\begin{array}{cccc}2B\left\widehat{\dot{z}}\right& A\widehat{\chi}& A& A\widehat{z}\\ 1& 0& 0& 0\\ 0& 0& 0& 0\\ 0& 0& 0& 0\end{array}\text{}\right)\cdot dt+{I}_{4\times 4}$ is the evolution matrix,

${C}_{k}=\frac{dg({\widehat{x}}_{k\mid k1})}{dx}=\left(\text{}\text{}\begin{array}{cccc}0& 1& 0& 0\end{array}\text{}\text{}\right)$ is the observation matrix,

and Γ_{α}, Γ_{β} are respectively the process and the observation noise covariance matrices. In our case we set them diagonal and constant. Their coefficients depend on the accuracy of the sensors and of the dynamic of the float.
Figure 8 illustrates the depth controller structure with the EKF and the statefeedback.
Fig. 8 Depth controller structure. 
5 Experimental results
5.1 Testsin a controlled environment
The float system was tested in a 20 m deep sea water basin at Ifremer^{3} Brest (see Fig. 9). The state feedback controller and the EKF were running at 5 Hz with a transition depth z_{f} = 0.3 m. The mission was to reach five differentdepth levels {1, 5, 10, 15, 18} m with a maximum speed of $\left{\dot{z}}_{\text{max}}\right=0.04\text{\hspace{0.17em}}\text{m}\text{\hspace{0.17em}}{\text{s}}^{1}$, α =1 and s = −1. Figure 10 shows the trajectory over time and Figure 11 shows the piston volume measured V_{m}. There is no overshoot along z and we clearly see, on the volume V_{m} plot, the compensation of the loss of volume: the deeper the robot is, the larger the volume of the piston output must be.
Fig. 9 Ifremer Brest water tank with the SeaBot float. The robot is secured along a rope guide. 
Fig. 10 Depth z (in meter) of the float in function of time t (in seconds). The setpoint depth trajectory is in red and the float depth trajectory is in black. 
Fig. 11 Piston volume measured V_{m} in function of time t (in seconds). 
Evolution of χ
Measuring the volume of the piston once the float is stabilized at every depth level gives an idea of the value of χ. From experimental data, the loss of volume appears not to be linear with depth z but quadratic with respect to z. However, the EKF handles this model error and adjust the value of χ and V_{0} (see Fig. 12): this is why χ is not constant over time.^{4} The associated evolution of variances over time of χ and V_{0} are shown in Figure 13. We can notice that the variance of V_{0} increases when the variance of χ decreases. This could be due to the fact that the dynamic model of the system is oversimplified.
Fig. 12 Estimation of V_{0} and χ by the EKF over time. 
Fig. 13 Variance of V_{0} and χ over time in logarithmic scale. 
Energy consumption
To reduce the energy consumption during ascending and descending phases, we compute an interval of input [u] for an interval of maximum velocity $\left[{\dot{z}}_{\text{max}}\right]$ and we choose the command that minimizes [u]. A no piston movement strategy could also be adopted when the setpoint is reached in the case of a stable float but this is not the case for our system.
Depth error
For this first test, the depth error after the depth setpoint is reached is of few centimeters (in most cases under 2 cm). Some depth bias of up to4 cm can be observed which could come from mechanical hysteresis or error in the model. Adding an integral effect to the control law could be a solution to compensate these small biases.
We can also note that the pressure sensor, which drives in our case the performance limit of the system, has an equivalent resolution of around 0.9 mm. This means that the depth controller has a performance of around ten to twenty times the resolution of the sensor.
5.2 Tests in real environments
Ocean trials have been conducted in the Brest bay (see Fig. 15), in the Bertheaume cove (see Fig. 14) and in the Guerlédan lake (see Fig. 16). Results are the subject of ongoing analysis at the time these lines are written concerning sea trials.
The Guerlédan lake mission consisted of 8 identical twohours series. The robot had to perform 20min depth stops at: {10, 17.5, 25, 17, 9.5, 2,0} for a total of 17 hmission. The mission started on the 10th of October 2019 at 15h06UTC and lasted all the night. Figure 17 shows the result with a zoom on one of the stop. We can see that the depth error is relatively low with an order of magnitude of few millimeters.^{5}
We can also note that just after 9 h of mission, the robot encountered wrong pressure data that led to a return to the surface. As a result of this event, the EKF diverged to false values which explains why there are small overshoots on the next depth stops. The situation came back to normal around 11 h of mission. Additional safety checks were added to prevent this problem from happening again.
For each surface rise, the robot sent its position through a satellite connection and used its thrusters to reach a next predefined area to dive.
Fig. 14 Last test of the Seabot depth controller in the ENSTA Bretagne 2.5 m deep pool before a deployment in the Bertheaume cove. Note that we added colored stripes to make it easier to find the robot at the end of the mission. 
Fig. 15 Two SeaBot before their mission in the bay of Brest. 
Fig. 16 A Seabot after ending its mission in the lake of Guerlédan. We can only see the yellow antenna emerging from the surface at the center of the picture. An air drone is filming the scene. 
Fig. 17 The Guerlédan lake mission. The depth setpoint trajectory is in red and the float depth trajectory is in black. 
6 Validation of the depth control law
The SeaBot has mechanical constraints which bounds the volume ${V}_{p}\in \left[{V}_{p}\right]$ and the volume rate of the piston${\dot{V}}_{p}\in \left[{\dot{V}}_{p}\right]$. These constraints narrow the α, β, s and $\overline{z}$ possible values. The parameters for the SeaBot piston are summarized in Table 3. The asymmetry between ${V}_{p}^{+}$ and ${V}_{p}^{}$ is due to the need to have a sufficient buoyancy to emerge antennas.
Seabot piston parameters (experimental results, ${\dot{V}}_{p}$ is limited by software compared to the maximum possible values).
Maximum depth
The maximum depth is not only limited by the hull durability against pressure but also by the loss of volume due to compressibility. It is equal to around 70 m. At equilibrium in the case of the maximum depth, we have from equation (7): V_{p} − χz_{max} = 0 which implies that ${z}_{\mathrm{max}}=\mathrm{max}{\left(\frac{{V}_{p}}{\chi}\right)}_{{V}_{p}\in \left[{V}_{p}\right]}=70\text{\hspace{0.17em}}\text{m}$. A stable float (χ < 0) will not be able to go deeper whereas an unstable float (χ > 0) will not be able to go back to a lower depth. Indeed, it will not have enough reserve buoyancy to come back to surface, if it goes deeper than this limit.
We have set a practical depth limit to z_{max} = 50 m to keep a safety margin which covers the mechanical strength of the tube and the compressibility issue.
Maximum velocity
Similarly, the float cannot exceed a certain velocity ż_{max} due to compressibility. If we suppose that the float has stabilized its velocity to ż_{max}, we then have from equation (7): $A\left({V}_{p}\chi z\right)B\left{\dot{z}}_{\text{max}}\right{\dot{z}}_{\text{max}}=0$ which implies that $${\dot{z}}_{\text{max}\mid \text{z}}={\left(\sqrt{\left\frac{A}{B}\left({V}_{p}\chi z\right)\right}\right)}_{{V}_{p}\in \left\{{V}_{p}^{},{V}_{p}^{+}\right\}}.$$(19)
In the case of the SeaBot, we obtain^{6}: $$\{\begin{array}{l}{\dot{z}}_{\text{max}\mid \text{z=0}}\in \left\{0.255,0.097\right\}\text{m}\text{\hspace{0.17em}}{\text{s}}^{1}\hfill \\ {\dot{z}}_{\text{max}\mid \text{z=50}}\in \left\{0.136,0.236\right\}\text{m}\text{\hspace{0.17em}}{\text{s}}^{1}\hfill \end{array}\text{}\text{}\text{}\text{}\text{}.$$
This is consistent with the fact that at surface there is more positive reserve buoyancy than negative one that explains the difference of velocity. The phenomenon is reversed at 50 m due to the loss of volume. Note that these maximum velocities are only based on the hypothesis of stabilized velocity: higher values can be reached for a depth z depending on the initial condition of the trajectory.
Piston velocity limitation
We consider now the limitation induced by $\left[{\dot{V}}_{p}\right]$. The speed of the loss of volume due to compressibility is linked to the velocity of the float. Therefore, the piston should move fast enough to compensate this loss. Otherwise, in the case of an unstable float, it will not succeed in decelerating. In the stable case, the velocity will be limited by: $${\dot{z}}_{\mathrm{max}}=\frac{{\dot{V}}_{p}}{\chi}{\mid}_{{\dot{V}}_{p}\in \left\{{\dot{V}}_{p}^{},{\dot{V}}_{p}^{+}\right\}}\in \left\{\text{0}.\text{66},\text{0}.\text{66}\right\}\text{m}\text{\hspace{0.17em}}{\text{s}}^{\text{1}}.$$
Therefore $\left[{\dot{V}}_{p}\right]$ limits the maximum allowable velocity of the float.
Vector field following
An other important issue is to verify that the maximum piston volume rate ${\dot{V}}_{p}$ is sufficient to follow the imposed trajectory, i.e. $\forall t,u\left(t\right)\in \left[{\dot{V}}_{p}\right]$.
We first consider that the float is stabilized on the trajectory [13]. We know that $\dot{z}=\beta \mathrm{arctan}\left(\frac{\overline{z}z}{\alpha}\right)$ and we also know that ẏ = 0 so $\ddot{z}=\gamma \frac{\dot{z}}{D}$ which implies that ${V}_{p}=\frac{1}{A}\left(\frac{\gamma \dot{z}}{D}+B\left\dot{z}\right\dot{z}\right)+\chi z$. We can then compute u as a function of z, as we know ż and V_{p} as functions of z. In order to obtain a guaranteed evaluation of $u\left(z\right)$ and avoid numerical errors, we will use interval computations to bracket the value of the function and obtain two boundaries u^{+} and u^{−} such that $u\in \left[{u}^{},{u}^{+}\right]$ [14].
If we take $s=1,\beta =0.05\frac{2}{\pi},\alpha =1$ and $\overline{z}=0$, we obtain full black curves in Figure 18. We can see that the control input is always inside the maximum and minimum piston volume rates. We can clearly see that when the system is far from the target, it needs to compensate χ. The local increase of u near the set point is due to the deceleration. The maximum volume velocities computed are $\left\{1.383{\times}^{7},1.383\times 7\right\}\text{\hspace{0.17em}}{\text{m}}^{3}\text{\hspace{0.17em}}{\text{s}}^{1}\subset \left[{\dot{V}}_{p}\right]$.
We can also study the performance of the controller near the desired velocity setpoint. If we assume now that $\dot{z}=\beta \mathrm{arctan}\left(\frac{\overline{z}z}{\alpha}\right)+w$ where $w\in \left[5{\times}^{3},5{\times}^{3}\right]\text{m}\text{\hspace{0.17em}}{\text{s}}^{1}$, we obtain the dotted curves of Figure 18 and the new maximum volume velocities: $$\left\{5.62{\times}^{7},5.62{\times}^{7}\right\}\text{m}\text{\hspace{0.17em}}{\text{s}}^{1}\subset \left[{\dot{V}}_{p}\right].$$
The study of the transition phase where the system reaches the vector field is also an important keypoint that is not studied here. More generally, the computation of the largest positive invariant set [15] of the system in a context of a saturated input would be interesting. This means to find the set of all states from which the system will converge to the depth setpoint. A sufficient reserve of ${\dot{V}}_{p}$ must be preserved to efficiently backtrack the correct velocity.
Fig. 18 Outer approximation of the controller as a function of depth for two configurations. The maximum bounds of ${\dot{V}}_{p}$ are in red. Dotted curves correspond to the model with noise. 
Minimum piston volume increment
Defining the minimum codewheel step increment is a difficult task. A way to estimate a minimum value is to evaluate from equation (19) which error of velocity produces a step of piston volume.
In the case of the SeaBot, if we allow a δż = 0.01 m s^{−1} velocity error at zero depth, we obtain an equivalent error of volume of δV_{p,max} = 2.306 ×^{−7} m^{3}. We have chosen, for the SeaBot, a 48 counts per revolution codewheel which gives a δV_{p} = 7.16 ×^{−8} m^{3} < δV_{p,max}.
Energy consumption
For a given maximum velocity ż_{m} and a depth change Δz with a zero velocity at the beginning, and at the end, we can deduce, for the piston, the required variation of volume. By taking into account the piston volume rate, we can obtain the amount of motor run time if we suppose at a first approximation a onetime movement. We can then deduce an under approximation of the energy required for the mission: $$\mathcal{E}=\frac{\text{\Delta}{V}_{p}}{{\dot{V}}_{p,\text{max}}}{\mathcal{P}}_{m}=\frac{2\left(\frac{B}{A}{\dot{z}}_{m}^{2}\right)+\left\chi \text{\Delta}z\right}{{\dot{V}}_{p,\text{max}}}{\mathcal{P}}_{m}.$$(20)
We assume here, to simplify, that the piston movement for the velocity and for the loss of volume are independent. We also assume that the piston has to first move to reach ż_{m} and then has to move to decelerate to zero velocity. We recall that ${\mathcal{P}}_{m}$ is the powerof the motor.
In the case of the SeaBot, for a Δz = 50 m and ż_{m} = 0.05 m s^{−1}, we obtain a run time of 83 s and $\mathcal{E}=0.457\text{\hspace{0.17em}}\text{W}\text{\hspace{0.17em}}\text{h}$.
7 Designloop
Similarly to the ship design loop technique from the Naval Architecture community, we propose here a lowcost float design loop. The idea is to compute from the problem inputs, the minimum electronic and mechanical characteristics of the float.

Probleminputs:

mass of the payload: m_{p},

maximum float velocity required ż_{max}, trajectory to follow and error allowed,

volume of the antennas V_{a},

max depth: z_{m},

mission duration T and number of typical depth variation Δz,

environmental parameters: water density ρ.

Design loop
 1.
Compute the diameter d and length L of the float (function of m_{p}). Choose a material for the hull and compute its minimum thickness (function of z_{m}).
 2.
Estimate the drag coefficient C_{d} (function of d) and the loss of volume per meter χ.
 3.
Compute the interval volume of the piston $\left[{V}_{p}\right]$ required (i) to emerge antennas (V_{a}), (ii) to compensate the loss of volume (χ), (iii) and to reach the maximum velocity (function of C_{d}).
 4.
Compute the interval velocity of the piston $\left[{\dot{V}}_{p}\right]$ required to follow the trajectory and compensate χ. Set the minimum motor specifications.
 5.
Compute the step increment of piston volume (δV) and choose a depth sensor according to specifications.
 6.
Estimate the power consumption and choose the battery capacity.
 7.
Go to step 1 if energy autonomy does not comply with the maximum payload weight.
 1.
8 Conclusion and future work
In this paper, we presented a new lowcost profiling float called SeaBot. It implements a new method based on a full state feedback controller and an EKF estimator that was tested experimentally. We also gave a special focus on proposing tools that help to validate the system characteristics. In particular, that the system is able to follow the depth profile setpoint. To summarize the validation method, we proposed a design loop to develop lowcost float.
This new controller has the advantage of not having a depth overshoot which reduces power consumption. It does not require fine calibration of coefficients since they are estimated online. Compared to the state of the art, the controller seems to be equivalent or better than existing controllers in term of depth control accuracy. However, there is no sufficiently detailed data in the literature to make an accurate comparison. This work will therefore allow in the future to establish a basis for comparison on the performance of a density based controller given the accuracy of the pressure sensor.
This controller has several limitations that would be interesting to address in future work. The dynamic model on which the controller is based could be completed to take into account a more realistic compressibility law. The coefficient of friction of the float could also be estimated assuming that it is observable. In our case of a very high compressibility of the float compared to that of water, the influence of temperature on the density of water is negligible. This is no longer the case when the compressibility are of the same order of magnitude: this would need to be taken into account in the model. In addition, a float less compressible than water would make it stable and therefore would make it possible to have zeroenergy consumption once the set point is reached under the condition that there is no variation in vertical currents. Finally, we found that in the presence of shallow water, the swell can have an impact on the depth measured by the pressure sensor. An adapted filtering of the swell would therefore be necessary to avoid compensating it.
Acknowledgements
This work has been supported by the French Government Defense procurement and technology agency (DGA).
References
 S. Le Reste, V. Dutreuil, X. Andre, V. Thierry, C. Renaut, P. Le Traon, G. Maze, A new profiling float to extend the argo observations down to 4000m depth, J. Atmos. Ocean. Technol. 33, 1039–1055 (2016) [Google Scholar]
 S.C. Riser, H.J. Freeland, D. Roemmich, S. Wijffels, A. Troisi, M. Belbéoch, D. Gilbert, J. Xu, S. Pouliquen, A. Thresher, P.Y. Le Traon, G. Maze, B. Klein, M. Ravichandran, F. Grant, P.M. Poulain, T. Suga, B. Lim, A. Sterl, P. Sutton, K.A. Mork, P.J. VélezBelchí, I. Ansorge, B. King, J. Turton, M. Baringer, S.R. Jayne, Fifteen years of ocean observations with the global argo array, Nat. Clim. Change 6, 145–153 (2016) [CrossRef] [Google Scholar]
 J.S. Jaffe, P.J.S. Franks, P.L.D. Roberts, D. Mirza, C. Schurgers, R. Kastner, A. Boch, A swarm of autonomous miniature underwater robot drifters for exploring submesoscale ocean dynamics, Nat. Commun. 8, 14189 (2017) [PubMed] [Google Scholar]
 W.M. Bessa, E. Kreuzer, J. Lange, M. Pick, E. Solowjow, Design and adaptive depth control of a micro diving agent, IEEE Robot. Auto. Lett. 2, 1871–1877 (2017) [Google Scholar]
 T.I. Fossen, Handbook of marine craft hydrodynamics and motion control =: Vademecum de navium motu contra aquas et de motu gubernando, Wiley, New York, (2011) [CrossRef] [Google Scholar]
 P. Agati, F. Lerouge, M. Rossetto, 2016 Résistance des matériaux  2ème édition  Cours, exercices et applications industrielles. Dunod, 2e édition [Google Scholar]
 M. Aublin, R. Boncompain, M. Boulaton, D. Caron, E. Jeay, B. Lacage, J. Réa, Systèmes mécaniques  Théorie et dimensionnement, Dunod, Paris, 2005 [Google Scholar]
 S. Timoshenko, Strength of materials, part II, Adv. Theory Problems 245 (1941) [Google Scholar]
 Y. Shi, C. Shen, H. Fang, H. Li, Advanced control in marine mechatronic systems: A survey, IEEE/ASME Trans. Mech. 22, 1121–1131 (2017) [Google Scholar]
 B. McGilvray, C. Roman, 2016 Control system performance and efficiency for a middepth lagrangian profiling float, in OCEANS’10 IEEE SYDNEY, pp. 1–10 [Google Scholar]
 E.J. Berkenpas, B.S. Henning, C.M. Shepard, A.J. Turchik, C.J. Robinson, E.J. Portner, D.H. Li, P.C. Daniel, W.F. Gilly, A buoyancycontrolled lagrangian camera platform forIn SituImaging of marine organisms in midwater scattering layers, IEEE J. Ocean. Eng. 43, 595–607 (2018) [CrossRef] [Google Scholar]
 L. Jaulin, Mobile Robotics https://hal.archivesouvertes.fr/hal01236489 [Google Scholar]
 M. Le Gallic, J. Tillet, L. Jaulin, F. Bars, Tight slalom control for sailboat robots, in International Robotic Sailing Conference (2018) [Google Scholar]
 L. Jaulin, M. Kieffer, O. Didrit, É. Walter, Applied Interval Analysis: With Examples in Parameter and State Estimation, Robust Control and Robotics. Springer, London, 2001 [Google Scholar]
 T. Le Mézo, L. Jaulin, B. Zerr, An interval approach to compute invariant sets, IEEE Trans. Auto. Control 62, 4236–4242 (2017) [CrossRef] [Google Scholar]
Notations are taken from [12].
Cite this article as: T. Le Mézo, G. Le Maillot, T. Ropert, L. Jaulin, A. Ponte, B. Zerr, Design and control of a lowcost autonomous profiling float, Mechanics & Industry 21, 512 (2020)
All Tables
Seabot piston parameters (experimental results, ${\dot{V}}_{p}$ is limited by software compared to the maximum possible values).
All Figures
Fig. 1 Float equipped with a piston system. 

In the text 
Fig. 2 Evolution of float depth for a positive and a negative χ. 

In the text 
Fig. 3 The Seabot float. 

In the text 
Fig. 4 Mechanical design of the ABS system. 

In the text 
Fig. 5 Electronic design. 

In the text 
Fig. 6 Software functional architecture. 

In the text 
Fig. 7 Map of the setpoint velocity as a function of the depth error δ_{z}. 

In the text 
Fig. 8 Depth controller structure. 

In the text 
Fig. 9 Ifremer Brest water tank with the SeaBot float. The robot is secured along a rope guide. 

In the text 
Fig. 10 Depth z (in meter) of the float in function of time t (in seconds). The setpoint depth trajectory is in red and the float depth trajectory is in black. 

In the text 
Fig. 11 Piston volume measured V_{m} in function of time t (in seconds). 

In the text 
Fig. 12 Estimation of V_{0} and χ by the EKF over time. 

In the text 
Fig. 13 Variance of V_{0} and χ over time in logarithmic scale. 

In the text 
Fig. 14 Last test of the Seabot depth controller in the ENSTA Bretagne 2.5 m deep pool before a deployment in the Bertheaume cove. Note that we added colored stripes to make it easier to find the robot at the end of the mission. 

In the text 
Fig. 15 Two SeaBot before their mission in the bay of Brest. 

In the text 
Fig. 16 A Seabot after ending its mission in the lake of Guerlédan. We can only see the yellow antenna emerging from the surface at the center of the picture. An air drone is filming the scene. 

In the text 
Fig. 17 The Guerlédan lake mission. The depth setpoint trajectory is in red and the float depth trajectory is in black. 

In the text 
Fig. 18 Outer approximation of the controller as a function of depth for two configurations. The maximum bounds of ${\dot{V}}_{p}$ are in red. Dotted curves correspond to the model with noise. 

In the text 
Current usage metrics show cumulative count of Article Views (fulltext article views including HTML views, PDF and ePub downloads, according to the available data) and Abstracts Views on Vision4Press platform.
Data correspond to usage on the plateform after 2015. The current usage metrics is available 4896 hours after online publication and is updated daily on week days.
Initial download of the metrics may take a while.