Complementary Control Allocation For Over-Actuated Depth Control In Underwater Vehicles

Some underwater vehicles utilize multiple types of depth actuators to achieve depth control to take advantage of desirable properties of each actuator in different situations. The Lagrangian Float developed at URI uses both a piston style variable buoyancy system (VBS) and a thruster to achieve depth control. The purpose of this work is to develop a single control system to intelligently balance actuation between the thruster and VBS that takes advantage of the properties of each actuator. A three part state feedback controller was developed. The controller calculates a control force, uses a pair of complementary filters to allocate the control, and translates the control forces into actuator inputs using actuator models. The filters were designed to apply low-frequency control inputs with the VBS and high-frequency control inputs with the thruster. The controller was tested both in simulation and in the field, and was able to provide a robust method of tracking reference trajectories while allocating the desired control between the two actuators.

such as the commercially produced REMUS vehicle [1] are ballasted near neutral and use small lifting surfaces to adjust the vehicles pitch to ascend or descend.
Remotely operated vehicles (ROVs) ranging from small electric vehicles such as the Kaxan ROV [2] to large hydraulic vehicles like JASON [3] are ballasted positively and utilize thrusters to maintain depth. Vertical thrusters are less common in AUVs but they are used in some applications like the SeaBed vehicle [4] which is designed for low-altitude image surveying. Variable buoyancy systems are often used in a class of AUVs called Lagrangian floats. Lagrangian floats drift with the current while adjusting their depth to collect data in different parts of the water column. Floats using variable buoyancy systems have been developed for a variety of applications [5,6] including a system developed at URI described in [7].
Each of these actuation methods are accompanied by trade-offs related to important vehicle characteristics such as maneuverability and power use. To make a broad generalization, thrusters provide the highest maneuverability with the greatest power draw, while buoyancy systems provide the most power efficient way to make large depth changes. Lifting surfaces can provide a reasonable power/maneuverability middle-ground as long as the vehicle is maintaining a minimum forward speed through the water. Both thrusters and lifting surfaces however, require a constant use of power to compensate for constant disturbances acting on the vehicle such as a non-zero net buoyancy.
The limitations of each of these actuation methods has led to increasing interest in vehicles that utilize more than one form of heave actuation. The Seahorse [8] uses a variable ballast system (VBS) to maintain depth and trim; which reduces drag and increases endurance for longer missions. The Tethys vehicle [9] takes this one step further and complements its VBS by moving the batteries to control the vehicle pitch so it can use the vehicle body as a lifting surface when travelling too slow for the fins to be effective. Similarly, the Delphin2 AUV [10] employs both lifting surfaces and tunnel thrusters because lift based actuators lose authority when the vehicle is hovering to perform close inspection operations.
The inclusion of multiple vertical actuators on these vehicles makes them over-actuated in heave, meaning they have more than one method available to control the single degree of freedom. This means that the control system for the vehicles must include some method of context aware actuator switching or allocation to utilize both forms of actuation. Previous work has addressed overactuated AUV systems utilizing a combination of lifting surfaces and thrusters [11,10] in great detail. Prior work incorporating heave over-actuated AUVs with VBS systems has mostly focused on initial ballast and trim operations [8] or keeping the vehicle neutral at depth in lifting surface actuated vehicles [12]. A theoretical control methodology for a thruster/buoyancy hybrid AUV has been presented in [13] based on the Folaga AUV described in [14] but the proposed controller was not implemented or tested.

