Keywords

These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

1 Introduction

Unmanned aerial vehicles (UAVs) are used for a wide variety of tasks that require the UAV to be flown from one particular pose (position and attitude) to another. Most commonly, UAVs are flown from their current position and heading angle to a new desired position and heading angle. The ability to fly from one pose (or waypoint) to another is the fundamental building block upon which more sophisticated UAV navigation capabilities are built. For UAV missions involving sensors, the ability to position and orient the sensor over time is critically important. Example applications include wildlife observation and tracking, infrastructure monitoring (Rathinam et al. 2005; Frew et al. 2004; Egbert and Beard 2011), communication relays (Frew et al. 2009), meteorological measurements (Elston et al. 2010), and aerial surveillance (Rahmani et al. 2010; Elston and Frew 2008; Spry et al. 2005). Positioning and orienting the sensor is accomplished in part by planning and following paths through or above the sensing domain. Two-dimensional (2D) path planning and following at a constant altitude through unobstructed airspace is common, but as mission scenarios become increasingly sophisticated by requiring flight in threedimensional (3D) terrain, the need for full 3D planning and guidance algorithms is becoming increasingly important.

For a vehicle that moves in a 2D plane at constant forward speed with a finite turn-rate constraint, the minimum-distance path between two configurations is termed a Dubins path. The initial and final configurations are defined by a 2D position in the plane of motion and an orientation. It has been shown that the optimal Dubins path in the absence of wind is composed of a constant radius turn, followed by a straight-line path, followed by another constant radius turn (Dubins 1957). A vehicle that follows Dubins paths is often termed a Dubins car. There have been a wide variety of path-planning techniques proposed for mobile robots based on the Dubins car model (e.g., Hanson et al. 2011; Balluchi et al. 1996; Anderson and Milutinovic 2011; Karaman and Frazzoli 2011; Cowlagi and Tsiotras 2009; Yong and Barth 2006). The Dubins car model has also been used extensively for UAV applications by constraining the air vehicle to fly at a constant altitude (e.g., Yu and Beard 2013; Sujit et al. 2007; Yang and Kapila 2002; Shima et al. 2007).

The Dubins car model was recently extended to three dimensions to create the Dubins airplane model, where in addition to turn-rate constraints, a climb-rate constraint was added (Hosak and Ghose 2010; Chitsaz and LaValle 2007; Rahmani et al. 2010). Minimum-distance paths for the Dubins airplane were also derived in Chitsaz and LaValle (2007), using the Pontryagin minimum principle (Lewis 1986). However, in Chitsaz and LaValle (2007) some practical issues were not considered, leaving a gap between the theory and implementation on actual UAVs. The purpose of this chapter is to fill that gap. In particular, alternative equations of motion for the Dubins airplane model that include airspeed, flight-path angle, and bank angle are given. The kinematic equations of motion presented in this chapter are standard in the aerospace literature. The chapter also describes how to implement Dubins airplane paths using low-level autopilot loops, vector-field guidance laws for following straight lines and helices, and mode switching between the guidance laws.

In addition to the complexity of a third dimension of motion, Dubins airplane paths are more complicated than Dubins car paths. In particular, when the altitude component of the path falls within a specific range, there are an infinite number of paths that satisfy the minimum-distance objective. This chapter also proposes specific choices for paths that make practical sense for many UAV mission scenarios. Specifically, the path that also maximizes the average altitude of the path is selected.

The software architecture proposed in this chapter is similar to that discussed in Beard and McLain (2012) and is shown in Fig. 68.1. At the lowest level is the fixed-wing UAV. A state estimator processes sensors and produces the estimates of the state required for each of the higher levels. A low-level autopilot accepts airspeed, flight-path angle, and bank angle commands. The commands for the low- level autopilot are produced by a vector-field guidance law for following either straight-line paths or helical paths. The minimum-distance Dubins airplane path between two configurations is computed by the path manager, which also switches between commanding straight-line paths and helical paths.

Fig. 68.1
figure 1

Flight control architecture proposed in this chapter

This chapter will not discuss state estimation using the available sensors, but the interested reader is referred to Beard and McLain (2012) and other publications on state estimation for UAVs (see, e.g., Mahony et al. 2008; Misawa and Hedrick 1989; Brunke and Campbell 2004). Section 68.2 briefly describes assumptions on the unmanned aircraft and how the low-level autopilot is configured to produce the Dubins airplane kinematic model. Section 68.3 describes the vector-field guidance strategy used in this chapter for following both straight lines and helices. The Dubins airplane paths and the path manager used to follow them are discussed in Sect. 68.4. Section 68.5 offers concluding remarks.

2 Equations of Motion for the Dubins Airplane

