Você está na página 1de 167

ADVANCED CONTROL OF AUTONOMOUS

UNDERWATER VEHICLES
A DISSERTATION SUBMITTED TO THE GRADUATE DIVISION OF
THE UNIVERSITY OF HAWAI'I IN PARTIAL FULFILLMENT OF THE
REQUIREMENTS FOR THE DEGREE OF
DOCTOR OF PHILOSOPHY
IN
MECHANICAL ENGINEERING
AUGUST 2004
By
Side Zhao
Dissertation Committee:
Junku Yuh, Chairperson
Lloyd H. Hihara
Mehrdad N. G. Nejhad
Ronald H. Knapp
Gary M. McMurtry
ACKNOWLEDGES
First of all I would like to show my gratitude to Prof. Junku Yuh, my advisor and
dissertation committee chairman. He provided me a good project to work on and an
RAship to support me through my Ph.D. study. During my research, he spent a great
amount of time discussing with me and advising me. Without his guidance, I can hardly
imagine how I could complete my dissertation research and become a self-confident
underwater vehicle researcher from an intimidate amateur in robotics. My study and
research experience in Autonomous System Laboratory will definitely benefit me for the
rest of my life and very positively be my career beginning.
Also I would like to thank Professor G. McMurtry, Professor L. Hihara, Professor
R. Knapp and Professor M. Nejhad for their working in my dissertation committee. Their
careful reading and questioning did help me in improving my research.
I hereby also want to thank Dr. S. Choi, Dr. H. Choi, Dr. T. Kim, Dr. G. Marani,
Mr. M. West, Mr. A. Hanai, Mr. O. Easterday, Mr. K. Rosa, Dr. C. Ikehara and all other
current or former members of Autonomous System Laboratory for their help and
friendship.
My special thanks go to my parents, Mr. L. Zhao and Ms. G. Yang. They
understood and supported whatever life style I selected.
This dissertation is also a remembrance of my friend, Dr. Xudong Fang, who
devoted his life in engineering research in Shanghai, China on July 17, 2001.
111
To my wife, Ms. Su Yan
IV
ABSTRACT
Autonomous Underwater Vehicle (AUV) control is a very challenging task
because of AUV system nonlinearity, time-variance, uncertain external disturbance and
difficulty in hydrodynamic modeling. Based on a detailed AUV control survey and
description of AUV dynamics, this work proposes a novel controller that combines
Disturbance Observer (DaB) and a regressor-free adaptive controller. DaB is used to
cancel the effect of the external disturbance and modeling error, and the nonlinear
regressor-free adaptive controller is used to handle the nonlinearity and disturbance
estimation error, and to achieve desired control performance. The main characteristics of
this controller are its robustness to the external disturbances and robustness to the
nominal model parameter change. The latter one maps the big orientation change of the
AUV during its underwater movement and the difficulty in AUV modeling.
Comparison experimentation is carried out to show the performance of this
proposed adaptive DaB controller. Three other controllers are used for comparison
purpose: PID controller, PID DaB controller and non-regressor adaptive controller. 4-
DOF tests are done with the disturbance from heave, roll, pitch and yaw, and 6-DOF tests
are done with the disturbance from surge and sway. The experimental results show that,
comparing with the adaptive DaB controller, PID controller and adaptive controller are
not robust to external disturbance, and PID DaB controller is not robust to the nominal
model change. Therefore, comparing with these three controllers, the proposed adaptive
DaB controller performs the best in terms of the external disturbance and the difficulty in
AUV modeling. These make adaptive DaB controller ideal for AUV control.
v
TABLE OF CONTENTS
ACKNOWLEDGES .iii
ABSTRACT '" '" .iv
LIST OF TABLES , .ix
LIST OF FIGURES x
CHAPTER1: INTRODUCTION .1
1.1. Necessity of Underwater Vehicles " , 1
1.2. Control of Autonomous Underwater Vehicles 3
1.3. DOB Based Control Schemes .4
1.4. DOB Based Adaptive Controller 6
1.5. Brief Outline of This Dissertation 7
CHAPTER 2: LITERATURE SURVEy 8
2.1. AUV Controller Survey 8
2.1.1. Traditional Controllers 9
2.1.2. Hybrid Controllers .16
2.2. Simulation of Selected Control Schemes 19
2.3. Summery '" 24
CHAPTER 3: AUV DYNAMICS 26
3.1. AUV Kinematics 26
3.2. Nonlinear Dynamics of AUV 27
3.2.1. Rigid-body Dynamics of AUV 27
3.2.2. Hydrodynamic Forces and Moments 28
VI
3.2.3. Overall Vehicle Dynamics 33
3.3. Summery 34
CHAPTER 4: ADAPTIVE DISTURBANCE OBSERVER CONTROL 35
4.1. DOB Based Adaptive Robust Controller.. 35
4.2. DOB as the Inner-loop Compensator 36
4.3. Non-regressor Adaptive Controller as the Outer-loop Controller 39
4.4. Summery 45
CHAPTER 5: SIMULATION AND ANALYSIS 46
5.1. ODIN Dynamic Model and Simulation Description .46
5.2. Simulation Results 48
5.3. Result Analysis 64
5.4. Conclusion 66
CHAPTER 6: EXPERIMENTATION 68
6.1. ODIN-III Introduction 68
6.2. Experimental Settings 70
6.2.1. Sensor and Measurement Settings 70
6.2.2. Controller Configurations 70
6.3. Results of 4-DOF Comparison Test.. 73
6.3.1. 4-DOF Results ofPID Controller 74
6.3.2. 4-DOF Results ofPID DOB Controller 75
6.3.3. 4-DOF Results of Adaptive Controller. 80
6.3.4. 4-DOF Results of Adaptive DOB Controller 81
6.4. Results of 6-DOF Tracking Test.. 86
Vll
6.4.1. 6-DOF Results ofPID Controller 86
6.4.2. 6-DOF Results ofPID DOB Controller 88
6.4.3. 6-DOF Results of Adaptive Controller 92
6.4.4. 6-DOF Results of Adaptive DOB Controller 94
6.5. Result Analysis and Conclusion 98
6.6. Summery l 00
CHAPTER 7: CONCLUSION 101
7.1. Contributions 101
7.2. Recommendations 102
APPENDIX I: HARDWARE CONFIGURATION OF ODIN-III .103
1.1. ODIN-III Hardware Configuration l 03
1.2. ODIN-III Component List 105
APPENDIX II: SOFTWARE CONFIGURATION OF ODIN-III .107
11.1. ODIN-III Control Architecture 107
11.2. ODIN-III Software Structure 108
APPENDIX III: AN EXAMPLE OF DLL REALIZATION 111
111.1. Adaptive Control Part Code 111
111.2. DOB Part Code 128
III.3. The Merge Part Code 133
REFERENCE 140
V111
LIST OF TABLES
Table Page
Table 5.1.Performance comparison between different controllers 66
Table 6.1. ODIN tests that have been done , 72
Table 1.1. ODIN-III component list. 105
IX
LIST OF FIGURES

Fig. 2.1. Trajectory used in simulation 20
Fig. 2.2. Simulation result with PID controller , 21
Fig. 2.2. Simulation result with adaptive sliding mode controller 22
Fig. 204. Simulation result with optimal controller 23
Fig. 2.5. Simulation result with neuro-fuzzy controller 24
Fig. 4.1. Adaptive robust control scheme 35
Fig. 4.2. Block diagram of DOB 36
Fig. 4.3. Typical bode plot of a low-pass filter 38
Fig. 5.1. Flow chart of ODIN dynamic simulation 047
Fig. 5.2. Tracking performance in X, Y and Z directions of case 1 049
Fig. 5.3. Tracking performance in X, Y and Z directions of case 2 50
Fig. 5A. Tracking performance in X, Y and Z directions of case 3 , 50
Fig. 5.5. Tracking performance in X, Y and Z directions of case 4 51
Fig. 5.6. Tracking performance in X, Y and Z directions of case 5 52
Fig. 5.7. Tracking performance in X, Y and Z directions of case 6 54
Fig. 5.8. Tracking performance in X, Y and Z directions of case 7 55
Fig. 5.9. Tracking performance in X, Y and Z directions of case 8 55
Fig. 5.10. Tracking performance in X, Y, Z directions of case 9 57
Fig. 5.11. Tracking performance in X, Y, Z directions of case 10 58
Fig. 5.12. Tracking performance of X, Y and Z directions of case 11 60
Fig. 5.13. Tracking performance in X, Y and Z directions of case 12 61
x
Fig. 5.14. Tracking performance in X, Y and Z directions of case 13 63
Fig. 5.15. Tracking performance in X, Y and Z directions of case 14 64
Fig. 6.1. Omni-Directional Intelligent Navigator (ODIN) 69
Fig. 6.2. 4-DOF tracking performance with PID control,
without external disturbance 74
Fig. 6.3. 4-DOF tracking performance with PID control, with external disturbance 75
Fig. 6.4. 4-DOF tracking performance with PID DOB control, without external
Disturbance 76
Fig. 6.5. 4-DOF tracking performance with PID DOB control,
with external disturbance 77
Fig. 6.6. 4-DOF tracking performance with PID DOB control,
with 1.5 times nominal model parameter change 78
Fig. 6.7. 4-DOF tracking performance with PID DOB control,
with 2.0 times nominal model parameter change 79
Fig. 6.8. 4-DOF tracking performance with adaptive control,
without external disturbance 80
Fig. 6.9. 4-DOF tracking performance with adaptive control,
with external disturbance , .. , '" .. , 81
Fig. 6.10. 4-DOF tracking performance with adaptive DOB control,
without external disturbance 82
Fig. 6.11. 4-DOF tracking performance with adaptive DOB control,
with external disturbance 83
Fig. 6.12. 4-DOF tracking performance with adaptive DOB control,
Xl
with 1.5 times nominal model parameter change 84
Fig. 6.13. 4-DOF tracking performance with adaptive DOB control, with 2.0 times
nominal model parameter change '" 85
Fig. 6.14. 6-DOF tracking performance with PID control,
without external disturbance 87
Fig. 6.15. 6-DOF tracking performance with PID control,
without external disturbance 87
Fig. 6.16. 6-DOF tracking performance with PID DOB control,
without external disturbance 89
Fig. 6.17. 6-DOF tracking performance with PID DOB control,
with external disturbance 90
Fig. 6.18. 6-DOF tracking performance with PID DOB control,
with 1.5 times nominal model parameter change 91
Fig. 6.19. 6-DOF tracking performance with PID DOB control,
with 2.0 times nominal model parameter change 92
Fig. 6.20. 6-DOF tracking performance with adaptive control,
without external disturbance 93
Fig. 6.21. 6-DOF tracking performance with adaptive control,
with external disturbance 93
Fig. 6.22. 6-DOF tracking performance with adaptive DOB control,
without external disturbance 95
Fig. 6.23. 6-DOF tracking performance with adaptive DOB control,
without external disturbance 96
XlI
Fig. 6.24. 6-DOF tracking performance with adaptive DOB control,
with 1.5 times nominal model parameter change 97
Fig. 6.25. 6-DOF tracking performance with adaptive DOB control,
with 2.0 times nominal model parameter change 98
Fig.Ll. Internal hardware configuration of ODIN-III .105
Fig.ILl. Control architecture of ODIN-III 108
Fig. II.2. ODIN-III software structure 109
Xlll
CHAPTERl
INTRODUCTION
1.1 Necessity of Underwater Vehicles
Oceans are the central engine of the energy and chemical balance that sustains
mankind. They provide warmth and power; they deposit hydrocarbon and mineral
resources that are important to mankind need; they moderate the weather so food can be
grown on land to feed the earth's population; their living resources also supply food
directly [1]. All of these necessitate the mankind to investigate the oceans and to develop
means to explore the oceans. Moreover, oceans' activities are relative to tropical storm,
tsunami and earthquake. To minimize the sabotage due to these natural disasters, the
oceans' activities need to be monitored continuously.
The first knowledge of oceans came from observations made aboard surface
vessels and from instruments put into the sea. Later people began to investigate oceans
from the aircrafts and satellites with sensors aboard. However, these means can only
work in the surface scope, which are far away from meeting the need of ocean
investigation, exploration and exploitation. Underwater vehicles make it possible to go
far beneath the ocean surface, collect the first-hand information about how the oceans
behave and do intervention work. Furthermore, advances in control, navigation, artificial
intelligence, material science, computer, sensor and communication allow the feasibility
of unmanned underwater vehicles.
Among the underwater vehicles, there are three categories:
1
Deep submersible vehicles (DSVs), which are human-occupied. They can
reach a great depth (up to 6,500 meters), can do complicated jobs because
of human intelligence. But they have short endurance due to human
physical and psychological limitations, and are costly to operate because
of the endeavor done to ensure human safety. Pisces V and Pisces IV from
NOAA Hawaii's Undersea Research Laboratory, University of Hawaii,
are examples of such kind of vehicles.
Remotely operated vehicles (ROVs) are unmanned, tethered vehicles with
umbilical cables to carry power, sensor data and control commands from
the operators on the surface. They are launched by surface ships or other
platforms. Because human pilots' observation and maneuvering, they can
do complicated jobs. They have almost unlimited endurance in the ocean.
However, the dragging force on the tether makes the ROVs difficult to
control, the difficulty increases remarkably with the increase of the tether
length. Also the signal transfer delay makes real time control difficult.
Kaiko from Japanese Marine Science & Technology Center (JAMSTEC)
is the most famous ROV in the whole world, which could reach the
deepest point of the ocean, 11,000 meters. Unfortunately KAlKa was lost
during the operation in 2003 as the tether was snapped due to a bad
weather.
Autonomous underwater vehicles (AUVs) are unmanned, tether-free,
powered by onboard energy sources such as batteries or fuel cells,
equipped with various navigation sensors such as inertial measurement
2
unit (IMU), sonar sensor, laser ranger, pressure sensor and so on, and
controlled by onboard devices, generally computers with preprogrammed
missions. They are more mobile, have much wider reachable scope, and
can achieve real-time control. While their endurance is limited by on-
board power sources and intelligence and lots of relative technologies are
still in lab research stage, AUVs have promising applications with the
development of scientific and technological means. It is reported that
Urashima from JAMSTEC had finished a long autonomous cruise of
132.5km in June 2002. Omni-directional intelligent navigator (ODIN)
from Autonomous System Laboratory, University of Hawaii is such a
vehicle.
1.2 Control of Autonomous Underwater Vehicles
Autonomous Underwater Vehicles could perform vanous underwater tasks,
ranging from sea floor surveying, ocean cable inspection and maintenance to petroleum
drilling, lost asset location and underwater rescue. Some of these applications necessitate
a very strict positioning and/or force requirement onto the AUV controller. However, the
AUV's dynamics is inherently nonlinear and time-variant, i.e., its mass and buoyancy
change according to different working conditions. It is also subject to uncertain external
disturbances, and the hydrodynamic forces are difficult to model. All of these make AUV
control a very challenging task.
Linear control theory has evolved a variety of powerful methods. These methods
can meet the requirements of stability, robustness and dynamical responses when they are
used in linear, time-invariant systems. However, in the case of an AUV, the complexity
3
of its dynamics listed above makes linear control methods difficult to achieve satisfactory
results. Its dynamics cannot be linearly approximated accurately and often results in
undesired behavior when linear control methods are used.
One of the earlier nonlinear control schemes is model-based control. However,
model-based nonlinear controllers often fail to achieve desired performance in the
presence of modeling errors, parameter uncertainties and unknown disturbances.
Parameters of the AUV system depend on operational conditions and may not be
precisely known in advance. Therefore, many researchers have studied nonlinear control
methods, and various schemes have been proposed to control nonlinear and time-variant
systems with uncertainties in parameters and disturbances.
1.3 DOB Based Control Schemes
DaB is a disturbance rejection scheme built with a reverse system of the nominal
system and a low-pass filter. It was first proposed by Ohnishi [2][3]. Since then, several
other researchers refined it: Umeno [4] parameterized DaB from the general 2-DOF
controller structure; Lee [5][6] did the stability and performance analysis with regard to
the bandwidth of the low-pass filter using the simplified sensitivity and complementary
sensitivity functions of the DaB loop; Murakami [7] proposed an equivalent mass matrix
calculation method of the multidegree-of-freedom manipulator; Yamada [8][9] proposed
the higher-order DaB design methodology and discussed its stability and disturbance
rej ection characteristics; Komada [10] described the relationship among the order of
DaB, the order of the disturbance that can be observed and the stability. Comparing with
other robust controllers, DaB has the inherent characteristic of robustness with respect to
external disturbances. It can compensate for all kinds of disturbances, including external
4
disturbances, parameter variations and unmodeled dynamics, and the bandwidth for
disturbance rejection can be adjusted. Therefore, from its appearance, it has been widely
used in many applications such as high precision positioning, tracking control in the
presence of highly complex disturbances.
The DaB-based control scheme requires an outer-loop controller. DaB-based
control schemes in the literature can be summarized with respect to the outer-loop
controllers as follows:
1. PID type controller: Because of the robustness of the DaB itself, simple linear
controllers are widely used as the outer-loop controller. Morimoto [11] used a PI
+ DaB controller in suppressing the resonant vibration and positioning precisely
of the DC motor system with shaft torque feedback. Lee [6] and Kempf [12] did
almost the same work: they used a DaB + PD controller combined with ZPETC
(zero phase error tracking controller) [13] and a feed-forward friction
compensator, and applied it in high-speed 2-dimensional positioning table control.
Oh [14] developed a PD + DaB controller and used it to control a redundant
manipulator. Iwasaki [15] used PI controller and an adaptive DaB, which
combined the conventional DaB with an additional term that is proportional to
the output velocity and reverse in direction to cancel out the effect of the
nonlinear summation of the viscous and coulomb friction, to precisely positioning
a high-speed table.
2. Adaptive controller: Yao [16] developed the theorem of ARC (Adaptive Robust
Control) based on DaB, which combines the adaptive control and the sliding
mode control (SMC) systematically for trajectory tracking control. Choi [17]
5
developed the model-based disturbance attenuator (MBDA) which is based on a
state-space model using adaptive control and DOB, and used it in controlling the
CNC machining center.
3. Sliding mode controller: Fujimoto [18] did the parameterization of DOB from 2-
degree-of-freedom control, and used a sliding mode controller combined with
DOB in robotic arm control. Kawamura [19] used a sliding mode controller as the
outer-loop controller and achieved a method to reduce the chattering effect. Kwon
[20] used sliding mode control + DOB in controlling a robotic manipulator. Liu
[21] used DOB and sliding mode control scheme for robot arm control and
showed its characteristics through comparison with adaptive control and sliding
model control.
4. Neural network controller: Lin [22] developed a DOB + back propagation neural
network compensator and used it to control a linear synchronous servo motor.
1.4 DOB Based Adaptive Controller
Based on the survey and analysis of the past AUV controllers and the description
of AUV dynamics, this dissertation describes a newly developed adaptive robust control
scheme that consists of the Disturbance Observer (DOB) and a non-regressor based
adaptive controller, which updates its gains by the output error. This scheme is to
construct a controller both robust to the external disturbance and system dynamics
uncertainty, and regressor-free.
6
1.5 Brief Outline of This Dissertation
This dissertation has seven chapters. Chapter 2 presents a detailed survey of the
AUV controllers, and simulation results of several selected controllers. Chapter 3 briefly
describes the AUV dynamics. Chapter 4 illustrates in detail the proposed non-regressor
based adaptive control plus DOB controller. Chapter 5 is the simulation and analysis of
this control scheme on ODIN model, comparing it with PID controller, PID DOB
controller and adaptive controller for various cases: external disturbance and nominal
model change. Chapter 6 presents the experimental work done on ODIN in the pool of
University of Hawaii, Manoa, and the results and analyses. 2 test categories are done for
different disturbance cases: 4-DOF tests are done with the disturbance from heave, roll,
pitch and yaw, and 6-DOF tests are done with the disturbance from surge and sway.
Chapter 7 is the conclusion based on the descriptions, analyses and results in the
proceeding chapters.
7
CHAPTER 2
LITERATURE SURVEY
2.1. AUV Controller Survey
Oceans cover about two-thirds of the whole earth surface and the living and non-
living resources in the oceans undoubtedly take an important role in human life.
However, the oceans have not been fully explored because of the hazardous underwater
environment. With the technology advancement in power, material, computer,
communication and artificial intelligence, AUVs have become more attractive in
exploring oceanic resources. Comparing with other means of exploration, underwater
vehicles have wider exploring scope and more mobility. At present, only a few of the
world's submarines are capable of diving beyond 1,000 meters. Only one operational
research manned submersible can dive to 6,500 meters; none can dive to the ocean's
deepest depth of 11,000 meters. In contrast, numerous unmanned underwater vehicles can
be operated to 6,000 meters, and Kaiko from JAMSTEC is capable of operating at 11,000
meters [23].
In order for the AUV to achieve autonomy, the control system must have the
adaptability and robustness to the nonlinearity and time-variance of AUV dynamics,
unpredictable environmental uncertainties such as sea current fluctuation and reaction
force from the manipulator intervention, modeling difficulty of hydrodynamic forces and
the AUV configuration changes according to different missions. Conventional controllers
with fixed gains fail to guarantee high quality response of the overall system when
8
significant changes occur in the vehicle dynamics and its environment. Various control
schemes have been proposed and are summarized below. They are grouped into 2
categories: traditional controllers and hybrid controllers.
2.1.1. Traditional Controllers
1. PID (Proportional-Integral-Dirivative) type control
It is well known that the traditional PID type controller with fixed gains cannot
meet the requirements of underwater vehicle control. However, Jalving [24] used a
simple PD controller for AUV steering (Yaw) control. Chellabi [25] proposed a PD
controller combined with an optimal error correcting term. In this controller, the AUV
dynamics is linearized and decoupled into 6 SISO second-order subsystems, and a linear
PD controller combined with an optimal controller using LQR technique is used in
controlling each subsystem. Fjellstad and Fossen [26] defined a virtual velocity reference
signal that is a linear combination of the desired speed, tracking error and its integration,
and formulated a controller that has two parts: the first part is a feed forward part, which
is the multiplication of the AUV dynamic model and the virtual velocity, and the second
part is a PID controller. Its global convergence was proven by Barbalat's lemma. Ollennu
[27] proposed a PD controller combined with the I/O linearization method. I/O
linearization method uses the Lie derivative to get a linearized system dynamics, and then
uses a state feedback control law to achieve asymptotical regulating or tracking error.
Because it requires an accurate description of the system to be controlled, generally
speaking it has little practical usage in the case of AUVs. White [28] proposed a full state
feedback controller that has the very classical observer-controller form. Again this
scheme requires an accurate description of the AUV system, which is hardly possible.
Koh [29] proposed a simple PID control in underwater vehicle control.
9
2. Sliding mode control (SMC)
SMC technique is a nonlinear feedback control scheme. It reqmres a raw
estimation of the system parameter and an estimation of the system uncertainty for the
switching surface design and variable structure control law design. Since the sliding
mode restricts the system motion in a certain subspace of the state space and makes it
asymptotically converge to its equilibrium point, this control scheme is very robust to
parameter variations and external disturbances. The disadvantages of using this controller
are its chattering because the system phase trace crosses the switching surface in a very
high frequency, and its requirement of full-state feedback. However, since the AUV
system is inherently time-variant and nonlinear, SMC shows great potential in achieving
stability and performance against parametric uncertainty and external disturbance. This
makes SMC related controllers one of the most commonly used control schemes in
underwater vehicles. The main endeavor of using this method is to reduce the chattering.
Yoerger [30][31], Dougherty [32] and Rodrigues [33] introduced the basic methodology
of using sliding mode control for AUV application. Healey [34] used sliding mode
control in speed control, steering control and diving control separately. In this scheme the
sliding surface is designed by pole placement or by considering an LQR optimal control
solution to ensure global asymptotic convergence. Marco [35] and Riedel [36] used
exactly the same sliding mode controller in which the switching surface is defined by a
Lyapunov function to guarantee the global stability of state variable errors and a
boundary layer to reduce chattering. Campa [37] and Innocenti [38] used a cost
functional to define the sliding surface and a 'unit vector control' scheme as the control
law, which has several parameters to 'smooth' the discontinuity and determine the
10
'strength' accordingly. Hills [39] used a sliding mode controller that is based on the very
basic SMC idea. Lee [40] uses a quasi-sliding mode controller that combines a
feedforward term for compensating the reference and the sliding mode term. Ollennu [27]
proposed a very basic sliding mode control scheme combined with I/O linearization
method. Riedel [41] proposed a sliding mode control scheme that uses an Extended
Kalman Filter for state and disturbance observation. Marco [42] used the very basic
sliding mode control for each of the decoupled modes control, and applied in the NPS
ARIES AUV experiments.
3. Robust/Optimal control
Based on optimal control theory, numerous robust control schemes have been
developed, such as Linear Quadratic Gaussian / Loop Transfer Recovery (LQG/LTR), H-
infinity, J1 methodology and so on. Triantafyllou [43] proposed a robust control scheme
based on the Smith Control and the LQG/LTR methodology. Smith control is used here
to compensate the signal transfer time delay through the long tether (for the ROV case) or
through the acoustic link (for the AUV case). LQG/LTR is used for the compensator gain
design in the inner feedback loop, namely the reduced loop. Lacaze [44] used Bang-Bang
control for AUV control. Conte [45] proposed a robust controller based on Lyapunov
method considering the hydraulic disturbance and model uncertainties as bounded
perturbation. Boskovic [46] introduced a Lyaponov function consisting of a quadratic
term in the velocity, a quadratic term in the position and a logarithmic term in the
attitude, and based on this designed a controller that can achieve global asymptotic
convergence to a given position/attitude setting. Menozzi [47] conducted experiments to
obtain two nonlinear dynamics models near nominal operating conditions (5-knot and 10-
11
knot straight flights), and used LQR (Linear Quadratic Regulator) method for gam
calculation based on piecewise linearizations of the nonlinear models. Wit [48][49] and
Diaz [50] proposed a robust nonlinear control scheme that designes an additional control
force to cope with the system state dependent disturbance. Kim [51] proposed an
H2 / H", control scheme, in which the robust stability problem against time delays and
parameter uncertainties is transformed into H'" control problem, and performance
problem is transformed into H
2
problem. Feng [52] proposed an H", control scheme that
was based on a linearized model derived from the operating point of straight ahead
motion with a fixed cruising speed.
As a traditional modern control strategy, optimal control requires an accurate
model of the system to be controlled. A predictive method, either a physical remote
sensor or a mathematical method, is generally used to predict the disturbance generated
by the wave in order to mathematically model the AUV dynamics with an adequate
degree of accuracy. Riedel [53] proposed an optimal control (LQR) scheme that uses an
Auto Regression (AR) model to predict the wave induced disturbance dynamics.
4. Adaptive control
There are parameter uncertainties and unknown disturbances in the underwater
vehicle hydrodynamics. Many researchers resorted to adaptive control to estimate the
system parameters and then construct controllers. Cristi [54] proposed a model-based
adaptive controller. It assumes that the vehicle is nearly linear within ranges of operating
conditions, estimates the system parameters using Recursive Least Squares method and
develops the controller with the pole placement technique. Goheen [55] proposed two
adaptive controller: one identifies a linear model of the open-loop process, then designs
12
an LQG regulator based on the identified model; the other one is designed to minimize
the expected variance of a generalized multivariable output, which is a linear
combination of the squared tracking error and the squared control force. Cunha [56]
proposed an adaptive controller, VS-MRAC (Variable Structure Model-Reference
Adaptive Control), which is composed of a model reference adaptive controller and a
sliding mode controller. Its performance was compared with those of P-PI controller and
sliding mode controller. Yuh [57], Choi[58] and Mahesh [59] proposed a parameter
adaptation algorithm (PAA) that uses a linear predictor to approximate a discrete model
of underwater vehicle and then used the estimated parameters in control input derivation.
Yuh [60][61] and Nie [62] proposed another non-regressor-based adaptive control
scheme that uses parametric bound estimation to tune the control gains. Smallwood [63]
proposed an adaptive controller that has a feed-forward part based on parameter
estimation and a feedback controller using the conventional PD control. Antonelli [64]
proposed an adaptive control scheme that combines a sliding mode item and a parameter-
estimation based adaptive controller.
5. Neural networks (NN) control
Neural networks attracted lots of researchers because they can achieve nonlinear
mapping. Using neural networks in constructing controllers has the advantage that the
dynamics of the controlled system need not be completely known. This makes NNs
suitable for underwater vehicle control, and it is actually another one of the most
commonly used control schemes in underwater vehicle. Neural networks also have other
advantages such as adapting to parameter variation and having highly parallel nature of
computation. The disadvantage is that no formal mathematical characterization exists for
13
the closed-loop system behavior. The validation of the final design can only be
demonstrated experimentally, not be guaranteed structurally. There are mainly two
controller categories when using NNs for control purpose: learning with a forward model
and direct learning. In the former case, generally the forward model is trained by the
output error or state error and then used for gain derivation, while in the latter case, the
state or output error is used directly to map the desired control input [65]. Yuh [66][67]
described a multiplayer feedforward network. Each layer has 13 neurons, except the last
layer that has 6 neurons. The input signals are 6 position errors, 6 velocity errors and a
constant. The output signals are the 6 control forces. BP algorithm is used for training the
network. Seube [68] compared the BP learning algorithm and continuous Hebbian
learning rule. Venugopal [69] used a 2-hidden-Iayer feedforward neural network trained
with BP algorithm to estimate the bounds of the AUV inverse Jacobian of the dynamics.
Sutton [70] proposed a direct learning type neural networks controller that is trained with
chemotaxis algorithm, and did performance comparison with a properly tuned PID
controller. Ishii [71] [72][73] [74] described a neural network system that is based on
SONCS (Self-Organizing Neural-net Control System) that executes identification of
robot dynamics and controller adaptation in parallel with robot control: adjust the
controller network based on the results of virtual operation of the control calculation with
the actual control operation. Guo [75] proposed a feed forward neural network controller
that serves as a feedback controller. This neural network adapts itself according to a
performance index, which is an objective functional. The training algorithm used here is
BP algorithm. Pollini [76] proposed a control scheme that combines a linear feedback
controller and a neural network controller. The NN controller part, which has a multi-
14
layer perceptron architecture, and is trained using BP algorithm, aims to account for the
uncertain part of the AUV dynamics. Wettergreen [77] proposed a neural network
controller with a reinforced learning algorithm, Q-leaming. Campa [78] proposed a
control scheme that combines a model based full state feedback controller and a 1-
hidden-layer neural network controller, which aims to compensate for the dynamics
uncertainty and a robustifying term that ensures the network weights bounded. Lee [79]
introduced a neural network controller. trained with BP algorithm to reduce an error
function. This error function was a generalized distance from a designed sliding surface,
which is defined exactly the same as in the sliding mode control. This neural network
controller was used together with a feed forward controller constructed with the
estimation of the parameter matrices, and a standard sliding mode controller. Labonte
[80] set up an Adaline neural network trained with Widrow algorithm to inversely model
the underwater vehicle and based on this to achieve an optimal control solution. Li
[81 ][82] introduced a neural network controller that is used together with a linear
feedback controller. The neural network controller accounts for the nonlinearity of the
AUV dynamics, which is trained by a function of the system states.
6. Fuzzy logic control
The theoretical basis of fuzzy logic control is that any real continuous function
over a compact set can be approximated to any degree of accuracy by the fuzzy inference
system. In control engineering application, people use fuzzy logic to form a smooth
approximation of a nonlinear mapping from system input to system output space, which
is suitable for nonlinear system control. With the linguistic rules and the membership
functions defined appropriately, it can achieve satisfactory performance. Moreover, fuzzy
15
logic control only need a qualitative description of the system behavior, therefore is
suitable for systems whose dynamics are not easily understood or derived. The
disadvantages of using fuzzy logic control are: determining the linguistic rules and the
membership functions requires experimental data and therefore very time-consuming; the
rule-based structure of fuzzy logic control makes it difficult to characterize the behavior
of the closed-loop system in order to determine response time and stability; same as
neural networks control, the validation for the final design can only be demonstrated by
experimentation. Kato [83] used a very basic fuzzy controller in AQUA EXPLORER
1000's cable inspection. DeBitetto [84] used a fuzzy logic controller for underwater
vehicle's depth control. Ollennu [27] proposed a fuzzy control scheme combined with
I/O linearization. Guo [85] proposed a fuzzy logic controller that uses Genetic Algorithm
(GA) for membership function optimization. The fitness functions are defined as the
performance indices of considering rising time, maximum overshoot and integral of
square error into evaluation. Li [86] proposed a nonlinear PD controller. The p-gains and
d-gains in this control scheme are determined by a fuzzy logic. Lee [87] proposed a fuzzy
controller that used the very basic TSK (Tagaki-Sugeno-Kang) models.
2.1.2. Hybrid Controllers
In addition to those controllers listed above, several hybrid controllers have been
proposed for AUVs. They aim at solving their own disadvantages using some
compensating means.
1. Adaptive sliding mode control
As stated earlier, an estimation of the uncertainty bound is necessary to apply
sliding mode control. Therefore, some researchers proposed numerous adaptive
16
mechanisms to tune the bound estimation online. Fossen [88] proposed an adaptive
sliding mode controller that compensates for the uncertainty in the input matrix, which is
generated by the time-varying behavior of the control input due to the thruster
hydrodynamics, by adding a discontinuous term (sliding mode term) to an existing
adaptive controller. Cristi [89] proposed an adaptive sliding mode control scheme that
uses the state error as a feedback signal to update the linear parameter part to compensate
the linear uncertainties, which is generated by change in vehicle dynamics and operation
conditions. Yoerger [90] developed an adaptive sliding mode control scheme, in which a
nonlinear system model is used. When the generalized disturbance of the system state
exceeds the sliding mode tolerance layer, the exceeding value is used to update the
nonlinear model parameters and furthermore update the control input. By this way this
controller compensate for the changes in environment. Corradini [91] proposed an
adaptive sliding mode controller that tunes the sliding mode parameters based on the
bound estimation of the system parameters.
2. Fuzzy sliding mode control (FSMC)
As stated in the SMC controller, a switching layer instead of a switching surface
is generally used to reduce the chattering of the sliding mode controller. Here in FSMC,
fuzzy logic is used to generate a control command as a nonlinear function of S within
the boundary layer. The advantage of this scheme is that its boundary is nonlinear. Since
it is the width of the boundary, not the form of the boundary that affects the performance
of the controller remarkably, this scheme is said to have little practical value, if not
totally useless [92]. Chiu [93] proposed a fuzzy sliding mode control scheme that used a
5-fuzzy-rule base to generate a nonlinear control output in the sliding boundary layer.
17
Page [94] proposed a fuzzy sliding mode controller that defined the boundary layer into
three fuzzy sets and defined the membership functions using the very basic trapezoidal
shape, and compared the result with those of PID controller and the traditional sliding
mode controller.
3. Sliding mode fuzzy control (SMFC)
This scheme uses the fuzzy logic's ability of connecting different control
strategies into one system seamlessly. It keeps the interpolation property of fuzzy logic
control and robustness property of sliding mode control. Therefore, such kind of
controllers can be used for different optimization design: fuzzy logic can achieve very
sophisticated switching surface functions. Song [95][96] introduced a sliding mode fuzzy
controller that used Pontryagin's maximum principle for switching surface design, and
used fuzzy logic to form this surface. Ollennu [97] proposed an adaptive fuzzy sliding
mode controller.
4. Neural sliding mode control
Similar with the adaptive sliding mode control scheme, in this scheme, neural
networks are used to set new sliding mode control parameters. Lee [98] proposed a
control scheme that uses a multiple-layer neural network trained with the back-
propagation algorithm to compensate the digression of the state from the sliding surface
caused by unexpected large uncertainty.
5. Neuro-fuzzy control
This scheme is to compensate the defects of fuzzy logic controller. For the fuzzy
logic controller, there are many difficulties in determining the membership functions for
each input and output. For some systems, this can be determined by expert knowledge or
18
by offline tuning using a dynamic model. However, the dynamics of the underwater
vehicle keeps on changing and is subject to uncertain environmental disturbances, and it
is difficult to get an accurate model for offline training purpose. Therefore, the
membership functions should be able to be modified in an online-timely way. In the
neuro-fuzzy control scheme, the neural networks are combined with fuzzy logic
controller because of its learning and optimization ability. Neural networks reduce the
effort in determining the membership function and the corresponding forces. With the
learning ability of NN, the controller scheme can have adaptability and robustness.
Akkizidis [99] proposed a neuro-fuzzy controller that uses BP algorithm for membership
function adaptation. Wang [100][101][102] proposed a self-adaptive neuro-fuzzy
inference system (SANFIS) that uses a 5-layer structure to achieve better function
approximation: a recursive least squares algorithm and a modified Levenberg-Marquardt
algorithm with limited memory are used in extracting fuzzy rules and tuning the
membership functions. Kim and Yuh[103] proposed a Fuzzy Membership Function-
based Neural Networks (FMFNN). Yu [104] proposed a neuro-fuzzy controller that uses
Genetic Algorithms (GA) for the NN training. Dynamic crossover and mutation
probabilistic rates are used in this scheme to overcome the GA's disadvantage of time-
consuming and therefore achieve faster convergence.
2.2. Simulation of Selected Control Schemes
Based on the literature survey above, several control schemes are selected for
simulation and their characteristics are compared. The simulations are done on the
dynamic model of the Omni-Directional Intelligent Navigator (ODIN) [105], the first
19
generation underwater vehicle developed by Autonomous System Laboratory, University
of Hawaii. To show the simulation results more concisely and comprehensively, the
following performance index named generalized tracking error is defined as:
(2.1)
here ex' e
y
and e
z
are the tracking errors in X, Y and Z directions respectively.
All the simulations track the perpendicular trajectory from (2.5, 2.5, 0) to (2.5,
2.5, 2), (2.5, 4.5, 2), (4.5, 4.5, 2) sequentially, as shown in Fig. 2.1.
5
, '.
, '.
4
3
2
_---t
, -- -- --_.. - ~ , ~ ~ ,
---- ~ : ~ : :---.
~ - - ,
:' .. ,.. ! -',
-----r------i ':','.
:-'--,.J
:",'. --->1-.
--l.. : ""
: ". - -,
- ~ . -- : --,
, '",
~ . --
I '"
'"
2
~ ~ ~ - : ~
~ ~ ~ - - ~ ~
3
3
2,5
~
2
~
1,5
<ll
. ~
"';'
1 N
0,5
0
5
4
Y-trajectory
o 0
X-trajectory
Fig. 2.1. Trajectory used in simulation
1. PID type controller
As mentioned before, PID controller is widely used and very effective in
controlling linear and time invariant systems. Fine-tuning is required to satisfy the
desired performance. However, it is not suitable for underwater vehicle control. It can
only be used for test purpose or comparison purpose. Fig. 2.2 shows the simulation result
using a PID controller with tuned gains.
20
The control parameters used in this simulation are: k
p
= 6* 1(6), k
D
= 8* 1(6),
k/
z
=0.01.
Comprehensil.e error in tracking X, Y and Z
. ~
~ f\
~ \/J\j\ V J ~
, ~ ~
/\}"v
( ~ ~ ~ ~
,ro/\
o
o 50 100 150 200 250 300 350
Time (s)
Fig. 2.2. Simulation result with PID controller
0.1
I
g 0.3
Q)
al
.!::!
~ 0.2
Q)
c:
Q)
(9
0.4
0.5
2. Adaptive sliding mode controller
This adaptive sliding mode controller is based on ref [90]. This scheme is a
combination of dynamics estimation and traditional sliding mode control. It is assumed
that the dynamics of the system to be controlled has the following form:
x(t)= f(x)+ b(x)u(t) +d(t) (2.2)
among which the former two items are estimated using the following equations:
(2.3)
where u* =-xd +A*x,and
f(x) =-dlxl
(2.4)
where 2=-,xlxl.
All the above dynamics estimation is triggered by sL'.' which means how s is
outside the boundary layer. Therefore, the control output is comprised of two parts,
specifically the feed-forward part based on the estimation of dynamics and the feedback
part based on the traditional sliding mode controller.
21
The control parameters used In this simulation are:
r == 10-
3
*[2 2 2 2 2 2], Ii == 0.1 *[1 1 1 1 1 1], 77 == 0.1 *[1 1 1 1 1 1] .
Fig. 2.3 shows the simulation result of this controller.
Comprehensil. error in tracking X, Y and Z
100 150 200 250 300 350
Time (s)
50
11\
\
\
V\.1'A
[VV'l!\-NV

.
o
o
0.1
g
<I) 0.3
-g
.!:::!

0.2
<I)
<.9
0.4
0.5
Fig. 2.3. Simulation result with adaptive sliding mode controller
3. Optimal control
This control scheme is based on ref [53]. This paper uses an AR model to predict
the wave disturbance using a sub-surface sensor, and then uses LQR to achieve shallow
water station-keeping. Even the researcher of this reference concluded that the AR model
"may not accurately reflect the actual dynamics of the disturbance". However, if the
dynamics of the system to be controlled can be known to a high degree of accuracy, the
control performance of optimal control is promising.
In this simulation, static water is used instead of an environment with current. So
no AR model is necessary to predict the current-generated disturbance. After
compensating the nonlinear items and linearizing the system piecewisely, this simulation
uses LQR to achieve trajectory tracking. The control parameters used are: Q== 10 *1(12)
and R == 5*1(6). The simulation result is shown in Fig. 2.4.
22
Comprehensil.e error in tracking X, Y and Z
I\
\f\