Overview of Lagrangian Float Vehicle
The shallow water Lagrangian float vehicle developed at URI is a man portable platform for conducting science missions in shallow (less than 100m) water environments. The vehicle, shown in Figure 1, consists of a primary housing containing batteries, system and sensor electronics, a magnetic system for releasing a disposable drop-weight, and a piston that acts as the float's VBS system. A small ARM Figure 1. The URI Lagrangian float configured to perform seafloor imaging surveys architecture computer inside the primary housing is responsible for logging most of the sensor outputs and using measurements from the pressure sensor and altimeter located on the bottom of the float to make control decisions. It also contains a GPS/Iridium antenna and a strobe which are used to locate the vehicle for recovery. Their are two external housings attached to the float. One contains a stereo pair of cameras and a PC-104 computer which to operates the cameras, stores images to an on-board solid state drive, and performs computer vision processing.
The other housing contains a flash that is triggered by the camera system.
Autonomous Lagrangian floats have been developed and used for a variety of scientific applications including active profiling, and water parcel tracking [5].
The Lagrangian float developed at URI was originally developed to perform water column profiling with instruments such as a CTD (Conductivity, Temperature, Depth) and Fluorometer [7]. Depth control was accomplished using the variable ballast system (VBS) to perform profiling and constant depth/altitude control [15]. The vehicle has since been adapted to perform seafloor imaging for the purposes of seafloor classification and environmental monitoring [16]. The float is an attractive platform for this type of work due to its low cost and modest support equipment requirements compared to operating a typical camera equipped AUV.
This application requires the vehicle to precisely maintain a prescribed altitude less than three meters from the sea floor while drifting over varied terrains such as flat sediment or rocky habitat.
While the legacy control system and actuator in the float were somewhat capable of following the bottom to perform imaging surveys, the constantly changing bathymetry resulted in continuous operation of the piston and long period oscillations in the controlled altitude. Constantly operating the piston wastes an increasing amount of power as the vehicle goes deeper due to the increasing hydrostatic pressure. With future plans to increase the depth capability of the float, a thruster was incorporated into the vehicle design to provide better altitude following performance and reduce the piston usage for making small depth adjustments.
Using the newly added thruster to perform bottom following was initially conducted by controlling the two actuators separately. The piston would be used only for long depth changes and commanded to a pre-set value during bottom following.
The thruster was only enabled during bottom following. While this did constitute an improvement over the existing system; applying control to each actuator independently does not take full advantage of the differentiated characteristics of the actuators. It also required writing a separate controller to make large buoyancy driven depth changes and a scripted transition between control modes to enter or exit bottom following. Ideally, a single control system should intelligently balance actuation between the thruster and the piston based on the time history of actuation requested by the controller. For example, if the vehicle is following an uphill slope the controller will request a small constant force that can be sent to the piston to make the vehicle slightly positive while using the thruster to react to higher frequency variations in the bathymetry. In the limiting case this controller should move the piston toward the neutral buoyancy position while operating at a nominally constant depth, and allow the thruster to make fine scale altitude adjustments.

Thesis Outline
The remainder of this thesis is organized as follows: • Chapter 2 presents a model of the float dynamics and discusses how the model was used to simulate operation of the float.
• Chapter 3 states the goals of the new controller design, develops the components of the controller and describes the complete control system and how it was implemented on the float.
• Chapter 4 presents results of simulations using the new control system and discusses the effectiveness of the controller and trade-offs associated with the control allocation approach.
• Chapter 5 details results of vehicle tests conducted in a testing tank and in Narragansett Bay and compares the results with simulations. It also briefly summarises the control systems operation in the field on a recent cruise to Scott Reef in the Sea of Timor.
• Chapter 6 restates and expands conclusions reached in previous sections, and suggests future work to expand and improve the new control system.

CHAPTER 2
Float Dynamics and Simulator Implementation