Unmanned aircraft, particularly smaller systems, fly at relatively low airspeeds causing wind to have a significant effect on their performance. Since wind effects are not known prior to the moment they act on an aircraft, they are typically treated as a disturbance to be rejected in real time by the flight control system, rather than being considered during the path planning. It has been shown that vector-field-based path following methods, such as those employed in this chapter, are particularly effective at rejecting wind disturbances (Nelson et al. 2007). Treating wind as a disturbance also allows paths to be planned relative to the inertial environment, which is important as UAVs are flown in complex 3D terrain. Accordingly, when the Dubins airplane model is used for path planning, the effects of wind are not accounted for when formulating the equations of motion. In this case, the airspeed V is the same as the groundspeed, the heading angle ψ is the same as the course angle (assuming zero sideslip angle), and the flight-path angle γ is the same as the air-mass-referenced flight-path angle (Beard and McLain 2012).

Figure 68.2 depicts a UAV flying with airspeed V, heading angle ψ, and flight-path angle γ. Denoting the inertial position of the UAV as (r n , r e , r d ), the kinematic relationship between the inertial velocity, \({\bf{v}} = \left( {\dot r_n ,\dot r_e ,\dot r_d } \right)^{\rm{{\rm \top }}} \), and the airspeed, heading angle, and flight-path angle can be easily visualized as

$$\left( {\matrix{ {\dot r_n } \cr {\dot r_e } \cr {\dot r_d } \cr } } \right) = \left( {\matrix{ {V\cos \psi \cos \gamma } \cr {V\sin \psi \cos \gamma } \cr { - V\sin \gamma } \cr } } \right),$$
Fig. 68.2
figure 2

Graphical representation of aircraft kinematic model

where V = ||v||.

This chapter assumes that a low-level autopilot regulates the airspeed V to a constant commanded value V c, the flight-path angle γ to the commanded flight-path angle γ c, and the bank angle ϕ to the commanded bank angle ϕ c. In addition, the dynamics of the flight-path angle and bank angle loops are assumed to be sufficiently fast that they can be ignored for the purpose of path following. The relationship between the heading angle ψ and the bank angle ϕ is given by the coordinated turn condition (Beard and McLain 2012)

$$\dot \psi = {g \over V}\tan \phi ,$$

where g is the acceleration due to gravity.

Under the assumption that the autopilot is well tuned and the airspeed, flight-path angle, and bank angle states converge with the desired response to their commanded values, then the following kinematic model is a good description of the UAV motion:

$$\matrix{ {\dot r_n = V\cos \psi \cos \gamma ^c } \cr {\dot r_e = V\sin \psi \cos \gamma ^c } \cr {\dot r_d = - V\sin \gamma ^c } \cr {\dot \psi = {g \over V}\tan \phi ^c .} \cr } $$
(68.1)

Physical capabilities of the aircraft place limits on the achievable bank and flight-path angles that can be commanded. These physical limits on the aircraft are represented by the following constraints:

$$\left| {\phi ^c } \right| \le \bar \phi $$
(68.2)
$$\left| {\gamma ^c } \right| \le \bar \gamma .$$
(68.3)

The kinematic model given by (68.1) with the input constraints (68.2) and (68.3) will be referred to as the Dubins airplane. This model builds upon the model originally proposed for the Dubins airplane in Chitsaz and LaValle (2007), which is given by

$$\matrix{ {\dot r_n } \hfill & = \hfill & {V\cos \psi } \hfill \cr {\dot r_e } \hfill & = \hfill & {V\sin \psi } \hfill \cr {\dot r_d } \hfill & = \hfill & {u_1 \,\,\left| {u_1 } \right| \le 1} \hfill \cr {\dot \psi } \hfill & = \hfill & {u_2 \,\,\left| {u_2 } \right| \le 1} \hfill \cr } $$
(68.4)

Although (68.1) is similar to (68.4), it captures the aircraft kinematics with greater accuracy and provides greater insight into the aircraft behavior and is more consistent with commonly used aircraft guidance models. Note, however, that (68.1) is only a kinematic model that does not include aerodynamics, wind effects, or engine/thrust limits. While it is not sufficiently accurate for low-level autopilot design, it is well suited for high-level path-planning and path-following control design. In-depth discussions of aircraft dynamic models can be found in Phillips (2010), Stevens and Lewis (2003), Nelson (1998) and Yechout et al. (2003).

3 3D Vector-Field Path Following

This section shows how to develop guidance laws to ensure that the kinematic model (68.1) follows straight-line and helical paths. Section 68.4 shows how straight-line and helical paths are combined to produce minimum-distance paths between start and end configurations.

3.1 Vector-Field Methodology

The guidance strategy will use the vector-field methodology proposed in Gonçalves et al. (2010), and this section provides a brief overview. The path to be followed in ℝ3 is specified as the intersection of two two-dimensional manifolds given by α 1(r) = 0 and α 2(r) = 0 where α 1 and α 2 have bounded second partial derivatives, and where r ∈ ℝ3. An underlying assumption is that the path given by the intersection is connected and one-dimensional. Defining the function

$$V\left( {\bf{r}} \right) = {1 \over 2}\alpha _1^2 \left( {\bf{r}} \right) + {1 \over 2}\alpha _2^2 \left( {\bf{r}} \right)$$

gives

$${{\partial V} \over {\partial {\bf{r}}}} = \alpha _1 \left( {\bf{r}} \right){{\partial \alpha _1 } \over {\partial {\bf{r}}}}\left( {\bf{r}} \right) + \alpha _2 \left( {\bf{r}} \right){{\partial \alpha _2 } \over {\partial {\bf{r}}}}\left( {\bf{r}} \right).$$