\/"/rI'

/\rr
j
,,1"/'\
o
o 50 100 150 200 250 300 350
Time (s)
0.1
0.4
0.5
g
Ql 0.3
al

0.2
Q)
<.9
Fig. 2.4. Simulation result with optimal controller
4. Neuro-fuzzy controller
This control scheme is based on ref [103]. This is a fuzzy controller with the
fuzzy rules tuned by an online neural network. The control force is defined as:
N
F(x)= LAi<Di(x)

(2.5)
It first defines an error function as:
1
E(x,t) =-(f(x,t)-
2
(2.6)
where 3(x) = r(F(x)) =r(t,l, <!J(x,)], r(.) is the nonlinear dynamics of the system to
be controlled.
Therefore the derivative of E(x,t) to Ai is:
(2.7)
Instead of using the analytic form of this controller uses:
e-t,()
x, t ::::; sgn ( ) ( )
A t -A t-l
I I
(2.8)
23
Therefore the learning rule becomes:
1 1 (f( ) ,....,( )\n-. () (3(X,t)-3(X,t-l)]
/l,i+1=/I,;+17 () ( )
A t -A t-l
I I
(2.9)
We can see from the estimation equation of 3'(-) that when Ai (t) is too close or
equals to A; (t -1), an error of dividing by zero will occur. So a small modification of this
controller is done as:
(2.1 0)
The control parameters used in this simulation are: 17 =0.5, <5 =0.1, the fuzzy
membership function form IS triangular with the turning points at
[-1.0 - 0.4 - 0.2 0 0.2 0.4 1.0]. The simulation result is shown in Fig. 2.5.
Comprehensi\e error in tracking X, Y and Z
100 150 200 250 300 350
lime (s)
50
1/\
f\
V
VV-J
/'\;,
AJ'f\

o
o
0.1
g
Ql 0.3
al
.!::!
l'!
0.2
Ql
C.9
0.4
0.5
Fig. 2.5. Simulation result with neuro-fuzzy controller
2.3. Summery
The first part of this chapter is the literature survey of the existing AUV
controllers: traditional controllers such as PID type controller, sliding mode controller,
robust/optimal controller, adaptive controller, neural networks controller and fuzzy logic
24
controller, and hybrid controllers such as adaptive sliding mode controller, fuzzy sliding
mode controller, sliding mode fuzzy controller, neural sliding mode controller and neuro-
fuzzy controller. For each controller, its principle, main characteristics and its limitation
are shown. Among them, the most commonly used controllers are sliding mode controller
and neural network controller.
The second part of this chapter is the simulation of several typical controllers
using ODIN dynamic model: PID type controller, optimal controller, adaptive sliding
mode controller and neuro-fuzzy controller.
25
CHAPTER 3
AUV DYNAMICS
In this chapter, the most commonly used representation of AUV kinematics and
the time-variant nonlinear AUV dynamics are introduced briefly. For detailed
description, please refer to [106].
3.1. AUV Kinematics
There are two coordinate systems that are commonly used to describe the AUV
kinematics: earth-fixed frame (E-frame), which can be regarded as an inertial frame, and
body-fixed frame (B-frame). The position and orientation of the vehicle are described
relative to the E-frame, while the linear and angular velocity and the control
forces/moments are described in the B-frame. The vector form of these expressions is:
1] =[x y z rjJ e IfIY,position and orientation vector in E-frame
v =[u v w p q r y,velocity vector in B-frame
T =[X Y Z K M NY, force/moment vector in B-frame
The velocity vectors in E-frame and in B-frame have the following relationship:
(3.1)
where J(1]) is the rotation matrix, which is shown in equation (3.2). For simplicity, s.,
c. and t. to are used to represent sin(.), cos(.) and tan(.) respectively.
26
=
cljfcB
sljfcB
-sB
- s ljfC + CljfsBs
Cljfc + ssBs ljf
cBs
o
s ljfs + CljfcrPsB
- Cljfs + sBs ljfC
cBc
o
1 stB
o c
o s / cB
ctB
-s
c/cB
(3.2)
3.2. Nonlinear Dynamics of AUV
The dynamics of AUV in the B-frame can be represented by a 6-DOF nonlinear
dynamic equation shown as follows:
Mv +C(v)v + D(v)v + g(1]) =r
where M is the inertial matrix including rigid-body mass and added mass;
(3.3)
C(v) is the matrix of Coriolis and centripetal terms, and velocity-dependent terms due to
added mass;
D(v) is the damping matrix;
g(1]) is the gravitational force and buoyant force;
r is the control input.
In the following sections each part of equation (3.3) will be illustrated.
3.2.1. Rigid-body Dynamics ofAUV
The rigid-body dynamics equation is shown as:
(3.4)
This equation is defined in the B-frame. M RB is the rigid-body inertial matrix. Its
quantitative representation is:
27
m 0 0 0 mz
c
-myc
0 m 0 -mz 0 mx
c c
[ mI",
-ms(rJ] =
0 0 m myc
-mx
c
0
M
IIB
=
(3.5)
mS(r
c
) 1
0
0 -mz
c
myc Ix
- I
xy
- I
xz
mz
c
0 -mx
c
- I
yx
I
y
-I
yz
-myc mx
c
0 - I
zx
-I
zy
I
z
where m is the rigid-body mass of the AUV, r
c
=[xc
Yc
Zc Yis the coordinate of
the gravity center, I. is the moment of inertia or product of inertia with respect to
different body-fixed coordinate axes.
CliB is the Coriolis and centripetal matrix from the inertia matrix. It can be
parameterized as a skew-symmetric form as:
o
o
o
- m(ycq + zcr )
m(xcp+w)
m(xcr - v)
o
o
o
m(ycp+w)
- m(zcr + xcp)
m(ycr -u)
o
o
o
m(zcp-v)
m(zcq +u)
- m(xcp + ycq)
m(YGq + zGr)
-m(YGP+w)
-m(zGP-v)
o
Iyzq +Ixzp - Izr
- Iyzr - Ixyp+lyq
-m(xGq-w)
m(zGr+xGP)
-m(zGq+u)
- Iyzq - Ixzp +Izr
o
-m(xGr+v)
-m(YGr - u)
m(xGP+YGq)
IYZr + IXyp-Iyq
- Ixzr - IXyq + Ixp
o
(3.6)
This is the "dry" part of the AUV's dynamics. It is nothing different from a land
based mobile robot or space vehicle moving at low speed.
3.2.2. Hydrodynamic Forces and Moments
The principle of linear superposition is used in calculating the hydrodynamic
forces and moments. Based on this principle, the hydrodynamic forces and moments
28
except external hydraulic disturbances can be divided into numerous categories,
specifically the radiation-induced forces and moments, skin friction damping, wave drift
damping, damping due to vortex shedding.
The radiation-induced forces and moments have three components, specifically:
1. Added mass due to the inertia of the surrounding fluid.
2. Potential damping due to the energy carried away by generated surface waves.
3. Restoring forces.
These three components can be expressed mathematically as:
T
R
=-MAv-cAv)v -Dp(v)v
, v
added mass potential damping
- g(TJ)
'-v-----'
restoring jorces
(3.7)
Added mass can be understood as pressure-induced forces and moments due to a
forced harmonic motion of the body that are proportional to the acceleration of the
underwater body. When the underwater vehicle moves, the whole water body will
oscillate with different amplitude but with a phase 180 degrees out of the phase of the
forced vehicle harmonic motion. The amplitude decreases significantly with the increase
of the distance from the vehicle body. This force can be viewed as an effective inertia
force, which can be modeled with a positive definite added mass matrix, which is defined
in the following form:
Xli
Xy X
w
X
p
X
q
X,
Y
li
Yy Y
w
Y
p
Y
q
Y,
M
A
=-
Zli
Zy
Zw Zp Zq Z,
(3.8)
K
il
Ky K
w
K
p
K
q K,
Mil
My M
w
M
p
M
q M,
Nil
Ny N
w
N
p
N
q N,
29
The meaning of the entries in this square matrix can be illustrated by the single
illustration of the entry (2, 1): suppose the hydrodynamic added mass force Y
A
along the
y-axis due to the acceleration it in the x-direction is written as:
Y
A
=-J:it, where J: =a;: (3.9)
This is only the definition of the added mass. However, no general theory of
calculating the added mass term accurately was found. Based on this definition, if we go
one step further and suppose that the vehicle has three planes of symmetry, we can
neglect the contribution from the off-diagonal elements in the added mass matrix M A ,
and the Coriolis and centripetal matrix due to the added mass can be written as a skew-
symmetrical matrix in a simplified form:
0 0 0 0 -Zww Yvv
0 0 0 Zww 0
-X"u
CA(v)=
0 0 0 - Y,;v
X"u
0
0 -Zww Y"v
0 -N,r Mqq
(3.1 0)
Zww 0 -Xuu N,r 0 -Kpp
- y';v
Xuu 0 -Mqq Kpp 0
Potential damping is the radiation-induced damping. It is generated by the
oscillation of the vehicle body under the wave excitation. In the case of AUV, comparing
with other dissipative terms, potential damping is usually negligible.
Restoring force is the comprehensive effect of gravitational force and buoyant
force. Suppose W is the submerged weight, and B is the buoyancy force of the
30
underwater vehicle, then the vector form of the restoring forces and moments can be
written as:
g(ry) =
(W -B)sB
-(W -B)cBs
-(W -B)cBc
- (YGW - yBB)cBc + (ZGW - zBB)cBs
(ZGW - zBB)sB + (XGW - xBB)cBc
- (XGW - xBB)cBs - (YGW - yBB)sB
(3.11)
where (X
G
,YG' zG) and (xB' YB' ZB) are the center of gravity and center of buoyancy force
respectively.
Besides the radiation induced forces and moments listed above, there are some
other damping components expressed as:
T
D
=-Ds(v)v -Dw(v)v -DM(v)v
'----v----' '-----v----'
skin ./hction wave drift damping damping due to vortex shedding
(3.12)
Assume that the underwater vehicle has 3 planes of symmetry and that terms
higher than second order are negligible, the damping matrix can be written as a diagonal
structure with only linear and quadratic damping terms on the diagonal:
D(v) =-diag{X
u
r: Zw Kp M
q
N
r
}
- diag{xulu1lul y"lvII
V
! Zwiw11wl Kp1p1lpl Mq1q1lql Nr1r1lrl}
(3.13)
In skin friction, linear skin friction due to laminar boundary layer theory is
important when considering the low-frequency motion of the vehicle. Additionally, there
is a high-frequency contribution due to turbulent boundary layer theory. This is usually
referred to as a quadratic or nonlinear skin friction.
Wave drift damping is derived from the 2nd-order wave theory. It is the most
important damping contribution to surge.
31
Damping due to vortex shedding represents the energy loss of the vehicle in the
viscous fluid. It is relative to the density and viscosity of the fluid, projection area and
velocity of the vehicle. The empirical equation to calculate this damping force is:
(3.14)
where U is the velocity of the vehicle, A is the projected cross-sectional area, Cf) (RJ is
the drag coefficient that depends on the Reynolds number and p is the water density.
Cf) (R
n
) is derived experimentally, and can be found in any hydrodynamics book. The
quadratic drag in 6 DOF can be conveniently expressed as:
Ivl
T
Dn1v
Ivl
T
DnZv
Ivl
T
D
n3
v
Ivl
T
D
n4
v
IvI
T
DnSv
Ivl
T
D
n6
v
(3.15)
where Ivl =~ Ivl Iwl Ipl Iql IrIY, D
ni
(i =1,,6) are 6 x 6 matrices depending on
the water density p, the drag-coefficient that depends on the Reynolds number Cf) (Rn)
and the projection area A.
Except for the forces listed above, there are external disturbances, such as the
reactive forces from the intervention tasks and the force from the current. The
intervention reactive forces vary with respective to specific tasks. As for the force from
the current, InDiveri [107] proposed a method to calculate the uniform current force, in
which the relative velocity instead of the absolute velocity is substituted into the
32
equations of calculating the damping forces. In this theory, the uniform current can also
induce a buoyancy-like force, sometimes called horizontal-buoyancy, which IS
proportional to the product of the displaced fluid mass times the fluid acceleration.
3.2.3. Overall Vehicle Dynamics
Define the total hydrodynamic damping matrix D(v) as
and also define the total inertial matrix, centripetal and coriolis matrix as
M=MRB+M
A
Then the dynamics of the underwater vehicle in B-frame can be written as:
Mv +C(v)v + D(v)v + g(7]) =T
(3.16)
(3.17)
(3.18)
(3.19)
Because the components of the body-fixed velocity vector cannot be integrated to
obtain actual displacement, (3.15) is used together with (3.1) for AUV dynamics analysis.
Rewrite equation (3.1) here:
(3.20)
Equation (3.15) and (3.16) are the two equations representing the dynamics of
AUV.
If written in the earth fixed coordinate system, it becomes:
M'} (7])ij +C'}(7], v)ry + D'}(7], v)ry + g'}(7]) =T'}
where M'} (ry) =J-
T
(7] )MJ-
1
(7]),
33
(3.21)
C'I (v, 1]) =J-
T
(1] )[C(V) - MJ-
1
(1] )j(1])y-l (1]),
D'I (v, 1]) =J-
T
(1] )D(v)J-I (1])
g'l (1]) =J-
T
(1] )g(1])
T,/ (1]) =J-
T
(1])r
3.3. Summery
This chapter mainly introduces the nonlinear AUV dynamics: the rigid-body
dynamics and the various hydrodynamic effects. In summery, the dynamic forces acting
on underwater vehicle are: the rigid-body dynamic forces, the added mass effect, the
damping forces and the external disturbances.
34
CHAPTER 4
ADAPTIVE DISTURBANCE OBSERVER CONTROL
In this chapter, a novel control scheme that consists of a non-regressor based
adaptive controller and the disturbance observer (DOB) is proposed. DOB based control
scheme is a two-degree-of-freedom one. As stated in chapter 1, various controllers have
been used as the outer-loop controller such as PID type controller [12][15], adaptive
controller [16][17][21], sliding mode controller [18][19][20], neural network
controller[22]. Here we use a non-regressor based adaptive controller as the outer-loop
controller. This control scheme updates its gains by the output error, and therefore is
regressor-free. It is not only robust to the external disturbance and system dynamics
uncertainty, but also the gesture change of the vehicle system.
4.1. DOB Based Adaptive Robust Controller
The adaptive DOB control scheme is shown in the following Fig. 4.1.
Non-regressor- u' + u
based adaptive )------,------------..r
controller +
Fig. 4.1. Adaptive robust control scheme
q
As shown in Fig. 4.1, this control scheme has two parts, specifically DOB as the
inner-loop controller or compensator and the non-regressor based adaptive controller as
the outer-loop controller. These two parts will be described in the following sections.
35
4.2. DOB as the Inner-loop Compensator
The main idea of the Disturbance Observer (DOB) is to estimate the equivalent
disturbance by comparing the control input to the real system with the virtual control
input to the nominal model. The virtual control input to the nominal model is derived by
the output response from the inverse of the nominal model. The estimate is fed back into
the real system input as a cancellation signal, and thus makes the whole system to behave
like the nominal system. Therefore, it has been regarded as an effective means in
achieving control system robustness with respect to disturbance. The block diagram of
DOB is shown in Fig. 4.2.
u + u
+
y
Disturbance observer
r - - - --- - - - ------------------------- - ---- - - --- - - - - - ----- ------ -+-i
d
l
L------.c ,
,
,
,
,
,
,
, ,
... - - - - - - - - - - - ---- ------ --- -- ---------- - ---- - - --- - -- - - - -- - - --------- --
Fig. 4.2. Block diagram of DOB
Where P is the real system to be controlled, P
n
is the nominal model designed by
the controller system designer, d is the external disturbance, u' is the reference input of
the system, u is the input to the real system, y is the output of the system, y is the

measurement noise, Qis the low-pass filter, d is the observed disturbance and d
l
is the
observed disturbance after the low-pass filter. Here Q has two functions. One is to make
the inverse of the nominal model realizable; the other is to adjust the bandwidth of the
DOB.
36
From the diagram shown in Fig. 4.2 we can get:
* "
U=U +d
j
y=P{u+d)
" "
d
j
=Qd
Using the equations from (4.1) to (4.4), we can get:
(4.1)
(4.2)
(4.3)
(4.4)
We can see that in the low frequency range where Q{s);::;: 1 (in the bandwidth of
Q), equation (4.5) gives:
(4.6)
This indicates that low frequency disturbances are canceled and plant/model
mismatch is compensated in the low frequency range. The compensated system behaves
like the nominal system, and this provides robustness to the control system. But the
measurement noise is completely reflected in the system output. While in the high
frequency range where Q{s);::;: 0 (above the bandwidth of Q), equation (4.5) gives:
(4.7)
This indicates that the measurement noise is blocked (Hy; =0). But the system
behaves like an open-loop system. Therefore, a sensible choice for the design of Q{s) is
to let the low frequency dynamics of Q{s) remain close to 1 for rejection of external
37
disturbances and model uncertainty, while in high frequency range it must be close to 0
for sensor noise rejection.
Ideally, if the external disturbance and the modeling error are completely
compensated by the DaB, the dynamics of the system is known and no outer-loop
feedback controller is needed. However, because of the necessary existence of the low-
pass filter Q, the observed generalized disturbance has a phase lag and amplitude
difference comparing with the original disturbance. Fig. 4.3 shows a typical bode plot of
a low-pass filter. From this figure we can see that in the bandwidth of Q, the amplitude is
not exactly 1 along the frequency change, and there is an obvious phase lag. Moreover,
DaB cannot observe the disturbance beyond its bandwidth. Therefore, there are always
some biases between the nominal model and the model achieved by the disturbance
observer, and an outer-loop feedback controller is always necessary for a DaB based
control scheme.
Typical bode diagramof a low-pass fitter
Frequency (rad/sec)
Fig. 4.3. Typical bode plot of a low-pass filter
38
Various controllers have been used as the outer-loop controllers to control the
nominal system with estimation errors. This survey is done in section 1.3. Here we use an
adaptive controller to serve as the outer-loop controller.
4.3. Non-regressor Adaptive Controller as the Outer-loop Controller
In the case of underwater vehicle, the dynamics in the B-frame is more constant
than in the E-frame because of big gesture changes in AUV motions. Therefore, to
achieve better disturbance-observe result, we apply DOB in the B-frame. That is, we set a
nominal model in the B-frame instead of in the E-frame. The nominal model is shown in
equation (4.8):
(4.8)
From this equation we can see that the nominal model is time-variant and
nonlinear. But the parameters in defining the dynamics are set to be known. DOB's task
here is to observe the disturbance generated by the parameter uncertainty and the external
disturbance.
Adaptive control has been widely adopted as an effective means in robotic
control. However, in the case of nonlinear systems with uncertain and unknown
disturbance environments such as an underwater robotic vehicle, it is very difficult to
derive the traditional regressor-based adaptive controller. Recently lots of efforts have
been made for the derivation of non-regressor-based adaptive controller. One approach is
to use the bound estimation method that estimates the bounds of the parameter matrices
of the nonlinear dynamic system or their combinations, and then use their estimates to
39
adjust control gains. Among them, Yuh [60][61] and Nie [62] used four bound
combinations of system parameter matrices and disturbance terms as the new parameters
for estimation. Their estimates are used to tune the control gains.
After DaB is used in the underwater vehicle system, the system dynamics
becomes:
Mnv +Cn(v)v + Dn(v)v + IJl7' v, t)= ,*
lj =J(77)v
(4.9)
(4.10)
where Iv (77, v, t) is the estimation error due to the phase lag and bandwidth restriction of
the low-pass filter Q in constructing the DaB. Because the controller is designed in the
E-frame, which is regarded as an inertial coordinate system, dynamics in the E-frame is
needed as done in (3.10).
M,/J77)ij +C,/J77, vh+
D
,/n(77, vh+ 1(77, v t = ~
where M"n (77) =J-
T
(77 )MnJ-
1
(77),
C,/n (v, 77) =J-
T
(77 )[C
n
(v)- M
n
J-
1
(77 )j(77)y-l (77),
D,/n (v, 77) =J-
T
(77 )D
n
(v )J-
1
(77),
": (77) =J-
T
(77)r * , which is shown in Fig. 4.2 as u* .
1(77, v, t) is the estimation error written in E-frame. Its expression is
(4.11)
1(77, v, t)= (Q-1)
{(Mry(7])-Mryn(ry))ij + (C,/(7], v)-Cryn(7], V))ry + (Dry(ry, v)-Dryn(7], v))ry-d(t)} (4.12)
where d(t) is the external disturbance.
40
According to the dynamics shown in (4.9), some of the matrices are known, such
as M
lI
J7]), ClIJv, 7]), DlIn(v, 7]), even though they are still time-variant and nonlinear.
Therefore in constructing the adaptive controller, we can use the items relating these
matrices as feed-forward instead of using bound estimation method to construct the
feedback gain matrices. However, to derive those feed-forward terms, there is lots of
complicated computation, especially the time-differentiation computation and matrix
inverse computation. These are more complicated than updating the bound estimation
parameters, which might be burdensome for the computer carrying out the control
algorithm. Therefore, we use bound estimation method on these matrices and construct
feedback gain matrices in designing the adaptive controller.
We assume that /(7], v, t) can be bounded by
(4.13)
where d;, i =0, 1, 2 are positive constants, e and e are tracking position error and
velocity error respectively.
The system matrices are assumed to be bounded as:
(4.14)
where II-II represents the Euclidean norm, a , /3i and r are positive constants.
The main idea of the non-regressor based adaptive control method is to estimate
the new parameters defined in equation (4.15):
(4.15)
where /33 =/34 =/35 =& / a, & is a positive constant. d, =when (i - 3) < 0.
41
The control force is set as:
S
=K/jd + Kil + K
3
+ + Kse =LK
i
<1>i
i=l
(4.16)
where <1>J =ijd' which is the desired acceleration, <1>2 =Jj, <1>3 =1 which is a positive
constant, <1>4 = Ii, <1> s = e. K
i
are control gain matrices.
Combine equations from (4.11) to (4.16), the error equation can be obtained as
follows:
s
- - = L (p; - Ki)<I>i
i=!
where =M'I
n
' P
2
=C'I
n
+ D'I
n
' P
3
=f , P
4
=P
s
=0 .
(4.17)
Theorem: The tracking error e asymptotically converges to zero and the
parameter estimations converge to certain bounds with the following adaptive controller:
where J; are positive constants, e
i
are estimates of e
i
, and
where () is a positive constant satisfying () < 8 .
Proof Construct the Lyapunov function as follows:
1 1 +-J Ie \2
V="2
e
e +"2i:t
Ji
n i - i}
42
(4.18)
(4.19)
(4.20)
(4.21 )
Differentiating equation (4.21) along equation (4.17) with respect to time yields:
(4.22)
With the adaptive control law (4.18), (4.19) and CY < &, the equation in the first
bracket of (4.22) becomes:
5 5
pm -r-
1
()
e '/nLJ j'j +cye e- LJj; y j i