Float Dynamics
To develop and test a controller for the float, a model of the float's dynamics was first developed. Variables used to develop the float model are given in table 1. A free body diagram of the float is shown in Figure 2. We are only interested    The reaction of the float to these forces is governed by equation 1 where m i is the inertial mass of the float.
The inertial mass is composed of three factors; the gravitational mass of the float m g , the added mass m a due to the float deflecting water as it moves, and the mass of any water in the piston. By pulling water inside the float, the piston increases the inertial mass of the system by the volume of the water added, V p , times its density ρ w . The inertial mass of the float is then given by equation 2.
Expanding the terms on either side of equation 1 yields where the F a term is composed of the mass of water added to the piston times gravity, ρ w V p g, plus any additional force provided by the thruster, F t . Modelling of F t will be accomplished using an empirical model of the thruster developed in section 3.4.2.
The model developed in equation 3 can be simplified by noting that the contribution of the water drawn into the piston is a small component of the inertial mass, implying however the piston water often represents a large contribution to the force applied to the system (5) because the drag force F d tends to be small at low speeds and the float is designed such that F g + F b ≈ 0.
This allows us to ignore the mass or the piston water relative to the inertial mass Further simplifications of this model were made to develop the controller in section 3.2, but the model presented here is adequate to create a simulation of the float.
To use this model to simulate the float, a solution to the second order differential equation (6) representing the float's acceleration needed to be found as a function of time. Also the time varying inputs from the controller F t and V p needed to be incorporated in the solution. This was accomplished by first writing equation 6 as a system of first order ode's by letting y 0 = z and y 1 = z .
Equation 7 can then be iterated using a Runge-Kutta integrator to simulate the float's motion for a given piston volume, V p , and thruster force, F t . This chapter will detail the design of a three part control architecture to meet these goals. Generation of the desired control force to track a given reference is done using a single-input state feedback tracking system. The control force is then allocated between the two actuators using a pair of complementary filters.
The control signals for the two actuators are then calculated using the individual desired forces and a model describing how the actuators effect the system.

State-Feedback Controller
To develop a state feedback controller the model given in (6)  The drag term can be linearised about zero, causing it to drop out of the equation.
The model can then be written replacing the second derivative of the depth z with the first derivative of the velocityω.
The control approach used here will handle the allocation of control commands to the two actuators independently of the control problem. Equation 8 can be further simplified by combining the piston and thruster terms back into the F a term, and treating the difference between the vehicles buoyancy and it's weight as a disturbance acting on the system, such that they drop out of the model The state space plant model of the float vehicle with depth z and velocity ω is The continuous time model given in 10 represents a real system that will be sampled at discrete intervals by the controller and new control inputs will only be calculated at each interval. To account for the sampling rate of these discrete updates, an equivalent discrete time plant model must be calculated. The equivalent discrete time model for a continuous linear system can be found using the zero order hold relationship [17]: Given a sampling interval T , letting t 0 = kT and t = (k + 1)T the equivalent difference equation can be written: Substituting Φ = e AT and Γ = (k+1)T kT e AT bdτ and noting that the integral defining Γ can be shown to be a constant, the zero order hold equivalent model is then  Figure 3. A typical tracking system control architecture. The gains K 1 and K 2 are designed so that the system makes the output y equal to the reference input r .
The state feedback tracking system developed here will use a typical reference tracking architecture shown in Figure 3. In this architecture, the poles of the reference input are included as additional dynamics along with the plant model.
The gain matrices K 1 and K 2 are determined by using pole placement to regulate a design model that is the cascade of the plant and the additional dynamics.
The additional dynamics matrix Φ a should be chosen to include the poles of the reference trajectory the control system is intended to track [17]. To track step inputs the additional dynamics is then the Laplace transform of the unit step function, (1/s), which is a simple integrator. In discrete time this makes the additional dynamics a digital integrator Given the zero order hold plant model and the additional dynamics matrices Φ a and Γ a the design model can then be written with the augmented state vector x u design model These scaled bessel poles are given in continuous time, so to use them with our discrete time regulator they need to mapped from the s-plane to the z-plane. This can be accomplished with the following relationship where the sampling period of of the controller T = 0.1 seconds.
The control gains K 1 and K 2 were found using the MATLAB pole placement algorithm 'place', the design model (15) and the z-plane closed loop poles in (16).
The resulting feedback gains were: Using these gains a simple simulation was run to show the step response of the controller regulating the linear plant model. Figure 5 shows the step response of the controller given a reference of -1 meter. The controller settles to the commanded reference in 50 seconds.
Now that the complete state feedback controller is formed it would be useful to have a measure of how robust the controller is to perturbations. To evaluate the controller, an unknown perturbation system ∆(s) is added to the input to the plant as show in Figure 6. For convenience this figure shows an analog control system. Setting the input r to zero, the transfer function from w to v can then be found. The small gain theorem states that the feedback interconnection of any two stable systems is stable as long as the product of their system infinity norms is less than one [18]. The system shown in Figure 6 is then stable as long as: The value of 1 H(s) ∞ can then be used as a measure of how large ∆(s) ∞ can be to maintain a stable system. Known as the input multiplicative robustness Step Input Tracking With Linear Plant One issue with the proposed state-feedback controller presented here is that it has no knowledge of the actuation limits of the float. If the float is asked to perform a large depth change it will be unable to reach the desired depth within the settling time of the controller. This will lead to the integrator state variable x a winding up and greatly overestimating the disturbance on the system. When the float does reach the desired depth it would need to un-wind this estimate before resuming useful operation. Unfortunately, the x a state variable is responsible for both disturbance rejection and reference tracking inside the controller so simply limiting it's value without considering the input reference r would prevent the controller from tracking properly.
To solve this problem a disturbance d can be added to the plant input u of the tracking system shown in figure 3. The system can be re-written with inputs r and d.
The steady state value of this system for a given r and d can then be found.
The steady state values of x 1 and x 2 from equation 21 are x 1 = r and x 2 = 0 because the controller is designed to set them to those values. The value of x a , though, represents the steady state value of the additional dynamics integrator for a disturbance of magnitude d. To make use of equation 21 in the control system, two disturbance bounds were specified (d min , d max ), in addition to defining the input reference r. These disturbance bounds represent the maximum constant disturbance that could reasonably act on the system in either direction. The steady state value of x a for each of these disturbances then provides a minimum and maximum value for the integrator x a at the given reference r that effectively prevents it from winding up during long depth moves. This approach does not prevent the K 1 gain from requesting large control inputs when the float is far away from it's reference but these can be capped to the total capability of the two actuators before being passed to the control allocation step of the controller.