Note that \( - {{\partial V} \over {\partial {\bf{r}}}}\) is a vector that points toward the path. Therefore following \( - {{\partial V} \over {\partial {\bf{r}}}}\) will transition the Dubins airplane onto the path. However, simply following \( - {{\partial V} \over {\partial {\bf{r}}}}\) is insufficient since the gradient is zero on the path. When the Dubins airplane is on the path, its direction of motion should be perpendicular to both \({{\partial \alpha _1 } \over {\partial {\bf{r}}}}\) and \({{\partial \alpha _2 } \over {\partial {\bf{r}}}}\). Following Gonçalves et al. (2010) the desired velocity vector u′ ∈ ℝ3 can be chosen as

$${\bf{u'}} = - K_1 {{\partial V} \over {\partial {\bf{r}}}} + K_2 {{\partial \alpha _1 } \over {\partial {\bf{r}}}} \times {{\partial \alpha _2 } \over {\partial {\bf{r}}}},$$
(68.5)

where K 1 and K 2 are symmetric tuning matrices. It is shown in Gonçalves et al. (2010) that the dynamics \({\bf{\dot r}} = {\bf{u'}}\), where u′ is given by Eq. (68.5), results in r asymptotically converging to a trajectory that follows the intersection of α 1 and α 2 if K 1 is positive definite, and where the definiteness of K 2 determines the direction of travel along the trajectory.

The problem with Eq. (68.5) is that the magnitude of the desired velocity u′ may not equal V, the velocity of the Dubins airplane. Therefore u′ is normalized as

$${\bf{u}} = V{{{\bf{u'}}} \over {\left\| {{\bf{u'}}} \right\|}}.$$
(68.6)

Fortunately, the stability proof in Gonçalves et al. (2010) is still valid when u′ is normalized as in Eq. (68.6).

Setting the NED components of the velocity of the Dubins airplane model given in Eq. (68.1) to u = (u 1, u 2, u 3) gives

$$\matrix{ {V\cos \psi ^d \cos \gamma ^c } \hfill & { = u_1 } \hfill \cr {V\sin \psi ^d \cos \gamma ^c } \hfill & { = u_2 } \hfill \cr { - V\sin \gamma ^c } \hfill & { = u_3 .} \hfill \cr } $$

Solving for the commanded flight-path angle γ c and the desired heading angle ψ d results in the expressions

$$\matrix{ {\gamma ^c = - {\rm{sat}}_\gamma ^ - \left[ {\sin ^{ - 1} \left( {{{u_3 } \over V}} \right)} \right]} \hfill \cr {\psi ^d = {\rm{atan2}}\left( {u_{\rm{2}} ,u_1 } \right),} \hfill \cr } $$
(68.7)

where atan2 is the four quadrant inverse tangent and where the saturation function is defined as

$${\rm{sat}}_{\rm{a}} \left[ x \right] = \left\{ {\matrix{ a \hfill & {{\rm{if}}\,x \ge a} \hfill \cr { - a} \hfill & {{\rm{if}}\,{\rm{x}} \le - a.} \hfill \cr x \hfill & {{\rm{otherwise}}} \hfill \cr } } \right.$$

Assuming the inner-loop lateral-directional dynamics are accurately modeled by the coordinated-turn equation, roll-angle commands yielding desirable turn performance can be obtained from the expression

$$\phi ^c = {\rm{sat}}_\phi ^ - \left[ {k_\phi \left( {\psi ^d - \psi } \right)} \right],$$
(68.8)

where k ϕ is a positive constant.

Sections 68.3.2 and 68.3.3 apply the framework described in this section to straight-line following and helix following, respectively.

3.2 Straight-Line Paths

A straight-line path is described by the direction of the line and a point on the line. Let c = (c n , c e , c d ) be an arbitrary point on the line, and let the direction of the line be given by the desired heading angle from north ψ and the desired flight-path angle γ measured from the inertial north-east plane. Therefore,

$${\bf{q}}_\ell = \left( {\matrix{ {q_n } \hfill \cr {q_e } \hfill \cr {q_d } \hfill \cr } } \right) \buildrel \Delta \over = \left( {\matrix{ {\cos \psi _\ell \cos \gamma _\ell } \hfill \cr {\sin \psi _\ell \cos \gamma _\ell } \hfill \cr { - \sin \gamma _\ell } \hfill \cr } } \right)$$

is a unit vector that points in the direction of the desired line. The straight-line path is given by

$${\cal P}_{{\rm{line}}} \left( {{\bf{c}}_{\ell ,} \psi _\ell ,\gamma _\ell } \right) = \left\{ {{\bf{r}} \in \mathbb{R}^3 :{\bf{r}} = {\bf{c}}_\ell + \sigma {\bf{q}}_\ell ,\sigma \in \mathbb{R} } \right\}.$$
(68.9)

A unit vector that is perpendicular to the longitudinal plane defined by q is given by

$${\bf{n}}_{{\rm{lon}}} \buildrel \Delta \over = \left( {\matrix{ { - \sin \psi _\ell } \hfill \cr {\cos \psi _\ell } \hfill \cr 0 \hfill \cr } } \right).$$

Similarly, a unit vector that is perpendicular to the lateral plane defined by q is given by

$${\bf{n}}_{{\rm{lat}}} \buildrel \Delta \over = {\bf{n}}_{{\rm{lon}}} \times {\bf{q}}_\ell = \left( {\matrix{ { - \cos \psi _\ell \sin \gamma _\ell } \hfill \cr { - \sin \psi _\ell \sin \gamma _\ell } \hfill \cr { - \cos \gamma _\ell } \hfill \cr } } \right).$$

It follows that \({\mathcal P}\) line is given by the intersection of the surfaces defined by

$$\alpha _{{\rm{lon}}} \left( {\bf{r}} \right) \buildrel \Delta \over = {\bf{n}}_{{\rm{lon}}}^ \top \left( {{\bf{r}} - {\bf{c}}_\ell } \right) = 0$$
(68.10)
$$\alpha _{{\rm{lat}}} \left( {\bf{r}} \right) \buildrel \Delta \over = {\bf{n}}_{{\rm{lat}}}^ \top \left( {{\bf{r}} - {\bf{c}}_\ell } \right) = 0.$$
(68.11)

Figure 68.3 shows q , c , and the surfaces defined by α lon(r) = 0 and α lat(r) = 0.

Fig. 68.3
figure 3

This figure shows how the straight-line path \({\mathcal P}\) line (c , ψ , γ ) is defined by the intersection of the two surfaces given by α lon (r) = 0 and α lat(r) = 0

The gradients of α lon and α lat are given by

$${{\partial \alpha _{{\rm{lon}}} } \over {\partial {\bf{r}}}} = {\bf{n}}_{{\rm{lon}}} $$
$${{\partial \alpha _{{\rm{lat}}} } \over {\partial {\bf{r}}}} = {\bf{n}}_{{\rm{lat}}} .$$

Therefore, before normalization, the desired velocity vector is given by

$${\bf{u'}}_{{\rm{line}}} = K_1 \left( {{\bf{n}}_{{\rm{lon}}} {\bf{n}}_{{\rm{lon}}}^ \top + {\bf{n}}_{{\rm{lat}}} {\bf{n}}_{{\rm{lat}}}^ \top } \right)\left( {{\bf{r}} - {\bf{c}}_\ell } \right) + K_2 \left( {{\bf{n}}_{{\rm{lon}}} \times {\bf{n}}_{{\rm{lat}}} } \right).$$
(68.12)

3.3 Helical Paths

A time-parameterized helical path is given by

$${\bf{r}}\left( t \right) = {\bf{c}}_h + \left( {\matrix{ {R_h \cos \left( {\lambda _h t + \psi _h } \right)} \hfill \cr {R_h \sin \left( {\lambda _h t + \psi _h } \right)} \hfill \cr { - tR_h \tan \lambda _h } \hfill \cr } } \right),$$
(68.13)

where \({\bf{r}}\left( t \right) = \left( {\matrix{ {r_n } \hfill \cr {r_e } \hfill \cr {r_d } \hfill \cr } } \right)\left( t \right)\) is the position along the path, c h = (c n , c e , c d ) is the center of the helix, and the initial position of the helix is

$${\bf{r}}\left( 0 \right) = {\bf{c}}_h + \left( {\matrix{ {R_h \cos \psi _h } \cr {R_h \sin \psi _h } \cr 0 \cr } } \right)$$

and where R h is the radius, λ h = +1 denotes a clockwise helix (NESW), and λ h = −1 denotes a counterclockwise helix (NWSE), and where γ h is the desired flight-path angle along the helix.

To find two surfaces that define the helical path, the time parameterization in (68.13) needs to be eliminated. Equation (68.13) gives

$$\left( {r_n - c_n } \right)^2 + \left( {r_e - c_e } \right)^2 = R_h^2 .$$

In addition, divide the east component of rc h by the north component to get

$$\tan \left( {\lambda _h t + \psi _h } \right) = {{r_e - c_e } \over {r_n - c_n }}$$

Solving for t and plugging into the third component of (68.13) gives

$$r_d - c_d = - {{R_h \tan \gamma _h } \over {\lambda _h }}\tan ^{ - 1} \left( {{{r_e - c_e } \over {r_n - c_n }}} \right)\psi _h .$$

Therefore, normalizing these equations by R h results in

$$\matrix{ {\alpha _{{\rm{cyl}}} \left( {\bf{r}} \right) = \left( {{{r_n - c_n } \over {R_h }}} \right)^2 + \left( {{{r_e - c_e } \over {R_h }}} \right)^2 - 1} \hfill \cr {\alpha _{{\rm{pl}}} \left( {\bf{r}} \right) = \left( {{{r_d - c_d } \over {R_h }}} \right) + {{\tan \gamma _h } \over {{\rm{\lambda }}_h }}\left( {\tan ^{ - 1} \left( {{{r_e - c_e } \over {r_n - c_n }}} \right) - \psi _h } \right).} \hfill \cr } $$

Normalization by R h makes the gains on the resulting control strategy invariant to the size of the orbit.

A helical path is then defined as

$${\cal P}_{{\rm{helix}}} \left( {{\bf{c}}_h ,\psi _h ,\lambda _h ,R_h ,\gamma _h } \right) = \left\{ {{\bf{r}} \in \mathbb{R}^3 :\alpha _{{\rm{cyl}}} \left( {\bf{r}} \right) = 0\,{\rm{and}}\,\alpha _{{\rm{pl}}} \left( {\bf{r}} \right) = 0} \right\}.$$
(68.14)

The two surfaces α cyl(r) = 0 and α pl(r) = 0 are shown in Fig. 68.4 for parameters c h = (0, 0, 0), R h = 30 m, \(\gamma _h = {{15\pi } \over {180}}\) rad, and λ h = +1. The associated helical path is the intersection of the two surfaces.

Fig. 68.4
figure 4

A helical path for parameters c h = (0; 0; 0), R h = 30 m, \(\gamma _h = {{15\pi } \over {180}}\) rad, and γ h = +1

The gradients of α cyl and α pl are given by

$$ \begin{array}{ll}{{{\partial \alpha _{{\rm{cyl}}} } \over {\partial {\bf{r}}}} = \left( {2{{r_n - c_n } \over {R_h }},2{{r_e - c_e } \over {R_h }},0} \right)^ \top} \\ {{{\partial \alpha _{{\rm{cyl}}} } \over {\partial {\bf{r}}}} = \left( {{{\tan \gamma _h } \over {\lambda _h }}{{ - \left( {r_e - c_e } \right)} \over {\left( {r_n - c_n } \right)^2 + \left( {r_e - c_e } \right)^2 }},{{\tan \gamma _h } \over {\lambda _h }}{{\left( {r_n - c_e } \right)} \over {\left( {r_n - c_n } \right)^2 + \left( {r_e - c_e } \right)^2 }},{1 \over {R_h }}} \right)^ \top} . \end{array}$$

Before normalization, the desired velocity vector is given by

$${\bf{u'}}_{{\rm{helix}}} = K_1 \left( {\alpha _{{\rm{cyl}}} {{\partial \alpha _{{\rm{cyl}}} } \over {\partial {\bf{r}}}} + \alpha _{{\rm{pl}}} {{\partial \alpha _{{\rm{pl}}} } \over {\partial {\bf{r}}}}} \right) + \lambda K_2 \left( {{{\partial \alpha _{{\rm{cyl}}} } \over {\partial {\bf{r}}}} \times {{\partial \alpha _{{\rm{pl}}} } \over {\partial {\bf{r}}}}} \right),$$
(68.15)

where

$${{\partial \alpha _{{\rm{cyl}}} } \over {\partial {\bf{r}}}} \times {{\partial \alpha _{{\rm{pl}}} } \over {\partial {\bf{r}}}} = {2 \over {R_h }}\left( {{{r_e - c_e } \over {R_h }}, - {{r_n - c_n } \over {R_h }},\lambda _h \tan \gamma _h } \right)^ \top .$$

4 Minimum-Distance Airplane Paths

This section describes how to concatenate straight-line and helix paths to produce minimum-distance paths between two configurations for the Dubins airplane model. A configuration is defined as the tuple (z n , z e , z d , ψ), where (z n , z e , z d ) is a north-east-down position referenced to an inertial frame, and ψ is a heading angle measured from north. Given the kinematic model (68.1) subject to the constraints (68.2) and (68.3), a Dubins airplane path refers to a minimum-distance path between a start configuration (z ns ,z es ,z ds , ψ s ) and an end configuration (z ne , z ee , z de , ψ e ). Minimum-distance paths for the Dubins airplane are derived in Chitsaz and LaValle (2007) using the Pontryagin Maximum Principle for the dynamics given in (68.4) with constraints \(\bar \gamma = 1\) and \(\bar \phi = 1\). This section recasts the results from Chitsaz and LaValle (2007) using the standard aircraft kinematic model given in (68.1) using the constraints (68.2) and (68.3).

4.1 Dubins Car Paths

Minimum-distance paths for the Dubins airplane are closely related to minimum-distance paths for the Dubins car. This section briefly reviews Dubins car paths, which were originally developed in Dubins (1957) using the notation and methods defined in Beard and McLain (2012).

The Dubins car model is a subset of (68.4) given by

$$\matrix{ {\dot r_n = V\cos \psi } \hfill \cr {\dot r_n = V\sin \psi } \hfill \cr {\dot \psi = u,} \hfill \cr } $$
(68.16)

where |u| ≤ ū. For the Dubins car, the minimum turn radius is given by

$$R_{\min } = V/\bar u.$$
(68.17)

The Dubins car path is defined as the minimum-distance path from the start configuration (z ns , z es , ψ s ) to the end configuration (z ne , z ee , ψ e ). As shown in Dubins (1957), the minimum-distance path between two different configurations consists of a circular arc of radius R min that starts at the initial configuration, followed by a straight line, and concluding with another circular arc of radius R min that ends at the final configuration.

As shown in Fig. 68.5, for any given start and end configurations, there are four possible paths consisting of an arc, followed by a straight line, followed by an arc. RSR is a right-handed arc followed by a straight line followed by another righthanded arc. RSL is a right-handed arc followed by a straight line followed by a left-handed arc. LSR is a left-handed arc followed by a straight line followed by a right-handed arc. LSL is a left-handed arc followed by a straight line followed by another left-handed arc. The Dubins path is defined as the case with the shortest path length.

Fig. 68.5
figure 5

Given a start configuration (z ns , z es , ψ s ), an end configuration (z ne , z ee , ψ e ), and a radius R, there are four possible paths consisting of an arc, a straight line, and an arc. The Dubins path is defined as the case that results in the shortest path length, which for this scenario is RSR

As explained in Beard and McLain (2012), the guidance algorithm for following a Dubins car path consists of switching between orbit following and straight-line following. Figure 68.6 shows the parameters that are required by the guidance algorithm to follow a Dubins car path. Given that the vehicle configuration is close to the start configuration (z s , ψ s ), the vehicle is initially commanded to follow an orbit with center c s and orbit direction λ s . The orbit is followed until the vehicle crosses half-plane \({\mathcal H}\) s (w s , q s ), or in other words until its position r satisfies

$$\left( {{\bf{r}} - {\bf{w}}_s } \right)^ \top {\bf{q}}_s \ge 0,$$
Fig. 68.6
figure 6

The parameters that are required by the guidance algorithm to follow a Dubins car path

where w s is a position on the half-plane and q s is a unit vector orthogonal to the halfplane. The vehicle then follows the straight line defined by (w s , q s ) until it crosses half-plane \({\mathcal H}\) (w , q ). It then follows the orbit with center c e and direction λ e until it crosses half-plane \({\mathcal H}\) e (w e , q e ) and completes the Dubins car path. Accordingly the parameters that define a Dubins car path are given by

$${\cal D}_{{\rm{car}}} = \left( {R,{\bf{c}}_s ,\lambda _s ,{\bf{w}}_s ,{\bf{q}}_s ,{\bf{w}}_\ell ,{\bf{q}}_\ell ,{\bf{c}}_e ,\lambda _e ,{\bf{w}}_e ,{\bf{q}}_e } \right).$$
(68.18)

The length of the Dubins car path depends explicitly on the turning radius R and will be denoted as L car(R). Details of how to compute L car(R) as well as the parameters \({\mathcal D}\) car are given in Beard and McLain (2012).

4.2 Dubins Airplane Paths

Dubins airplane paths are more complicated than Dubins car paths because of the altitude component. As described in Chitsaz and LaValle (2007) there are three different cases for Dubins airplane paths that depend on the altitude difference between the start and end configuration, the length of the Dubins car path, and the flight-path limit \(\bar \gamma \). The three cases are defined to be low altitude, medium altitude, and high altitude. In contrast to (68.17), the minimum turn radius for a Dubins airplane is given by

$$R_{\min } = {{V^2 } \over g}\tan \bar \phi .$$
(68.19)

The altitude gain between the start and end configuration is said to be low altitude if

$$\left| {z_{de} - z_{ds} } \right| \le L_{{\rm{car}}} \left( {R_{\min } } \right)\tan \bar \gamma ,$$

where the term on the right is the maximum altitude gain that can be obtained by flying at flight-path angle \( \pm \bar \gamma \) for a distance of L car(R min). The altitude gain is said to be medium altitude if

$$L_{{\rm{car}}} \left( {R_{\min } } \right)\tan \bar \gamma \left| {z_{de} - z_{ds} } \right| \le \left[ {L_{{\rm{car}}} \left({R_{\min } } \right) + 2\pi R_{\min } } \right]\tan \bar \gamma ,$$

where the addition of the term 2πR min accounts for adding one orbit at radius Rmin to the path length. The altitude gain is said to be high altitude if

$$\left| {z_{de} - z_{ds} } \right|\,>\,\left[ {L_{{\rm{car}}} \left( {R_{\min } } \right) + 2\pi R_{\min } } \right]\tan \bar \gamma .$$

The following three sections describe how Dubins car paths are modified to produce Dubins airplane paths for low, high, and medium-altitude cases.

4.2.1 Low-Altitude Dubins Paths

In the low-altitude case, the altitude gain between the start and end configurations can be achieved by flying the Dubins car path with a flight-path angle satisfying constraint (68.3). Therefore, the optimal flight-path angle can be computed by

$$\gamma * = \tan ^{ - 1} \left( {{{\left| {z_{de} - z_{ds} } \right|} \over {L_{{\rm{car}}} (R_{\min } )}}} \right).$$

The length of the Dubins airplane path is given by

$$L_{{\rm{air}}} (R_{\min } ,\gamma *) = {{L_{{\rm{car}}} (R_{\min } )} \over {\cos \gamma *}}.$$

The parameters required to define a low-altitude Dubins airplane path are the same parameters for the Dubins car given in (68.18) with the addition of the optimal flight-path angle γ* and the angles of the start and end helices ψ s and ψ e .Note that for the Dubins car path ψ s and ψ e are not required since the orbit is flat and does not have a starting location. However, as described in Sect. 68.3.3, to follow a helix, the start angle is required. Figure 68.7 shows several Dubins airplane paths for the low-altitude case where the altitude difference is 25 m over a typical Dubins car path length of 180 m.

Fig. 68.7
figure 7

Dubins airplane paths for the low-altitude case

4.2.2 High-Altitude Dubins Paths

In the high-altitude case, the altitude gain cannot be achieved by flying the Dubins car path within the flight-path angle constraints. As shown in Chitsaz and LaValle (2007), the minimum-distance path is achieved when the flight-path angle is set at its limit of \( \pm \bar \gamma \), and the Dubins car path is extended to facilitate the altitude gain. While there are many different ways to extend the Dubins car path, this chapter extends the path by spiraling a certain number of turns at the beginning or end of the path and then by increasing the turn radius by the appropriate amount.

For UAV scenarios, the most judicious strategy is typically to spend most of the trajectory at as high an altitude as possible. Therefore, if the altitude at the end configuration is higher than the altitude at the start configuration, then the path will be extended by a climbing helix at the beginning of the path, as shown in the RSR and RSL cases in Fig. 68.8. If on the other hand, the altitude at the start configuration is higher than the end configuration, then the path will be extended by a descending helix at the end of the path, as shown in the LSR and LSL cases in Fig. 68.8. If multiple turns around the helix are required, then the turns could be split between the start and end helices and still result in the same path length. For high-altitude Dubins paths, the required number of turns in the helix will be the smallest integer k such that

$$(L_{{\rm{car}}} (R_{\min } ) + 2\pi kR_{\min } )\tan \bar \gamma\le \left| {z_{de} - z_{ds} } \right|(L_{{\rm{car}}} (R_{\min } ) + 2\pi (k + 1)R_{\min } )\tan \bar \gamma ,$$
Fig. 68.8
figure 8

Dubins airplane paths for the high-altitude case

or in other words

$$ k = \left\lfloor {{1 \over {2\pi kR_{\min } }}\left( {{{\left| {z_{de} - z_{ds} } \right|} \over {\tan \bar \gamma }} - L_{{\rm{car}}} (R_{\min } )} \right)} \right\rfloor , $$

where ⌊x⌋ is the floor function that rounds x down to the nearest integer. The radius of the start and end helices is then increased to R * so that

$$\left( {L_{{\rm{car}}} (R*) + 2\pi kR*} \right)\tan \bar \gamma = \left| {z_{de} - z_{ds} } \right|.$$
(68.20)

A bisection search is used to find R* satisfying (68.20). The resulting path is a minimum-distance Dubins airplane path with path length

$$L_{{\rm{air}}} (R*,\bar \gamma ) = {{L_{{\rm{car}}} (R*)} \over {\cos \bar \gamma }}.$$

The parameters required to define a high-altitude Dubins airplane path are the same parameters for the Dubins car given in (68.18) with R min replaced by R*, the addition of the optimal flight-path angle \( \pm \bar \gamma \), the additions of the start and end angles ψ s and ψ e , and the addition of the required number of turns at the start helix k s and the required number of turns at the end helix k e . Figure 68.8 shows several Dubins airplane paths for the high-altitude case where the altitude difference is 300 m over a typical Dubins car path length of 180 m.

4.2.3 Medium-Altitude Dubins Paths

In the medium-altitude case, the altitude difference between the start and end configurations is too large to obtain by flying the Dubins car path at the flight-path angle constraint, but small enough that adding a full turn on the helix at the beginning or end of the path and flying so that \(\gamma = \pm \bar \gamma \) results in more altitude gain than is needed. As shown in Chitsaz and LaValle (2007), the minimum-distance path is achieved by setting \(\gamma = {\rm{sign}}(z_{de} - z_{ds} )\bar \gamma \) and inserting an extra maneuver in the Dubins car path that extends the path length so that the altitude gain when \(\gamma = \pm \bar \gamma \) is exactly z de z ds . While there are numerous possible ways to extend the path length, the method proposed in this chapter is to add an additional intermediate arc to the start or end of the path, as shown in Fig. 68.9. If the start altitude is lower than the end altitude, then the intermediate arc is inserted immediately after the start helix, as shown for cases RLSR and RLSL in Fig. 68.11. If on the other hand, the start altitude is higher than the end altitude, then the intermediate arc is inserted immediately before the end helix, as shown for cases LSLR and LSRL in Fig. 68.11.

Fig. 68.9
figure 9

The start position of the intermediate arc is found by varying ׳

Fig. 68.10
figure 10

Parameters that define Dubins airplane path when an intermediate arc is inserted

Fig. 68.11
figure 11

Dubins airplane paths for the medium-altitude case

To find the Dubins path in the medium-altitude case, the position of the intermediate arc is parameterized by ׳ as shown in Fig. 68.9, where

$${\bf{z}}_i = {\bf{c}}_s + R(\varphi )({\bf{z}}_s - {\bf{c}}_s ).$$

A standard Dubins car path is planned from configuration (z i , ψ s + φ) to the end configuration, and the new path length is given by

$$L(\varphi ) = \varphi R_{\min } + L_{{\rm{car}}} ({\bf{z}}_i ,\psi _s + \varphi ,{\bf{z}}_e ,\psi _e ).$$

A bisection search algorithm is used to find the angle φ* so that

$$L(\varphi *) = \tan \bar \gamma = \left| {z_{de} - z_{ds} } \right|.$$

The length of the corresponding Dubins airplane path is given by

$$L_{{\rm{air}}} = {{L(\varphi *)} \over {\cos \bar \gamma }}.$$

The parameters needed to describe the Dubins airplane path for the medium- altitude case are shown in Fig. 68.10. The introduction of an intermediate arc requires the additional parameters c i , ψ i , λ i , w i , and q i , Therefore, in analogy to (68.18), the parameters that define a Dubins airplane path are

$${\cal D}_{{\rm{air}}} = (R,\gamma ,{\bf{c}}_s ,\psi _s ,\lambda _s ,{\bf{w}}_s ,{\bf{q}}_s ,{\bf{c}}_i ,\psi _i ,\lambda _i ,{\bf{w}}_i ,{\bf{q}}_i ,{\bf{w}}_l ,{\bf{q}}_l ,{\bf{c}}_e ,\psi _e ,\lambda _e ,{\bf{w}}_e ,{\bf{q}}_e ).$$
(68.21)

Figure 68.11 shows several Dubins airplane paths for the medium-altitude case where the altitude difference is 100 m over a typical Dubins car path length of 180 m.

4.3 Path Manager for Dubins Airplane

The path manager for the Dubins airplane is shown in Fig. 68.12. With reference to (68.14), the start helix is defined as \({\mathcal P}\) helix(c s , ψ s , λ s , R, γ). Similarly, the intermediate arc, if it exists, is defined by \({\mathcal P}\) helix(c i , ψ i , λ i , R, γ) and the end helix is given by \({\mathcal P}\) helix(c e , ψ e , λ e , R, γ). With reference to (68.9), the straight-line path is given by \({\mathcal P}\) line (w l , q l ).

Fig. 68.12
figure 12

Flow chart for the path manager for following a Dubins airplane path

4.4 Simulation Results

This section provides some simulation results where Dubins airplane paths are flown on a full six-degree-of-freedom UAV simulator. The aircraft used for the simulation is the Aerosonde model described in Beard and McLain (2012). A low- level autopilot is implemented to regulate the commanded airspeed, bank angle, and flight-path angle. The windspeed in the simulation is set to zero. The simulation is implemented in Matlab/Simulink.

The simulation results for a low altitude gain maneuver are shown in Fig. 68.13, where the planned trajectory is shown in green and the actual trajectory is shown in black. The difference between the actual and planned trajectories is due to fact that the actual dynamics are much more complicated than the kinematic model given in (68.1). Simulation results for a medium altitude gain maneuver are shown in Fig. 68.14, and simulation results for a high altitude gain maneuver are shown in Fig. 68.15.

Fig. 68.13
figure 13

Simulation results for Dubins path with low altitude gain

Fig. 68.14
figure 14

Simulation results for Dubins path with medium altitude gain

Fig. 68.15
figure 15

Simulation results for Dubins path with high altitude gain

5 Conclusion

This chapter describes how to plan and implement Dubins airplane paths for small fixed-wing UAVs. In particular, the Dubins airplane model has been refined to be more consistent with standard aeronautics notation. A complete architecture for following Dubins airplane paths has been defined and implemented and is shown in Fig. 68.1. Dubins airplane paths consist of switching between helical and straight-line paths. The vector-field method described in Gonçalves et al. (2010) has been used to develop guidance laws that regulate the Dubins airplane to follow the associated helical and straight-line paths. For medium and high altitude gain scenarios, there are many possible Dubins paths. This chapter suggests selecting the path that maximizes the average altitude of the aircraft during the maneuver.

There are many possible extensions that warrant future work. First, there is a need to extend these methods to windy environments, including both constant wind and heavy gusts. Second, the assumed fast inner loops on airspeed, roll angle, and flight-path angle are often violated, especially for flight-path angle. There may be some advantage, for path optimality in particular, to factoring the time constants of the inner loops into the planning procedure. Third, this chapter assumes a decoupling between flight-path angle and airspeed. Except for highly overpowered vehicles, however, achieving a positive flight-path angle will reduce the airspeed, and achieving a negative flight-path angle will increase the airspeed. Taking these effects into account will obviously change the optimality of the paths. Finally, there are a variety of methods that have been proposed for achieving vector-field following (see Lawrence et al. 2008; Park et al. 2007; Nelson et al. 2007). The method used in this chapter is only one possibility, that, in fact, proved challenging to tune. One of the issues is that the method assumes single integrator dynamics in each direction of motion. More robust 3D vector-field following techniques that account for the nonholonomic kinematic model of the Dubins airplane need to be developed.