2 2
= - I a,B; Ilellll<D; II + +cye
T
e- + Ilellllell +Ilellllell)

- a(dollell +d11leliliell + d2 1l
e
llll
e
ll)
::; a,B; )lellll<D;11 + (CY - & &llellllell- &llell

::;0
and the second bracket becomes
5 5 .
+ If-1yoA

43
(4.23)
5
~ I (- Amin M ~ )+ r Jlellll<I>; liB;
;=1
~ o
From (4.22), (4.23) and (4.24), V is reduced to:
(4.24)
(4.25)
Therefore, the tracking error will asymptotically go to zero and the parameter
A
estimations B
i
will also asymptotically converge to B
i

A
However, from equation (4.19) we can see that the parameter estimation B; will
increase without limitation as time goes by. This will result in overestimates of the
parameters and big control gain jump when e changes its direction. To overcome this
problem, the following modification is added into the original adaptation law:
;.. { /; Ilellll<I>i II if Ilellll<I>; II ;:: Il;
B
1
= _C;iBi + fllellll<I>ill if Ilellll<I>ill < Il;
(4.26)
where C;i Ili' i =1, "', 5 are all positive constants. This equation can be explained as that
when the performance meets the control requirements defined by Il; , reduce the
parameter estimation.
For the second condition of equation (4.26), substitute it into equation (4.24) we
obtain:
(4.27)
A
when B; is underestimated (i.e. B
i
is smaller than B
i
), the second item in (4.26) becomes
positive and V might be positive, which means that the tracking error increases.
44
However, when the error increases, the controller switches the adaptation algorithm to the
monotonic increment adaptation that will increase the estimate and guarantee the error-
tracking convergence condition.
Furthermore, we notice from equation (4.18) that when e is close to zero the
controller would generate large control input signals and extreme chattering phenomena.
To avoid this problem, the following controller is used instead of equation (4.18):
K- i-
(4.28)
where 6
i
i =1, "', 5 are positive constants. The control gain described by equation (4.28)
may not guarantee the asymptotic zero-tracking convergence but tracking errors are
bounded by small numbers depending on 6
i
To reduce the error, an integral term of
K, Jedt can be added to (4.16), where K, is a small constant matrix.
4.4. Summery
This chapter proposes an adaptive DOB controller that combines the DOB with a
non-regressor based adaptive controller. This controller does not need any parametric
information of the system to be controlled. If the bound estimations are correct, this
controller can assure asymptotic convergence of the tracking error. Moreover, because of
the adoption of DOB as the inner-loop controller, the system gets robustness with respect
to external disturbance.
45
CHAPTERS
SIMULATION AND ANALYSIS
Effectiveness of the adaptive DOB controller is investigated by companson
simulations. The simulations are carried with the ODIN dynamics model. The adaptive
DOB controller is compared with a PID controller, a PID DOB controller and an adaptive
controller for various cases with external disturbance and nominal model change. In this
chapter, results of simulations are presented with analysis.
5.1. ODIN Dynamic Model and Simulation Description
The flow chart of the ODIN dynamics simulation is shown in Fig. 5.1. The
simulation package is an upgrade of the original one, which is described in detail in
[108].
In the simulation, the sensor sampling frequency was set to be 5Hz. The
integration step was set to O.OIs, which is much smaller than the sensor sampling period
and thus the effect due to the zero-order-hold integration method is negligible.
In constructing the DOB, the full nominal model was set as:
(1 +tl)Mv + (1 + tl)c(v)v + (1 + tl)D(v)v ='f
n
(5.1)
where tl is a real number representing the parameter perturbation and tl "* -1. The low-
pass filter is defined as Q =( 1 y' where 'f is set as _1_
'fs+I 0.5
In the companson test, a simplified pure inertial nominal model IS used as
follows:
46
Parameter and variable initialization
Actual control input derivation
(5.2)
No
Simulation with ODIN dynamics model
Fig. 5.1. Flow chart of ODIN dynamic simulation
An external disturbance was added to the dynamic system model,
d =F *(sin(2Jif;t ) +sin(2Jif
z
t)) *[1 1 1 0 0 0f.
47
Totally 14 cases are simulated. These cases vary according to different
controllers; different external disturbances; with/without DOB; PID controller with
roughly estimated gains or well-tuned gains; and the full nominal model or simplified
pure inertial nominal model.
Case 1: PID controller with roughly estimated gains, F =0;
Case 2: PID controller with roughly estimated gains F =3 ;
Case 3: PID controller with well-tuned gains, F =0 ;
Case 4: PID controller with well-tuned gains, F = 3 ;
Case 5: PID DOB controller with full nominal model, Ll =-0.5, F =0 ;
Case 6: PID DOB controller with full nominal model, Ll =-0.5 , F =3 ;
Case 7: Pure adaptive controller, F =0;
Case 8: Pure adaptive controller, F =3 ;
Case 9: Adaptive DOB controller with full nominal model, Ll =-0.5, F =0;
Case 10: Adaptive DOB controller with full nominal model, Ll = -0.5, F = 3 ;
Case 11: PID DOB controller with simplified pure inertial model, Ll =-0.5, F =0;
Case 12: PID DOB controller with simplified pure inertial model, Ll =-0.5, F =3 ;
Case 13: Adaptive DOB controller with simplified pure inertial model, Ll = -0.5, F = 0;
Case 14: Adaptive DOB controller with simplified pure inertial model, Ll = -0.5, F = 3 ;
5.2. Simulation Results
In each simulation result figure, there are 4 subplots, specifically tracking
performance in X, Y, Z directions and a performance index named comprehensive
tracking error which is defined in equation (5.3). For the controllers with DOB, there are
2 other subplots showing the DOB observation results.
48
(5.3)
Case 1: PID controller with roughly estimated gains, F =O. The gain settings are
Kp=1O*I6x6,KD=20*I6x6,K/=diag([0 0 0.0300 oD

//
..,,/
//
../
Desired (solid) and actual (dot) x position and l.elocity
5

E
x 3
Desired (solid) and actual (dot) y position and l.elocity
5

S
>- 3
300
300 200 100
100

,",
j
\, ..
>"
200
time (s)
(b). Tracking performance in Y direction
Z'
'13 0
o
-0,02
o
2
o
0,04
S 0,02
300
300
200
100
100
200
time (s)
(a). Tracking performance in X direction
Z'
'13 0 .. u__ ----, uu,,,dij
o

o
2
o
til 0,04
l 0,02 f ----- --" --- --- -:--- ---- ---- --- --:-- -- --- -'r'----- -:- -'\-----1
0,5 r---------,------,-----,------,
Comprehensil.e error in tracking X, Y and Z
0,1 u u :_uu : u : _
o
o 100 200 300
TIme (s)
(d). Comprehensive tracking error
Desired (solid) and l.ehicle (dot) z position and l.elocity

o 100 200 300
! \ .: ---- --.:- --- --- -- -- --- --.' -- -- -- --I
'13 0 - ----------\ -: - u .. -
o
-0,02 : '
o 100 200 300
time (s)
(C). Tracking performance in Z direction
E 0.4 --- -- -- -- -- -- --- -- -- -- --- ------ -- -- --- -- --- ---- ----
i IA; :
(J) 0,3 --- - --- --- ---:- -- --- --- ---- ---:--- --- --- ---- ---:- --- u ___
: : :
0,2 - u + u !
(J)
c:
(J)
(!)
Fig. 5.2. Tracking performance in X, Y and Z directions of case 1
Case 2: PID controller with roughly estimated gains F =3. The gain settings are
the same as that in case 1.
Desired (solid) and actual (dot) x position and l.elocity Desired (solid) and actual (dot) y position and l.elocity
51 ! i J' 51 ! ". ,'", ". "I
4
u
-----
m
---i------------- ---i-------------:y::-- 4 -------------)---------- __:---
:Ut/UTUUUUU ..
o 100 200 300 0 100 200 300
t !
o 100 200 300 0 100 200 300
time (s) time (s)
(a). Tracking performance in X direction (b). Tracking performance in Y direction
49
Desired (solid) and \ehicle (dot) z position and \elocity Comprehensi\e error in tracking X. Y and Z
300 100 200
time (s)
2[ - !. . 4
:_/. :. : mummc
o 100 200 300
Vl O. 04
l O. 02 u'_ -- -',-. -:---, --, --- -- _c,_ -:---, --, -- -,-- ,- -:---; -- '--i
Z'
'g 0 f -- -) -- --,
-0.02
o
(c). Tracking performance in Z direction (d). Comprehensive tracking error
Fig. 5.3. Tracking performance in X, Y and Z directions of case 2
Case 3: PID controller with well-tuned gains, F =O. The gain settings are
300
300 200 100
//
./
Desired (solid) and actual (dot) y position and \elocity
5

S
>. 3
2
o
!!! 0.04
S
Z'
'g
-0.02
o 100 200
time (s)
300 100 200
time (s)
Desired (solid) and actual (dot) x position and \elocity
..
o 100 200 300
O. 04
(a). Tracking performance in X direction (b). Tracking performance in Y direction
, ,
--------------,----------------,---------
Desired (solid) and \ehicle (dot) z position and \elocity
:l77cm=T .. ruu!
o 100 200 300
i
o 100 200 300
time (s)
Comprehensi\e error in tracking X. Y and Z
0.5
g: 0.4
g , I
CIl 0.3 - - -----------:----------------,------------- --,-----
al \
0.2 -\- u
\
(1j 0.1 u\u __
o '---'--'::.:::.:"--"-"--'-'--"""--'
o 200
lime (s)
(c). Tracking performance in Z direction (d). Comprehensive tracking error
Fig. 5.4. Tracking performance in X, Y and Z directions of case 3
50
Case 4: PID controller with well-tuned gains, F =3. The gain settings are the
same as that in case 3.
300 100 200
time (s)
Desired (solid) and actual (dot) y position and ..elocity
51 ' , 'I
4 ---------------j- ------------j(':::':'::::t::'::
.....
o 100 200 300
0.04
S
300 100 200
time (s)
Desired (solid) and actual (dot) x position and ..elocity

: _.-. ---:.-.----,---""-- ---'-.-' -. -. --------
o 100 200 300
til 0.04
1
(a). Tracking performance in X direction (b). Tracking performance in Y direction
Desired (solid) and ..ehicle (dot) z position and ..elocity Comprehensi..e error in tracking X, Y and Z

1/ \
.'.
'. .
'.
.-
''-
100 200
time (s)
300
0.5 --.--------y-------,------,---------,
, , ,
, , ,
, , ,
, , ,
:[ 0.4 ---u.u -.'
0.3 -- ---N--r\-------pn-iuf\u --- -IV uu
i 0.2 --- ----tu uuu-1--\-(--( u--- -(-- U-t
l
"p
ai \ I \: \ I I: I \ I ': i I
t? 0.1
o ,V , c' , Y
o 100 200 300
Time (s)
(c). Tracking performance in Z direction (d). Comprehensive tracking error
Fig. 5.5. Tracking performance in X, Y and Z directions of case 4
Case 5: PID DOB controller, = -0.5, F = O. The gain settings in this case are
300 100 200
time (s)
:!
.:'.
':;:
i
.".
",.,


TR
:'
::,
I:,: ;: .:::::::::.
i. r:n: i:!
:::;
;',::
'.',,,.
Z'
'g 0
-0.02
o 300 100 200
time (s)
>-
g 0 H:H; _'u
-0.02
o
Desired (solid) and actual (dot) x position and ..elocity Desired (solid) and actual (dot) y position and ..elocity
5 5 I
:[ 41. -..-uuuuu-u., u--- uu-u .ju u--- u- :[ 41.'
U
- u_uu u--.:--- u--- ---
x 3 __ ppp-pp pp- -- --:- u__ -uu;-._ u uu-u- >- 3 _, upp. p p ;-/__ p_:p pu__ uup__ _u_uu
2 .....,.,...- .... !, .. "_"""_--:"'0<" : 2 :
o 100 200 300 0 100 200 300
til 0.04 0.04
:. 0.02 E. 0.02
(a). Tracking performance in X direction (b). Tracking performance in Y direction
51
Desired (solid) and \ehicle (dot) z position and \elocity Comprehensi\e error in tracking X. Y and Z
I ::l!mummfmuuummcmmummLmm
I- I , \
0,3 - -------------!----------------!-------- ... ----- ........
al

OJ
C
OJ
(!)
300 100 200
time (s)
(c). Tracking performance in Z direction
g 2[
1 / c , -------------c--------
N ,/: : :
07 : :
o 100 200 300
U> 0.04
. 0.02 f--:/- -- -',--V--: -- '--r,-- '---" ,-- --:-- - ------; -.. - -. -.-,_. -... --,

'(3
o
;g! -0.02 __ _ ____'
o
Real (solid) and obser\ed (dot) disturbance in X. Y and Z
350 300 250 200 150 100 50

j 0
Ul
o -10 lL-__-'---__...L-__-'--__-'-__--'-__.......L__
o 50 100 150 200 250 300 350
20, , , , , , ,
o
-20
i i i i i i
0 50 100 150 200 250 300 350
Trme(s)
(e). DOB performance in X, Y and Z
Real (solid) and obser\ed (dot) disturbance in Phi, Theta and Psi
E 20,.---,---.,----,..---...,-----,----,-----,--,

r\
OJ
g

::J
(j) -20 L.....__-'---__...L-__-'--__-'--__.....L.__---L__---'...J
o 0 50 100 150 200 250 300 350
E 20,.---,---.,----,..---...,-----,----,-----,--,

OJ r,
g 0 ..._'...,v.. ...'"'<, .;;..,<,.. ...'

::J
(j) -20 L.....__-'---__...L-__-'--__-'--__.....L.__---L__---'...J
i
ro . ,., , , , , , ,
", : : : :, : : :
]i -20 iii i ' i '
o 0 50 100 150 200 250 300 350
Trme(s)
(t). DOB performance in roll, pitch and yaw
Fig. 5.6. Tracking performance in X, Y and Z directions of case 5
52
Case 6: PID DOB controller, .tl =-0.5, F =3 . The gain settings are the same as
that in case 5.
300 200
time (s)
100
j,
+
;: ::
:
i.
y,: N:
:;'.
:
> ::
.;::":1
,
"
Z'
'g 0
-0.02
o 300 200
time (s)
100
>,
'5 0 I. +c" ,,,+.;:++;c:, ",f.F',+,"";+'"'' .. ,...... + ...
o
-0.02
o

o 100 200 300 0 100 200 300
til 0.04 til 0.04
. 0.02 . 0.02
(a). Tracking performance in X direction (b). Tracking performance in Y direction
Desired (solid) and \ehicle (dot) z position and \elocity
300 100 200
lime (s)
Comprehensi\e error in tracking X, Y and Z
__
o
0.5
g 0.4 HI .... .. ....,........ .. .. , .. ........ m,-- ..... m'
....
g
0.3 Q)
al
.!:!
0.2

Q)
c::
Q)
0.1 (9
300 200
time (s)
100
:[ 2l .. m ...... -,- -- .' .- - - -- '-1
1 .... / _ ... m,.......... _ m ..
N / '
o // ,:
o 100 200 300
til 0.04
. 0.02 h..J.. ";;..'tH .....: .. ,; ....: .... ....m:.{.m.....j
>,
'5 0 F/':: " .. ". ; ... ":;;:::i,,,/:!.;i;':c',,:,,,;:,;':,ic;;;:' ;;,,+:,:1
o
-0.02 __--i......Ll__
o
(c). Tracking performance in Z direction (d). Comprehensive tracking error
Real (solid) and obser\ed (dot) disturbance in X, Y and Z
g
Q)
()
c::
ro

:::l
U;
(5
g
Q)
()
c::
ro

:::l
U;
(5
g
Q)
()
c::
ro

:::l
U;
(5 -20
0 50 100 150 200
lime (s)
250 300 350
(e). DOB performance in X, Y and Z
53
/\./\ ,,/"'" .pO,,,,
>,-;',
0,/\
0"
;;;""',
; "
W
""C,-C: ''''-''7'
"c;--,:""
Real (solid) and obsel"l.ed (dot) disturbance in Phi, Theta and Psi
350 300 250 200 150 100 50
(t). DOB performance in roll, pitch and yaw
Fig. 5.7. Tracking performance in X, Y and Z directions of case 6
Case 7: Pure adaptive controller, F =O. The non-regressor based adaptive
controller parameters are set as: (Y =3.0 , f =[0.9 0.9 0.9 0.9 0.9] ,
o=[250 250 250 250 250] K =8.0 fl =[0.2 0.2 10 0.2 0.2]
= [0.05 0.05 0.1 0.1 0.1], K
1
= [0 0 0.03 0 0 0].
Desired (solid) and actual (dot) x position and l.elocity Desired (solid) and actual (dot) y position and l.elocity
5 5
: i i .j i J
: : : / . : /':'_F ----- - -- ;. -_.
!
o 100 200 300 0 100 200 300
i .. I
o 100 200 300 0 100 200 300
time (s) time (s)
(a). Tracking performance in X direction (b). Tracking performance in Y direction
54
Comprehensil.e error in tracking X, Y and Z
300 100 200
Time (s)

W'VV\iv
\r,j\/J\,/\
JV'\f\
0.5
o
o
I 0.4
0.3

.t::! 02
.
Q)

l? 0.1
I
N 1 m.,/".":---"mm""r"""" "T""""
0/' : :
o 100 200 300
i'.L', j' I : I
002
7
.:, . '. \' nnnnmmmfnm
' .' i' .
o 100 200 300
time (s)
Desired (solid) and l.ehicle (dot) z position and l.elocity
(c). Tracking performance in Z direction (d). Comprehensive tracking error
Fig. 5.8. Tracking performance in X, Y and Z directions of case 7
Case 8: Pure adaptive controller, F =3 . The gain settings are the same as that in
case 7.
300 100 200
time (s)
Z"
'0 0 I";;+-;-;++-;+C;';'+"";"L.... " .;. ,'\-;-:- ..,..;.,...,,;-;,;"';:i-:';;1
o
-0,02 __
o

2\( '.... ;./ i i.
o 100 200 300
0,04 r7'C-_-,-,
.s 0.02 f_.;:;,::,;::..
300
300
200
100 200
time (s)
100
Desired (solid) and actual (dot) x position and l.elocity
Ix 4
2
5
3
.,:.:. .. ",::);(i!
,
:""-' :
o
Ul 0.04
g 0.02 f '<""."" .:'+.:",:. ',." "'.',,, ".:. ,'., f ;e '.'1' f; ,.:.; ." .:.;" .j
Z"
'g 0 H:c,'c''''', ..:,.,.',;..[,.;" ..:; .;;:H,>'';-1
-0,02
o
(a). Tracking performance in X direction (b). Tracking performance in Y direction
Desired (solid) and l.ehicle (dot) z position and l.elocity Comprehensil.e error in tracking X, Y and Z
0.5 nr-----,----.....,..---,------,
300 100 200
time (s)
!
o 100 200 300
0.04
.!!?
.s 0,02 H,/"", .:" . ".:.. :"" ,f"":"," ".:. hi'".,. :"... ,,.,',"1
=5 0 P, .:-,-". " .'." ,,', ..',,:,,;, ,,+..,..:.. i;--;;,;,;"i;';;'
o
-0, 02
o
(c). Tracking performance in Z direction (d). Comprehensive tracking error
Fig. 5.9. Tracking performance in X, Y and Z directions of case 8
55
Case 9: Adaptive DOB with =-0.5 , F =O. The non-regressor based adaptive
controller parameters are set as: a =5.0 , f =[0.9 0.9 0.9 0.9 0.9] ,
8 =[250 250 250 250 250] K =8.0 Jl =[0.2 0.2 10 0.2 0.2]
; =[0.05 0.05 0.1 0.1 0.1], K
J
=[0 0 0.03 0 0 0] .
Desired (solid) and actual (dot) x position and l.elocity Desired (solid) and actual (dot) y position and l.elocity
:1: :-----:!.' .. nn ... :I---:--:-:::-:::-.'/.c----=.,=I
"C -',"".. , . ' .... n'_n'.' j,_, ._".......;. ., ..;;." .....".. ..-"..i......"' ....000 0(">' I c " _"__ I ,
2 ' " 2'"
o 100 200 300 0 100 200 300
0.04 Ul 0.04
-
.s .s 0.02 f - n:. -:t -; - -- ---..-:- -,.1-:- "-':-''':.--:' -- n <--.; --:--;-,' -H
100 200 300
time (s)
(a). Tracking performance in X direction
Desired (solid) and l.ehicle (dot) z position and l.elocity
i 0 -- --- n _n:_',
-0.02 __--'-'--'---''''-;''''-'---L'.....c.'-------...CJ
o 100 200 300
time (s)
(b). Tracking performance in Y direction
Comprehensil.e error in tracking X, Y and Z
0.5,----........,----_,__---,---------,
E 0.4 --------------- .. - - uu
i \
i 0.3 r_n :m : __ u m m __
0.2 __\m - __ __ __ __ __ __ __ __ __ '"' m----

o 100 200 300
lime (s)
(d). Comprehensive tracking error
300 100 200
time (s)
(C). Tracking performance in Z direction
I 21....------- __ .. "1:-1
N 1---,r"--- --; --- -- -- -:- m m -- -- m -; --- ----
: :
o 100 200 300
0.04

.s 0.02 f-'t: 't -,-, -\- '.-:-c.- ;.-: -;'-T.-.:' -,- ,'--' - - --- -- _: m_'
>-
'5 0
o
-0.02
o
Real (solid) and obserl.ed (dot) disturbance in X, Y and Z
(e). DOB performance in X, Y and Z
56
Real (solid) and obsel'\ed (dot) disturbance in Phi, Theta and Psi
f] f L_III
9- 0 50 100 150 200 250 300 350
j]--"-".-.-__-.J
9- 0 50 100 150 200 250 300 350
jI--, , [-11
o 0 50 100 150 200 250 300 350
lime (s)
(t). DOB performance in roll, pitch and yaw
Fig. 5.10. Tracking performance in X, Y, Z directions of case 9
Case 10: Adaptive DOB with =-0.5, F =3 . The gain settings are the same as
that in case 9.
z-
'g
-0.02
o 100 200 300
time (s)
(b). Tracking performance in Y direction
300 100 200
lime (s)
(a). Tracking performance in X direction
z-
'(3
o
-0.02
o
Desired (solid) and actual (dot) x position and I.locity Desired (solid) and actual (dot) y position and I.locity
51 .: , 5
b
.' -.. ..:
I 4 u;u u.uu .. +.. .m.. .u:./u.u I 4 .uu--"uu..:"m",,"/i"m .um :__ mm
x 3 uu Cm __ mm : mu Am. >- 3 . mu" mC' u/.mm..m.U 'c'" .
2 - , c C' - : 2 ' .r, :
o 100 200 300 0 100 200 300
en 0.04 -!!! 0.04
l S
Desired (solid) and I.hicle (dot) z position and I.locity Comprehen5il. error in tracking X, Y and Z
- - -- - - - - - - - - - -:- ---- - - - -- - - - -:- - --- - - - - - - - - -;- - - -- - - --
0.5,-----,-----,----,-----,
I 0.4
g
Q) 0.3
al ' ,
I:;
o 100 200 300
lime (5)
(d). Comprehensive tracking error
300 100 200
time (s)
(C). Tracking performance in Z direction
2[ uu. Tf
un
,' ... - c..- I
;//_m mm
o 100 200 300
en O. 04
l 0.02 H.yC; .:.,. ,. ,';." u. .. u:u"u' u ., :m... _uj
>-
13 0 hoi., .... uo..
o
-0.02 __ __
o
57
Real (solid) and obsen.ed (dot) disturbance in X, Y and Z

10
Q.l
U
c:
0 m

::l
"'
(5 -10
0

10
Q.l
U
c:
0 m

::l
"'
(5

Q.l
u
c:
m

::l
"'
(5 -20
0
50
50
100
100
150
150 200
lime (s)
250 300 350
(e). DaB performance in X, Y and Z
50 100 150 200
lime (s)
250 300 350
(t). DaB performance in roll, pitch and yaw
Fig. 5.11. Tracking performance in X, Y, Z directions of case 10
Case 11: PID DaB controller with pure inertial model, F =O. The gain settings
are the same as in case 5.
58

,. .. !. ...... " -"
2 '
o 100 200 300
Ul 0.04,..----,..--T"T'__--_----,
:..
O. 02 'i': .:.: .;, ..:;. ,1, 'c.' "l'i;'" "n---- .. -- .. i.. ,..... :-;-1
:5 0
o
-0.02
o 100 200 300
time (s)
300 100 200
time (s)
Desired (solid) and actual (dot) x position and -.elocity
g :1 J :.
" : um .. /1mm
o 100 200 300
Ul 0.04,..-------,---____,--........,"'-___,
:.. 0.02 r" "-c"";"""i---'', .. c 'ci "",,,--,.7,,--:,,.;,._\, ... ,,
>-
'5 0 ,,c,;;-,,,+:i"';',,,''''''+-;;l+c+'''+h'
o
-0. 02
o
(a). Tracking performance in X direction (b). Tracking performance in Y direction
Desired (solid) and -.ehicle (dot) z position and -.elocity Comprehensi-.e error in tracking X, Y and Z
0.5 I! '
g 0.4 ....... .. mim... -- m' __ m..
i 0.31f1!lmm+um :mmummm
02 u
0 1
o"--'-- '-'-__ _ __'_'_ _____J
o 100 200 300
lime (s)
300 100 200
time (s)

:j/,mmmmT
mu
mmd
o 100 200 300
Ul 0.04
:..
Z:-
'g
-0,02 "--'--__ ........c_ ___._J
o
(c). Tracking performance in Z direction (d). Comprehensive tracking error
Real (solid) and obseMd (dot) disturbance in X, Y and Z
10

ffi 0H

:J
iii
is -10 "--'--__-'--__-'--__....L-__.....L..__-'-__......L__--'--'
o 50 100 150 200 250 300 350
10 rrr;---._--,---,----,---..,-----,----,--,
<V
<.>
0
:J
iii
is -10 "--'--__-'--__-'--__....L-__.....L..__-'-__......L__--'--'
o 50 100 150 200 250 300 350
! ..
o 50 100 150 200 250 300 350
lime (s)
(e). DOB performance in X, Y and Z
59
(t). DOB performance in roll, pitch and yaw
Fig. 5.12. Tracking performance of X, Y and Z directions of case 11
Case 12: PID DOB controller with pure inertial model, F =3. The gain settings
are the same as in case 5.

o 100 200 300 0 100 200 300
-;, 0.04 -;, 0.04
1 0.02 1 0.02 f'"'"'""',,.n 'f' n--Hi'T nnH
300
Z'
'(3 0 1..;,,,:_:..;:::,........';,:+' -, --' _n n_ i_in' -'t+: ...;.";"".';';',i..+ "+1
o
-0.02 '-'--'-'---'-'-----'-'---'-'----'-__-'-__-'-'--'_'_-'-'--'-.-'J
o 100 200
time (s)
(b). Tracking performance in Y direction
300 100 200
time (s)
(a). Tracking performance in X direction
>-
'5 0 f 'C" ,;" C_.' ;.;,- -.' 'i- -i';+"':---..i.;;,i' .."';y,;--u --. -- -,
o
.0.02
o
Desired (solid) and l.ehicle (dot) z position and l.elocity
300 100 200
Time (s)
(d). Comprehensive tracking error
Comprehensil.e error in tracking X, Y and Z
E :.: li1 --- --- n n - n --- n'__
';:' II :
i::

o 300 100 200
time (s)
(c). Tracking performance in Z direction
g 21 '..,n.. ,. '.'u'.:7'IH.'-".. __ _..
N 1 --- n/n --- --- __ __ _ ---- - n n - n
;/: i i
0> : i i
o 100 200 300
-;, 0.04
1
>-
'5 0 ri,",-- - --'in n -;-
o
-0.02 __
o
60
Real (solid) and obser.ed (dot) disturbance in X. Y and Z

Q)
u
C
ell
-e
:J
u;
0

Q)
u
C
ell
-e
:J
u;
0

Q)
u
C
ell
-e
2
'"
0 -20
0 50 100 150 200
lime (s)
250 300
350
350
(e). DOB performance in X, Y and Z
1\/\
.. ./"'"."

-,.<
'"'c.e" ""_:-:r '''".-/
1\/\
"',,- j"".'"....




350 300 250 200 150 100 50
Real (solid) and obser.ed (dot) disturbance in Phi, Theta and Psi
E 20

Q)
g 0
ell
-e
2
'" -20
o 0
E 20

g 0
ell
-e
:J
u; -20
9. 0 50 100 150 200 250 300 350
j
o 0 50 100 150 200 250 300 350
lime (s)
(t). DOB performance in roll, pitch and yaw
Fig. 5.13. Tracking performance in X, Y and Z directions of case 12
Case 13: Adaptive DOB with pure inertial model, F =O. The gain settings are the
same as that in case 9.
61
300 100 200
time (s)

o 100 200 300 0 100 200 300
-;n 0.04 0.04,-------,----___,------,-------,
1 .s 0.02 .. -,--H

'0 0 :,f-; --_h - -- - ,', ;


o
-0.02 L---'-__'_ __ '__"J
o 100 200 300
time (s)
(a). Tracking performance in X direction (b). Tracking performance in Y direction
Desired (solid) and l.ehicle (dot) z position and l.elocity Comprehensil.e error in tracking X. Y and Z
0.5,-------,-------,------,-------,
, ,
, ,
, ,
, ,
:[ 0.4 mhh h mmi-mmhmm-f-m-m
0.3 -mmhm--i- -----hh------'h -h_ ---------_h --h__
al : : :
0.2 l-mm-mlmmmhm-ih mmh-h h_hh_
I i
M
: :
c3

o 100 200 300
lime (s)
300 100 200
time (s)
:[
N :.7-----
h
---------------T---
h
--
h
---
h
:-----J
o 100 200 300
0.04 r;-;----:-c---------,-------,------,------,
!!?
.s 0.02 h/: ,--"- -,,,,-:-;,- ::--h -;'--" -;.{-:; -;,--; h_ h,; :m__ ----i
>.
'5 0 fe;':-;;---
o
-0.02 '-'--'---__
o
(c). Tracking performance in Z direction (d). Comprehensive tracking error
Real (solid) and obseMd (dot) disturbance in X. Y and Z

o 50 100 150 200 250 300 350
10,--------,------,------,-----,-----,-----,-----,-,
, , ,
o
, ,1) ,'1 , I
I , , , , , I
I , , I I
I l , , I ,
, , I ,
(J)
g
I1l
-e
::l
<;;
(5 -10 __'__---"__---"__---"__----l__----l__----l__---"....J
o 50 100 150 200 250 300 350
!
o 50 100 150 200 250 300 350
lime (s)
(e). DOB performance in X, Y and Z
62
350 300 250 150 200
lime (s)
100 50
Real (solid) and obser\ed (dot) disturbance in Phi, Theta and Psi
rl I----L----i 'LI
_20 __--'-__--'-__---'-__---L__---L__---'-__-'-J
9. 0 50 100 150 200 250 300 350
f .-.i----
L
-- _-ie
-2J I . I J
9. 0 50 100 150 200 250 300 350
f':1-c - 'I
-20 -------'-------'-------"-----'------'------'--------'---
o 0
(t). DOB performance in roll, pitch and yaw
Fig. 5.14. Tracking performance in X, Y and Z directions of case 13
Case 14: Adaptive DOB with pure inertial model, F =3 . The gain settings are the
same as that in case 9.

2 _" ":. '.+. i _ : j
o 100 200 300 0 100 200 300
0.04 O. 04
.!!!
g 0.02 .s 0.02 f"'.C""- ''-'-',-,i-c.'.C'-!'----'i/{c"-,-:.--,,,."-j-:++'-;,--'
Z'
'g 0 !..;..:....,,;,,:;,,;;.;;H-H+';,-',; --- --- --i-- .'-'...:,....;:,;.. ,..:;;:";::,-.1
-0.02
o 100 200 300
time (s)
(b). Tracking performance in Y direction
300 100 200
time (s)
(a). Tracking performance in X direction
>,
13 0 h ,"' ,++:.->.;'he; ,,'-, ;C"',f:-"';;;: ;';'." ,---- -- - -; -- -} ,:",,"
o
-0. 02 __----,---'--LJ
o
Desired (solid) and \hicle (dot) z position and \Iocity
300 100
Comprehensi\ error in tracking X, Y and Z
200
lime (s)
(d). Comprehensive tracking error
0.5,..-,---------,------,--,------,-----,
300
300
100 200
time (s)
(C). Tracking performance in Z direction
I 2[-- --.-- - c._ _, --lcc-_ _ _
N 1 -----,-,/------:------ --------,---------- ----,--------
:/ :
0...:.-
o 100 200
en 0.04,..-,--..,,-----,-----.--------,-------,
g 0.02 H-/"-''- ,-'''--i-He --: -- ..;- -- --:---- ---- ---i -" - -i- --;- ----j
:5 0 f:,.. ,-'.:---
o
-0.02 '-'-'--'-'-__ _____'_'_____'__----'
o
63
Real (solid) and obseMd (dot) disturbance in X, Y and Z
350 300 250 200 150 100 50
-10 '--_-----L__---L-__---"---__---'-__--'-----__--'-----__-'-J
o
10 ".--,------,-------,--------,------,----,----,-------"
10
8
c
(IJ
-e
:J
til
(5
OJ
u
ffi 0 p-' u ---"d- ,'u-- -, +1,,;II\"t,:-!'1
-e
.a
III
(5 -10 '--_-----L__---L-__---"---__---'-__--'-----__--'-----__-'-J
o 50 100 150 200 250 300 350
20
OJ
u
ffi 0 -u ;uu .. _, - :'B _Uu u u uuu: __ - uBB' B,- _u u" C'u u u .. u
-e
:J
til
(5 -20 '--_-----L__----L__---"---__--'---__--'-----__--'-----__-'-J
o 50 100 150 200 250 300 350
Time (s)
(e). DOB performance in X, Y and Z
Real (solid) and obseMd (dot) disturbance in Phi, Theta and Psi
i 20 I>-;. 'I: '1:"::"'-"-- Ii 'I: .:e.'c.-",. 1'; .: ';::"""1';-
i .2: _- .. .. .... _- __ -_.
I':
:::::::
-20 ' , , i ' , ,
9.. 0 50 100 150 200 250 300 350
t
Cl 0 50 100 150 200 250 300 350
Time (5)
(t). DOB performance in roll, pitch and yaw
Fig. 5.15. Tracking performance in X, Y and Z directions of case 14
5.3. Result Analysis
First, the comparisons between the results of PID controllers with/without careful
tuning, Figure 5.2 and Figure 5.4, Figure 5.3 and Figure 5.5. The results ofPID controller
64
with well-tuned gains are better than that of PID controller with roughly estimated gains,
and also more robust. As the uppermost application of the classical control theory, PID
control is advantageous for its multi-state feedback. For each kind of gain it has its own
intuitive meaning. If properly tuned, PID controller can have good performance and
robustness. However, when there is external disturbance, PID controller performance
degrades remarkably, and gains must be retuned for the desired performance.
Second, comparisons between the results of PID DOB and PID controllers, Figure
5.4 and Figure 5.6, Figure 5.5 and Figure 5.7. From the comparisons we can see that for
the case of PID DOB, the tracking performance degradation with external disturbance is
less than that of PID. This is because DOB effectively observes the disturbance and
compensates it.
Third, comparisons between the results of the pure adaptive controller and the
adaptive DOB controller, Figure 5.8 and Figure 5.10, Figure 9 and Figure 5.11. We can
see that the performance of the adaptive controller degrades remarkably with external
disturbance, while that of the adaptive DOB is much better. This is because though the
adaptive controller can adapts itself to achieve zero tracking error, when its adapting
speed is slower than the change of the external disturbance, its performance degrades.
However, for the adaptive DOB controller, because DOB effectively observes the
disturbance and compensates it, its performance persists.
Fourth, comparisons between the results of the PID DOB controllers with full
dynamics nominal model and with pure inertial model, Figure 5.6 and Figure 5.12, Figure
5.7 and Figure 5.13. We can see that the same PID gains work well in the case of full
dynamics nominal model, while their performance in the case of pure inertial model is
65
not as good as that of the former case. This is because, the outer-loop PID controller is
designed according to the nominal model. When the nominal model changes, the PID
gains should be retuned to have satisfactory performance. If not, the closed-loop
dynamics changes and the performance degrades.
Fifth, comparisons between the results of the adaptive DaB controllers with full
dynamics nominal model and with pure inertial model, Figure 5.10 and Figure 5.14,
Figure 5.11 and Figure 5.15. We can see that unlike the comparison of the PID DaB
case, the tracking performance degradation is much less. This is because the adaptive
controller can adapt itself to meet the performance requirement defined by parameter J1.
When the nominal model changes, as long as its bounds do not exceed that defined by the
outer-loop adaptive controller, the performance persists. This property is very important
for the underwater vehicle, because as stated in chapter 4, an accurate hydrodynamic
model is very difficult to get. With the control scheme of adaptive DaB, it is not
necessary to derive an accurate model in constructing DaB.
The performance comparison is summarized in Table 5.1.
Table 5.1. Performance comparison between different controllers
5.4. Conclusion
Overall tracking without
external disturbance
Poor
Good
Good
Good
Good
Robustness to external
disturbance
No
No
No
Yes
Yes
Based on the analyses and simulations above, we have the following two
conclusions:
66
1. DOB works in the underwater vehicle case, where big parameter perturbation and
external disturbance occur.
2. Adaptive DOB controller, which does not need any parametric information of the
underwater vehicle system, has superior performance over PID controller and PID
DOB controller. It can achieve performance robustness not only to external
disturbance, but also the change of the nominal model. This is of great importance
for the underwater vehicle system.
67
CHAPTER 6
EXPERIMENTATION
The experiments are done using ODIN-III from Autonomous System Laboratory,
University of Hawaii, Maona. Totally four controllers are tested: PID controller, PID
DOB controller, pure adaptive controller and adaptive DOB controller. These controllers
are tested in the 4-DOF case and the 6-DOF case.
The results will be shown in this way: in 6.1, the experimental settings will be
introduced; in 6.2, the 4-DOF comparison test results will be shown; in 6.3, the 6-DOF
comparison test results will be shown. Moreover in 6.4, the analysis and conclusion will
be done.
6.1. ODIN-III Introduction
Omni-Directional Intelligent Navigator (ODIN) is a 6-degree-of-freedom
autonomous underwater robot developed by Autonomous System Laboratory, University
of Hawaii [109]. The currently running vehicle is ODIN-III, which is shown in Figure
6.1.
It is a closed-framed sphere-shaped vehicle that makes its dynamics in each
direction nearly identical. It has 8 thrusters: 4 horizontal and 4 vertical, which make
ODIN be capable of maneuvering with 6-degrees-of-freedom and also have thrust
redundancy that can be used for fault tolerance purpose. It also has various navigation
sensors: 8 sonar sensors, a pressure sensor and an Inertial Navigation System (INS), and
68
an onboard computer PCI04+ running Windows 2000 with the Real Time eXtension
(RTX) embedded real-time system from VenturCom. For detailed hardware and software
configurations, please refer to Appendix I and Appendix II.
(a). ODIN in water (b). Inside view of ODIN
RS232, IMU digital data
12V DC
12V DC
12V DC
Thermometers
leakage Sensor
Thruster Battery
Voltage Meters
PC 104+
(Cool
RoadRunner II)
5V12V
D / A I ~
Thrusters
(c). ODIN hardware configuration
Fig. 6.1. Omni-Directional Intelligent Navigator (ODIN)
All the experiments were done in the diving pool of Kahanamoku Pool,
University of Hawaii, Manoa.
69
6.2. Experimental Settings
6.2.1. Sensor and Measurement Settings
As stated earlier, ODIN has several categories of sensors. In the experiments, INS
is used to measure the angular measurements of [ elf] angles; the pressure sensor is
used to measure the depth, which is Z direction displacement; the sonar sensors are used
to measure the horizontal translation displacements, which are [X Y] .
The signals from the pressure sensor and the INS are accurate enough to be used
in the controller. However, the sonar signals have some biased or unbiased noises, and
some reading discontinuities, which are due to the missings of the bounded back sonic
signals. Therefore there are two filters that are used to process the sonar data: an
interpolation filter that is used to interpolate the bad readings, and a Kalman filter that is
used to filter out the high frequency noise. Moreover, the Kalman filter is used to observe
the velocities based on the displacements measurements. The detailed description of these
signal processing techniques can be found in Refer to [110].
This is a variant-sampling-rate system. For the depth and rotational measurements
that use the pressure sensor and the INS respectively, the sampling period is 0.03
seconds, while for the [x y] measurements that use sonar sensors, the sampling period
is 0.3 seconds.
6.2.2. Controller Configurations
For convenience, when we explain the configuration of the controllers, we use the
6-DOF ([x y z elf]) case. The difference between the 6-DOF case and the 4-
70
DOF ([z () lfI]) case is that there is no [X Y] control input in the 4-DOF case.
The controller settings are listed as:
PID controller: The system was decoupled into 6 SISO subsystems. For
each degree-of-freedom, there is a separate set of PID gains.
Adaptive controller: The system was decoupled into 4 subsystems:
[x y], [z], [ ()], [lfI]. For each of these subsystems, there is an
individual adaptive controller.
PID DOB controller: The PID controller part setting is the same as that in
the PID controller. In constructing DOB, the low-pass filter was set as
Q=( 1 y' and the nominal model is set as a pure inertia system. The
TS +1
mass matrix IS 1.5 x diag([m m mIx I y Iz ]) where
[m m m Ix Iy Iz] is the rigid body inertia parameters with inertia
of mass m=125.0 and inertia of moment Ix =Iy =I
z
=8.0, and the
additional 0.5 times is the added mass effect. However, because the
sampling frequencies in [z () lfI] and [x y] are different, different
T 's are used in parameterizing the Q: for [z () lfI], T =1.0; for
[x y], T =5.0.
Adaptive DOB controller: The adaptive controller part is the same as that
in the adaptive controller, and the DOB part is the same as that of the PID
DOB controller.
The tests done to show the characteristics of the proposed adaptive DOB
controller are listed in Table 6.1:
71
Table 6.1. ODIN tests that have been done
PID PID+DOB Adaptive Adaptive DOB
4 OOF w/o external disturbance
4 OOF wi external disturbance
4 DOF wi 1.5 times parameter change
4 OOF w/2.0 times parameter change
6 OOF w/o external disturbance
6 OOF wi external disturbance
6 DOF w/1.5 times parameter change
6 DOF w/2.0 times parameter change
Where './ means the test that has been done, and means invalid definition of test.
The tracking trajectory in the 4-DOF case is: [ e 1jI] regulate with =0,
e=0 and IjI =4.1, which makes the back sonar sensor and the right sonar sensor
pointing to the pool walls so that the translation movements in the horizontal plane can be
measured. In Z direction, ODIN travels from a certain depth where all the sensors work
normally to the point 1.5 meters deeper. In the 6-DOF case, [ e 1jI] still regulate in
the same way as in the 4-DOF case. The translation trajectory is: ODIN travels from a
certain position where all the sensors work normally, to the point 1.5 meters deeper, then
to the point 1.5 times further in Y direction, and finally to the point 1.5 meters further in
X direction. The trajectories are shown by the smooth lines in the tracking result graphs.
The external disturbance is added using a pole by putting the pole onto ODIN at
the same position, exerting the same force for the same duration. In the 4-DOF test cases,
the external disturbance is added in [z e 1jI]. While in the 6-DOF test cases, the
72
external disturbance is only added in [x y] plane. This is because in the 6-DOF control,
the sonar sensors are used for horizontal [x y] measurements. Disturbance in
[ () If] may cause sonar failure. By this way, the vehicle's reaction to the
disturbances from all the degrees of freedom are tested.
While for the PID DOB and adaptive DOB controllers, both the cases with and
without external disturbances, and the cases with the nominal model variations are tested.
The nominal model change is realized by multiplying the initial nominal inertia matrix by
1.5 and 2.0.
To save the mess made by the legends in showing all the experimental results, the
legends are omitted with the default setting as: in all the tracking result graphs, the
smooth lines are the trajectories, and the rugged lines are the actual tracking results.
6.3. Results of 4-DOF Comparison Test
To show the test results more efficiently, two performance indices are defined: Z
absolute tracking error and generalized orientation error, which are shown in eq. 6.1 and
6.2 respectively.
(6.1)
(6.2)
where e
z
' e
rfJ
, eo and elf are tracking errors of depth, roll, pitch and yaw respectively.
73
6.3.1. 4-DOF Results ofPID Controller
The controller parameters are: k
pz
=4.2 , k
Dz
=1.0 , k
lz
=0.05 ; kpt(! =6.0 ,
kDt(! =5.0 , kIt(! =0.3 ; k
Pe
=6.0, k
DO
=5.0 , k
IO
=0.2 ; k
plf
=4.0 , k
DIf
=10.0 ,
kI'll =0.1. The integral gains are nonzero because in Z direction, there is a constant
force generated by the comprehensive effect of the gravity force and the buoyancy force;
in and e, there are constant torques generated by the non-coincidence of ODIN's
buoyancy center and gravity center; in If/, there is a constant torque due to the
asymmetric installation of the thrusters.
1. Test result without external disturbance
The test result without external disturbance is shown in Fig. 6.2.
Tracking of Z Tracking of Roll, Pitch and Yaw
0.5
o
o 50 100 150
Time (second)
(a). Tracking performance of Z
3.5
3
2.5
al 2
W
S 1.5
N


,,/
//
I.::
f r
J
o 50 100 150
Time (second)
(b). Tracking performance of [ e If/]
Absolute error in Z
0.5,--------,-----,---------,
0.2 u u u. u u u. u u.: u. u u ,. u .. u. u u
0.2 u .. fu.. u i u .
0.1 .uu.uuu.u u'" ... uu.uu.uuuu.u.u ..
, ,
o
o 50 100 150
Time (second)
(d). Generalized orientation error
Generalized error in Roll, Pitch and Yaw
0.4 ,--------,-----.,--------,
"0
g
m 0.3 uu.u.uuu.u .L uLu.u.uuuu .
c:
o

'E
Ql
'C:
o
-g
.

Ql
c:

, ,
, ,
_ _ _ _ J _
, ,
, ,
, ,
, ,
, ,
, ,
, ,
- - - -- - - - - - -- - - -- - - - - - - - - - - - - - - - - -- - ---
50 100 150
Time (second)
(c). Absolute error of Z
g 0.4
N
. 0.3 u
g
Ql
Ql
:5
o
1l
<x: 0.1
Fig. 6.2. 4-DOF tracking performance with PID control, without external
disturbance
74
2. Test result with external disturbance
The disturbance occurs around the 40th second. The test result with external
disturbance is shown in Fig. 6.3.
Tracking of Z Tracking of Roll, Pitch and Yaw
0.5
o
o
3.5
3
2.5
~ 2
a:>
S 1.5
N
.",,.,.,r
h
/y/:rr"
t)
/1
d;""
50 100
Time (second)
(a). Tracking performance of Z
Absolute error in Z
150
(b). Tracking performance of [ e IjI ]
Generalized error in Roll, Pitch and Yaw
(c). Absolute error of Z
'0 0.4 ,---------.------,----------,
~
~ 0.3 ,m,mm,mm,i mmmn
<:
o
I0.2 ~ i' "u, uuummu
~ \ .
I0: j u ~ = =
o 50 100 150
Time (second)
(d). Generalized orientation error
Fig. 6.3. 4-DOF tracking performance with PID control, with external disturbance
6.3.2. 4-DOF Results ofPID DOB Controller
Except for the DOB parameters listed before, the parameters of the PID controller
part are: k
pz
=8.0, k
Dz
=10.0, k/
z
=0.0; kp =2.0, kDtj! =10.0, k/rp =0.0; k
pB
=2.0,
kDB =10.0, k/
B
=0.0; kP'll =10.0, kD'II =10.0, k/'II =0.0. It should be noticed that in
this case all the integral gains are zero.
75
1. Test result without external disturbance
The test result without external disturbance is shown in Fig. 6.4.
Tracking of Z
0.5
o
o 150 50 100
lime (second)
jr"

_",x/,r
,,<
3.5
3
2.5
ffi 2
Q)
S 1.5
N
(a). Tracking performance of Z
(b). Tracking performance of [ e IjI ]
DOB observation of Z DOB observation of Roll, Pitch and Yaw
5,----------,-----,-------,
-5 '--- _______J
o 50 100 150
lime (second)
c-
o

c
.1
til 0 -------------------:--------------

Ql
1l
o
en
8
(c). DOB observation of Z
(d). DOB observation of [ e 1jI]
Absolute error in Z
0.5,--------,--------,-----------.
g 0.4 -------
50 100 150
lime (second)
o
0.3 ---------------- ------------- L __
0.2 -------------------i--- ------------------
___________ .. -l
, ,
, ,
.
Generalized error in Roll, Pitch and Yaw
0.4,----------y---------,------,
'0
g.
g
Ql

C
Ql
'1:
o
al
.!::! 0.1
i
<3
, ,
, ,
, ,
, ,
, ,
, ,
_l J . _
, ,
------ .. -------------------.-------------------
, ,
___ 1 J _
, ,
, ,

50 100 150
lime (second)
N
.5:
0.3
g
Ql
Ql
0.2
S
(5
'"
.0

(e). Absolute error of Z (t). Generalized orientation error


Fig, 6.4. 4-DOF tracking performance with PID DOB control, without external
disturbance
76
2. Test result with external disturbance
The disturbance occurs around the 60
th
second. The test result with external
disturbance is shown in Fig. 6.5.
Tracking of Z
0.5
o
o
3.5
3
2.5
i 2
Q)
.s 1.5
N
~
j/,/"
.//i-F
..",,4/
50 100
Time (second)
(a). Tracking performance of Z
DOB observation of Z
150
Tracking of Roll, Pitch and Yaw
(b). Tracking performance of [ () If]
DOB observation of Roll, Pitch and Yaw
-5 L-- ~ ~ _______'
o 50 100 150
Time (second)
(c). DOB observation of Z
Absolute error in Z
0.5,-------,------,---------,
g 0.4 nnn 'nnn n_nnn' nnn_
N
.S: 0.3 n n. 'n. __ __ .n_nn__ ' __ n_nn _
g
Ql
Ql 0.2 nn .nn n n _ ~ _ n n n _
:5
o '
~ 0: . c ~ ~ ~ ~ ~ ~ l m
o 50 100 150
Time (second)
(e). Absolute error of Z
(d). DOB observation of [ () If]
Generalized error in Roll, Pitch and Yaw
~ 0.4 ,---------.------,--------,
"0
~
~ 0.3 1 _
c:
o
~
]j 0.2 n.mnm. __
'C:
o
al
~ 0.1
i
Ql
<.9
(t). Generalized orientation error
Fig. 6.5. 4-DOF tracking performance with PID DOB control, with external disturbance
77
3. Test result with 1.5 times nominal model parameter change
The test result with 1.5 times nominal model parameter change is shown in Fig.
6.6.
Tracking of Z
0.5
o
o
3.5
3
2.5
2
Q3
.s 1.5
N
#,/
..Jh'/'
j .,(
"iA'
50 100
lime (second)
150
Tracking of Roll, Pitch and Yaw
0.2,----------,-------.------,
'0
0
(5 vV'
a:: _0.2L- .....i.. ...J
0.20 50 100 150
(a). Tracking performance of Z (b). Tracking performance of [ B If]
DOB observation of Z DOB observation of Roll, Pitch and Yaw
c-
o

C
0
0
2:
Q)
'"
.0
0
Cll
0
0
-5
0 50 100
lime (second)
(c). DOB observation of Z
150
f
i
}
o 50 100 150
lime (second)
(d). DOB observation of [ B If]
0.5,------,-------,--------,
I 0.4 ----" .......... ; __ m __ m .. ' __ ... m
oLJL......LU....lLlIL..I.L..C==L.C...lLLllL:WlL-Ll..l...-...ill.....lL..L.L..:........L..J
o 50 100 150
lime (second)
Generalized error in Roll, Pitch and Yaw
'0 0.4 ,---------,-------.-------,

0.3 m_m.. m ... i... __


! !
: :
53 0.2 ---------------,--,;---------- .... ----,;,- .... -...... -- .. ,
'C
o
al
.r::! 0.1 .. -- -- m , -- -- m; .. ----
, i
0
o 50 100 150
lime (second)
Absolute error in Z
0.1 '
N , ,
.!: 0.3 """""" __ __ ", __ ", __ ,,"";m__ ' ... __ ' __ ,, ...
g
Q)
Q) 0.2 ------------------':-------- .. ,.------------------,
'5
(5
1J

(e). Absolute error ofZ (t). Generalized orientation error


Fig. 6.6. 4-DOF tracking performance with PID DOB control, with 1.5 times nominal
model parameter change
78
4. Test result with 2.0 times nominal model parameter change
The test result with 2.0 times nominal model parameter change is shown in Fig.
6.7.
Tracking of Z

.,;,,,/"

l/('
A'i'
Tracking of Roll, Pitch and Yaw
150 100 50
.d.
"
.1,.... i.I".A,,'.. J, .,!"
ii,
\\i
."
0.2
"0
0
o
0:: -0.2
0.2
0
g
.c 0
.B
a: -0.2
J
o 50 100 150
lime (second)
(b). Tracking performance of [ (} If/]
150 50 100
lime (second)
(a). Tracking performance of Z
0.5
o
o
3.5
3
2.5
a3 2
Q3
.s 1.5
N
(c). DOB observation of Z

o 50 100 150
lime (second)
5
c-
o

c
.2
ro 0
2:
(l)
.2
o
co
8
DOB observation of Z DOB observation of Roll, Pitch and Yaw

E 2
0
5:0 19
0
150

i
o 50 100 150
lime (second)
(d). DOB observation of [ (} If/]
Absolute error in Z
0.5
:: 0.4 --- ---------------,--- ---------------"-------------------
N
.5 0.3 .u __
g : :
Q) : :
"* 0.2 ----------- ---,-------------------"-------------------
o
.2

Generalized error in Roll, Pitch and Yaw


0.4
0.3 ------------------i----------------,--------------

13 0.2 -------------------;---------------"------------------
'1:
o
al
.!::!

(l)
c
Q)
(j
150
(e). Absolute error of Z (t). Generalized orientation error
Fig. 6.7. 4-DOF tracking performance with PID DOB control, with 2.0 times nominal
model parameter change
79
6.3.3. 4-DOF Results ofAdaptive Controller
As stated earlier in 6.1.2, the system is decoupled into 4 subsystems: [x y], [z],
[ 0] and [If]. The controller parameters are: f =[1.0 1.0 1.0 5.0 1.0]; O'z =5.0,
0'1fI=3.0 Oz =[500.0 500.0 500.0 500.0 500.0]
08 =[200.0 200.0 200.0 200.0 200.0]
Olfl =[200.0 200.0 200.0 200.0 200.0] f1 =[0.02 0.02 0.02 0.02 0.02]
=[0.03 0.03 0.03 0.03 0.03]; k
1z
=0.05, k
I
=0.15, k
I8
=0.15, k
11fI
=0.1.
1. Test result without external disturbance
The test result without external disturbance is shown in Fig. 6.8.
Tracking of Z
0.5
o
o
/,,,-'>""
/Y'/"
/",,/'
150 50 100
Time (second)
3.5
3
2.5
2
Q)
.s 1.5
N
(a). Tracking performance of Z
(b). Tracking performance of [ 0 If]
I .I,,, .M! It I Jd. ,IL. ,n.lI,!. lll\,IAii
0.5
g 0.4
N
0.3
g
Ql
2 0.2
::J
o
(/J
0.1
o
o
Absolute error in Z
50 100
Time (second)
150
Generalized error in Roll, Pitch and Yaw
(e). Absolute error of Z (t). Generalized orientation error
Fig. 6.8. 4-DOF tracking performance with adaptive control, without external disturbance
80
2. Test result with external disturbance
The disturbance occurs between 60th and 70th second. The test result with
external disturbance is shown in Fig. 6.9.
Tracking of Z
0,5
o
o 50 100 150
Time (second)
(a). Tracking performance of Z
3.5
3
2.5
2
Q)
.s 1.5
N
/,/'


,.if''''
/,t-'
Tracking of Roll, Pitch and Yaw
__ , --j
I
J
o 50 100 150
Time (second)
(b). Tracking performance of [ () IjI ]
Generalized error in Roll, Pitch and Yaw Absolute error in Z
0.5 0.4 ,----------,------.r-----.-------,
"C
" g
:E: 0.4 -------------------i, -h-----------h---i,h----------------- 0 :
- 0.3 ----uu-_u_uuut_uu uu UU_.Uh h_h __
N c:
': 0.3 - _u u
i 0.2 ummmmmlmmimmmuummmumu 0.2 umu um lu Ilu mu1mmmmmm
J
50 100 150 0 50 100 150
Time (second) Time (second)
(e). Absolute error of Z (). Generalized orientation error
Fig. 6.9. 4-DOF tracking performance with adaptive control, with external disturbance
6.3.4. 4-DOF Results ofAdaptive DOB Controller
Except for the DOB parameters listed earlier in 6.1.2, the parameters of the
adaptive controller part are: f =[1.0 1.0 1.0 5.0 1.0]; O'z =2.0 , O'(} =4.0 ,
0' 'II =3.0 6
z
=[300.0 300.0 300.0 300.0 300.0]
6(} =[800.0 800.0 800.0 800.0 800.0]
6'11 =[200.0 200.0 200.0 200.0 200.0] Jl =[0.02 0.02 0.02 0.02 0.02]
r; =[0.03 0.03 0.03 0.03 0.03]; k/
z
=0.0 , k/ =0.0 , k/(} =0.0, k/'II =0.0 . It
should be noticed that in this case all the integral gains are zero.
81
1. Test result without external disturbance
The test result without external disturbance is shown in Fig. 6.10.
Tracking of Z
0.5
o
o
j,;f<v'-
'OJ"/
1'//
-.'
Tracking of Roll, Pitch and Yaw
150 50 100
lime (second)
3.5
3
2.5
*' 2
.s. 1.5
N
(a). Tracking performance of Z
(b). Tracking performance of [ elf]
DOB observation of Z

-5
o 50 100 150
lime (second)
DOB observation of Roll, Pitch and Yaw
(c). DOB observation of Z
(d). DOB observation of [ elf]
0.1 .--.------
0.2 ------------
Generalized error in Roll, Pitch and Yaw
oJ\Ji
o 50 100 150
lime (second)
0.4,---------.--------.--------,
""C

0.3 -
c:
o

C
Q)
.<::
o
al
.!:i
T
2!
Q)
(!J
50 100 150
lime (second)
Absolute error in Z
0.5,-------,-------,--------,
g 0.4
N
.S 0.3 L L _
g
Q)
Q) 0.2 -----------------
"5
"0
E 0.1 -
-<
(e). Absolute error of Z (t). Generalized orientation error
Fig. 6.10. 4-DOF tracking performance with adaptive DOB control, without external
disturbance
82
2. Test result with external disturbance
The external disturbance occurs around the 90th second. The test result with
external disturbance is shown in Fig. 6.11.
Tracking of Z
:.0'"..,'


3.5
3
2.5
ai' 2
W
.s 1.5
N
0.5
o
o 50 100
Time (second)
(a). Tracking performance of Z
150
Tracking of Roll, Pitch and Yaw
'PrJ -
i
w4.21.,.,.... J,,.._,._._... . .d .JO
! 3.: -- -- -- -- .. '" --
o 50 100 150
Time (second)
(b). Tracking performance of [ elf]
DOB observation of Z DOB observation of Roll, Pitch and Yaw
5
C
0

c
0
0

Q)
til
.0
0
co
0
0
-5
0 50 100 150
Time (second)
(c). DOB observation of Z
i
i
__
>- .
o 50 100 150
Time (second)
(d). DOB observation of [ elf]
0.5,--------,-------.------,
Generalized error in Roll, Pitch and Yaw
150
Absolute error in Z
, ,
, ,
, ,

50 100
Time (second)
:[ 0.4
N
.!: 0.3
g ; ;
Q) , ,
Q) 0.2
:5
(5
til
0.1
(e). Absolute error of Z (t). Generalized orientation error
Fig. 6.11. 4-DOF tracking performance with adaptive DOB control, with external
disturbance
83
3. Test result with 1.5 times nominal model parameter change
The test result with 1.5 times nominal model parameter change is shown in Fig.
6.12.
Tracking of Z Tracking of Roll, Pitch and Yaw
0.5
o
o
,
v T "'f
0.2,-------,------,--------,
"C
0
'0 "N'
0::: -0.2 '----- ----'
0.20 50 100 150
'S
g,
.c 0
.B
a:: -0.2
J
o 50 100 150
Time (second)
(b). Tracking performance of [ e lfI ]
150 50 100
Time (second)
(a). Tracking performance of Z
",,,,,!
,/
,,/1'
..d(
3.5
3
2.5
2
Q)
S 1.5
N
DOB observation of Roll, Pitch and Yaw
i
i
a::
il"=uu1
o 50 100 150
Time (second)
(d). DOB observation of [ e lfI ]
150 50 100
Time (second)
DOB observation of Z
-5
o
(c). DOB observation of Z
0.5,-------,--------.---------,
Generalized error in Roll, Pitch and Yaw
(t). Generalized orientation error
0.1
o
o 50 100 150
Time (second)
...
0.3 u _
c:
o
i 0.2 u.mmm",,,,i .... ,,, ...... ,,, .. ;.. ,,, .. u
'C:
o
al

i
c3
0.4 ,-------,------,--------,
"C
g,
150 50 100
Time (second)
(e). Absolute error ofZ
Absolute error in Z
I 0.4 m.
Fig. 6.12. 4-DOF tracking performance with adaptive DOB control, with 1.5 times
nominal model parameter change
84
4. Test result with 2.0 times nominal model parameter change
The test result with 2.0 times nominal model parameter change is shown in Fig.
6.13.
o
o

/r
/.ri'
-<(
h.lf' .i ...
,
'vv
150 100
Tracking of Roll, Pitch and Yaw
g
.c 0
.8
a:: -0.2
420 50 100 150
J
o 50 100 150
Time (second)
(b). Tracking performance of [ () If]
150
Tracking of Z
50 100
Time (second)
(a). Tracking performance of Z
2.5
3.5
3
0.5
2
(j)
S 1.5
N
DOB observation of Z DOB observation of Roll, Pitch and Yaw

, 0 . VIJUV
'"
.c
u
:t= 2
-20
1
5:
1
0 100, .. .. ".""..1
0
,-'-,-.C"., u" , J
o 50 100 150
Time (second)
(d). DOB observation of [ () If]
Generalized error in Roll, Pitch and Yaw

'0
g
0.3 mum mu.L. __

ro : :
0.2 u_u
C ' ,
o I I
al
J
o 50 100
Time (second)
(). Generalized orientation error
Fig. 6.13. 4-DOF tracking performance with adaptive DOB control, with 2.0 times
nominal model parameter change
5
'2
0

Q)

c::
0
0
2:
Q)
rn
.0
0
OJ
0
0
-5
0 50 100 150
Time (second)
(C). DOB observation of Z
Absolute error in Z
0.5
:[ 0.4
N
.S
0.3
g
Q)
Q)
0.2
'5
0
rn
.0
0.1
<I;
I
0
0 50 100 150
Time (second)
(e). Absolute error ofZ
85
6.4. Results of 6-DOF Tracking Test
Similar to what are defined before, a new performance index named generalized
position error is defined to show the position tracking performance efficiently. It is shown
in eq. 6.3.
(6.3)
where ex' e
y
and e
z
are tracking errors of [x y z] respectively. Together with the
generalized orientation error defined in eq. 6.2, these two indices illustrate the
comprehensive 6-DOF tracking performance.
6.4.1. 6-DOF Results ofPID Controller
The 4-DOF part control parameters are the same as those used in the 4-DOF PID
controller test. Here only the parameters for [x y] control are listed: kPx =4.0 ,
kDx =5.0, kIx =0.0; kPy =4.0, kDy =5.0, kly =0.0 .
1. Test result without external disturbance
The test result of PID control without external disturbance is shown in Fig. 6.14.
,:,
.
Tracking of X, Y and Z
---
T'iT
(a). Tracking performance of [x y z]
86
Tracking of Roll, Pitch and Yaw
0.2
'C
0
"5
a:: -0.2
f ,,'r, 200 'r ..r"]
10 50 100 150 200 250 300 350
J:: +,.
o 50 100 150 200 250 300 350
Time (second)
(b). Tracking performance of [ e ljI ]
Generalized error in X, Y and Z Generalized error in Roll, Pitch and Yaw
350 300 150 200 250
lime (second)
100 50 350
. . ___ ! , L _
. .
. , ,
, , ,
-----_.1._-------,--------1-------- , , ,
100 150 200 250 300
lime (second)
50
o __ __L......_'__'_'
o
I
g 0.8 --
Q)
:2 0.6 'n
'iii
o
0.4 .
Q)

Q) 0.2 --
c
Q)
<.9
(c). Generalized position error (d). Generalized orientation error
Fig. 6.14. 6-DOF tracking performance with PID control, without external disturbance
2. Test result with external disturbance
The disturbance occurs at about the 80
th
second. The test result of PID controller
with external is shown in Fig. 6.15.
(b). Tracking performance of [ e If/ ]
300 350
300 350
300 350
250
250
200 150
150 200
lime (second)
100
100
50
50
(,I., .,j,
r
"."
"
"i'
..
i
i
, 20
1

N 0 _._.<' ' : : : : J
o 50 100 150 200 250 300 350
lime (second)
(a). Tracking performance of [x y z]
Generalized error in X, Y and Z Generalized error in Roll, Pitch and Yaw
------'-------_.1._-----
, , ,
__ 1- , .1._. _
, , ,
50 100 150 200 250 300 350
lime (second)
0.2,--,-----,---,-----,---,.---,--,
.. --- --,-------
L .. _ __,- _
50 100 150 200 250 300 350
lime (second)
(c). Generalized position error (d). Generalized orientation error
Fig. 6.15. 6-DOF tracking performance with PID control, without external disturbance
87
6.4.2. 6-DOF Results ofPID DOB Controller
The DaB part parameters are listed in 6.1.2, and the 4-DOF part control
parameters of the PID controller are the same as the used in 4-DOF test. Therefore here
only the control parameters used in [x y] control are listed here: k Px =2.5, kDx =8.0,
k
jX
= 0.0; k
py
= 2.5, k
Dy
= 8.0, k
jy
= 0.0.
1. Test result without external disturbance
The test result of the PID DaB control without external disturbance is shown in
Fig. 6.16.
Tracking of Roll, Pitch and Yaw
d .1.
I I
-0.2. J : i : : JJ

10 50 100 150 200 250 300 350
'" '6
g 0.8

>- 0.6
o 50 100 150 200 250 300 350
Time (second)
Tracking of X, Y and Z
_".".,if'

(a). Tracking performance of [x y z] (b). Tracking performance of [ e If/]
DOB Observation of X, Y and Z DOB Observation of Roll, Pitch and Yaw

I ...

o 50 100 150 200 250 300 350
Time (second)
I ,!: ......'i ........i........:! ......... , ,I.m...!..j
_ .. ......,.......
(5 ""'"
a:: -2 : : : : : : :
i
i
o 50 100 150 200 250 300 350
Time (second)
(c). DaB observation in [x y z] (d). DaB observation in [ e If/]
88
I
g
0.8
Q)
t=
,g 0.6
'iii
0
0.
'0 0.4
Q)
.'::!

Q)
t=
Q)
(9
Generalized error in X, Y and Z
50 100 150 200 250 300 350
Time (second)
(e). Generalized position error
Generalized error in Roll, Pitch and Yaw
0.2,------.--,------.----,----,----,----,--,
'0
g.
0.15 f
.
ro
'E 0.1
Q)
'g
-g
.'::!

(13 0
o 50 100 150 200 250 300 350
Time (second)
(t). Generalized orientation error
Fig. 6.16. 6-DOF tracking performance with PID DOB control, without external
disturbance
2. Test result with external disturbance
The disturbance occurs around the 60
th
second. The test result of PID DOB
controller with external disturbance is shown in Fig. 6.17.
Tracking of X, Y and Z Tracking of Roll, Pitch and Yaw

I :
- " .. I' 'Y' , , , I
>- 0 : : : : : : :
!
o 50 100 150 200 250 300 350
Time (second)
(a). Tracking performance of [x Y z]
DOB Observation of X, Y and Z

J
'2 50 50 100 150 200 250 300 350
o
1 0 _u
::.. :
N -5
o 50 100 150 200 250 300 350
Time (second)
(c). DOB observation in [x y z]
89
'2 0.2,------.---.-----.----,----,.---,----,--,
ro
0 .
(b). Tracking performance of [ e If/]
DOB Observation of Roll, Pitch and Yaw
;2:_E. ...----;:muujmumi;i
_ .. ..v.y..., ..... .. .........v----- : ..........,..,....,.....y;._
&-2 : : : : : : :
i

o 50 100 150 200 250 300 350
Time (second)
(d). DOB observation in [ e If/]
g
g
0.8
Ql
c
,g 0.6
'(ij
0
Cl.
"0 0.4
Ql

T
Ql
C
Ql
<.9
50
Generalized error in X, Y and Z
100 150 200 250
Time (second)
300 350
Generalized error in Roll, Pitch and Yaw
___ ! , L J _
l , I ,
" ,
---_.!-------
100 150 200 250 300 350
Time (second)
(e). Generalized position error (t). Generalized orientation error
Fig. 6.17. 6-DOF tracking performance with PID DOB control, with external disturbance
3. Test result with nominal model parameter change of 1.5 times
The test result of PID DOB control with the nominal model parameter change of
1.5 times is shown in Fig. 6.18.
Tracking of X, Y and Z

.
'1:"4
2
f 2
x 0
J
I
o 50 100 150 200 250 300 350
Time (second)
(a). Tracking performance of [x Y z]
DOB Observation of X. Y and Z

I
c 50 . 50 100 150 200 250 300 35,0

o 50 100 150 200 250 300 350
Time (second)
(c). DOB observation in [x y z]
90
Tracking of Roll, Pitch and Yaw
(5
0.20 50 100 150 200 250 300 350
0 I>1' _,i - Wd'J
l
", .. 'i.'I,>, I': I>' .. ' """H#'=' '1:.'. _ ','\ "'"1', fJ q", 'i ( ""':" * .''1'rfYN",--:OV,
;g -0.2 : : : : : : :
10 50 100 150 200 250 300 350
ctl
'C
g 0.8 f - - --- --{----- - --I--------!- --- ----I--------c--- ---- ;--- -----H
0.6l!:ilvVi'!&'!
>- 0 50 100 150 200 250 300 350
Time (second)
(b). Tracking performance of [ e ljI ]
DOB Observation of Roll, Pitch and Yaw
i

i
o 50 100 150 200 250 300 350
Time (second)
(d). DOB observation in [ e ljI ]
Generalized error in X, Y and Z Generalized error in Roll, Pitch and Yaw
I , , ,
I I J i
___ l ' L .J _
J , , ,
, , ,
, , ,
_ ..... L J _
, , ,
50 100 150 200 250 300 350
lime (second)
(t). Generalized orientation error
350 300 100 50 150 200 250
lime (second)
(e). Generalized position error
_______ l , __ L J _
, I , ,
, "
, "

_ _LJ
o
0.6 noon.; ...
I , , I ,
g0.8 nn ; n :n ..
Q)
c:
g
'iii
o
0-
"C
Q)
.t:!

Q)
c:
Q)
(9
Fig. 6.18. 6-DOF tracking performance with PID DOB control, with 1.5 times nominal
model parameter change
4. Test result with nominal model parameter change of2.0 times
The test result of PID DOB control with the nominal model parameter change of
2.0 times is shown in Fig. 6.19.
Tracking of X, Y and Z
"''''0
</1'
Tracking of Roll, Pitch and Yaw
350 300 150 200 250
lime (second)
100 50
d.I;,
: ,ii,
III, Jt :L, ,
,,',
'1":"'1'
""'7
"
; :,Ui\,1
(b). Tracking performance of [ e 'If]
'2 0.2
CIl
0
-;:-4
Q)
Q) 2
E-
x 0
(1
m
'" .'O'iO
m'
LJ_'r.'r_!l
>- O"h..", : : :J
-;:- 0
1
5
i
O __ OJ
!: ....."--- .....r
o 50 100 150 200 250 300 350
lime (second)
(a). Tracking performance of [x y z]
DOB Observation of X, Y and Z DOB Observation of Roll, Pitch and Yaw



o 50 100 150 200 250 300 350
lime (second)
(d). DOB observation in [ e 'If ] z] y
'5n
T
, , ,
0
6 :, :':
X 5 ' " ,
I
'50 50 100 150 200 250 300 350
o

6
N
o 50 100 150 200 250 300 350
lime (second)
(C). DOB observation in [x
91
Generalized error in X. Y and Z
g
o 0.8 H" " " C " ..
t::
Q)
. 0.6 ..... . .; ..........
i::
o 50 100 150 200 250 300 350
lime (second)
(e). Generalized position error
Generalized error in Roll, Pitch and Yaw
0.2,------,---,---,...,--...----,----,---,-,
"0

0.15 f .. .. .. : ..,IIIH .. ..I+: .. .. c .. .... , .......H


C
o

Q)
'C
o

0.05

2!

50 100 150 200 250 300 350


lime (second)
(t). Generalized orientation error
Fig. 6.19. 6-DOF tracking performance with PID DOB control, with 2.0 times nominal
model parameter change
6.4.3. 6-DOF Results ofAdaptive Controller
The 4-DOF part parameters are the same as those used in the 4-DOF adaptive
controller test. Here only the parameters for [x y] control are listed: crxy =4.0 ,
b
xy
=[600 600 600 600 600],k
IX
=0.01,k
ly
=0.01.
1. Test result without external disturbance
The test result of adaptive control without external is shown in Fig. 6.20.
Tracking of X. Y and Z
(a). Tracking performance of [x y z]
92
(b). Tracking performance of [ift () If/]
1
1
,111,1,1,
lhi I I


",,}I
lIIiI,
.lUi iUiJI"lli\

II
IIi' II

II 'jl'l\
I
g 0_8
Q)
C
:2 06
'(ij
o
a.
"C OA
Q)

0_2
Q)
C)
o
o
Generalized error in X, Y and Z
50 100 150 200 250 300
Time (second)
(c). Generalized position error
Generalized error in Roll, Pitch and Yaw
0.2 ,--...,-----,-----,-------,---r----,-------,
"C

g
Q) 0.15 f u -__:u _u - :u_ u :_u UU __:u u_ u __:_ u._ u_, -- u -i
C
o

'E 0 1 f mu :u _u __ u:u_ -- --- -:-- -- --- u:u u __ u_:_ u __ u_, u. -- -i


Q)
'C
o
"C
0.05 f - u_ -- --:-- --- - :__ u __ u ii-- - __ ---:-- __ -----:-- -- u -. u .. u i

Q)
c

50 100 150 200 250 300


Time (second)
(d). Generalized orientation error
Fig. 6.20. 6-DOF tracking performance with adaptive control, without external
disturbance
2. Test result with external disturbance
The external disturbance occurs at about the 50
th
second. The test result of
adaptive control with external disturbance is shown in Fig. 6.21.
Tracking of X, Y and Z
,.' ..


-;:-4
Q)
Q) 2
E-
x 0
J:h
0
1
5'i
O
1i .1
L
O 1
! :.. .. > .. J
o 50 100 150 200 250 300 350
Time (second)
(a). Tracking performance of [x y z]
Generalized error in X, Y and Z
I
g 0.8
Q)
c
o


a.
-g

Q)
c
Q)
C)
50 100 150 200 250 300 350
Time (second)
(C). Generalized position error
Tracking of Roll, Pitch and Yaw
'2 0.2,---r----...,---.------,-------.----,------"
ro
'6 :(,
0 "v
-0.2
! 2t' T.
10 50 100 150 200 250 300 350
i +'. t',+
>- 0 50 100 150 200 250 300 350
Time (second)
(b). Tracking performance of [ elf!]
Generalized error in Roll, Pitch and Yaw
'0
0.2

g
0.15
Q)
c:
0
0.1
(J)
'C
0
"C
Q)
0.05