Complementary Control Allocation
The output of the controller developed in section 3.2 is a single force value that should be exerted on the system for the next time step. In order to effectively utilize both actuators we want to split this force between the piston and thruster.
The thruster is most effective at exerting high frequency forces on the system but running it to exert constant or low frequency forces uses power constantly. The piston in contrast is unable to apply high frequency control inputs but it does not use any power when exerting a constant force on the system. Based on these properties, a complementary filter was chosen to allocate the control signal between the two actuators.
Complementary filters are a common tool in signal processing used to estimate a single value from measurements made by different sensors. If the noise characteristics of the sensors are such that each sensor displays lower noise in a specific frequency band, a set of filters can be written such that the output is a combination of the sensor inputs. Each filter passes only the band where its sensor has low noise characteristics. The present actuator allocation can be viewed as an analogous problem. The desired input force to the system is provided by some form of controller and the actuators available to the system have desirable properties within specific frequency bands. A set of filters can divide the force input over a number of frequency bands to exert the same total force on the system while utilizing only the desirable frequency bandwidth of each actuator.
For the piston and thruster actuators, a pair of complementary filters similar to those presented in [13] were used, one for each actuator. The filter for the thruster was a second order high pass filter with the transfer function Where τ f controls the cut-off frequency of the filter. The complementary low pass filter for the piston is found using the complementary condition for a set of N This condition requires that the gain of all the filters sums to one across all frequencies. The low pass filter is found to be (24) Figure 7 shows the frequency response of the two complementary filters with the cut-off frequency τ f set to 200 seconds. These two filters were implemented in the controller using a zero order hold equivalent discrete filter sampled at the controller's operating frequency.
The output of these filters theoretically reproduces the desired force output on the system except in one case. Similar to the wind-up issues with the statefeedback integrator, if either actuator saturates the actuation of the system will no longer reflect the requested control input. This is most likely to happen during long depth changes when the piston may reach it's total capability to exert force in the direction of travel but the controller output may still allow larger force inputs to the filter. This extra force will be exerted by the thruster until it persists long enough to roll-off into the low pass filter, but the saturated piston can no-longer apply it. There are a number of approaches to solve this issue depending on the desired behaviour. The chosen solution was to hold the low pass filter value when This maintains the correct total output force at all times, at the expense of energy consumption by the thruster.