50 100 150 200 250 300 350


Time (second)
(d). Generalized orientation error
Fig. 6.21. 6-DOF tracking performance with adaptive control, with external disturbance
93
6.4.4. 6-DOF Results ofAdaptive DOB Controller
The DOB part parameters are listed in 6.1.2, and the 4-DOF part parameters of
the adaptive controller are the same as the used in 4-DOF test. Therefore here only the
control parameters used III [x y] control are listed here: O"xy =2.0 ,
8
xy
= [1000 1000 1000 1000 1000], k/
x
= 0.0, k/
y
= 0.0.
1. Test result without external disturbance
The test result of adaptive DOB control without external disturbance is shown in
Fig. 6.22.
2
n ,I :,1
2
Tracking of X, Y and Z
,/c
(a). Tracking performance of [x y z]
DOB Observation of X, Y and Z
(c). DOB observation in [x y z]
94
Tracking of Roll, Pitch and Yaw
&. -0.
lE 0.2r-----=r s"---_1'T

.....

_1'T
S
.....
O


J::
,g
10r-----=r
SO
"--_1'-;'0"'-0_1,-;,S",-0
l
'6
g, 0. 8 .r'i""";,-1",,<,,,[
>- 0.6 ...........
o SO 100 1S0 200 2S0 300 3S0
Time (second)
(b). Tracking performance of [ e IjI ]
DOB Observation of Roll, Pitch and Yaw
(d). DOB observation in [ e 1jI]
I
g
08
Q)
c
0
0.6
:E
tJ)
0
0-
'lJ 04
Q)
.to!