Actuator Models
To accurately exert the forces generated by the control allocation a mapping from these force values to the actuator input signals is needed. This section will develop simplified models for the piston and thruster needed to calculate the piston volume and thruster current commands.

Piston Model
From section 2.1 the model for the force exerted by the piston was given as part of equation 6 Making the assumption that all the water ingested by the float is a constant density, the force exerted by the piston can be related directly to the additional volume of water in the piston The command output by this model is the desired volume of the piston. The piston itself is controlled by a motor with an encoder connected to a gearbox and lead screw. The software driver running on the float handles the conversion from the controller command in millilitres to motor counts, which is defined by the diameter of the piston, lead-screw pitch, gear-box ratio, and motor encoder counts per revolution.

Thruster Model
This was repeated at 0.1 amp increments with additional weights added to the float when the thruster force overcame the force range of the piston. The results of the thruster calibration are shown in Figure 8. The thruster overcame it's internal friction and 'cut-in' at -0.3 amps and was roughly quadratically related to the applied current afterwards. The measurements shown in Figure   8 required some averaging of the piston volume to account for small oscillations around the neutrally buoyancy point during the calibration. Although the thrust produced by the thruster is likely asymmetrical, the calibration was only conducted running the thruster in one direction and used bidirectionally.
The thruster model used is given in equation 28 where the coefficients a, b, and c are from the fit shown in figure 8.
This model was then inverted to calculate the current required for a desired force.
The final thruster model (28) in both directions is shown in Figure 9.

Complementary Control System
Combining the control system components described in sections 3.2, 3.3, and 3.4, the complete control system can be constructed. Figure 10 shows a block diagram of the control system. The state-feedback regulator with integrator limiting is used to create the control signal u. This signal is then constrained to the combined capability of both actuators and passed to the pair of complementary filters. The output of the two filters is then passed through the actuator models and the control signals are sent to the actuators. The output of the plant y is the measured depth, which is used as an error signal for the tracking system. The state-feedback controller developed earlier utilized full state feedback measures of both depth and velocity. The actual float does not have a direct measurement of its velocity and instead used a filtered derivative of the depth measurement. This measurement of velocity worked for testing the basic principles of the controller but the controller might benefit from a better estimate of velocity such as that provided by an observer [17].   Figure 11. A block diagram of the control system using only the thruster

Control System Implementation
The control systems shown in Figure 10  Within the controller, the implementation of the complementary filter used a Python signal processing library to compute the zero order hold equivalent update equations for the filter at run time. This allowed the time constant of the filter to be easily updated through a configuration file between dives or simulations.

Performance Metrics
To compare the performance of controllers using varied approaches or parameters three metrics were developed; tracking performance, thruster power usage, and piston power usage. These metrics allow quick, quantitative comparisons to be made between simulations or field tests of the controller.

Tracking Performance
The tracking performance for a particular mission leg was computed as root mean square (RMS) of the cross track error. For a leg with n measurements of the reference r, actual float depth y and time stamp t the performance metric was computed as:

Thruster Power Usage
The motor controller used for the thruster provided high frequency measurements of the voltage across the motor V and the current I. Within the float simulator, a fit from motor data was used to approximate the voltage for a requested motor current so the simulator returned the similar data to the actual float. The average power used by the thruster during a mission leg with n measurements was then calculated as:

Piston Power Usage
The piston returned measurements of voltage and current however they were only measured at 1Hz due to hardware limitations of the motor controller and could not be used in determining the total average power used by the piston during field trials. Instead, the power usage was estimated using the hydrostatic pressure and direction of travel of the piston. This relationship was based on the measured power usage during long piston moves at various depths during field testing where the slow sampling rate would not affect the power measurement. Because the piston moves at a consistent velocity when performing volume changes the power used to pump water out of the piston is approximately linear with pressure. Pulling water into the piston uses a constant amount of power at all depths due to the non-back-drivability lead screw and the internal friction of the system. The power used by the piston in Watts at each sample can then be written as with the pressure in decibar P dbar measured from the on-board pressure sensor.
Using this expression for power, the average power for a mission leg with n samples at time stamps t can be calculated as Finally, the ability to extract bathymetry the float had encountered on previous field tests and re-play it in the simulator was added to allow the simulation of bottom following missions.

Simulation Overview
Two types of simulations were used to test the controller.
Step input tracking performance simulations were used to addressed non-linear affects that are difficult to address analytically and time consuming to test iteratively using the actual vehicle.
Bottom following simulations over pre-recorded bathymetry were used to investigate the effect of controller parameters on the power usage and tracking performance metrics. It is difficult to compare various control parameters using the actual vehicle because the vehicle will encounter a different bottom every time it is deployed. Using the simulator, the controller could be asked to follow exactly the same bathymetry repeatedly with different control parameters. To achieve a realistic bottom profile for testing, bathymetry recorded during earlier field testing was replayed for the simulations.
In addition to evaluating the controller performance, the simulations also serve to prove the reliability of the controller implementation for wind-up prevention during large depth changes, and other edge case handling. Because the simulator uses the exact same operational controller code that the vehicle runs, issues encountered during simulation were corrected before the controller was deployed on an actual dive.

Step Input Tracking Simulations
The step tracking performance of the state feedback controller acting on a linear model was discussed in section 3.2. Using the complete controller and a more realistic simulation the effect of actuator allocation and actuator non-linearities on the step response can be investigated. Two step response simulations were conducted, one using the thruster controller and the other using the complementary controller.

Thruster Step Response
The simulated float trajectory, piston volume, and thruster current for a 5 meter depth step are shown in Figure 12. The state-feedback controller using the thruster only displays acceptable step tracking performance with 48cm of overshoot. This overshoot can vary with the volume of the piston because the net buoyancy of the system is an unknown disturbance that is not easily estimated until the controller reaches its desired reference.

Complementary Step Response
The float trajectory, piston volume, and thruster current for a 5 meter depth step using the complementary controller are shown in Figure 13. The step response of the complementary allocation controller has a similar rise time to the response of the thruster only state-space controller with less (25cm) overshoot. The steady state thruster usage is also similar in both cases. The reduction in overshoot compared to the thruster only controller shows one benefit of the control allocation, the piston volume is no longer an unknown disturbance on the system. The integrator in the controller is estimating the disturbance on the system before the contribution of the piston. This can be seen in Figure 14 which shows the same two depth steps as Figure 12 and 13 in addition to the allocation of forces from the

Bottom Following Simulations
In order to test how the float will perform tracking a trajectory similar to those it might encounter in the field, a number of bathymetry profiles were extracted from float field data for use with the simulator. The results discussed here use a bathymetry profile extracted from tests on the Cordell Bank Marine Sanctuary.
These were chosen because the bottom profile has both slow and rapid depth changes, and contains on-bottom data for over an hour. Each simulation consisted of the float descending from the surface and holding 45 meters to reach a steady state. The bathymetry profile playback began when the controller switched to hold altitude mode and the simulated float would descend to an altitude of 2.5 meters and begin following the bottom.

Tracking Performance Comparison
To evaluate the tracking performance of the controller and the effect that adding the control allocation has on the performance of the controller two simulations were run, one with the complementary controller (with allocation) and one with the thruster controller (no allocation). The piston volume was set so there was no net disturbance on the float (i.e. neutrally buoyant) in the simulation without control allocation. A filter time constant of 400s was used for the simulation with control allocation.
The two simulations both with and without allocation are overlayed in figure   15. The two simulations took almost exactly the same path over the bathymetry profile and there was little difference in the RMS error displayed by the two controllers. Without allocation the average RMS error was 39.52cm and with allocation it was 39.13cm. This consistency between the two results suggests that the addition of the complementary actuator allocation had no significant effect on the tracking performance of the controller.