Q)
c
Q)
(9
Generalized error in X, Y and Z
50 100 150 200 250 300 350
lime (second)
(e). Generalized position error
Generalized error in Roll, Pitch and Yaw
0.2 r----,--,----,-----,---,-----,---,
g
...
0.15 f .... ' ...... ;.. .... , .... ,' ..;........."",''''''''''''''
c
o

'E 0.1 f .. ..;.... :....... ; ......:......... , ...... ;.. ..


Q)
'g
'lJ
Q)
.to!

Q)
c
<3
50 100 150 200 250 300 350
lime (second)
(t). Generalized orientation error
Fig. 6.22. 6-DOF tracking performance with adaptive DOB control, without external
disturbance
2. Test result with external disturbance
The external disturbance occurs at about the 50
th
second. The test result of the
adaptive control with external disturbance is shown in Fig. 6.23.
Tracking of X, Y and Z

".r
evv
.
Tracking of Roll, Pitch and Yaw
,
(b). Tracking performance of [ elf]
.c
,g -0.2
c.,..
1
0 50 100 150 200 250 300 350
c
co
'0
0.8
"H'
;:
)': 0.6
''I
0 50 100 150 200 250 300 350
lime (second)
C 0.2
co
'0
g. 0
&. -0.2
ffi O. 2
0
'C'4
Q)
a:; 2
S
>< 0
J
!
o 50 100 150 200 250 300 350
lime (second)
(a). Tracking performance of [x y z]
DOB Observation of X, Y and Z DOB Observation of Roll, Pitch and Yaw
0 50 1)0 150 200 250 300 350
""
i
;
i
i
i
o 50 100 150 200 250 300 350
lime (second)
(d). DOB observation in [ elf]
95
Generalized error in X, Y and Z
50 100 150 200 250 300 350
Time (second)
(f). Generalized orientation error
Generalized error in Roll, Pitch and Yaw
0.2
"0

0.15 fU .. __ .. _:m,, .. _uu'm, ",-H


C
.2
co
C 0.1 f-umillu_ ... .. .. -,-!If
Q)
'C
o
"0
0.05fHlit,jlll,,-H II:-,I-, .. -t

Q)
c
<3
"li _,
.I I"i "I"
I
11/11

i,

If' 'I "W', ,
o
o 50 100 150 200 250 300 350
Time (second)
(e). Generalized position error
I
g 0.8
Q)
C
0.6
'iii
o
Q.
"0 0.4
Q)

Q) 0.2
C
Q)
(9
Fig. 6.23. 6-DOF tracking performance with adaptive DOB control, without external
disturbance
3. Test result with nominal model parameter change of 1.5 times
The test result of the adaptive DOB control with the nominal model parameter
change of 1.5 times is shown in Fig. 6.24.
Tracking of X, Y and Z Tracking of Roll, Pitch and Yaw
,i
d
,
"I
0.2
'C
0
"5 -0.2
I 0.2L,
i T1",1, ("", 't' III, .'ti'l I'" ,
10 50 100 150 200 250 300 350
C1l
'C
0.8 f,"u,uuj.uu. u:u .. ----;.u.i.u.. .. ui ... u-uH

;: 0.6
0
50 100 150 200 250 300 350
Time (second)
(b). Tracking performance of [ e If/ ]
!
J
o 50 100 150 200 250 300 350
I " --"-'-1
! : J
o 50 100 150 200 250 300 350
Time (second)
(a). Tracking performance of [x Y z]

o 50 100 150 200 250 300 350
Time (second)
(C). DOB observation in [x y z]
DOB Observation of Roll, Pitch and Yaw

r2o!..
Q. -

o 50 100 150 200 250 300 350
Time (second)
(d). DOB observation in [ e If/ ]
96
Generalized error in X, Y and Z Generalized error in Roll, Pitch and Yaw
I
g 0.8
cJ)
C
o 0.6f
uu
...: .. -.----:.. --
u
-.: ..... - ..:..... ---:... - .. ----:---- ..
u
H
;.;:

0.4
cJ)
N