Actuator Usage Comparison
Although the performance of the controllers with and without control allocation were nearly identical, the usage of the two actuators during the simulations was not. Figure 16 shows the complementary controller following the bathymetry profile along with the usage of the piston. The piston volume first increases to assist the float in sinking to the desired depth, the volume then stays close to the neutral volume (200ml) for the entire dive. The small piston movements near the neutral volume respond as expected to the bathymetry profile. When the bathymetry trends downward the piston volume increases, taking on more water to make the float heavier and reduce slightly the effort the thruster must make to descend the slope. Ascending bottom slopes has the opposite effect. Small bumps in the sea floor are low-pass filtered and do not drive changes in the piston volume.  added. The tracking performance in the three simulations is again, nearly identical but the thruster use is differently in each case. The thruster is centred around zero when the disturbance on the float is zero (i.e. neutral buoyancy), and only exceeds one amp when making a large depth change. When the 1N disturbance is acting on the float (i.e. net negative buoyancy), the thruster runs almost constantly at minus one amp (negative current thrusts upwards) and requires slightly longer thrust increases to move up and shorter thrust reversals to move down.
The complementary controller starts the bottom tracking using a similar amount  Figure 17.
Simulation of the float following a pre-recorded bathymetry profile. (Top) simulated float depth and seafloor shown in black, (Bottom) thruster current using the thruster with no constant disturbance (blue), 1N downward constant disturbance (green), and using the complementary allocator (red). Note that the thruster use of the complementary allocator is similar to the 1N constant disturbance thruster usage initially but eventually becomes similar to the zero disturbance thruster usage.
of thruster current to the constant disturbance simulation but after a few minutes it is almost tracking the zero disturbance thruster usage.

Power Usage Comparison
Given that the control allocation does not affect tracking performance but does change the way the actuators are used in achieving that performance, the next question that can be addressed is what effect the control allocation has on the power use of the system. This is a difficult question to answer definitively because it not only depends on the power use characteristics of the mechanical system, but also on the task and environment of the vehicle. If the float were trying to only go up, down, or hold depth, it could be assumed that the lowest power configuration would be to have the piston empty, full, or full enough to make the float neutral respectively. For the bottom following use case it might be expected that holding the piston at a volume that makes the float neutral and using only the thruster for bottom following uses the least power, especially at deeper depths where the piston must work against more pressure. These cases make two assumptions. First, it assumes that the neutral volume is almost exactly known and second that the neutral volume will not change. In practice variations in the The results shown in Figure 18 show the power usage of the simulated float operating around 50 meters deep. To evaluate how the power usage of the system is affected by its operating depth, the simulation results for different bottom depths the piston power metric (33) were evaluated with constant shifts applied to the hydrostatic pressure P dbar . Figure 19 shows the average actuator power usage when   Figure 19.
Average actuator power usage while following a pre-recorded bathymetry profile. Using only the piston (blue) uses an increasing amount of power as the operating depth increases. Using the thruster (pink, black), power use is independent of depth but increases when their is as constant disturbance acting on the float. The complementary controller (red) provides less depth dependent power usage than only using the piston and falls between the zero disturbance and 1N disturbance thruster use cases.

CHAPTER 5
Field Testing Results and Analysis

Step Input Tracking Tank Tests
After confirming that the controller functioned as designed with a simulated vehicle, the float was deployed in a small testing tank to evaluate how well the simulation results correlate with real world performance. Tests similar to the simulations run in section 4.3 were conducted to evaluate step tracking performance.
Due to the limited depth of the tank the step input was 2 meters instead of the 5 meter steps tested in the simulations. Figure 20 shows a 2 meter depth step using the thruster controller. The piston volume was set to 180ml for this test. Similar to the simulation shown in figure   12, the float exhibits a small amount of overshoot (30cm) before coming to the desired depth. Unlike the simulation, the piston volume was not set to the exact neutral point during this test but an attempt was made to be close. This can be seen by the steady 0.7A current applied to the thruster to hold the desired depth.
Repeating the previous test with the complementary controller, the result shown in figure 21 is again similar to the simulation results shown in figure 13.
The complementary controller has an overshoot of 18 cm, less than the thruster controller, and the piston volume moves to make the float neutral and decrease the thruster usage. Also consistent with the simulations, the thruster moves into an oscillating mode near zero once the piston reaches neutral. The asymmetry of the thruster oscillations relative to zero was caused by an error in the thruster model implementation during these tests. The final volume of the piston was 187ml, not far from the 180ml used in the previous test but the change was enough to eliminate the constant use of the thruster to keep the float at the correct depth.

Narragansett Bay Testing
The float was deployed from a small boat in Narragansett bay for a series of short tests aimed primarily at validating the operation of the control system.
The float was attached to a 50m surface tether consisting of a slightly buoyant line and a surface buoy to allow for easy tracking and recovery. Figure 23 shows the depth profile and piston volume for one of the test deployments. For this deployment the float used the complementary controller to hold an altitude of 1.5m, then switch briefly to using the thruster, re-initialize the complementary filter to zero and again use the complementary controller to hold 1.5m. On the first leg, the complementary controller found a neutral volume it stuck with for about 5 minutes. Afterwards the neutral volume began to decrease and when the controller re-initialized it picked a lower value than it had during the first mission leg. This change in neutral volume roughly coincided with the incoming tide beginning to move the surface buoy up the bay against the small amount of wind present that day. Based on the reaction of the controller it seems the change in environmental conditions resulted in the surface buoy tether exerting less upward force on the float so the controller expelled water from the piston to compensate instead of holding the float up with the thruster. This suggests that the controller was able to add or remove water from the piston to compensate for the constant tether drag. This was not an original motivation for the design of the controller but it is a useful property because the float is often run with a surface tether to help track and recover the vehicle. Compensation for the tether drag will decrease the effect the tether has on the control performance and increase the range of conditions that a tether can be used. 15   Comparing the tethered float dive to the un-tethered dive shown in Figure 25, the piston movement during the un-tethered dive is consistent with the hypothesis that the tether was the source of the varying disturbance. Because the bottom was mostly flat and the tether was not present the piston volume hardly changed, staying between 186ml and 194ml for almost the entire length of the bottom following leg. This suggests that the controller used the piston to completely compensate for a constant disturbance acting on the float within ±0.04N of its value. The average RMS track error during this dive was 13.38cm, similar to the performance of the dive using the tether.  The second opportunity to improve the controller involves the accuracy of the thruster model and more importantly, the choice of the thruster. Errors in the model developed for the brushed DC thruster on the vehicle did not appear to dramatically impact the performance of the controller but small oscillations in the thruster current can still be seen when the system reaches steady state.
The dead-zone and spin-up time of the thruster may account for some of these small thrust oscillations. While a better model for the existing thruster could be developed, there are inherent limitations to modelling the thrust produced by a DC brushed thruster. Also the goal of the controller is to make the thruster use zero at steady state so the weakness of the DC thruster in providing very small forces predictably is undesirable for this application. A better option would be to utilize a 3-phase thruster with a shaft speed sensor and change the thruster control input from motor current to shaft speed. The thruster shaft speed is more easily related to the actual thrust output of the thruster [19] and the dead-zone of the thruster could be shrunk because the motor controller would apply additional current when starting rotation to overcome the static friction in the motor.

Conclusion
The controller developed here met the goals laid out in section 3.1 and was successfully demonstrated both in simulations detailed in chapter 4 and field testing detailed in chapter 5. The state feedback controller developed provides a robust method of tracking a reference trajectory that is independent of the system actuators. The complementary filters used successfully allocated the desired control between the piston and the thruster to utilize the desired properties of each actuator. Combined with the actuator models, the filter made use of the two actuators in a way that did not affect the tracking performance of the controller and attempts to minimize the power used by each actuator. The addition of the thruster and the control allocation was also successful in improving the altitude tracking performance of the float and reducing the depth dependence of actuator power usage compared to using the piston alone. Overall, the addition of the thruster and the complementary control allocation methodology has improved the float's ability to conduct constant altitude imaging surveys in a power efficient manor.
The lessons learned from the development of this controller should help motivate design decisions in the development of a float that can operate deeper than the current platform and the control methodology will be largely transferable to the new vehicle.