0.2
cJ)
(9
50 100 150 200 250 300 350
1ime (second)
(e). Generalized position error
0.2
"0
g
0.15 f---- .. ;--- ....:--------;-------.:---. ----,-------c- .. .. --H
C
o

C 0.1 h'---"';---' _.. _: u __ ; _"_," .. __ "--,"l


cJ)
'C
o
"0
0.05
T!!
(1)
c
(B
50 100 150 200 250 300 350
1ime (second)
(t). Generalized orientation error
Fig. 6.24. 6-DOF tracking perfonnance with adaptive DOB control, with 1.5 times
nominal model parameter change
4. Test result with nominal model parameter change of2.0 times
The test result of the adaptive DOB control with the nominal model parameter
change of2.0 times is shown in Fig. 25.
Tracking of X, Y and Z
l-.,-olifi
Tracking of Roll, Pitch and Yaw
.:.'
'r "
"2 0.2
ro
'6
g 0
&. -0.2

j 0.2
1
,,,J,i'i: A, ",,:, ":;,1",.,, ,.l1.'L",j'.i"""'''''!:''kl"jj
0",1,,'1 .. .it""',!" ,i jll"'}'" rtl'i,t"., "1::1,11' 'f 1'!"\"!I\YrT.'
='='
Dc 10 50 100 150 200 250 300 350
ro
'6
g 0.8 f -------.: ---- ----1--- -- ---; ----- -- ":---, -::- - --f.-,," --- - ..-- .. - --H
0.6
o 50 100 150 200 250 300 350
1ime (second)
(b). Tracking performance of [ e If/ ]
c
4
(1)
Q) 2
E-
x 0
J
!
o 50 100 150 200 250 300 350
1ime (second)
(a). Tracking performance of [x y z]
DOB Observation of X, Y and Z DOB Observation of Roll, Pitch and Yaw
c 51 .] - ,-- l' ,- : : - J
! I

0 50 100 150 200 250 300 350

o 50 100 150 200 250 300 350
1ime (second)
(c). DOB observation in [x y z]


i
o 50 100 150 200 250 300 350
1ime (second)
(d). DOB observation in [ e If/]
97
Generalized error in X, Y and Z
o
o 50 100 150 200 250 300 350
Time (second)
(e). Generalized position error
Generalized error in Roll, Pitch and Yaw
0.2 r----,--,---,---.---.--,--,-,
'0
g
0.15 f --- -- - 7-- -- --- -:-- - -- --- 7' -- -- -- -:- --- -- --, -- ---- - C'" -- .mH

C 0.1 f -- -I- ---7-- - ---- -:-- -- __ u7---- --- -:-- - .. ---, ,- -- .. - C" -- ._u-,-I
Q)
'g
'0
0.05
T
Q)
C
c3
50 100 150 200 250 300 350
Time (second)
(t). Generalized orientation error
Fig. 6.25. 6-DOF tracking performance with adaptive DOB control, with 2.0 times
nominal model parameter change
6.5. Result Analysis and Conclusion
In this chapter, two groups of comparison tests have been done: the 4-DOF group
and the 6-DOF group. In the 4-DOF group, the cases without external disturbance, with
external disturbance in [z B 1fI], the nominal model parameter change of 1.5 and
2.0 are tested. While in the 6-DOF group, the cases without external disturbance, with
external disturbance in [x y], the nominal model parameter change of 1.5 and 2.0 are
tested. To verify the accordance between the analysis from the simulations in chapter 5
and that from the tests, we use the same comparison order with that in 5.3.
First, the test result comparison between the PID controller and PID DOB
controller, Fig. 6.2 and Fig. 6.4, Fig. 6.3 and Fig. 6.5 for the 4-DOF cases; Fig. 6.14 and
Fig. 6.16, Fig. 15 and Fig. 17. We can see that in the case ofPID DOB controller, when
there is external disturbance, DOB observes the external disturbance and cancels it
through feedback, and therefore keeps its tracking performance. While in the case of PID
98
controller, the tracking performance degrades with external disturbance, even though it
has a good tracking in the case without external disturbance. Moreover, from Fig. 6.4 (c)
and (d), Fig. 6.16 (c) and (d)we can see that DOB observes the constant upward floating
force in z direction, and the imbalance torque in [ e] directions due to the non-
coincidence of the buoyancy center and the gravity center, and therefore no integral gain
is required in these 3 directions. While in the PID case, there are nonzero integral gains to
cancel out the constant forces.
Second, the test result companson between the adaptive controller and the
adaptive DOB controller, Fig. 6.8 and Fig. 6.10, Fig. 6.9 and Fig. 6.11 for the 4-DOF
cases; Fig. 6.20 and Fig. 6.22, Fig. 6.21 and Fig. 6.23. We can see that when there is
external disturbance, the tracking performance of the adaptive DOB controller keeps
about the same, while that of the adaptive controller degrades notably. In the case of the
adaptive DOB controller, because DOB observes the external disturbance correctly, it
compensates its observation into the system control input and therefore its performance
persists. While in the case of the adaptive controller, because its adapting speed is slower
than the change speed of the external disturbance, its tracking performance deteriorates.
Moreover, Fig. 6.10 (c) and (d), Fig. 6.22 (c) and (d) shows that DOB observes the
constant imbalance forces correctly and compensates them, therefore no integral gain is
required.
Third, the test result comparison between the PID DOB controller with and
without nominal model change, Fig. 6.4 and Fig. 6.6,6.7; Fig. 6.16 and Fig. 6.18, 6.19.
Obvious tracking error increase can be observed with the nominal model change
increases. This is because the PID gains are tuned with the initial nominal model. When
99
the nominal model changes, the dynamics of the whole system changes and therefore the
tracking performance degrades.
Fourth, the test result comparison between the adaptive DaB controllers with and
without nominal model change, Fig. 6.10 and Fig. 6.12, 6.13; Fig. 6.22 and Fig. 6.24,
6.25. Unlike the PID DaB case, the tracking performance almost persists the same with
the increase of the nominal model change. This is because unlike the PID controller,
when the adaptive controller works as the outer-loop controller, it tunes its gains
automatically to accommodate the dynamics change due to the change of the nominal
model change, till the performance requirements defined by the parameter Ii are met.
This property is very important for the underwater vehicle, where an accurate dynamics
model is difficult to derive.
6.6. Summery
This chapter introduces the experimental verification of the proposed adaptive
DaB controller's performance on ODIN. The analysis on these tests shows that:
1. DaB can effectively observe the external disturbance and compensate it for the
case of the underwater vehicle. This makes the proposed adaptive DaB controller
superior to the adaptive controllers in robustness to external disturbance.
2. Because the proposed adaptive DaB controller can tune its outer-loop feedback
gains to accommodate the variation of the nominal model, it is superior to the PID
DaB controller in the case of nominal model change. This is of great importance
for the underwater vehicle system, where big gesture changes occur.
100
CHAPTER 7
CONCLUSION
7.1. Contributions
The main contributions of this research are:
Introduction of a DOB based adaptive controller.
Based on a detailed survey of the existing AUV controller and the description of
the nonlinear time-variant AUV dynamics, a novel controller combining DOB with a
non-regressor based adaptive controller is introduced. Lyapunov method is used to show
its stability and zero-tracking-error convergence. The inner-loop, the DOB compensator,
is used to cancel the effect of the external disturbance, and the outer-loop adaptive
controller is used to achieve desired performance. This is the first controller that
considers the time-variance, nonlinearity, difficulty in modeling hydrodynamics and the
external disturbance in AUV control.
Implementation and verification of the proposed controller through
simulations and experiments
Simulations are first done using the dynamics model of ODIN. Four controllers,
specifically poorly-tuned PID controller, fine-tuned PID controller, PID DOB controller
and pure adaptive controller, are used for comparison to show the advantages of the
proposed adaptive DOB controller. It is shown that the adaptive controller is not only
robust to the external disturbance, but also robust to the nominal model variation used in
constructing the DOB. Similarly, three controllers, PID controller, PID DOB controller
101
and pure adaptive controller are used for comparison in the experiments. Experimental
results confirmed the conclusion drawn from the simulations. All these show that the
proposed adaptive DaB controller is not only robust to external disturbance, but also
overcomes the difficulty of hydrodynamic modeling.
7.2. Recommendations
It is recommended that the following work be carried out:
1. Have more tests with the disturbance exerted in a more precise and controlled
way.
2. Further test of this adaptive DaB controller on an asymmetric vehicle for real
such as in the ocean.
3. Survey other recently developed robust compensators such as nonlinear DaB
and ARC, and check their potential application for underwater vehicle control.
102
APPENDIX I
HARDWARE CONFIGURATION OF ODIN-III
1.1. ODIN-III Hardware Configuration
ODIN-III renovation work in both hardware and software was mainly down by
Dr. Hyun Taek Choi[109].
ODIN-III has almost the same hardware configuration with ODIN-II except the
on-board computer system: a PCI04+ system replaces the old Motorola CPU on VME
bus system. It is a closed-framed sphere with 8 thrusters and a I-DOF manipulator. Its
redundant navigation sensors include 8 sonar sensors, 3 for front obstacle detection and
other 5 for left, right, up, down and back respectively; 1 Inertial Measurement Unit
(IMU) for angular output measurement; 1 pressure sensor for depth measurement.
Additionally, it has 2 temperature sensors, 2 battery monitoring sensors and 1 leakage
sensor for condition monitoring. Fig. 1.1 shows the internal assembly schematic of
ODIN-III.
Front
Layer 1
Layer S
Layer 6
".
View 1 \,
View 2 \ \ \ \ \ ~
- ~ ~ ~ _ \ - --
i View 3 . 0
! View 4
View 6
ViewS
View?
a. Multi-layer structure of ODIN-III
103
Front
I
i
i
i
I
I
i IMU
PC104 module : t-J
m_ ~ ] I E } -
Fan I
o I
b. View 1
Front
CIB socket
CI switch
TIB socket
TI switch
Front
Battery [Battery] E:j (Battery] [Battery]
----------------- ---T--- --------------- --
Battery [Battery] : [Battery] [Battery]
Balancing motor
c. View 2
Front
[Battery]
I
i
i
----i---
i
i
d. View 3
[Battery]
104
I
i
Motor i Motor
amplifier i amplifier
I
i
I
e. View 4
Front
f. View 5
Front
Front
i
()
f---
BiEj
I
g. View 6
h. View 7
Fig. 1.1. Internal hardware configuration of ODIN-III
1.2. ODIN-III Component List
Table I.1. ODIN-III component list
Component Specification Manufacturer/Model No.
Pressure vessel Near-sphere shape, material: Al RSI, Ltd.
6061-T6, anodized - gold color
Main computer PC104+ (Pentium compatible Lippert Automationstechnik
CPU 300MHz, 128 MB RAM) GmbH, Cool RoadRunner II
105
AID board 16 12-bit analog input channels Diamond Systems
with autocalibration; 100KHz Corporation,
max sampling rate Diamond-MM-AT
D/A board 16 12-bit analog output channels Diamond Systems
on a single PC/104 module Corporation,
Ruby-MM-1612
Real-time Operating Real-Time Extension for Venturcom
System Windows, runtime 5.1.1
Power supply Lead Gel 24 batteries (4 for Power Sonic
computer, 20 for thrusters), 12 PS-1250F2
volt 5.0 amp. hrs.
12V DC/DC 24V input/12V output operating KEPCO, INC.
converter at 300KHz ERD60W 5-12-24
5V DC/DC 24V input/5V output operating KEPCO, INC.
converter at 300KHz ERD30W 5-6-24
Thruster (8) Cylindrical shaped with hood, ASL, UH (In-house)
material: A16061-T6, epoxy-
based paint coated, bi-directiona1
propeller: 0.128m dia - 3 blade
propeller, 26.689N maximum
thrust force (6lbf), torque-
controL
Thruster motor (8) Brussless motor Reliance, Model
#1843622004 I Stock No.
RDM-102
Thruster Servo Servo-Amplifier to drive Advanced Motion Control,
Driver (8) brushless DC motor Series B15A, Model B12A6
Motors for x, y, z Horizontal x- & y-axis Synchronous Electronics
Weight Motion & movement to alter center of
Driver mass - moves 2 batteries each by
0.026m, vertical z-axis
movement to alter center of
mass- moves 4 batteries by
O.077m
Arm Motor & 1 degree-of-freedom, 90 deg. RSI, Ltd
Driver motion
Sonar ranger (8) 8 channel range data (0.1-14.4) Kaiyo-Denshi
Inertial 3-axis angle and heading rates, Watson Industries Inc., IMU-
measurement unit 3-axis linear accelerations, 50Hz E604
(IMU) output rate, digital (RS-232) or
analog output
Pressure Sensor Output: -1.5 to 8.2V Keller PSI
106
APPENDIX II
SOFTWARE CONFIGURATION OF ODIN-III
11.1. ODIN-III Control Architecture
The control architecture used in ODIN-III is a hybrid hierarchical-subsumption
architecture. It is shown in Fig. ILl, which is a 5-layer structure.
1. Supervision layer. This layer has the authority of managing the whole
vehicle under pre-programmed rules and sensor feedback. The output of
this layer has the highest priority. Mainly this layer diagnoses the vehicle
functions and checks the vehicle safety.
2. Decision layer. This layer is for task programming. Based on its specific
application, the vehicle operator programs navigation algorithm,
intervention methodology or other decision means. It is implemented as a
subsumption structure. However, any function from this layer can be
vetoed by the Supervision layer.
3. Action layer. This layer is where most of the code lies. It handles the low-
level control, communication, sensor data processing and interpretation,
real-time data monitoring, trajectory planning and so on. The functions of
this layer hardly change with respect to different tasks.
4. Driver layer. This layer consists of the interface modules of various
sensors, AID and DIA boards, and communication devices. Each module
is implemented with static libraries (UBs) and is used for reconfiguring
107
and resetting of the interface of the correspondent device. Generally this
layer is built up with the driver programs provided by the original
manufacturers.
5. Physical layer. This layer includes the physical devices such as sensors,
thrusters, servo amplifiers, communication devices and so on.
Supervision
Layer
Decision
Layer
Action
Layer
Driver
Layer
Physical
Layer
Transmit
Data
Fig. ILl. Control architecture of ODIN-III
Command
Handler
11.2. ODIN-III Software Structure
There are mainly three modules in the ODIN-III software: the ODIN module
running on PC104+, the station module running on the station computer and the control
Dynamic Link Library (DLL) module. Their relationship is shown in Fig. II.2.
108
TCP/IP communication:
Command of ROV mode
Monitoring of AUV mode
Fig. II.2. ODIN-III software structure
These modules can be described as:
1. ODIN software module. This module has all the necessary circumstance
settings of running ODIN-III as an AUV: the sensor interferences
software, the control output software, the self-balancing software, the
communication software and so on. Combing with the DLL part, this
module makes ODIN-III an independent AUV.
2. Control DLL module. This module is the implementation of the 2nd layer,
the decision layer. The task, the control algorithm, the navigation
algorithm and the signal-processing algorithm are all realized in this
module. With different tasks, only this part is necessary to be modified.
This is the main advantage of the new ODIN-III software structure: any
algorithm can be implemented using the control DLL framework. For the
109
low lever parts and the monitoring part are always ready for plug-and-
play.
3. Station module. This module contains the ODIN-III test code (in the
hardware testing stage), the data monitoring and logging code (in the AUV
mode) and the remote control code (in the ROV mode). This part has a
very user-friendly graphic user interface (OUI) by which the ODIN
operator can carry out the desired task.
110
APPENDIX III
AN EXAMPLE OF DLL REALIZATION
The realization of the adaptive DOB controller is used as an example to show how
to write the code of a control algorithm and merge with the given DLL frame. There are
three parts: the adaptive control part; the DOB part and the merging part.
111.1. Adaptive Control Part Code
1. Class declaration:
class CLLControlInternal
{
public:
CLLControlInternalO;
virtual
UINT m_uintControIMode;
long m_ISamplingInterval ;
long m_lTestSamplingInterval ;
int m_iMultirateCounter;
II DLL Information
CString m_sControllerName ;
CString m_sControllerDesigner ;
CString m_sControllerVersion ;
CString m_sControllerDate ;
double m_adThruster[8] ;
double m_dDiffM ;
CLLControlOneDegree m_X, m_Y, m_ZD;
CLLControlOneDegree m_Ro, m_Pi, m_Ya;
double m_dNullValueHor;
double m_dNullValueVer ;
CTrajPlanner m_TrajX, m_TrajY, m_TrajZD ;
int mjNumTargetSeq ;
int m_iCurrentTargetSeq ;
TargetPosition *m_targetPosition ;
FILE *file ;
111
BaaL m_booITrajSetFlag;
BaaL m_booINextTrajFlag;
double m_dTargetXOld ;
double m_dTargetYOld ;
void ClearThrusterArray(void) ;
void InitializeAlIVariables(void) ;
void XYCoordinateMotion(void) ;
void SetTrajSetStatus(BOOL boolOnOft)
{ m_boolTrajSetFlag = boolOnOff; }
BaaL GetTraj SetStatus(void)
{ return m_booITrajSetFlag; }
II Side's adaptive DaB controller
double displacement[4], dPos[4], dVel[4], dAcc[4];
double forceControl[6];
double cthetaZ[5], cthetaRoPi[5], cthetaYa[5];
double velocity[4];
II Side's adaptive control for X and Y direction
double displacementXY[2], dPosXY[2], dVeIXY[2], dAccXY[2];
double cthetaXY[5];
double velocityXY[2];
II Side's kalman filter variables
double xKalman[3], yKalman[3], covX[3][3], covY[3][3], gainX[3], gainY[3];
void XYZTrajGenerator(double *pdTarget) ;
void XYTrajGenerator(double *pdTarget) ;
void Kalman(double measure, double stater], double covariance[][3], double input, double gain[]);
void AdaptiveDOBControlO;
void AdaptiveDOBXYControlO;
private:
II Side's adaptive DaB parameters
II Adaptive part
double rate[5], sigma[3], threshold[3], minusRate[5], mu[5], kConst[3], klntegral[4];
double tauVel;
II Adaptive part for X and Y directions
double rateXY[5], sigmaXY, thresholdXY, minusRateXY[5], muXY[5], kConstXY,
klntegraIXY[2];
double tauVelXY;
II End of Side's controller parameters
II Side's adaptive DaB private functions
void ProductlM21 V2(const double squre[][2], const double x[], double f[]);
112
double Norm(const double x[]);
void Product IV1V(double K[][2], const double vecter1 [], const double vecter2[], const double
nomiVar, const double denoVar);
double VelocityObserve(double state[], double input);
double VelocityObserveXY(double state[], double input);
};
2. Class implementation:
#include "stdafx.h"
#include "LLControl.h"
#include "LLControlInternal.h"
#include "kalman.h"
#ifdef DEBUG
#undef THIS FILE
static char THIS]ILE[]=_FILE_;
#define new DEBUG NEW
#endif
CLLControlinternal: :CLLControlInternal0
{
II Control DLL Information
int i, j; II loop counter;
m_uintControlMode = AUV;
m_sControlierName = "ADAPTIVEDOB" ;
ill_sControlierDesigner = "SideZhao" ;
ill_sControlierVersion = "Ver.l.O.O" ;
m_sControlierDate = "ApriI.10,2003" ;
mJSamplingInterval = 300000; II 30 msec
m_ITestSamplingInterval = 100000; 1110 msec
m_dDiffM = 1000.0;
m_Ro.m_dGainP == 0.1 ;
m_Ro.m_dGainI = 0.01 ;
m_Ro.m_dGainD = 2.0 ;
m]i.m_dGainP == 0.1 ;
m]i.m_dGainI = 0.01 ;
m]i.m_dGainD = 2.0;
ill_Ya.m_dGainP = 0.3;
ill_Ya.m_dGainI = 0.0 ;
m_Ya.m_dGainD = 6.0;
m_X.m_dGainP = 5.0;
m_X.m_dGainI = 0.0;
ill_X.m_dGainD = 10.0;
m_Y.m_dGainP = 5.0;
m_Y.m_dGainI = 0.0;
m_Y.m_dGainD = 10.0;
113
m_ZD.m_dGainP = 4.2 ;
m_ZD.m_dGainI = 0.1 ;
m_ZD.m_dGainD = 1.0;
II Side's controller parameter initialization
for (i = 0; i < 5; i H)
{
cthetaZ[i] = 0.0;
cthetaRoPi[i] = 0.0;
cthetaYa[i] = 0.0;
rate[O] = 1.0;
rate[1 ] = 1.0;
rate[2] = 1.0;
rate[3] = 5.0;
rate[4] = 1.0;
sigma[O] = 2.0;
sigma[l] = 4.0;
sigma[2] = 3.0;
threshold[O] = 300.0;
threshold[l] = 800.0;
threshold[2] = 500.0;
minusRate[O] = 0.03;
minusRate[l] =0.03;
minusRate[2] =0.03;
minusRate[3] = 0.03;
minusRate[4] = 0.03;
mu[O] = 0.02;
mu[l] = 0.02;
mu[2] = 0.02;
mu[3] = 0.02;
mu[4] = 0.02;
kConst[O] = 8.0;
kConst[l] = 3.0;
kConst[2] = 3.0;
kIntegral[O] = 0.0;
kIntegral[l] = 0.0;
kIntegral[2] = 0.0;
kIntegral[3] = 0.0;
II Velocity observation part
tauVel = 1.0/5.0;
II Side's adaptive control for X and Y directions part
for (i = 0; i < 5; i H)
cthetaXY[i] = 0.0;
rateXY[O] = 2.0;
114
rateXY[l] = 2.0;
rateXY[2] = 2.0;
rateXY[3] = 10.0;
rateXY[4] = 2.0;
sigmaXY = 1.5;
thresholdXY = 1000.0;
minusRateXY[O] = 0.03;
minusRateXY[l] = 0.03;
minusRateXY[2] = 0.03;
minusRateXY[3] = 0.03;
minusRateXY[4] = 0.03;
muXY[O] = 0.02;
muXY[l] = 0.02;
muXY[2] = 0.05;
muXY[3] = 0.05;
muXY[4] = 0.05;
kConstXY =4.0;
klntegraIXY[O] = 0.02;
klntegralXY[l] =0.02;
// Velocity observation part
tauVelXY = 1.0/0.5;
// Kalman filter part
for (i = 0; i < 3; i H)
{
xKalman[i] = 0.0;
yKalman[i] = 0.0;
gainX[i] = 0.0;
gainY[i] = 0.0;
forO = 0; i < 3; i H)
forU = 0; j < 3; j H)
{
if(i == j)
{
covX[i][j] = 10.0;
covY[i]U] = 10.0;
}
else
{
covX[i][j] = 0.0;
covY[i][j] = 0.0;
// TODO: Add your Additional Control Parameters Name and Value:
// Max.5 for Each Axis
// Z-domain Value
115
forO = 0; i < 5 ; i++){
m_X.m_adTempControIValue[i] = 0.0 ;
m_X.m_asTempControIName[i] = "NA" ;
m_Y.m_adTempControIValue[i] = 0.0;
m_Y.m_asTempControIName[i] = "NA" ;
m_ZD.m_adTempControIValue[i] = 0.0 ;
m_ZD.m_asTempControIName[i] = "NA" ;
m_Ro.m_adTempControIValue[i] = 0.0 ;
m_Ro.m_asTempControIName[i] = "NA" ;
m]i.m_adTempControIValue[i] = 0.0 ;
m_Pi.m_asTempControIName[i] = "NA" ;
m_Ya.m_adTempControIValue[i] = 0.0 ;
m_Ya.m_asTempControIName[i] = "NA";
m_TrajX.m_dMaxAcc = 0.01 ;
m_TrajX.m_dMaxVel = 0.1 ;
m_TrajX.m_dMaxJerk = 0.0 ;
m_TrajX.m_dRatio = 0.0 ;
m_TrajX.m_dSamplingTime = (double) (mJSamplinglnterval /10000000.0);
m_TrajY.m_dMaxAcc = 0.01 ;
m_TrajY.m_dMaxVel = 0.1 ;
m_TrajY.m_dMaxJerk = 0.0;
m_TrajY.m_dRatio = 0.0;
m_TrajY.m_dSamplingTime = (double) (mJSamplinglnterval /10000000.0) ;
m_TrajZD.m_dMaxAcc = 0.02 ;
m_TrajZD.m_dMaxVel = 0.2 ;
m_TrajZD.m_dMaxJerk = 0.0;
m3rajZD.m_dRatio = 0.0;
m_TrajZD.m_dSamplingTime = (double) (m_ISamplinglnterval /10000000.0);
m_dNullValueHor = 1.0 ;
m_dNullValueVer = 0.0 ;
ClearThrusterArrayO ;
InitializeAllVariablesO ;
SetTrajSetStatus(OFF) ;
m_targetPosition = NULL;
CLLControllnternal: :-CLLContro!InternaIO
{
}
void CLLContro!Internal: :XYZTraj Generator(double *pdTarget)
116
static double time;
double vMaxZ = 1.5 /70.0;
double zdz, wdz, dwdz;
double vMaxY = 1.5/70.0, vMaxX = 1.5 /70.0;
double zdy, wdy, dwdy;
double zdx, wdx, dwdx;
double timeRegulation = 90.0;
time = time + 0.03;
if (time <= timeRegulation)
{
dwdz = 0.0;
wdz= 0.0;
zdz = 0.0;
}
else if (time <= (30.0 + timeRegulation))
{
dwdz = vMaxZ / 30.0;
wdz = dwdz * (time - timeRegulation);
zdz = wdz * (time - timeRegulation) / 2.0;
}
else if (time> (30.0 + timeRegulation) && time <= (70.0 + timeRegulation))
{
dwdz = 0.0;
wdz= vMaxZ;
zdz = vMaxZ * 30.0/2.0 + vMaxZ * (time - 30.0 - timeRegulation);
}
else if (time> (70.0 + timeRegulation) && time <= (100.0+timeRegulation))
{
dwdz = -vMaxZ / 30.0;
wdz = vMaxZ + dwdz * (time - 70.0 - timeRegulation);
zdz = vMaxZ * 30.0/2.0 + vMaxZ * (time - 30.0 - timeRegu1ation) + 0.5 *dwdz *
pow((time - 70.0 - timeRegu1ation), 2);
}
else
{
dwdz = 0.0;
wdz= 0.0;
zdz = vMaxZ * 70.0;
dAcc[O] = dwdz;
dVe1[0] = wdz;
dPos[O] =zdz;
pdTarget[2] = zdz;
// Y reference generation part time;
if(time < (120.0 + timeRegulation))
{
dwdy = 0.0;
wdy = 0.0;
zdy = 0.0;
117
}
else if (time <= (30.0 + 120.0 + timeRegulation
{
dwdy = vMaxY /30.0;
wdy = dwdy * (time - 120.0 - timeRegulation);
zdy = wdy * (time - 120.0 - timeRegulation) / 2.0;
}
else if (time> (30.0+120.0+timeRegulation) && time <= (70.0+120.0+timeRegulation
{
dwdy = 0.0;
wdy = vMaxY;
zdy = vMaxY *30.0/2.0 + vMaxY *(time - 30.0 - 120.0 - timeRegulation);
}
else if (time> (70.0+120.0+timeRegulation) && time <= (l 00.0+120.0+timeRegulation
{
dwdy = -vMaxY / 30.0;
wdy = vMaxY + dwdy *(time - 70.0 - 120.0-timeRegulation);
zdy = vMaxY * 30.0/2.0 + vMaxY * (time - 30.0 - 120.0-timeRegulation) + 0.5 * dwdy *
pow((time - 70.0 - 120.0-timeRegulation), 2);
}
else
{
dwdy = 0.0;
wdy = 0.0;
zdy = vMaxY * 70.0;
dAccXY[l] = dwdy;
dVelXY[I] = wdy;
dPosXY[ 1] = zdy;
pdTarget[l] = zdy;
// X reference generation part time;
if (time < (240.0 + timeRegulation
{
dwdx = 0.0;
wdx= 0.0;
zdx = 0.0;
}
else if (time <= (30.0 + 240.0 + timeRegulation
{
dwdx = vMaxX / 30.0;
wdx = dwdx * (time - 240.0 - timeRegulation);
zdx = wdx * (time - 240.0 - timeRegulation) / 2.0;
}
else if ((time > (30.0+240.0 + timeRegulation && (time <= (70.0+240.0+timeRegulation)
{
dwdx = 0.0;
wdx =vMaxX;
zdx = vMaxX * 30.0/2.0 + vMaxX *(time - 30.0 - 240.0 timeRegulation);
}
else if ((time > (70.0+240.0+timeRegulation && (time <= (l00.0+240.0+timeRegulation)))
{
dwdx = -vMaxX /30.0;
wdx = vMaxX + dwdx *(time - 70.0 - 240.0-timeRegulation);
118
II Diagonal entity matrix
II Discrete System matrix
zdx = vMaxX * 30.0/2.0 +vMaxX * (time - 30.0 - 240.0-timeRegulation) +0.5 * dwdx *
pow((time - 70.0 - 240.0 - timeRegulation), 2);
}
else
{
dwdx = 0.0;
wdx = 0.0;
zdx = vMaxX *70.0;
dAccXY[O] = dwdx;
dVeIXY[O] = wdx;
dPosXY[O] = zdx;
pdTarget[O] = zdx;
dAccXY[O] = dwdx;
dVeIXY[O] = wdx;
dPosXY[O] = zdx;
pdTarget[O] = zdx;
void CLLControlIntemal::Kalman(double measure, double state[], double covariance[][3], double input,
double gain[])
{
const double h = 0.3; II Sampling time
const double T = 10.0; II Timeconstant acceleration estimation
const double R_m = 2.0; II Covariance of measurement noise
const double Q_m = 3.0; II Covariance of process noise
double u = 0.0;
II SYSTEM VARIABLES
double 1[3][3] = {{l, 0, O}, {O, I, O},{O, 0, l}};
double PH1[3][3] = {{I, h, O},{O, I, h}, {O, 0, I-hiT}};
double DELTA[3] = {O, 0, O}; II Input matrix
double GAMMA[3] = {O, 0, h}; II The noise matrix in 2 POWER (NB!)
double C_m[3] = {I, 0, O}; II The measurement matrix
II temporary variables
double vectorTempI[3], vectorTemp2[3];
double tempI;
double stateHat[3], covarianceHat[3][3];
double tempMatrixI[3][3], tempMatrix2[3][3], tempMatrix3[3][3], IKC[3][3], IKCTrans[3][3],
PHITrans[3] [3];
int i, j;
if (measure < 0.05)
C_m[O] = 0.0;
II START OF KALMAN FILTERING
II firse line;
ProductM3V3(covariance, C_m, vectorTempI);
tempI = DotProductV3V3(vectorTempI, C_m);
ProductM3V3(covariance, C_m, vectorTemp2);
for (i = 0; i < 3; i H)
119
gain[i] = vectorTempl[i] I (tempI +R_m);
II second line;
tempI = DotProductV3V3(C_m, state);
forO = 0; i < 3; i H)
stateHat[i] = state[i] +gain[i] * (measure - tempI);
II third line;
CrossProductV3V3(gain, C_m, tempMatrixl);
forO = 0; i < 3; i H)
for (j = 0; j < 3; j H)
IKC[i][j] = I[i]UJ - tempMatrixl[i][j];
II fourth line;
for 0 =0; i < 3; i H)
for (j = 0; j < 3; j H)
IKCTrans[i][j] = IKC[j][i];
ProductM3M3(covariance, IKCTrans, tempMatrixI);
ProductM3M3(IKC, tempMatrixl, tempMatrix2);
CrossProductV3V3(gain, gain, tempMatrix3);
for 0 = 0; i < 3; i H)
for (j = O;j < 3;j H)
covarianceHat[i][j] =tempMatrix2[i][j] + R_m * tempMatrix3[i][j];
II fifth line;
ProductM3V3(PHl, stateHat, vectorTempl);
for (i = 0; i < 3; i H)
state[i] = vectorTempl[i] + u * DELTA[i];
II sixth line;
for 0 = 0; i < 3; i H)
for (j =0; j < 3; j H)
PHITrans[i][j] =PHl[j][i];
ProductM3M3(PHI, covarianceHat, tempMatrixl);
ProductM3M3(tempMatrixl, PHITrans, tempMatrix2);
CrossProductV3V3(GAMMA, GAMMA, tempMatrix3);
for (i =0; i < 3; i H)
for (j =O;j < 3;j H)
covariance[i][j] = tempMatrix2[j][i] + Q_m * tempMatrix3[i][j];
void CLLControlIntemal: :AdaptiveDOBXYControlO
{
static double xXVelocity[2], xYVelocity[2];
static double errorSumXY[2];
double cthetaDotXY[5];
double gainXYI [2][2], gainXY2[2][2], gainXY3[2], gainXY4[2][2], gainXY5[2][2];
double errorXY[2], errorDotXY[2], eTiideXY[2];
double forceAdaptXY[2];
double facterXY[5];
double forceOneXY[2], forceTwoXY[2], forceThreeXY[2], forceFourXY[2], forceFiveXY[2],
forceSixXY[2]; II temporary arrays for storage.
int i; II loop counter
II velocityXY[O] =VelocityObserveXY(xXVelocity, displacementXY[O]);
120
II velocityXY[I] = VelocityObserveXY(xYVelocity, displacementXY[I]);
II error, errorDot and eTilde calculation part.
for (i =0; i < 2; i ++)
{
errorXY[i] = dPosXY[i] - displacementXY[i];
errorDotXY[i] = dVeIXY[i] - velocityXY[i];
eTildeXY[i] = errorDotXY[i] + errorXY[i] * sigmaXY;
II X and Y controller design part
facterXY[O] = Norm(eTildeXY) *Norm(dAccXY);
facterXY[I] = Norm(eTildeXY) *Norm(velocityXY);
facterXY[2] = Norm(eTildeXY) *kConstXY;
facterXY[3] = Norm(eTildeXY) *Norm(errorDotXY);
facterXY[4] = Norm(eTildeXY) *Norm(errorXY);
II calculate the control gains of the adaptive controller
if(facterXY[O] <= thresholdXY)
Product IVI V(gainXYI, eTildeXY, dAccXY, cthetaXY[O], thresholdXY);
else
Product! VIV(gainXYI, eTildeXY, dAccXY, cthetaXY[0], facterXY[0]);
if(facterXY[I] <= thresholdXY)
Product! VIV(gainXY2, eTildeXY, velocityXY, cthetaXY[ I], thresholdXY);
else
Product I VI V(gainXY2, eTildeXY, velocityXY, cthetaXY[I], facterXY[I]);
if(facterXY[2] <= thresholdXY)
for (i =0; i < 2; i ++)
gainXY3[i] = cthetaXY[2] *eTildeXY[i] *kConstXY I thresholdXY;
else
for (i =0; i < 2; i ++)
gainXY3[i] =cthetaXY[2] *eTildeXY[i] *kConstXY I facterXY[2];
if (facterXY[3] <= thresholdXY)
Product! VIV(gainXY4, eTildeXY, errorDotXY, cthetaXY[3], thresholdXY);
else
ProductIVIV(gainXY4, eTildeXY, errorDotXY, cthetaXY[3], facterXY[3]);
if (facterXY[4] <= thresholdXY)
Product IVI V(gainXY5, eTildeXY, errorXY, cthetaXY[4], thresholdXY);
else
ProductIVIV(gainXY5, eTildeXY, errorXY, cthetaXY[4], facterXY[4]);
II adjust the bound estimation
for (i = 0; i < 5; i ++)
{
if(facterXY[i] >= muXY[i])
cthetaDotXY[i] = rateXY[i] * facterXY[i];
else
cthetaDotXY[i] = -minusRateXY[i] *cthetaXY[i] + rateXY[i] * facterXY[i];
II update ctheta
cthetaXY[i] = cthetaXY[i] +cthetaDotXY[i] * 0.3;
121
II calculate the control force
ProductlM2 1V2(gainXY1, dAccXY, forceOneXY);
ProductlM21V2(gainXY2, velocityXY, forceTwoXY);
forO = 0; i < 2; i ++)
forceThreeXY[i] = gainXY3[i];
Product 1M21 V2(gainXY4, errorDotXY, forceFourXY);
Product1M21 V2(gainXY5, errorXY, forceFiveXY);
for 0 = 0; i < 2; i ++)
{
errorSurnXY[i] = errorSurnXY[i] +errorXY[i] *0.3;
forceSixXY[i] = klntegraIXY[i] *errorSumXY[i];
for 0 = 0; i < 2; i ++)
forceAdaptXY[i] =forceOneXY[i] + forceTwoXY[i] + forceThreeXY[i] +
forceFourXY[i] + forceFiveXY[i] + forceSixXY[i];
II Control force calculation: Summation of adaptive controller output and DOB output
for (i =0; i < 2; i ++)
forceControl[i] = forceAdaptXY[i];
void CLLControIIntemal: :AdaptiveDOBControlO
{
static double xl Velocity[2], x2Velocity[2], x3Velocity[2], x4Velocity[2];
static double errorSum[4];
double cthetaDotZ[5], cthetaDotRoPi[5], cthetaDotYa[5];
double gainZl, gainZ2, gainZ3, gainZ4, gainZ5;
double gainRoPi 1[2][2], gainRoPi2[2][2], gainRoPi3[2], gainRoPi4[2][2], gainRoPi5[2][2];
double gainYal, gainYa2, gainYa3, gainYa4, gainYa5;
double dAccRoPi[2], velocityRoPi[2];
double errorZ, errorDotZ, errorRoPi[2], errorDotRoPi[2], errorYa, errorDotYa, eTildeZ,
eTildeRoPi[2], eTildeYa;
double forceAdapt[4];
double facter[5];
double forceSix[4]; II temporary arrays for storage.
double forceOneV2[2], forceTwoV2[2], forceThreeV2[2], forceFourV2[2], forceFiveV2[2];
II temporary arrays for storage.
int i; II loop counter
II Velocity estimation
velocity[O] = VelocityObserve(xl Velocity, displacement[O]);
velocity[ 1] = VelocityObserve(x2Velocity, displacement[ 1]);
velocity[2] =VelocityObserve(x3Velocity, displacement[2]);
velocity[3] = VelocityObserve(x4Velocity, displacement[3]);
II error, errorDot and eTUde calculation part.
errorZ = dPos[O] - displacement[O];
errorDotZ =dVel[O] - velocity[O];
eTildeZ = errorDotZ + sigma[O] * errorZ;
for 0 = 0; i < 2; i ++)
122
errorRoPi[i] = dPos[i+1] - displacement[i+1];
errorDotRoPi[i] = dVel[i+1] - velocity[i+1];
eTildeRoPi[i] = errorDotRoPi[i] + errorRoPi[i] * sigma[1];
errorYa = dPos[3] - displacement[3];
errorDotYa = dVel[3] - velocity[3];
eTildeYa = errorDotYa + errorYa * sigma[2];
II Z controller design part
facter[O] = fabs(eTildeZ) * fabs(dAcc[O]);
facter[l] = fabs(eTildeZ) * fabs(velocity[O]);
facter[2] = fabs(eTildeZ) * kConst[O];
facter[3] = fabs(eTildeZ) * fabs(errorDotZ);
facter[4] = fabs(eTildeZ) * fabs(errorZ);
II calculate the control gains of the adaptive controller
if (facter[O] <= threshold[O])
gainZI = cthetaZ[O] * eTildeZ * dAcc[O] I threshold[O];
else
gainZI = cthetaZ[O] *eTildeZ *dAcc[O] I facter[O];
if(facter[l] <= threshold[O])
gainZ2 =cthetaZ[I] *eTildeZ *velocity[O] I threshold[O];
else
gainZ2 = cthetaZ[I] *eTildeZ *velocity[O] I facter[I];
if (facter[2] <= threshold[O])
gainZ3 = cthetaZ[2] *eTildeZ *kConst[O] I threshold[O];
else
gainZ3 = cthetaZ[2] *eTildeZ *kConst[O] I facter[2];
if (facter[3] <= threshold[O])
gainZ4 =cthetaZ[3] *eTildeZ *errorDotZ I threshold[O];
else
gainZ4 = cthetaZ[3] * eTildeZ * errorDotZ I facter[3];
if(facter[4] <= threshold[O])
gainZ5 = cthetaZ[4] * eTildeZ *errorZ I threshold[O];
else
gainZ5 = cthetaZ[4] * eTildeZ * errorZ I facter[4];
II adjust the bound estimation
for (i = 0; i < 5; i ++)
{
if(facter[i] >= mu[i])
cthetaDotZ[i] = rate[i] * facter[i];
else
cthetaDotZ[i] = -minusRate[i] * cthetaZ[i] + rate[i] * facter[i];
II update ctheta
cthetaZ[i] = cthetaZ[i] + cthetaDotZ[i] * 0.03;
123
for (i == 0; i < 2; i ++)
{
dAccRoPi[i] == dAcc[i+l];
velocityRoPi[i] == velocity[i+1];
II Roll and pitch controller design part
facter[O] == Norm(eTildeRoPi) *Norm(dAccRoPi);
facter[l] == Norm(eTildeRoPi) *Norm(velocityRoPi);
facter[2] == Norm(eTildeRoPi) * kConst[I];
facter[3] == Norm(eTildeRoPi) *Norm(errorDotRoPi);
facter[4] == Norm(eTildeRoPi) * Norm(errorRoPi);
II calculate the control gains of the adaptive controller
if(facter[O] <== threshold[l])
Product IVI V(gainRoPiI, eTildeRoPi, dAccRoPi, cthetaRoPi[O], threshold[I]);
else
Product IVI V(gainRoPiI, eTildeRoPi, dAccRoPi, cthetaRoPi[O], facter[O]);
if (facter[I] <== threshold[l])
Product IV1V(gainRoPi2, eTildeRoPi, velocityRoPi, cthetaRoPi[ 1], threshoId[ I]);
else
Product IVI V(gainRoPi2, eTildeRoPi, velocityRoPi, cthetaRoPi[I], facter[I]);
if (facter[2] <== threshold[I])
for (i == 0; i < 2; i ++)
gainRoPi3[i] == cthetaRoPi[2] * eTildeRoPi[i] *kConst[I] I threshold[I];
else
for (i == 0; i < 2; i ++)
gainRoPi3[i] =' cthetaRoPi[2] *eTildeRoPi[i] *kConst[I] I facter[2];
if(facter[3] <== threshold[I])
Product IVI V(gainRoPi4, eTildeRoPi, errorDotRoPi, cthetaRoPi[3], threshold[I]);
else
Product IVI V(gainRoPi4, eTildeRoPi, errorDotRoPi, cthetaRoPi[3], facter[3]);
if (facter[4] <== threshold[I])
Product IVI V(gainRoPi5, eTildeRoPi, errorRoPi, cthetaRoPi[4], threshold[ I]);
else
Product IVI V(gainRoPi5, eTildeRoPi, errorRoPi, cthetaRoPi[4], facter[4]);
II adjust the bound estimation
for (i == 0; i < 5; i ++)
{
if(facter[i] >== mu[i])
cthetaDotRoPi[i] == rate[i] * facter[i];
else
cthetaDotRoPi[i] == -minusRate[i] * cthetaRoPi[i] + rate[i] * facter[i];
II update ctheta
cthetaRoPi[i] == cthetaRoPi[i] + cthetaDotRoPi[i] * 0.03;
II Yaw controller design part.
facter[O] == fabs(eTildeYa) *fabs(dAcc[3]);
124
facter[l] = fabs(eTildeYa) * fabs(velocity[3D;
facter[2] = fabs(eTiideYa) * kConst[2];
facter[3] = fabs(eTiideYa) * fabs(errorDotYa);
facter(4] = fabs(eTildeVa) * fabs(errorYa);
if (facter[O] <= threshold[2D
gainYal = cthetaYa[O] * eTildeYa * dAcc[3] I threshold[2];
else
gainYal = cthetaYa[O] * eTildeYa * dAcc[3] I facter(O];
if (facter[ 1] <= threshold[2D
gainYa2 = cthetaYa[l] * eTildeYa * velocity[3] Ithreshold[2];
else
gainYa2 = cthetaYa(l] *eTildeYa * velocity[3] I facter[I];
if (facter[2] <= threshold[2D
gainYa3 = cthetaYa[2] * eTiideYa * kConst[2] I threshold[2];
else
gainYa3 = cthetaYa(2] * eTiideYa * kConst[2] I facter[2];
if(facter[3] <= threshold[2D
gainYa4 = cthetaYa[3] * eTiideYa *errorDotYa I threshold[2];
else
gainYa4 = cthetaYa[3] * eTiideYa * errorDotYa I facter[3];
if (facter[4] <= threshold[2D
gainYa5 = cthetaYa[4] *eTildeYa * errorYa I threshold[2];
else
gainYa5 = cthetaYa[4] * eTiideYa *errorYa I facter[4];
II adjust the bound estimation
for 0= 0; i < 5; i H)
{
if(facter[i] >= mu[iD
cthetaDotYa[i] = rate[i] * facter[i];
else
cthetaDotYa[i] = -minusRate[i] *cthetaYa[i] + rate[i] * facter[i];
II update ctheta
cthetaYa[i] = cthetaYa[i] + cthetaDotYa[i] *0.03;
II calculate the control force
Product 1M21 V2(gainRoPi 1, dAccRoPi, forceOneV2);
Productl M21V2(gainRoPi2, velocityRoPi, forceTwoV2);
forO = 0; i < 2; i H)
forceThreeV2[i] = gainRoPi3[i] * kConst[I];
Product 1M21 V2(gainRoPi4, errorDotRoPi, forceFourV2);
ProductlM21 V2(gainRoPi5, errorRoPi, forceFiveV2);
errorSum[O] += errorZ *0.03;
forceSix[O] = kIntegral[O] * errorSum[O];
for 0 = 0; i < 2; i H)
{
errorSum[i+1] = errorSum[i+1] +errorRoPi(i] * 0.03;
125
forceSix[i+ I] = klntegral[i+I] *errorSum[i+I];
}
errorSum[3] += errorYa * 0.03;
forceSix[3] = klntegral[3] * errorSum[3];
forceAdapt[O] = gainZI *dAcc[O] + gainZ2 *velocity[O] + gainZ3 *kConst[O] + gainZ4 *
errorDotZ + gainZ5 * errorZ + forceSix[O];
for (i = I; i < 3; i H)
forceAdapt[i] = forceOneV2[i-l] + forceTwoV2[i-l] + forceThreeV2[i-l] +
forceFourV2[i-l] + forceFiveV2[i-l] + forceSix[i];
forceAdapt[3] = gainYal * dAcc[3] + gainYa2 *velocity[3] + gainYa3 *kConst[2] + gainYa4 *
errorDotYa + gainYa5 *errorYa + forceSix[3];
II Control force calculation: Summation of adaptive controller output and DOB output
for 0 = 0; i < 4; i H)
forceControl[i + 2] = forceAdapt[i];
void CLLControlIntemal::ProductlM2IV2(const double squre[][2], const double x[], double f[])
{
int i,j;
for 0 = 0; i < 2; i H)
{
f[i] = 0.0;
for G == O;j < 2;j H)
f[i] = f[i] + squre[i][j] *xU];
double CLLControlIntemal::Norm(const double x[])
{
int i;
double buffer = 0;
for (i == 0; i < 2; i H)
buffer == buffer + pow(x[i], 2);
return sqrt(buffer);
void CLLControlIntemal: :Productl V1V(double K[][2], const double vecter 1[], const double vecter2[],
const double nomiVar, const double denoVar)
{
int i,j;
forO == 0; i < 2; i H)
forG = 0; j < 2;j H)
K[i][j] == nomiVar *vecter1[i] *vecter2U] I denoVar;
double CLLControlIntemal::VelocityObserveXY(double state[], double input)
{
double stateMatrix[2] [2];
double inputMatrix[2];
126
double outputCoef;
double stateTemp[2];
int i;
stateMatrix[O][O] = -2.0/tauVeIXY;
stateMatrix[O] [I] = -1.0/tauVelXY/tauVeIXY;
stateMatrix[I][O] = 1.0;
stateMatrix[I][I] = 0.0;
inputMatrix[O] = 1.0;
inputMatrix[l] = 0.0;
outputCoef = lItauVelXY/tauVeIXY;
for (i = 0; i < 2; i H)
stateTemp[i] = state[i];
for (i = 0; i < 2; i H)
state[i] = stateTemp[i] + (stateMatrix[i] [0] * stateTemp[O] + stateMatrix[i][I] *
stateTemp[ I] + inputMatrix[i] * input) * 0.3;
return state[O] * outputCoef;
double CLLControlInternal::VelocityObserve(double state[], double input)
{
double stateMatrix[2][2];
double inputMatrix[2];
double outputCoef;
double stateTemp[2];
int i;
stateMatrix[O][O] = -2.0/tauVel;
stateMatrix[O][I] = -1.0/tauVel/tauVel;
stateMatrix[I][O] = 1.0;
stateMatrix[I][l] = 0.0;
inputMatrix[O] = 1.0;
inputMatrix[l] = 0.0;
outputCoef= lItauVel/tauVel;
for (i = 0; i < 2; i H)
stateTemp[i] = state[i];
for (i = 0; i < 2; i H)
state[i] = stateTemp[i] + (stateMatrix[i][O] *stateTemp[O] + stateMatrix[i][ I] *
stateTemp[l] + inputMatrix[i] * input) *0.03;
return state[O] * outputCoef;
127
111.2. DOB Part Code
1. Class declaration:
II Side defines DOB class here.
class DistObsv
{
public:
DistObsvO;

double disturbanceEs[4], disturbanceEsXY[2];
double accDOBXY[2], veIDOBXY[2];
double accDOB[4], veIDOB[4];
II private:
double tauDOB, tauDOBXY;
II Nominal model part
double mass, iX, iY, iZ, xUD, yVD, zWD, kPD, mQD, nRD;
double dTransQuad, dRotLin, dRotQuad;
void DisturbanceObserve(const double *formerForce, const double *dispDOB);
void DisturbanceObserveXY(const double *formerForce, const double *dispDOBXY);
II Side's adaptive DOB private functions
void ProductlMI V(const double squre[][4], const double x[], double f[]);
void Product1M2lV2(const double squre[][2], const double x[], double f[]);
int Sgn(const double x);
double DOBQ(double state[], const double input, const int returnlndex);
double DOBQXY(double state[], const double input, const int returnlndex);
};
2. Class implementation:
DistObsv::DistObsvO
{
int i;
tauDOB = 1.0/1.0;
tauDOBXY = 1.010.2;
II DOB part
II Nominal model definition part
mass = 125.0;
iX= 8.0;
iY= 8.0;
iZ = 8.0;
xUD = -mass I 2.0;
yVD = -mass I 2.0;
zWD = -mass I 2.0;
kPD = 0.0;
mQD =0.0;
nRD=O.O;
dTransQuad = -148.0;
dRotLin = -130.0;
dRotQuad = -180.0;
128
II Initialize the static variables.
for (i = 0; i < 4; i H)
{
disturbanceEs[i] = 0.0;
for (i = 0; i < 2; i H)
disturbanceEsXY[i]= 0.0;
void DistObsv::DisturbanceObserve(const double *formerForce, const double *dispDOB)
{
II Variables that should be memorized during test
static double xIQ[3], x2Q[3], x3Q[3], x4Q[3];
static double xIQS[3], x2QS[3], x3QS[3], x4QS[3];
static double xIQSS[3], x2QSS[3], x3QSS[3], x4QSS[3];
double fFiltered[4];
double mNominal[4][4], cNominal[4][4], dNominal[4][4];
double forceNominal[4], forceOne[4], forceTwo[4], forceThree[4]; II temporary arrays for
storage.
int i;
double temp;
II loop counter
II DOB part:
fFiltered[O] = DOBQ(xIQ, formerForce[2], 2);
fFiItered[l] = DOBQ(x2Q, formerForce[3], 2);
fFiltered[2] = DOBQ(x3Q, formerForce[4], 2);
fFiltered[3] = DOBQ(x4Q, formerForce[5], 2);
veIDOB[O] = DOBQ(xIQS, dispDOB[O], I);
veIDOB[l] = DOBQ(x2QS, dispDOB[l], 1);
veIDOB[2] = DOBQ(x3QS, dispDOB[2], I);
veIDOB[3] = DOBQ(x4QS, dispDOB[3], I);
temp = dispDOB[O];
accDOB[O] = DOBQ(xIQSS, temp, 0);
temp = dispDOB[I];
accDOB[I] = DOBQ(x2QSS, temp, 0);
temp = dispDOB[2];
accDOB[2] = DOBQ(x3QSS, temp, 0);
temp = dispDOB[3];
accDOB[3] = DOBQ(x4QSS, temp, 0);
mNominal[O][O] = mass - zWD;
mNominal[O][I] = 0.0;
mNominal[0][2] = 0.0;
mNominal[0][3] = 0.0;
mNominal[I][O] = 0.0;
mNominal[I][I] = iX - kPD;
mNominal[I][2] = 0.0;
mNominal[I][3] = 0.0;
mNominal[2][0] = 0.0;
mNominal[2][I] = 0.0;
mNominal[2][2] = iY - mQD;
mNominal[2][3] = 0.0;
129
mNominal[3][0] = 0.0;
mNominal[3][I] = 0.0;
mNominal[3][2] = 0.0;
mNominal[3][3] = iZ - nRD;
cNominal[O][O] = 0.0;
cNominal[O][I] = 0.0;
cNominal[0][2] = 0.0;
cNominal[0][3] = 0.0;
cNominal[I][O] = 0.0;
cNominal[I][I] = 0.0;
cNominal[I][2] = iZ * veIDOB[3] - nRD * velDOB[3];
cNominal[I][3] = -iY * velDOB[2] + mQD *velDOB[2];
cNominal[2][0] = 0.0;
cNominal[2][I] = -iZ *velDOB[3] + nRD *velDOB[3];
cNominal[2][2] = 0.0;
cNominal[2][3] = iX * velDOB[l] - kPD * velDOB[I];
cNominal[3][0] = 0.0;
cNominal[3][I] = iY *velDOB[2] - mQD *velDOB[2];
cNominal[3][2] = -iX *veIDOB[I] + kPD *veIDOB[I];
cNominal[3][3] = 0.0;
dNominal[O][O] = -dTransQuad * Sgn(velDOB[O]) *velDOB[O];
dNominal[O][I] = 0.0;
dNominal[0][2] = 0.0;
dNominal[0][3] = 0.0;
dNominal[I][O] = 0.0;
dNominal[I][I] = -dRotLin - dRotQuad * Sgn(velDOB[I]) * velDOB[I];
dNominal[I][2] = 0.0;
dNominal[1][3] = 0.0;
dNominal[2][0] = 0.0;
dNominal[2][1] = 0.0;
dNominal[2][2] = -dRotLin - dRotQuad * Sgn(velDOB[2]) * velDOB[2];
dNominal[2][3] = 0.0;
dNominal[3][0] = 0.0;
dNominal[3][1] = 0.0;
dNominal[3][2] = 0.0;
dNominal[3][3] = -dRotLin - dRotQuad * Sgn(velDOB[3]) * velDOB[3];
ProductlMI V(mNominal, accDOB, forceOne);
ProductIMIV(cNominal, velDOB, forceTwo);
ProductIMIV(dNominal, velDOB, forceThree);
for (i=O; i<4; i++)
{
forceNominal[i] = forceOne[i];
II + forceTwo[i] + forceThree[i];
disturbanceEs[i] = fFiltered[i] - forceNominal[i];
}
II End ofDOB part
double DistObsv::DOBQ(double state[], const double input, const int retumIndex)
{
double stateMatrix[3][3], inputMatrix[3];
double outputCoef;
130
int i;
double tempState[3];
stateMatrix[O][O] = -3.0/tauDOB;
stateMatrix[O][I] = -3.0/pow(tauDOB, 2);
stateMatrix[0][2] = -1.0/pow(tauDOB, 3);
stateMatrix[I][O] = 1.0;
stateMatrix[I][I] = 0.0;
stateMatrix[I][2] = 0.0;
stateMatrix[2][0] = 0.0;
stateMatrix[2][l] = 1.0;
stateMatrix[2][2] = 0.0;
inputMatrix[O] = 1.0;
inputMatrix[l] = 0.0;
inputMatrix[2] = 0.0;
outputCoef = 1.0/tauDOB/tauDOB/tauDOB;
for (i = 0; i < 3; i H)
tempState[i] = state[i];
for (i = 0; i < 3; i H)
{
state[i] = tempState[i] + (stateMatrix[i] [0] * tempState[O]
+ stateMatrix[i][I] *tempState[1]+ stateMatrix[i][2] *tempState[2] +
inputMatrix[i] * input) * 0.03;
}
return outputCoef*state[returnlndex];
double DistObsv::DOBQXY(double state[], const double input, const int returnlndex)
{
double stateMatrix[3][3], inputMatrix[3];
double outputCoef;
int i;
double tempState[3];
stateMatrix[O][O] = -3.0/tauDOBXY;
stateMatrix[O][I] = -3.0/pow(tauDOBXY, 2);
stateMatrix[0][2] = -1.0/pow(tauDOBXY, 3);
stateMatrix[I][O] = 1.0;
stateMatrix[I][I] =0.0;
stateMatrix[I][2] = 0.0;
stateMatrix[2][0] = 0.0;
stateMatrix[2][I] = 1.0;
stateMatrix[2][2] = 0.0;
inputMatrix[O] = 1.0;
inputMatrix[l] = 0.0;
inputMatrix[2] = 0.0;
outputCoef = 1.0/tauDOBXYItauDOBXY/tauDOBXY;
for (i = 0; i < 3; i H)
tempState[i] = state[i];
131
for (i = 0; i < 3; i H)
{
state[i) = tempState[i) + (stateMatrix[i)[O) * tempState[O]
+ stateMatrix[i][l) * tempState[l)+ stateMatrix[i] [2] * tempState[2] +
inputMatrix[i] * input) * 0.3;
}
return outputCoef*state[returnlndex];
int DistObsv::Sgn(const double x)
{
if(x == 0)
return 0;
else if (x > 0)
return 1;
else
return -I;
void DistObsv::Product1M1 V(const double squre[][4], const double x[], double fTD
{
int i, j;
for (i = 0; i < 4; i H)
{
fTi] = 0.0;
forU=0;j<4;jH)
fTi] = fTi] + squre[i][j] * x[j];
void DistObsv::Product1M21 V2(const double squre[][2], const double x[], double fTD
{
int i, j;
for (i = 0; i < 2; i H)
{
fTi] = 0.0;
for U= O;j < 2;j H)
fTi] = fTi] + squre[i][j] * x[j];
void DistObsv::DisturbanceObserveXY(const double *formerForce, const double *dispDOBXY)
{
II Variables that should be memorized during the test for X and Y direction
static double xXQ[3], xYQ[3];
static double xXQS[3], xXQSS[3], xYQS[3], xYQSS[3];
double fFilteredXY[2];
double mNominaIXY[2] [2], cNominaIXY[2][2], dNominaIXY[2][2];
double forceNominaIXY[2];
double forceOneXY[2], forceTwoXY[2], forceThreeXY[2];
int i; II loop counter
132
II DOB part:
fFilteredXY[O] = DOBQXY(xXQ, formerForce[O], 2);
fFilteredXY[l] =DOBQXY(xYQ, formerForce[l], 2);
veIDOBXY[O] =DOBQXY(xXQS, dispDOBXY[O], 1);
veIDOBXY[l] =DOBQXY(xYQS, dispDOBXY[l], 1);
accDOBXY[O] =DOBQXY(xXQSS, dispDOBXY[O], 0);
accDOBXY[l] = DOBQXY(xYQSS, dispDOBXY[l], 0);
mNominaIXY[O][O] = mass - xUD;
mNominaIXY[O][l] = 0.0;
mNominaIXY[l][O] = 0.0;
mNominaIXY[l][l] = mass - yVD;
cNominaIXY[O][O] = 0.0;
cNominaIXY[O][l] = 0.0;
cNominaIXY[l][O] = 0.0;
cNominaIXY[l][l] = 0.0;
dNominaIXY[O][O] = -dTransQuad *Sgn(veIDOBXY[O]) * veIDOBXY[O];
dNominaIXY[O][l] = 0.0;
dNominaIXY[l][O] = 0.0;
dNominaIXY[l][l] = -dTransQuad * Sgn(veIDOBXY[l]) * veIDOBXY[l];
Product 1M21 V2(mNominaIXY, accDOBXY, forceOneXY);
ProductlM21 V2(cNominalXY, veIDOBXY, forceTwoXY);
ProductlM21 V2(dNominaIXY, veIDOBXY, forceThreeXY);
for (i = 0; i < 2; i ++)
{
forceNominalXY[i] = forceOneXY[i];
II +forceTwoXY[i] +forceThreeXY[i];
disturbanceEsXY[i] = fFilteredXY[i] - forceNominaIXY[i];
}
II End ofDOB part
111.3. The Merge Part Code
This part is where all the control objects defined before are loaded.
void RTFCNDCL ControlTimerHandler(PVOID handle)
{
II TO DO: your timer handler code here
TestOutput(l) ;
ThrusterOutputO ;
if(the.m--pNavigation->GetThrusterOnOffStatusO == ON) {
//IIIIIIIIIIIII1/111IIIIIIIIIIIIIIIIIIIIIIIII11111111/11IIIIIIIIIIIIIIIIII
II Set Refemce: Only One time
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII111//11111IIIIIIIIIIIIIIIIIIIIII
133
if(boolSettingFlag == OFF) {
boolSettingFlag = ON ;
if(the.m-'pNavigation->m_adMotionCommand[3] == -1.0)
the.m InVar.m Ro.m dReference =
- --
the.m_InVar.m_Ro.m_dIntiaIValue;
else
the.m_InVar.m_Ro.m_dReference = the.m-'pNavigation-
>m_adMotionCommand[3] ;
if(the.m-'pNavigation->m_adMotionCommand[4] == -1.0)
the.m_InVar.m_Pi.m_dReference = the.m_InVar.m_Pi.m dIntialValue
else
>m_adMotionCommand[4] ;
if(the.m-'pNavigation->m_adMotionCommand[5] == -I.0)
the.m InVar.m Ya.m dReference =
- --
the.m_InVar.m_Ya.m_dIntiaIValue;
else
the.m_InVar.m_Ya.m_dReference = the.m-'pNavigation-
>m_adMotionCommand[5] ;
}
!!
!!
!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! Orientation & ZD Control: 30 msec Sampling
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!
the.ill-'pNavigation->m_adTargetPosition[3] = the.ill_InVar.m_Ro.m_dReference
the.m-'pNavigation->m_adTargetPosition[4] = the.m_InVar.m_Pi.m_dReference ;
the.m-'pNavigation->m_adTargetPosition[5] = the.ill_InVar.m_Ya.m_dReference
GetSensorDataO ;
if(the.m-'pNavigation->GetAUVControIStatusO == OFF)
{
the.m-'pNavigation->m_adTargetPosition[3] =
the.m_InVar.m_Ro.m_dReference *3.1416! 180.0;
the.ill-'pNavigation->m_adTargetPosition[4] =
the.m_InVar.m]i.m_dReference * 3.1416! 180.0;
the.m-'pNavigation->m_adTargetPosition[5] =
the.m_InVar.m_Ya.m_dReference *3.1416! 180.0;
the.m_InVar.dPos[l] =the.ill-'pNavigation->ill_adTargetPosition[3];
the.m_InVar.dPos[2] = the.m-'pNavigation->m_adTargetPosition[4];
the.m_InVar.dPos[3] = the.m-'pNavigation->m_adTargetPosition[5];
the.ill_InVar.dPos[O] =0.7 + the.m_lnVar.m_ZD.m_dIntiaIValue;
the.m-'pNavigation->m_adTargetPosition[2] = the.ill_InVar.dPos[O];
!! the.m_InVar.dAcc[O] = the.ill_InVar.ill_TrajZD.ill_dTrajAcc;
the.m_InVar.dAcc[O] = 0.0;
the.m_InVar.dAcc[l] =0.0;
the.m_InVar.dAcc[2] = 0.0;
the.ill_InVar.dAcc[3] = 0.0;
134
II the.m_InVar.dVel[O] = the.m_InVar.m_TrajZD.m_dTrajVel;
the.m_InVar.dVel[O] = 0.0;
the.m_InVar.dVel[l] = 0.0;
the.m_InVar.dVel[2] = 0.0;
the.m_InVar.dVel[3] = 0.0;
the.m_InVar.displacement[O] = the.m-pNavigation->m_dPressure;
the.m_lnVar.displacement[l] = the.m-pNavigation->m_adINSAD[O] * 3.1416 I
180.0;
the.m_InVar.displacement[2] = the.m-pNavigation->m_adINSAD[I] * 3.1416 I
180.0;
if (the.m-pNavigation->m_adINSAD[2] <= 0.0)
the.m-pNavigation->m_adINSAD[2] += 360.0;
the.m_InVar.displacement[3] = the.m-pNavigation->m_adINSAD[2] * 3.1416 I
180.0;
the.m_InVar.AdaptiveDOBControIO;
the.dob.DisturbanceObserve(the.m-pNavigation->m_adControlInput,
the.m_InVar.displacement);
II
II
the.dob.disturbanceEs[O];
the.dob.disturbanceEs[ 1];
the.dob.disturbanceEs[2];
the.dob.disturbanceEs[3];
}
else {
the.m-pNavigation->m_adControlInput[O] = 0.0;
the.m-pNavigation->m_adControlInput[l] = 0.0;
the.m-pNavigation->m_adControlInput[2] = the.m_InVar .forceControl[2] +
the.m-pNavigation->m_adControlInput[3] = the.m_InVar.forceControl[3] +
the.m-pNavigation->m_adControlInput[4] = the.m_InVar.forceControl[4] +
the.m-pNavigation->m_adControlInput[5] = the.m_InVar.forceControl[5] +
if(the.m_InVar.m_iMultirateCounterH >= 10) {
the.m_InVar.m_iMultirateCounter = 0 ;
RequestSendSensorDataO ;
II Calculate Sensor data for X, Y and Z
II RequestSonarInterpretationO;
}
the.m_InVar.m_X.m_dHomeValue = the.m-pNavigation->m_adSonar[4];
the.m_InVar.m_Y.m_dHomeValue = the.m-pNavigation->m_adSonar[O];
the.m_InVar.m_ZD.m_dHomeValue = the.m_InVar.dPos[O];
II the.m-pNavigation->m_dPressure ;
the.m-pNavigation->m_adTargetPosition[3] =
the.m_InVar.m_Ro.m_dReference *3.1416 1180.0;
the.m-pNavigation->m_adTargetPosition[4] =
the.m_InVar.m]i.m_dReference * 3.1416 1180.0;
the.m-pNavigation->m_adTargetPosition[5] =
the.m_InVar.m_Ya.m_dReference * 3.1416 1180.0;
the.m_InVar.dPos[l] = the.m-pNavigation->m_adTargetPosition[3];
the.m_InVar.dPos[2] = the.m-pNavigation->m_adTargetPosition[4];
135
the.m_InVar.dPos[3] = the.m-yNavigation->m_adTargetPosition[5];
the.m_InVar.XYZTrajGenerator(the.m-yNavigation->m_adTargetPosition);
the.m_InVar.dPos[O] += the.m_InVar.m_ZD.m_dHomeValue;
the.m-yNavigation->m_adTargetPosition[2] = the.m_InVar.dPos[O];
//
//
180.0;
180.0;
180.0;
// the.m_InVar.dAcc[O] =the.m_InVar.m_TrajZD.m_dTrajAcc;
the.m_InVar.dAcc[O] = 0.0;
the.m_InVar.dAcc[l] = 0.0;
the.m_InVar.dAcc[2] = 0.0;
the.m_InVar.dAcc[3] = 0.0;
// the.m_InVar.dVel[O] = the.m_InVar.m_TrajZD.m_dTrajVel;
the.m_InVar.dVel[O] = 0.0;
the.m_InVar.dVel[l] = 0.0;
the.m_InVar.dVel[2] = 0.0;
the.m_InVar.dVel[3] = 0.0;
the.m_InVar.displacement[O] =the.m-yNavigation->m_dPressure;
the.m_InVar.displacement[1] = the.m-yNavigation->m_adINSAD[O] * 3.1416/
the.m_InVar.displacement[2] = the.m-yNavigation->m_adINSAD[I] * 3.1416/
the.m_InVar.displacement[3] = the.m-yNavigation->m_adINSAD[2] * 3.1416/
the.m_InVar.AdaptiveDOBControIO;
the.dob.DisturbanceObserve(the.m-yNavigation->m_adControlInput,
the.m_InVar.displacement);
//
//
the.dob.disturbanceEs[O];
the.dob.disturbanceEs[ I];
the.dob.disturbanceEs[2];
the.dob.disturbanceEs[3];
//
//
//
//
//
//
//
the.m-yNavigation->m_adControlInput[O] = 0.0;
the.m-yNavigation->m_adControlInput[l] = 0.0;
the.m-yNavigation->m_adControlInput[2] = the.m_InVar.forceControl[2] +
the.m-yNavigation->m_adControlInput[3] = the.m_InVar.forceControl[3] +
the.m-yNavigation->m_adControIInput[4] = the. m_InVar. forceContro1[4] +
the.m-yNavigation->m_adControlInput[5] = the.m_InVar.forceControl[5] +
the.m-yNavigation->m_adEstimation[O] =the.dob.distEs[O];
the.m-yNavigation->m_adEstimation[ I] = the.dob.distEs[ I];
the.m-yNavigation->m_adEstimation[2] = the.dob.disturbanceEs[O];
the.m-yNavigation->m_adEstimation[3] = the.dob.disturbanceEs[ I];
the.m-yNavigation->m_adEstimation[4] =the.dob.disturbanceEs[2];
the.m-yNavigation->m_adEstimation[5] = the.dob.disturbanceEs[3];
the.m-yNavigation->m_adDisturbance[O] = the.dob. velDOBXY[O];
the.m-yNavigation->m_adDisturbance[l] =the.dob.velDOBXY[I];
the.m-yNavigation->m_adDisturbance[2] = the.dob.accDOBXY[O];
the.m-yNavigation->m_adTemporary[O] = the.dob. velDOBXY[O];
the.m-yNavigation->m_adTemporary[l] = the.dob.velDOBXY[I];
the.m-yNavigation->m_adTemporary[2] = the.m_InVar.cthetaZ[4];
136
the.m_pNavigation->m_adTemporary[3] = the.m_InVar.cthetaRoPi[4];
the.m-'pNavigation->m_adTemporary[4] = the.m_InVar.cthetaYa[4];
the.m-'pNavigation->m_adTemporary[5] = the.m_InVar.velocity[3];
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
II X & Y Control: 300 msec Sampling
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
if(the.m_InVar.m_iMultirateCounter++ >= 10) {
the.m_InVar.mJMultirateCounter = 0;
RequestSendSensorDataO ;
II Calculate Sensor data for X, Y and Z
RequestSonarInterpretationO ;
PositionCal(the.m-'pNavigation->m_adSonar);
II
>m_adTargetPosition);
the.m_InVar.XYTrajGenerator(the.m-'pNavigation-
the.m-'pNavigation->m_adTargetPosition[O] +=
the.m_InVar.m_X.m_dHomeValue;
the.m_InVar.dPosXY[O] = the.m-'pNavigation-
>m_adTargetPosition[O];
the.m-'pNavigation->m_adTargetPosition[ 1] +=
the.m_InVar.m_Y.m_dHomeValue;
the.m_InVar.dPosXY[I] = the.m-'pNavigation-
>m_adTargetPosition[ 1];
II
>m_adSonar[4);
II
>m_adSonar[O);
the.m_InVar.displacementXY[O);
the.m_InVar.displacementXY[I);
the.m_InVar.displacementXY[O) = the.m-'pNavigation-
the.m_InVar.displacementXY[I) = the.m-'pNavigation-
the.m-'pNavigation->m_adPosition[O) =
the.m-'pNavigation->m_adPosition[1] =
the.m_InVar.AdaptiveDOBXYControIO;
the.dob.DisturbanceObserveXY(the.m-'pNavigation-
>m_adControlInput, the.m_InVar.displacementXY);
the.m-'pNavigation->m_adControlInput[O) = -
(the.m_InVar.forceControl[O] + the.dob.disturbanceEsXY[O]);
the.m-'pNavigation->m_adControlInput[ 1] = -
(the.m_InVar.forceControl[l] + the.dob.disturbanceEsXY[I]);
the.m-'pNavigation->m_adEstimation[O] =
the.dob.disturbanceEsXY[O];
the.m-.pNavigation->m_adEstimation[1] =
the.dob.disturbanceEsXY[ I];
the.m-'pNavigation->m_adTemporary[O] =
the.m_InVar.velocityXY[O];
the.m-'pNavigation->m_adTemporary[ 1] =
the.m_InVar.velocityXY[l];
}
137
}
else
}
SendCornrnand2ThrusterO ;
TestOutput(O) ;
GetSensorDataO ;
if(the.rn_InVar.rn_iMultirateCounter++ >= 10) {
the.rn_InVar.rn_iMultirateCounter = 0 ;
RequestSendSensorDataO ;
II Calculate Sensor data for X, Y and Z
RequestSonarInterpretationO ;
the. rn_InVar.Initial izeAIIVariablesO ;
the.rn-pNavigation->rn_adControlInput[O] = 0.0 ;
the.rn-pNavigation->rn_adControlInput[1] = 0.0 ;
the.m-pNavigation->rn_adControlInput[2] = 0.0 ;
the.rn-pNavigation->rn_adControlInput[3] = 0.0 ;
the.rn-pNavigation->rn_adControlInput[4] = 0.0 ;
the.rn-pNavigation->rn_adControlInput[5] = 0.0 ;
the.rn-pNavigation->rn_adEstirnation[O] = 0.0 ;
the.rn-pNavigation->rn_adEstirnation[l] = 0.0;
the.rn-pNavigation->rn_adEstirnation[2] = 0.0 ;
the.rn-pNavigation->rn_adEstirnation[3] = 0.0;
the.rn-pNavigation->rn_adEstirnation[4] = 0.0 ;
the.rn-pNavigation->rn_adEstirnation[5] = 0.0 ;
the.rn-pNavigation->rn_adDisturbance[O] = 0.0 ;
the.rn-pNavigation->rn_adDisturbance[l] = 0.0 ;
the.rn-pNavigation->m_adDisturbance[2] = 0.0 ;
the.rn-pNavigation->rn_adTernporary[O] = 0.0 ;
the.rn-pNavigation->rn_adTernporary[1] = 0.0 ;
the.rn-pNavigation->rn_adTernporary[2] = 0.0 ;
the.rn-pNavigation->rn_adTernporary[3] = 0.0 ;
the.rn-pNavigation->rn_adTernporary[4] = 0.0 ;
the.rn-pNavigation->rn_adTernporary[5] = 0.0;
the.rn_InVar.m_Ro.rn_dIntialValue = the.rn-pNavigation->rn_adINSAD[O] ;
the.rn_InVar.rn]i.rn_dIntiaIValue = the.rn-pNavigation->rn_adINSAD[I] ;
the.rn_InVar.rn_Ya.rn_dIntiaIValue = the.rn-pNavigation->rn_adINSAD[2];
the.rn_InVar.rn_ZD.rn_dIntialValue = the.rn-pNavigation->rn_dPressure ;
boolSettingFlag = OFF ;
the.rn-pNavigation->SetAUVControIStatus(OFF) ;
the.rn_InVar.rn_booINextTrajFlag = ON;
SendCornrnand2ThrusterO ;
138
void PositionCal(double *sonarData)
{
static double front[3], left[3];
double currentLeft, currentFront;
static oneTimeFlag;
double sonarToleranceLeft = 0.5, sonarToleranceFront = 0.6, maxTravelDistance = 0.033;
int i;
if(oneTimeFlag == 0)
{
oneTimeFlag = 1;
for(i = 0; i < 3; iH)
{
front[i] = sonarData[2];
left[i] =sonarData[4];
}
currentFront = sonarData[2];
currentLeft = sonarData[4];
if(fabs(currentFront-front[O]) > (sonarToleranceFront +maxTravelDistance))
currentFront = (front[O] + front[1] + front[2]) / 3.0;
if(fabs(currentLeft-left[O]) > (sonarToleranceLeft + maxTravelDistance))
currentLeft = (left[O] + left[l] + left[2]) / 3.0;
for(i = 0; i < 2; i H)
{
front[2 - i] = front[2-i-l];
left[2 - i] = left[2 -i-I];
}
front[O] = currentFront;
left[O] = currentLeft;
the.ill_InVar.Kalman(currentLeft, the.ill_InVar.xKalman, the.m_InVar.covX, 0.0,
the.ill_InVar.gainX);
the. ill_InVar.displacementXY[O] =the.ill_InVar.xKalman[O];
the.ill_InVar.velocityXY[O] = the.m_InVar.xKalman[l];
the.ill_InVar.Kalman(currentFront, the.m_InVar.yKalman, the.m_InVar.covY, 0.0,
the. ill_InVar.gainY);
the.ill_InVar.displacementXY[l] = the.m_InVar.yKalman[O];
the.m_InVar.velocityXY[l] =the.m_InVar.yKalman[l];
139
REFERENCE
[1] National Research Council, "Underwater Vehicles and National Needs", National
Academy Press, Washington, D. C., 1996.
[2] K. Ohishi, M. Nakao and K.Miyachi, "Microprocessor-Controlled DC Motor for
Load-Insensitive Position Servo System" IEEE Transactions of International
Electronics, vol. 34, pp. 44-49, 1987.
[3] T. Murakami, Kouhei Ohnishi, "Advanced Motion Control in Mechatronics",
Proceedings of the IEEE International Workshop on Intelligent Motion Control,
1990.8.
[4] T. Umeno, T. Kaneko, Y. Hori, "Robust Servosystem Design with Two Degrees of
Freedom and its Application to Novel Motion Control of Robot Manipulators",
IEEE Transactions on Industrial Electronics, Va. 40, No.5, October 1993.
[5] H. Lee, "Robust Digital Tracking Controller for High-Speed/High-Accuracy
Positioning Systems", Ph.D. Dissertation, 1994.
[6] H. Lee, M. Tomizuka, "Robust Motion Controller Design for High-Accuracy
Positioning Systems", IEEE Transactions on Industrial Electronics, Vol. 43, No.1,
February 1996.
[7] T. Murakami, N. Oda, Y. Miyasaka, K. Ohnishi, "A Motion Control Strategy Based
on Equivalent Mass Matrix in Multidegree-of-Freedom Manipulator", IEEE
Transactions on Industrial Electronics, Vol. 42, No.2, April 1995.
140
[8] K. Yamada, S. Komada, M. Ishida, T. Hori, "Characteristics of Servo System Using
High Order Disturbance Observer", Proceedings of the 35th Conference on
Decision and Control, December 1996.
[9] K. Yamada, S. Komada, M. Ishida, T. Hori, "A Study on Higher-order Disturbance
Observer and Robust Stability", Electrical Engineering in Japan, Vol. 128, No.1,
1999.
[10] S. Komada, N. Machii, T. Hori, "Control of Redundant Manipulators Considering
Order of Disturbance Observer", IEEE Transactions on Industrial Electronics Vol.
47, No.2, April 2000.
[11] S. Morimoto, H. Kameyama, Y. Takeda, "Speed Control System and Design of
Resonant System with Disturbance Observer", Electrical Engineering in Japan, Vol.
116, No.4, 1996.
[12] C. Kempf, S. Kobayashi, "Disturbance Observer and Feedforward Design for a
High-Speed Direct-Drive Positioning Table", IEEE Transactions on Control
Systems Technology, Vol. 7, No.5, September 1999.
[13] M. Tomizuka, "Zero Phase Error Tracking Algorithm for Digital Control",
Transactions of ASME, Journal of Dynamic Systems, Measurements. and Control,
Vol. 109, No.1, pp. 65-68, March 1987.
[14] Y. Oh, W. K. Chung, "Disturbance-Observer-Based Motion Control of Redundant
manipulators Using Inertially Decoupled Dynamics", IEEE/AMSE Transactions on
Mechatronics, Vol. 4, No.2, June 1999.
141
[15] M. Iwasaki, T. Shibata, N. Matsui, "Disturbance-Observer-Based Nonlinear
Friction Compensation in Table Drive System", IEEE/ASME Transactions on
Mechatronics, Vol. 4, No.1, March 1999.
[16] B. Yao, "Adaptive Robust Control of Nonlinear Systems with Application to
Control of Mechanical Systems", Ph.D. Dissertation, 1996.
[17] B. Choi, C. Choi, H. Lim, "Model Based Disturbance Attenuation for CNC
Machining Centers in Cutting Process", IEEE/ASME Transactions on
Mechatronics, Vol. 4, No.2, June 1999.
[18] Y. Fujimoto, A. Kawamura, "Robust Servo-system Based on Two-degree-of-
freedom Control with Sliding Mode" IEEE Trans. on Industrial Electronics, Vol 42,
no 3, pp. 272-280, June 1995.
[19] A. Kawamura, H. Hoh, K. Sakamoto, "Chattering Reduction of Disturbance
Observer Based Sliding Mode Control", IEEE Transactions on Industry
Applications, Vol. 30, No.2, Marchi April 1999.
[20] S. Kwon, W. Chung, Y. Youm, "Robust and Time-Optimal Control Strategy for
Coarsel Fine Dual-Stage Manipulators", Proceedings of the 2000 IEEE
International Conference on Robotics and Automation, April 2000.
[21] C. Liu, H. Peng, "Disturbance Observer Based Tracking Control" Transactions of
ASME, Vol. 122, June 2000.
[22] F. Lin, C. Lin, C. Hong, "Robust Control of Linear Synchronous Motor Servodrive
using Disturbance Observer and Recurrent Neural Network Compensator", IEE
Proceedings of Electrical. Power Application, Vol. 147, No.4, pp. 263-272, July
2000.
142
[23] L. Whitcomb, D. Yoerger, H. Singh and J. Howland, "Advances in Underwater
Robot Vehicles for Deep Ocean Exploration: Navigation, Control and Survey
Operations", Robotics Research 9: Proceedings of the Ninth International
Symposium of Robotics Research, pp. 346-353, Snowbird, Utah, USA, October
12, 1999.
[24] B. Jalving, "The NDRE-AUV Flight Control System", IEEE Journal of Oceanic
Engineering, Vol. 19, No.4, pp. 497 - 501, October 1994.
[25] A. Chellabi, M. Nahon, "Feedback Linearization Control of Undersea Vehicles",
OCEANS '93. 'Engineering in Harmony with Ocean'. Proceedings, 18-21 Oct. 1993
Page(s): 1410 -1415 voLl.
[26] Ola-Erik Fjellstad and Thor I. Fossen, "Position and Attitude Tracking of AUV's: A
Quaternion Feedback Approach", Journal of Oceanic Engineering, Vol. 19, No.4,
October 1994.
[27] A. Trebi-Ollennu, B. White, "Non-linear Robust Control Designs for a Remotely
Operated Underwater Vehicle Depth Control System", Proceedings ofInternational
Mechanical Engineers, pp. 201-214, Vol. 210,1996.
[28] B. White, "Robust Control of an Unmanned Underwater Vehicle", Proceedings of
the 37th IEEE Conference on Decision & Control, Tampa, Florida USA, December
1998.
[29] T. Koh, M. Lau, E. Low, G. Seet, S. Swei, P. Cheng, "A Study of the Control of an
Underactuated Underwater Robotic Vehicle", Proceedings of the 2002 IEEE/RSJ
International Conference on Intelligent Robots and Systems, Sept. 30-0ct. 5, 2002,
pp. 2049 -2054 vol.2.
143
[30] D. Yoerger, 1. Newman, "Demonstration of Closed-loop Trajectory Control of an
Underwater Vehicle", 1985 Proceedings of OCEANS, Vol. 17, pp. 1028 -1033,
Nov. 1985.
[31] D. Yoerger, 1. Slotine, "Robust Trajectory Control of Underwater Vehicles", IEEE
Journal of Oceanic Engineering, Vol. OE-I0, No.4, October 1985.
[32] F. Dougherty, T. Sherman, G. Woolweaver, G. Lovell, "An Autonomous
Underwater Vehicle (AUV) Flight Control System Using Sliding Mode Control",
1988 Proceedings of OCEANS, 31 Oct.-2 Nov. 1988 Page(s): 1265 -1270 volA.
[33] L. Rodrigues, P. Travares, M. Prado, "Sliding Mode Control of an AUV in the
Diving and Steering Planes", Proceedings of 1996 MTS/IEEE OCEANS,.23-26
Sept. 1996, Page(s): 576 -583 vol.2.
[34] A. Healey and D. Lienard, "Multivariable Sliding Mode Control for Autonomous
Diving and Steering of Unmanned Underwater Vehicles", IEEE Journal of Oceanic
Engineering, pp. 327-338, Vol. 18, No.3, July 1993.
[35] D. Marco, A. Healey, R. McGhee, D. Brutzman, R. Cristi, "Control Systems
Architecture, Navigation, and Communication Research Using the NPS Phoenix
Underwater Vehicle" 6th International Advanced Robotics Program Workshop on
Underwater Robotics, Toulon, France, March 27-29,1996.
[36] 1. Riedel, A. Healey, "Shallow Water Station Keeping of AUVs Using Multi-sensor
Fusion for Wave Disturbance Prediction and Compensation", OCEANS '98
Conference Proceedings, pp. 1064 -1068, Vol. 2, 1998.
144
[37] G. Campa, M. Innocenti, F. Nasuti, "Robust Control of Underwater Vehicles:
Sliding Mode Control vs. Mu Synthesis", Conference Proceedings of OCEANS '98,
pp. 1640-1644, Vol. 3,1998.
[38] M. Innocenti, G. Campa, "Robust Control of Underwater Vehicles: Sliding Mode
vs. LMI Synthesis," American Controls Conference, San Diego, CA, 1999.
[39] S. Hills, D. Yoerger, "A nonlinear sliding mode autopilot for unmanned undersea
vehicles", Proceedings of OCEANS '94. Oceans Engineering for Today's
Technology and Tomorrow's Preservation, pp. 93-97, Vol. 3,1994.
[40] P. Lee, S. Hong, Y. Lim, C. Lee, B. Jeon, and J. Park, "Discrete-Time Quasi-
Sliding Mode Control of an Autonomous Underwater Vehicle", IEEE Journal of
Oceanic Engineering, pp. 388-395, Vol. 24, No.3, July 1999.
[41] 1. Riedel, "Shallow Water Stationkeeping of an Autonomous Underwater Vehicle:
The Experimental Results of a Disturbance Compensation Controller", 2000
MTS/IEEE OCEANS Conference and Exhibition, Sept. 11-14, 2000. pp. 1017 -
1028 vol.2.
[42] D. Marco, A. Healey, "Command, Control, and Navigation Experimental Results
With the NPS Aries AUV", IEEE Journal of Oceanic Engineering, Vol. 26, No.4,
pp. 466 - 476, October 2001.
[43] M. Triantafyllou and M. Grosenbaugh, "Robust Control for Underwater Vehicle
System with Time Delays", IEEE Journal of Oceanic Engineering, pp. 146-151,
Vol. 16, No.1 January 1991.
145
[44] A. Lacaze, M. Meystel, "Baby Sub: A Conceptual Learning Approach to Planning
and Control of AUVs", OCEANS '93. 'Engineering in Harmony with Ocean'.
Proceedings, 18-21 Oct. 1993 Page(s): 1169 -1174 voU.
[45] G. Conte, A. Serrani, "Global Robust Tracking with Disturbance Attenuation for
Unmanned Underwater Vehicles", Proceedings of the 1998 IEEE International
Conference on Control Applications, pp. 1094-1098, Trieste, Italy 1-4 September
1998.
[46] D. Boskovic and M. Krstic, "Global Attitude/Position Regulation for Underwater
Vehicles", International Journal of Systems Science, 1999, volume 30, number 9,
pages 939-946.
[47] A. Menozzi, T. Galiardi, "Dynamics and Control of MTV: a Multipurpose
Unmanned Underwater Vehicle", Proceedings of the American Control Conference,
Chicago, Illinois, June 2000.
[48] C. Wit, E. Diaz, M. Perrier, "Control of Underwater Vehicle/Manipulator with
Composite Dynamics", Proceedings of the 1998 American Control Conference,
June 24-26, 1998, pp. 389 -393 vol.1.
[49] C. Wit, E. Diaz, M. Perrier, "Nonlinear Control of an Underwater
Vehicle/Manipulator with Composite Dynamics", IEEE Transactions on Control
Technology, pp. 948-960, Vol. 8, No.6, November 2000.
[50] E. Diaz, C. Wit, M. Perrier, "A Comparative Study of Neglected Dynamics on an
Underwater Vehicle/Manipulator System Under Nonlinear Robust Control",
Proceedings of 1998 OCEANS Conference, 28 Sept.-1 Oct. 1998 pp. 936 -940
vol.2.
146
[51] J. Kim, K. Lee, Y. Cho, H. Lee, and H. Park, "Mixed H
2
I H", control with
Regional Pole Placements for Underwater Vehicle Systems", Proceedings of the
American Control Conference, pp. 80-84, Chicago, Illinois, June 2000.
[52] Z. Feng, R. Allen, "H", Autopilot Design for an Autonomous Underwater Vehicle",
Proceedings of the 2002 IEEE International Conference on Control Applications,
Glasgow, Scotland, U. K., September 18-20,2002.
[53] 1. Riedel, A. Healey, "Model Based Predictive Control of AUVs for Station
Keeping in a Shallow Water Wave Environment", Proceedings International
Advanced Robotics Program IARP 98, pp. 77-102, University of South Louisiana,
February 18, 1998.
[54] R. Cristi, A. Healey, "Adaptive Identification and Control of an Autonomous
Underwater Vehicle" Proceedings of the 6th International Symposium on
Unmanned Untethered Submersible Technology, pp. 563-572, 1989.
[55] K. Goheen, E. Jefferys, "Multivariable Self-Tuning Autopilots For Autonomous
and Remotely Operated Underwater Vehicles", IEEE Journal of Oceanic
Engineering, Vol. 15, No.3 July 1990.
[56] 1. Cunha, R. Costa, L. Hsu, "Design of a High Performance Variable Structure
Position Control of ROV's", IEEE Journal of Oceanic Engineering, pp. 42-55, Vol.
20, No.1, January 1995.
[57] 1. Yuh, "Modeling and Control of Underwater Robotic Vehicles", IEEE
Transactions on Systems, Man, and Cybernetics, pp. 1475-1483, Vol. 20, No.6,
November/December 1990.
147
[58] S. Choi, G. Takashige, J. Yuh, "Experimental Study on an Underwater Robotic
Vehicle: ODIN", Proceedings of the 1994 Symposium on Autonomous Underwater
Vehicle Technology, 19-20 July 1994 Page(s): 79 -84.
[59] H. Mahesh, 1. Yuh, "Control of Underwater Robots m Working Mode",
Proceedings of the 1991 IEEE International Conference on Robotics and
Automation, Sacramento, CA, April 1991, pp. 2630 -2635 vol.3.
[60] 1. Yuh, "A learning Control System for Unmanned Underwater Vehicles",
Proceedings of 1995 MTS/IEEE OCEANS Conference, 9-12 Oct. 1995 pp. 1029 -
1032 vol.2.
[61] 1. Yuh, J. Nie, "Application of Non-regressor-based Adaptive Control to
Underwater Robots: Experiment", Computers and Electrical Engineering, pp. 169-
179, 26(2000).
[62] 1. Nie, 1. Yuh, E. Kardash and T. Fossen, "On-board Sensor-based Adaptive
Control of Small UUVs in Very Shallow Water", Int. Journal of Adaptive Control
Signal Process, pp.441-452, 2000, 14.
[63] D. Smallwood, L. Whitcomb, "Toward Model Based Dynamic Positioning of
Underwater Robotic Vehicles", Proceedings of 2001 MTS/IEEE OCEANS
Conference and Exhibition, Nov. 5-8,2001 pp. 1106 -1114, vol.2.
[64] G. Antonelli, S. Chiaverini, N. Sarkar, M. West, "Adaptive Control of an
Autonomous Underwater Vehicle: Experimental Results on ODIN", IEEE
Transactions on Control Systems Technology, Vol. 9, No.5, pp. 756 - 765,
September, 2001.
148
[65] T. Fujii, "Neural Networks for Ocean Engineering", 1995 Proceedings of IEEE
International Conference on Neural Networks, 27 Nov.-1 Dec. 1995, pp. 216 -219
vol. 1.
[66] 1. Yuh, "A Neural Net Controller For Underwater Robotic Vehicles", IEEE Journal
of Oceanic Engineering, Vol. 15, No.3 July 1990.
[67] 1. Yuh, "Learning Control for Underwater Robotic Vehicles", IEEE Control
Systems, pp. 39-46, 1994, 4.
[68] N. Seube, "Neural network learning rules for control: application to AUV tracking
control", 1991 IEEE Conference on Neural Networks for Ocean Engineering, Aug.
15-17,1991 pp. 185 -196.
[69] K. Venugopal, R. Sudhakar, "On-Line Learning Control of Autonomous
Underwater Vehicles Using Feedforward Neural Networks", IEEE Journal of
Oceanic Engineering, Vol. 17, No.4, October 1992.
[70] R. Sutton, C. Johnson, G. Roberts, "Depth Control of an Unmanned Underwater
Vehicle Using Neural Networks", 1994 Proceedings of OCEANS, 13-16 Sept.
1994, Page(s): 111/121 -Ill/125 vo1.3.
[71] K. Ishii, T. Ura, T. Fujii, "A Feed Forward Neural Network for Identification and
Adaptive Control of Autonomous Underwater Vehicles", Proceedings of IEEE
International Conference on Neural Networks 1994, Orlando, FL (1994.6) pp.3216-
3221.
[72] K. Ishii, T. Fujii and T. Ura, "A Quick Adaptation Method in a Neural Network
Based Control System for AUVs", Proceedings of the 1994 Symposium on
Autonomous Underwater Vehicle Technology, pp. 269 - 274, 19-20 July 1994.
149
[73] K. Ishii, T. Fujii, and T. Ura, "An On-line Adaptation Method in a Neural Network
Based Control System for AUVs", IEEE Journal of Oceanic Engineering, pp. 221-
228, Vol. 20, No.3, July 1995.
[74] K. Ishii, T. Fujii and T. Ura, "Neural Network System for On-line Controller
Adaptation and Its Application to Underwater Robot", Proceedings of the 1998
IEEE International Conference on Robotics & Automation, pp. 756-761, Leuven,
Belgium, May 1998.
[75] 1. Guo, F. Chiu, C. Wang, "Adaptive control of an autonomous underwater vehicle
testbed using neural networks", Proceedings of 1995 MTS/IEEE OCEANS, 9-12
Oct. 1995 Page(s): 1033 -1039 vol.2.
[76] L. Pollini, M. Innocenti, F. Nasuti, "Robust feedback linearization with neural
network for underwater vehicle control", Proceedings of 1997 MTS/IEEE
OCEANS Conference, Oct. 6-9,1997 pp. 12 - 16 voLl.
[77] D. Wettergreen, C.Gaskett and A. Zelinsky, "Autonomous Guidance and Control
for an Underwater Robotic Vehicle", 1999 International Conference on Field and
Service Robotics, Pittsburgh, USA, August 29-31, 1999.
[78] G. Campa, M. Sharma, A. Calise, M. Innocenti, "Neural Network Augmentation of
Linear Controllers with Application to Underwater Vehicles", Proceedings of the
American Control Conference, American Control Conference, 2000. June 28-30,
2000, pp. 75 - 79 vol.1.
[79] M. Lee, H. Choi, "A Robust Controller for Underwater Robot Manipulators",
Transactions on Neural Networks, Vol. 11, No.6, November 2000.
150
[80] G. Labonte, "Fast Adaptive Control of a Non-linear System By an Adline: Motion
in a Fluid", Proceedings of the 2002 International Conference on Neural Networks,
Vol. 2, pp. 1837-1841.
[81] 1. Li, P. Lee, S. Lee, "Motion Control of an AUV Using a Neural Network Adaptive
Controller", Proceedings of the 2002 International Symposium on Underwater
Technology, pp. 217-221, 16-19 April 2002.
[82] 1. Li, P. Lee, S. Lee, "Neural Net Based Nonlinear Adaptive Control for
Autonomous Underwater Vehicles", Proceedings of the 2002 IEEE Internal
Conference on Robotics and Automation, Washington DC, , pp. 1075-1080, May
2002.
[83] N. Kato, Y. Ito, 1. Kojima, etc., "Control Performance of Autonomous Underwater
Vehicle 'AQUA Explorer 1000' for Inspection of Underwater Cables", Proceedings
of OCEANS '94, Oceans Engineering for Today's Technology and Tomorrow's
Preservation, pp 135-140, Vol. 1, 1994.
[84] P. DeBitetto, "Fuzzy Logic for Depth Control of Unmanned Undersea Vehicles",
IEEE Journal of Oceanic Engineering, Vol. 20, No.3, July 1995.
[85] 1. Guo, S. Huang, "Control of an Autonomous Underwater Vehicle Testbed Using
Fuzzy Logic and Genetic Algorithms", Proceedings of the 1996 Symposium on
Autonomous Underwater Vehicle Technology, pp. 485 -489, June 2-6, 1996.
[86] B. Li, K. Hua, "The Nonlinear Control Using Fuzzy Logic for Spinning Underwater
Vehicle", 1997 IEEE International Conference on Intelligent Processing Systems,
pp. 223-226, Beijing, China, October 28-31.
151
[87] W. Lee, G. Kang, "A Fuzzy Model-based Controller of an Underwater Robotic
Vehicle under the Influence of Thruster Dynamics", Proceedings of the 1998 IEEE
International Conference on Robotics & Automation, pp. 750-755, Leuven,
Belgium, May 1998.
[88] T. Fossen, S. Sagatun, "Adaptive Control of Nonlinear Underwater Robotic
Systems", Proceedings of the 1991 IEEE International Conference on Robotics and
Automation, Sacromento, California, Aprial 1991.
[89] R. Cristi, F. Papoulias, A. Healey, "Adaptive Sliding Mode Control of Autonomous
Underwater Vehicles in the Dive Plane", IEEE Journal of Oceanic Engineering, pp.
152 -160, Vol. 15, No.3, July 1990.
[90] D. Yoerger, J. Slotine, "Adaptive Sliding Control of an Experimental Underwater
Vehicle", Proceedings of the 1991 IEEE International Conference on Robotics and
Automation, pp. 2746-2751, Sacramento, California, April 1991.
[91] M. Corradini, G. Orlando, "A Discrete Adaptive Variable-Structure Controller for
MIMO Systems, and Its Application to an Underwater ROV", IEEE Transactions
on Control Systems Technology, Vol. 5, No.3, May 1997.
[92] F. Song and S. Smith, "A Comparison of Sliding Mode Fuzzy Controller and Fuzzy
Sliding Mode Controller", NAFIPS'2000, The 19th International Conference of the
North American Fuzzy Information Processing Society, pp.480-484, 2000.
[93] F. Chiu, 1. Guo, C. Huang, W. Tsai, "Application of the Sliding Mode Fuzzy
Controller to the Guidance and Control of an Autonomous Underwater Vehicle",
Proceedings of the 2000 International Symposium on Underwater Technology, pp.
181 -186,2000.
152
[94] G. Page and K. Holappa, "Simulation and Control of an Autonomous Underwater
Vehicle Equipped with a Vectored Thruster" OCEANS 2000 MTS/IEEE
Conference and Exhibition, pp. 2129-2134, Vol. 3,2000.
[95] F. Song and S. Smith, "Design of Sliding Mode Fuzzy Controllers for an
Autonomous Underwater Vehicle without System Model", OCEANS'2000
MTS/IEEE, pp.835-840, 2000.
[96] F. Song and S. Smith, "A Comparison of Sliding Mode Fuzzy Controller and Fuzzy
Sliding Mode Controller", NAFIPS'2000, The 19th International Conference of the
North American Fuzzy Information Processing Society, pp.480-484, 2000.
[97] A. Trebi-Ollennu, B. Stacey, B. White, "A Direct Adaptive Fuzzy SMC - A Case
Study of ROV", Proceedings ofInternational Joint Conference of the Fourth IEEE
International Conference on Fuzzy Systems and The Second International Fuzzy
Engineering Symposium, pp. 1979 -1986, Vol. 4, 1995.
[98] M. Lee, H. Choi, "A Robust Neural Controller for Underwater Robot
Manipulators", IEEE Transactions on Neural Networks, pp. 1465-1470, Vol. 11,
NO.6, November 2000.
[99] 1. Akkizidis, B. Roberts, "Fuzzy Modeling & Fuzzy-Neuro Motion Control of an
Autonomous Underwater Robot", 1998 5th International Workshop on Advanced
Motion Control, pp. 641 -646, June 29 - Julyl, 1998.
[100]1. Wang, C. Lee and 1. Yuh, "Self-Adaptive Neuro-Fuzzy Control with Fuzzy Basic
Function for Network for Autonomous Underwater Vehicles", Proceedings of the
1999 IEEE/RSJ International Conference on Intelligent Robots and Systems, pp.
130-135.
153
[101]1. Wang and C. Lee, 1. Yuh, "Self-Adaptive Neuro-Fuzzy Systems with Fast
Parameter Learning for Autonomous Underwater Vehicle Control", Proceedings of
the 2000 IEEE International Conference on Robotics & Automation, pp. 3861-
3866, San Francisco, CA, April, 2000.
[102]1. Wang and C. Lee, "Efficient Neuro-Fuzzy Control Systems for Autonomous
Underwater Vehicle Control", Proceedings of the 2001 IEEE International
Conference on Robotics and Automation, pp. 2986-2991, Seoul, Korea, May, 2001.
[103]T. Kim and 1. Yuh, "A Novel Neuro-Fuzzy Controller for Autonomous Underwater
Vehicle", Proceedings of the 2001 IEEE International Conference on Robotics and
Automation, pp. 2350 -2355, vol.3, Seoul, Korea, May, 2001.
[104]H. Yu, J. Zhao, Y. Xu, "Tuning of Neuro-Fuzzy Controller by Real-Coded Genetic
Algorithm with Application to an Autonomous Underwater Vehicle Control
System", Proceedings of the First International Conference on Machine Learning
and Cybernetics, Beijing, 4-5 November 2002.
[105]S. Choi, 1. Yuh, N. Keevil, "Design of omni-directional underwater robotic
vehicle", Proceedings of 1993 OCEANS, pp. 1192 -1197 voLl, 18-21 Oct. 1993.
[106]T. Fossen, "Guidance and Control of Ocean Vehicles", John Wiley & Sons Ltd.,
1994.
[107] G. Indiveri, "Modeling and Identification of Underwater Robotic Systems", Ph.D.
thesis, Department of Communications, Computer and Systems Science, University
of Genova, Italy, 1998.
[108]1. Nie, "Adaptive Control of Autonomous Underwater Vehicles: Simulation and
Experiment", MS dissertation, December 1998.
154
[109]H. Choi, A. Hanai, S. Choi, 1. Yuh, "Development of an Underwater Robot, ODIN-
III", Proceedings of the 2003 IEEE/RSJ IROS, pp. 536-541, Las Vegas, Nevada,
USA, October 2003.
[110]E. Kardash, "Sonar-based Navigation and Control for Autonomous Underwater
Vehicles", Master of Science thesis, University of Hawaii & Norwegian University
of Science and Technology, 1998.
155

Você também pode gostar