# On Motion Planning for Point-to-Point Maneuvers for a Class of Sailing Vehicles

Authors: Lin Xiao; Jerome Jouffroy
Journal: Journal of Control Science and Engineering
 (2011)

---

## Abstract

Despite their interesting dynamic and controllability properties, sailing vehicles have not been much studied in the control community. In this paper, we investigate motion planning of such vehicles. Starting from a simple dynamic model of sailing vessels in one dimension, this paper first considers their associated controllability issues, with the so-called no-sailing zone as a starting point, and it links them with a motion planning strategy using two-point boundary value problems as the main mathematical tool. This perspective is then expanded to do point-to-point maneuvers of sailing vehicles in the plane, that is, automatic path generation combined with computation of control input profiles. Simulations are presented to illustrate the potential of the approach.


---

## Body

## 1. Introduction

Sailing by the wind is in some sense almost as ancient as civilization itself, and humanity has gathered a considerable wealth of knowledge on navigation, naval architecture, and many other aspects of marine transportation using the wind. Despite this, and contrary to vehicles propelled by usual means such as propellers and thrusters, only a few studies were dedicated to automation of what we refer to as sailing vehicles, that is, our well-known sailboats, but also ships equipped with a kite, or landyachts. Many of these studies, for example [1–3], use as their main tool strategies from artificial intelligence that do not allow to use the dynamic models of sailing yachts available in the literature (see, e.g., [4–6]) for the design of control strategies. Other references, such as [7] or [8], consider more traditional control approaches, but use only linear approximations, and thereby neglect fundamental dynamical effects related to maneuvers in sailing (tacking, jibing), which are inherently nonlinear.In a previous study (see [9, 10]), one of the authors of the present paper introduced a simple and quite general model to represent what is thought to be the essence of the dynamic behaviour of many sailing vehicles, that is, their well-known zigzag-like trajectories whenever these vehicles aim for a destination in the direction of the wind. Roughly speaking, this model combined a well-known kinematic model widely used in robotics and also somewhat connected with traditional guidance systems (see [11, page 153] in this regard), together with a polar dead zone to represent the no-sailing zone familiar to sailors. The nonlinear model was also used to perform basic sailing maneuvers such as tacking and wearing.In the present paper, starting from the above-mentioned “kinematic sailing vehicle” model, we show how it is possible to do motion planning (i.e., path planning combined with feedforward control) by explicitly taking into account the particular controllability/reachability properties of the nonlinear system, which includes a saturation and a dead zone. More specifically, we check these properties and investigate automatic generation of start/stop maneuvers in the plane using a series of two-point boundary value problems (TPBVPs) that serve here as a common thread throughout this paper. As will be seen, the voluntarily simple strategy is reminiscent of, or equivalent to, a bang-bang control (see [12–14]) strategy, whose interest lies partly in its applicability to more extended models. Preliminary results of the present study were reported in [15, 16].After this introduction, Section2 will be dedicated to a short discussion on controllability and motion planning issues of a one-dimensional problem retaining the paramount no-sailing zone effect present in sailing. Then, we will build upon these few remarks in Section 3 to propose a single strategy to automatically generate paths (but also trajectories and reference control inputs) to bring a sailing vehicle from one point to another. In Section 4, we will present a few simulation results to illustrate the approach, while a few concluding remarks end the paper.


## 2. A One-Dimensional Problem

### 2.1. A One-Dimensional Model

To begin with, let us consider a system represented by the following scalar nonlinear differential equation:(1)mẍ(t)+dẋ(t)=g(x(t))u(t),
where m and d are strictly positive constants while function g(x) is such that(2)g(x)={0,ifx̲≤x≤x¯,1,otherwise.
Control input u(t)=F(t), representing a force applied to the system, is assumed to be limited, that is, it lies within the interval [-F¯,F¯].From the way functiong(x) is defined, it is clear that control input u(t) has no effect on system (1) while x(t) belongs to the interval [x̲,x¯], so that if one wants to steer the system from an initial position x0<x̲ to a “target” position xT>x¯, one will have to accumulate enough energy, or use the inertia of the system to regain controllability and to reach the targeted position.Metaphorically, system (1)-(2) can be seen as a crude analogy of a kid trying to jump over a small river (see Figure 1), hoping to get to the other side. From a starting position, the kid will run as fast as possible to increase her momentum until it is sufficient. If the initial position is at a too short distance from the edge of the dead zone, she will be able to walk back a few steps (see blue path) before running to get the right momentum.Figure 1
Sketch map for the river crossing problem.


### 2.2. Controllability Properties

In control theory, controllability properties (or reachability properties depending on contexts and definitions, see [17, 18]) are of course invoked for analysis purposes. However, they can also be used in a more constructive way to synthesize open-loop control laws. For linear systems, this is exemplified by the so-called controllability/reachability Gramian (see [19]) while for nonlinear systems of the form ẋ=f(x)+g(x)u, conditions on the vector fields f(x) and g(x) allow to perform dynamic inversion that will result in the computation of the control input steering a system on a chosen trajectory of reference (see [20–22]).However, most cases involving dynamic inversion require the considered system to be small-time controllable, that is, that the states can be reached in an arbitrarily small amount of time. For system (1)-(2), small-time controllability is clearly not verified, mostly due to the combination, even outside the interval [x̲,x¯], of the dead zone with the maximum amplitude on the control input. Under some particular conditions, the system is actually simply not controllable as recalled in the following proposition.Proposition 1.
The statex(0)=(x(0)=x̲,v(0)=v0) of system (1)-(2) cannot be controlled to the state x(T)=(x(T)=x¯,v(T)) on the interval [0,T] if F=0 and the following holds:
(3)v0<dm(x¯-x̲)∶=vmin⁡.Proof.
Similarly to [10], start with (1), g(x)F=0 representing the system in the no-go zone,
(4)mẍ(t)+dẋ(t)=0.
Replace ẋ(t) with v(t), (4) becomes
(5)mv̇(t)+dv(t)=0.
The solution of this first-order differential equation with initial condition v0 is then
(6)v(t)=v0e-(d/m)t,
which gives ẋ(t)=v0e-(d/m)t. Introduce x̲ to express the start of the dead zone and x¯ to represent the end as depicted in Figure 1. Considering the situation where x(0)=x̲, integrate on both sides, we obtain
(7)x(t)=v0∫0te-(dτ/m)dτ+x̲=v0md(1-e-(d/m)t)+x̲≤v0md+x̲.
Hence x(t) will never go beyond x¯ provided we have the following inequality:
(8)v0md+x̲<x¯,
which leads to (3).From the above proposition, it appears that controlling the system from a point to another requires the notion of a time interval or horizon, as opposed to instant inversion as in dynamic inversion. In the linear case, this is reminiscent of the Gramian perspective, where a system can be inverted over a time-horizon, even when it might be singular at a particular instant. Unfortunately, Gramian-based extensions to nonlinear systems (see [23, 24]) do not seem to apply to system (1)-(2).


### 2.3. TPBVP as a Unifying Tool

However, if, similarly to bang-bang control strategies (see [12]), one assumes constant levels on the control input, that is, u(t)=ui on t∈[ti-1,ti),i=1,2,3,…,n, our problem can be simplified further and system (1)-(2) can straightforwardly be transformed into a collection of systems(9){ẋi(t)=vi(t),xi(ti-1)=xti-1,xi(ti)=xti,mv̇i(t)+dvi(t)=ui,vi(ti-1)=vti-1,vi(ti)=vti,
where ui can take three values, that is, F¯, -F¯, or 0, and Ti:=ti-ti-1 is the duration for which each control input level is applied. The initial time for the first system is set to t0=0, and, assuming we have a collection of n systems, the total horizon of simulation T is simply expressed as T=∑i=1i=nTi.In the following, our goal is to generate start/stop maneuvers (i.e., trajectories such thatv(0)=0 and v(T)=0) crossing the dead zone (i.e., x(0)<x̲ and x(T)>x¯).As we have seen in Proposition1, the system must have a minimum velocity, vmin⁡, to cross the dead zone. Assuming a constant input level u(t)=F¯ and an initial velocity v(0)=0, this in turn implies a minimum distance |xmin⁡-x̲| below which one has to go backwards before accelerating forward (see Figure 1).Obtainingxmin⁡ can be done by examining the following system:(10){ẋ1(t)=v1(t),x1(0)=xmin⁡,x1(t1)=x̲,mv̇1(t)+dv1(t)=F¯,v1(0)=0,v1(t1)=vmin⁡.
From (10), solving xmin⁡ also implies solving T1=t1, the time it will take to the system to reach the entrance of the dead zone x1(t1)=x̲ with a velocity v1(t1)=vmin⁡. Thus, finding unknowns xmin⁡ and T1—that are related to the controllability property of the system (if x1(0)>xmin⁡ while v1(0)=0, the system cannot cross the dead zone)—obviously corresponds to solving a two-point boundary value problem (TPBVP) as v1(0)=0,v1(T1)=vmin⁡ and x1(T1)=x̲ are given. Additionally, that our first controllability consideration, expressed by Proposition 1, could have also been given a TPBVP flavor, as vmin⁡ can also be regarded as the solution of a TPBVP with (4) as the system.Regarding motion planning issues, the determination of each time-intervalTi during which ui is applied is yet another TPBVP, while the whole motion planning of a start/stop maneuver can naturally be expressed as a global TPBVP. Hence controllability and motion planning can be both treated with TPBVPs, giving the present approach a unified view.A standard form for TPBVPs of ODEs is usually given by a first-order form (see [25])(11)ẋ(t)=f(x(t),t,p),0≤t≤T,
where p is a vector of unknown parameters, together with an associated constraint function 𝒞 representing the boundary conditions(12)C(x(0),x(T),p)=0.
However, in our problem, time intervals on which input levels are applied are unknown, which, roughly speaking, corresponds to having  an unknown T in (11)-(12). Proceeding to the change of variable τ=t/T leads to(13)dxdτ(τ)=fτ(x(τ),τ,T),0≤τ≤1,
with the constraints(14)Cτ(x(0),x(1),T)=0.
Once our motion planning problem is put under form (13)-(14), it can be solved automatically and numerically by a BVP solver (see, e.g., [25]).In the simplest case where only three successive levels{F¯,0,-F¯} are applied on the control input, we have the following first-order form (with the constraint function):(15)dxdτ(τ)=[T1v1(τ)T1(-dv1(τ)m+F¯m)T2v2(τ)T2(-dv2(τ)m)T3v3(τ)T3(-dv3(τ)m+F̲m)],Cτ=[x1(0)-x0x1(1)-x̲v1(0)-0v1(1)-v2(0)x2(0)-x̲x2(1)-x¯v2(1)-v3(0)x3(0)-x¯v3(1)-0].
Clearly, depending on where the starting position is, different combinations of input levels F¯, -F¯, and 0 are possible, as represented in Figure 2. The other cases (besides case 1) described with input levels {F¯, -F¯, 0, -F¯} and {F¯, 0, F¯, -F¯}, respectively, (see Figure 2) can be characterized similarly to (15). For the case where x0>xmin⁡, the system is simply steered backwards with {-F¯, F¯} before applying the first case and solving (15).Figure 2
Force planning for 1D problem.Similarly to the decision to go backwards or not that is dictated byxmin⁡, the distinction between case 1, case 2, and case 3 (see Figure 2) is driven by controllability issues that are linked with the saturation levels on the input with the dead zone, that is, (see Algorithm 1) decelerating before the dead zone to avoid overshooting the target (case 2), or accelerating at the exit of the dead zone to avoid “undershooting” (case 3).Algorithm 1:Motion planning algorithm. Goal: To generate a sequence of control signals for the propulsive force.
1: start/end pointsx(0)=(x0,0), x(T)=(xT,0)2: comparex0 with xmin⁡ to check whether it needs to gobackwards, if yes, go backwards and restart from step 13: solve TPBVP for input levels{F¯,0,-F¯} to get T1,T2,T3, and xt34:ifxt3=xT5:  case 1: apply input levels{F¯,0,-F¯} with durations {T1,T2,T3}6:elseifxt3>xT7:   case 2: solve TPBVP for input levels{F¯,-F¯,0,-F¯}and apply them with obtained durations{T1,T2,T3,T4}8:else (i.e., xt3<xT)9:  case 3: solve TPBVP for input levels{F¯,0,F¯,-F¯} and applythem with obtained  durations{T1,T2,T3,T4}10:endAs seen earlier in this paper, studying controllability is linked to a TPBVP (e.g., the one givingxmin⁡), followed by another TPBVP for motion planning. Hence the controllability verification, at the origin of the determination of the input level sequence can, in a sense, be seen as a preliminary step to a bang-bang control strategy (see [12]).


## 2.1. A One-Dimensional Model

To begin with, let us consider a system represented by the following scalar nonlinear differential equation:(1)mẍ(t)+dẋ(t)=g(x(t))u(t),
where m and d are strictly positive constants while function g(x) is such that(2)g(x)={0,ifx̲≤x≤x¯,1,otherwise.
Control input u(t)=F(t), representing a force applied to the system, is assumed to be limited, that is, it lies within the interval [-F¯,F¯].From the way functiong(x) is defined, it is clear that control input u(t) has no effect on system (1) while x(t) belongs to the interval [x̲,x¯], so that if one wants to steer the system from an initial position x0<x̲ to a “target” position xT>x¯, one will have to accumulate enough energy, or use the inertia of the system to regain controllability and to reach the targeted position.Metaphorically, system (1)-(2) can be seen as a crude analogy of a kid trying to jump over a small river (see Figure 1), hoping to get to the other side. From a starting position, the kid will run as fast as possible to increase her momentum until it is sufficient. If the initial position is at a too short distance from the edge of the dead zone, she will be able to walk back a few steps (see blue path) before running to get the right momentum.Figure 1
Sketch map for the river crossing problem.


## 2.2. Controllability Properties

In control theory, controllability properties (or reachability properties depending on contexts and definitions, see [17, 18]) are of course invoked for analysis purposes. However, they can also be used in a more constructive way to synthesize open-loop control laws. For linear systems, this is exemplified by the so-called controllability/reachability Gramian (see [19]) while for nonlinear systems of the form ẋ=f(x)+g(x)u, conditions on the vector fields f(x) and g(x) allow to perform dynamic inversion that will result in the computation of the control input steering a system on a chosen trajectory of reference (see [20–22]).However, most cases involving dynamic inversion require the considered system to be small-time controllable, that is, that the states can be reached in an arbitrarily small amount of time. For system (1)-(2), small-time controllability is clearly not verified, mostly due to the combination, even outside the interval [x̲,x¯], of the dead zone with the maximum amplitude on the control input. Under some particular conditions, the system is actually simply not controllable as recalled in the following proposition.Proposition 1.
The statex(0)=(x(0)=x̲,v(0)=v0) of system (1)-(2) cannot be controlled to the state x(T)=(x(T)=x¯,v(T)) on the interval [0,T] if F=0 and the following holds:
(3)v0<dm(x¯-x̲)∶=vmin⁡.Proof.
Similarly to [10], start with (1), g(x)F=0 representing the system in the no-go zone,
(4)mẍ(t)+dẋ(t)=0.
Replace ẋ(t) with v(t), (4) becomes
(5)mv̇(t)+dv(t)=0.
The solution of this first-order differential equation with initial condition v0 is then
(6)v(t)=v0e-(d/m)t,
which gives ẋ(t)=v0e-(d/m)t. Introduce x̲ to express the start of the dead zone and x¯ to represent the end as depicted in Figure 1. Considering the situation where x(0)=x̲, integrate on both sides, we obtain
(7)x(t)=v0∫0te-(dτ/m)dτ+x̲=v0md(1-e-(d/m)t)+x̲≤v0md+x̲.
Hence x(t) will never go beyond x¯ provided we have the following inequality:
(8)v0md+x̲<x¯,
which leads to (3).From the above proposition, it appears that controlling the system from a point to another requires the notion of a time interval or horizon, as opposed to instant inversion as in dynamic inversion. In the linear case, this is reminiscent of the Gramian perspective, where a system can be inverted over a time-horizon, even when it might be singular at a particular instant. Unfortunately, Gramian-based extensions to nonlinear systems (see [23, 24]) do not seem to apply to system (1)-(2).


## 2.3. TPBVP as a Unifying Tool

However, if, similarly to bang-bang control strategies (see [12]), one assumes constant levels on the control input, that is, u(t)=ui on t∈[ti-1,ti),i=1,2,3,…,n, our problem can be simplified further and system (1)-(2) can straightforwardly be transformed into a collection of systems(9){ẋi(t)=vi(t),xi(ti-1)=xti-1,xi(ti)=xti,mv̇i(t)+dvi(t)=ui,vi(ti-1)=vti-1,vi(ti)=vti,
where ui can take three values, that is, F¯, -F¯, or 0, and Ti:=ti-ti-1 is the duration for which each control input level is applied. The initial time for the first system is set to t0=0, and, assuming we have a collection of n systems, the total horizon of simulation T is simply expressed as T=∑i=1i=nTi.In the following, our goal is to generate start/stop maneuvers (i.e., trajectories such thatv(0)=0 and v(T)=0) crossing the dead zone (i.e., x(0)<x̲ and x(T)>x¯).As we have seen in Proposition1, the system must have a minimum velocity, vmin⁡, to cross the dead zone. Assuming a constant input level u(t)=F¯ and an initial velocity v(0)=0, this in turn implies a minimum distance |xmin⁡-x̲| below which one has to go backwards before accelerating forward (see Figure 1).Obtainingxmin⁡ can be done by examining the following system:(10){ẋ1(t)=v1(t),x1(0)=xmin⁡,x1(t1)=x̲,mv̇1(t)+dv1(t)=F¯,v1(0)=0,v1(t1)=vmin⁡.
From (10), solving xmin⁡ also implies solving T1=t1, the time it will take to the system to reach the entrance of the dead zone x1(t1)=x̲ with a velocity v1(t1)=vmin⁡. Thus, finding unknowns xmin⁡ and T1—that are related to the controllability property of the system (if x1(0)>xmin⁡ while v1(0)=0, the system cannot cross the dead zone)—obviously corresponds to solving a two-point boundary value problem (TPBVP) as v1(0)=0,v1(T1)=vmin⁡ and x1(T1)=x̲ are given. Additionally, that our first controllability consideration, expressed by Proposition 1, could have also been given a TPBVP flavor, as vmin⁡ can also be regarded as the solution of a TPBVP with (4) as the system.Regarding motion planning issues, the determination of each time-intervalTi during which ui is applied is yet another TPBVP, while the whole motion planning of a start/stop maneuver can naturally be expressed as a global TPBVP. Hence controllability and motion planning can be both treated with TPBVPs, giving the present approach a unified view.A standard form for TPBVPs of ODEs is usually given by a first-order form (see [25])(11)ẋ(t)=f(x(t),t,p),0≤t≤T,
where p is a vector of unknown parameters, together with an associated constraint function 𝒞 representing the boundary conditions(12)C(x(0),x(T),p)=0.
However, in our problem, time intervals on which input levels are applied are unknown, which, roughly speaking, corresponds to having  an unknown T in (11)-(12). Proceeding to the change of variable τ=t/T leads to(13)dxdτ(τ)=fτ(x(τ),τ,T),0≤τ≤1,
with the constraints(14)Cτ(x(0),x(1),T)=0.
Once our motion planning problem is put under form (13)-(14), it can be solved automatically and numerically by a BVP solver (see, e.g., [25]).In the simplest case where only three successive levels{F¯,0,-F¯} are applied on the control input, we have the following first-order form (with the constraint function):(15)dxdτ(τ)=[T1v1(τ)T1(-dv1(τ)m+F¯m)T2v2(τ)T2(-dv2(τ)m)T3v3(τ)T3(-dv3(τ)m+F̲m)],Cτ=[x1(0)-x0x1(1)-x̲v1(0)-0v1(1)-v2(0)x2(0)-x̲x2(1)-x¯v2(1)-v3(0)x3(0)-x¯v3(1)-0].
Clearly, depending on where the starting position is, different combinations of input levels F¯, -F¯, and 0 are possible, as represented in Figure 2. The other cases (besides case 1) described with input levels {F¯, -F¯, 0, -F¯} and {F¯, 0, F¯, -F¯}, respectively, (see Figure 2) can be characterized similarly to (15). For the case where x0>xmin⁡, the system is simply steered backwards with {-F¯, F¯} before applying the first case and solving (15).Figure 2
Force planning for 1D problem.Similarly to the decision to go backwards or not that is dictated byxmin⁡, the distinction between case 1, case 2, and case 3 (see Figure 2) is driven by controllability issues that are linked with the saturation levels on the input with the dead zone, that is, (see Algorithm 1) decelerating before the dead zone to avoid overshooting the target (case 2), or accelerating at the exit of the dead zone to avoid “undershooting” (case 3).Algorithm 1:Motion planning algorithm. Goal: To generate a sequence of control signals for the propulsive force.
1: start/end pointsx(0)=(x0,0), x(T)=(xT,0)2: comparex0 with xmin⁡ to check whether it needs to gobackwards, if yes, go backwards and restart from step 13: solve TPBVP for input levels{F¯,0,-F¯} to get T1,T2,T3, and xt34:ifxt3=xT5:  case 1: apply input levels{F¯,0,-F¯} with durations {T1,T2,T3}6:elseifxt3>xT7:   case 2: solve TPBVP for input levels{F¯,-F¯,0,-F¯}and apply them with obtained durations{T1,T2,T3,T4}8:else (i.e., xt3<xT)9:  case 3: solve TPBVP for input levels{F¯,0,F¯,-F¯} and applythem with obtained  durations{T1,T2,T3,T4}10:endAs seen earlier in this paper, studying controllability is linked to a TPBVP (e.g., the one givingxmin⁡), followed by another TPBVP for motion planning. Hence the controllability verification, at the origin of the determination of the input level sequence can, in a sense, be seen as a preliminary step to a bang-bang control strategy (see [12]).


## 3. Motion Planning for Surface Sailing Vehicles

### 3.1. A Phenomenological Model

Instead of using a full model describing the forces and moments acting on a sailing vehicle, we use a simpler one, originally introduced in [9, 10], representing the basic dynamic behaviour of such vehicles, and which is useful for trajectory and path generation purposes. As will be seen the interest of the model lies in its simplicity, combined with the representation of a trait common to all sailing vehicles: the no-go zone, also called no-sailing zone.As will be seen, start/stop maneuvers of this simplified sailing vehicle model share some similarities with what was just discussed before, so that results of Section2 could be used with only minor adjustments.The model is described by the following set of four differential equations:(16)ẋ(t)=v(t)cos⁡θ(t),ẏ(t)=v(t)sin⁡θ(t),θ̇(t)=v(t)tanδ(t)L,mv̇(t)+dv(t)=g(θ(t))F(t),
where x(t), y(t) represent the position of the vehicle, v(t) is its longitudinal velocity, and θ(t) is the heading of the vehicle. Function g(θ(t)) is such that(17)g(θ(t))={0,ifθ̲≤θ(t)≤θ¯,1,otherwise.
Variable δ(t) is the control input representing the steering action coming from, for example, a rudder, and takes values on the interval [-δ¯,δ¯]. Similarly, F(t) is assumed to be the other control input accounting for the propulsion of the vehicle, which is limited to lie within the set [-F¯,F¯] (For simplicity, we assume this interval to be symmetric around the origin, which implies a braking action for the sailing vehicle. This is possible for some vehicles if the boom angle can be directly controlled or with the presence of brakes, as on a landyacht. However, our discussion is also valid for interval [F̲,F¯] with minor changes). Parameter L accounts (together with δ(t)) for the bounded curvature in the plane of the trajectories followed by system (16). From the way the function g(θ(t)) is defined, it is clear that the control input F(t) has no effect on system (16) when θ(t) belongs to interval [θ̲,θ¯], thus representing the loss of propulsion when the vehicle is in the no-sailing zone, which is depicted in Figure 3.Figure 3
Polar diagram representing the no-sailing zone.System (16)-(17) can then be directly put into a state-space form ẋ(t)=f(x(t),u(t),t), where the state vector is x(t)=(x(t),y(t),θ(t),v(t))∈ℝ3×𝕊1, together with the control input u(t)=(δ(t),F(t))∈[-δ¯,δ¯]×[-F¯,F¯].The controllability properties of system (16)-(17) are in a sense identical to what we saw in Section 2. Thus, the following proposition, whose proof we omit here, mirrors Proposition 1, and expresses the fact that the surface sailing vessels have to accumulate enough energy before entering the no-sailing zone.Proposition 2.
The statex(0)=(x(0),y(0),θ(0)=θ̲,v(0)=v0)  of system (16)-(17) cannot be controlled to the state x(T)=(x(T),y(T),θ(T)=θ¯,v(T)) on the time interval [0, T] if the following holds:
(18)v0<dLmθ¯-θ̲tanδ¯∶=vmin⁡.


### 3.2. Reachability Analysis

The main objective of this paper being to generate a feasible point-to-point path in the plane with any initial heading angle, we need to determine whether or not the sailing vehicle can go from one point to the other. In other words, it is necessary to check whether there exists at least one feasible path for every possible couple of vehicle configurations.In sailing, tacking and wearing are two main maneuvers when going upwind. As shown in Figure4, there is, roughly speaking, a short crossing of the no-go zone when the vehicle performs a tack (see Figure 4(a)), while a wearing trajectory avoids the dead zone entirely.Desired path for (a) tacking and (b) wearing.
(a)(b)As we have seen in Proposition2, and by noting vθ̲ of the vehicle when entering the dead zone (see Figure 4(a)), the system (16)-(17) cannot be steered across the dead zone when vθ̲<vmin⁡. Nevertheless, if the path is chosen so that it always avoids the no-go zone, then there is no such a velocity restriction. Hence, we can prove that, in a kind of worst-case scenario perspective, it is always possible to steer a system from any point to another using only wearing trajectories. Our strategy mostly relies on the construction of paths using sequences of straight line segments (Ls) and arcs (Rs) of a circle with radius r, much in the same way as it is one in the field of mobile robotics.This is summarized in the following proposition.Proposition 3.
A feasible continuous wearing path always exists between two prescribed points(x0,y0) and (xT,yT) in the plane provided that the initial heading θ0 is outside the dead zone.Proof.
The complete proof of the proposition is based on the explicit construction of the path where, depending on the value of initial heading angleθ0, a particular sequence of Ls and Rs is constructed. The proof is given in the appendix.Note that the above proposition can give us an interesting outlook on uncertainties considerations. Indeed, assuming that both parametersd and m are not exactly known, this would imply that the minimum velocity vmin⁡ that guarantees that the vehicle will be able to cross the dead zone is not exactly known either. In this case, choosing a feasible continuous path as suggested by Proposition 3 allows to cope with such uncertainties, since it avoids the dead zone altogether.


### 3.3. Path Generation

As a preliminary to any path generation for a sailing vehicle, it is clear that if the initial heading lies within the interval[θ̲,θ¯], the vehicle cannot move because it fails to capture energy from the environment. Therefore, the sailing vessel should start with headings outside the no-go zone.In some cases, the vehicle is able to go straight to reach the target. For this simple case, consider we are givenp1(x0,y0) and p2(xT,yT) as in Figure 3, then the angle of the line-of-sight is θLOS=atan2((yT-y0),(xT-x0)) (atan2(y,x) is a four-quadrant inverse tangent (arctangent) of the real parts of y and x, and atan2(y,x)∈[-π,π]). If θLOS is equal to the initial heading θ0, the trajectory is a simple straight line connecting p1 and p2. The length of the corresponding path is obviously ST=(xT-x0)2+(yT-y0)2.Nevertheless, the end points usually cannot be simply reached by only one straight line motion. The vehicle can still reach the destination, but with paths in which turns are obviously necessary. Furthermore, if the general direction towards destination lies within a sector defined by the no-sailing zone, the vehicle should go by either tacking or wearing, which are the two main maneuvers to go upwind in sailing (see details in [9, 10]). The paths for these two maneuvers are constructed by sequences of straight lines and circles. Since the maximum steering angles δ¯ or -δ¯ are applied during the turn, the radius of the circles followed by vehicle is r=L/tanδ¯. Figure 4 lays out routes for tacking (a) and wearing (b) maneuvers.As alluded to in the previous section, and as a direct consequence of Proposition3, a single wearing maneuver/loop entirely avoids the dead zone, and the path is, in this case, separated into three pieces, which are straight line [p1,p41], arc [p41,p42], and straight line [p42,p4] (see Figure 4(b)). A tacking maneuver is easily constructed similarly to a wearing one (points linking the straight lines and the circles are obtained directly from a method identical to the one detailed in the appendix). However, this maneuver has to be divided into five different segments, accounting for the presence of the dead zone: straight line [p1,p31], arc [p31,p32], arc in the dead zone [p32,p33], arc [p33,p34], and straight line [p34,p3] (see Figure 4(a)).Here, the idea is that tacking is always preferred because it is usually faster, as wearing around means losing way. Geometrically, selection of the right maneuver (i.e., tacking or wearing) must, however, take into account the distance between two established points, that is, if they are too close from each other for a tack, there might be not enough space for turning with radiusr, hence the vehicle can only go wearing about.Whether we are tacking or wearing, both these maneuvers can be considered as two examples of the samegeometric task, while crossing the no-sailing zone is specific to tacking, hence more of a dynamic flavor. Hence, for the geometric task, each segment i (straight line or arc) of the path is represented by the following differential equation in  xi(s),yi(s),θi(s):
(19)dxids(s)=cos⁡θi(s),dyids(s)=sin⁡θi(s),dθids(s)=1Ltanδi(s),
where s(t) is the path variable. Since p1(x0,y0,θ0) and p3(xT,yT) (or p4(xT,yT)) are known, together with the final headings θT which are supposed to be decided upon, obtaining the length Si of each segment can be done by solving yet another TPBVP. Taking for instance the path of a tacking maneuver, as seen in Figure 4(a), proceed similarly to Section 2 and formulate ODEs and appropriate boundary conditions as follows:(20)dxdτ(τ)=[s1cos⁡θ1(τ)s1sin⁡θ1(τ)0s2cos⁡θ2(τ)s2sin⁡θ2(τ)s2tanδ¯Ls3cos⁡θ3(τ)s3sin⁡θ3(τ)s3tanδ¯Ls4cos⁡θ4(τ)s4sin⁡θ4(τ)s4tanδ¯Ls5cos⁡θ5(τ)s5sin⁡θ5(τ)0],Cτ=[x1(0)-x0x1(1)-x2(0)y1(0)-y0y1(1)-y2(0)θ1(0)-θ0x2(1)-x3(0)y2(1)-y3(0)θ2(0)-θ0θ2(1)-θ̲x3(1)-x4(0)y3(1)-y4(0)θ3(0)-θ̲θ3(1)-θ¯x4(1)-x5(0)y4(1)-y5(0)θ4(0)-θ¯θ4(1)-θTx5(1)-xTy5(1)-yTθ5(0)-θT].
Consequently, the length for each segment (i.e., si) on the path can be solved automatically and numerically by a BVP solver.


### 3.4. Feedforward Controller Computation

Once a path is defined, the objective is to generate appropriate control signals that will steer the vehicle along this path. Obviously, a feedforward strategy similar to the one in Section2 can be applied here, as we only need to determine switching times for the constant control levels F¯, -F¯, and 0, the steering angle levels δ¯, -δ¯, and 0.In order to get these switching times forF(t), and as represented in Figure 5, the basic path/length dynamics of system (16) can be simply described as follows:(21){ṡ(t)=v(t),s(0)=0,s(T)=sT,mv̇(t)+dv(t)=F(t),v(0)=0,v(T)=0,
where sT=∑i=1nsi. Comparing Figure 5(a) with Figure 1, it is obvious our one-dimensional problem of Section 2 is similar to the tacking maneuver, the wearing maneuver being even simple due to the absence of dead zone crossing. Hence, we use the same method for motion planning of the 1D case, which is shown in Figure 2, where x0 corresponds to 0 and xT corresponds to sT.Basic dynamics for (a) tacking and (b) wearing.
(a)(b)In this context, the only difference is that if while entering the dead zone, the vehicle velocity is not sufficient, instead of going backwards, a tacking maneuver is changed into a wearing one. This implies reshaping the path, as described in the previous Section3.3.Finally, using functions(t) obtained from solving (21), together with segment length si, it is straight-forward to get the switching times for steering function δ(t).


### 3.5. On-Line Path Planning

In sailing, the environment is inherently unstable and changes in wind speed and direction might occur. In the important case of a change in wind direction, the path should obviously be recomputed, and the control input profiles applied immediately under the new conditions.Using only minor changes, our strategy can swiftly adapt to a new wind direction (see also [26] on replanning issues). First, for on-line planning purposes, instead of our vehicle starting at v(0)=0, we now naturally have v(0)=v0, with v0 being the vehicle velocity when the wind direction changes. Regarding wind direction, and assuming first that the wind is coming from the north (i.e., the wind angle is α=-π/2), once the wind shifts (i.e., the new wind angle is α′), the Cartesian coordinates with respect to the wind changes as well, and the position of the vehicle in the new coordinate system can then be redefined as (x0′,y0′)T=R(Δα)(x0,y0)T. The rotation matrix induced by the wind shift is(22)R=(cos⁡(Δα)-sin⁡(Δα)sin⁡(Δα)cos⁡(Δα)),
in which Δα=α-α′ is the difference between the wind angles. Similarly, the specified target is also transformed in the new coordinate system as well as the initial heading. Consequently, according to terminal conditions (x0′,y0′,θ0′) and (xT′,yT′), the path is replanned by using our path generation strategy. Then the control input profiles F(t) and δ(t) are computed as before.Note that more replanning can occur for other changes as well, like, for example, if the considered vehicle is a landyacht and the friction with respect to the ground changes, thereby changing parameterd. Obviously, updating our motion plans in realtime somewhat transforms our initial feedforward control structure into a hybrid feedback controller. Although the stability of such controller is definitely of interest, it is outside the scope of the present paper (see also [27] for interesting results of stability of hybrid systems).


## 3.1. A Phenomenological Model

Instead of using a full model describing the forces and moments acting on a sailing vehicle, we use a simpler one, originally introduced in [9, 10], representing the basic dynamic behaviour of such vehicles, and which is useful for trajectory and path generation purposes. As will be seen the interest of the model lies in its simplicity, combined with the representation of a trait common to all sailing vehicles: the no-go zone, also called no-sailing zone.As will be seen, start/stop maneuvers of this simplified sailing vehicle model share some similarities with what was just discussed before, so that results of Section2 could be used with only minor adjustments.The model is described by the following set of four differential equations:(16)ẋ(t)=v(t)cos⁡θ(t),ẏ(t)=v(t)sin⁡θ(t),θ̇(t)=v(t)tanδ(t)L,mv̇(t)+dv(t)=g(θ(t))F(t),
where x(t), y(t) represent the position of the vehicle, v(t) is its longitudinal velocity, and θ(t) is the heading of the vehicle. Function g(θ(t)) is such that(17)g(θ(t))={0,ifθ̲≤θ(t)≤θ¯,1,otherwise.
Variable δ(t) is the control input representing the steering action coming from, for example, a rudder, and takes values on the interval [-δ¯,δ¯]. Similarly, F(t) is assumed to be the other control input accounting for the propulsion of the vehicle, which is limited to lie within the set [-F¯,F¯] (For simplicity, we assume this interval to be symmetric around the origin, which implies a braking action for the sailing vehicle. This is possible for some vehicles if the boom angle can be directly controlled or with the presence of brakes, as on a landyacht. However, our discussion is also valid for interval [F̲,F¯] with minor changes). Parameter L accounts (together with δ(t)) for the bounded curvature in the plane of the trajectories followed by system (16). From the way the function g(θ(t)) is defined, it is clear that the control input F(t) has no effect on system (16) when θ(t) belongs to interval [θ̲,θ¯], thus representing the loss of propulsion when the vehicle is in the no-sailing zone, which is depicted in Figure 3.Figure 3
Polar diagram representing the no-sailing zone.System (16)-(17) can then be directly put into a state-space form ẋ(t)=f(x(t),u(t),t), where the state vector is x(t)=(x(t),y(t),θ(t),v(t))∈ℝ3×𝕊1, together with the control input u(t)=(δ(t),F(t))∈[-δ¯,δ¯]×[-F¯,F¯].The controllability properties of system (16)-(17) are in a sense identical to what we saw in Section 2. Thus, the following proposition, whose proof we omit here, mirrors Proposition 1, and expresses the fact that the surface sailing vessels have to accumulate enough energy before entering the no-sailing zone.Proposition 2.
The statex(0)=(x(0),y(0),θ(0)=θ̲,v(0)=v0)  of system (16)-(17) cannot be controlled to the state x(T)=(x(T),y(T),θ(T)=θ¯,v(T)) on the time interval [0, T] if the following holds:
(18)v0<dLmθ¯-θ̲tanδ¯∶=vmin⁡.


## 3.2. Reachability Analysis

The main objective of this paper being to generate a feasible point-to-point path in the plane with any initial heading angle, we need to determine whether or not the sailing vehicle can go from one point to the other. In other words, it is necessary to check whether there exists at least one feasible path for every possible couple of vehicle configurations.In sailing, tacking and wearing are two main maneuvers when going upwind. As shown in Figure4, there is, roughly speaking, a short crossing of the no-go zone when the vehicle performs a tack (see Figure 4(a)), while a wearing trajectory avoids the dead zone entirely.Desired path for (a) tacking and (b) wearing.
(a)(b)As we have seen in Proposition2, and by noting vθ̲ of the vehicle when entering the dead zone (see Figure 4(a)), the system (16)-(17) cannot be steered across the dead zone when vθ̲<vmin⁡. Nevertheless, if the path is chosen so that it always avoids the no-go zone, then there is no such a velocity restriction. Hence, we can prove that, in a kind of worst-case scenario perspective, it is always possible to steer a system from any point to another using only wearing trajectories. Our strategy mostly relies on the construction of paths using sequences of straight line segments (Ls) and arcs (Rs) of a circle with radius r, much in the same way as it is one in the field of mobile robotics.This is summarized in the following proposition.Proposition 3.
A feasible continuous wearing path always exists between two prescribed points(x0,y0) and (xT,yT) in the plane provided that the initial heading θ0 is outside the dead zone.Proof.
The complete proof of the proposition is based on the explicit construction of the path where, depending on the value of initial heading angleθ0, a particular sequence of Ls and Rs is constructed. The proof is given in the appendix.Note that the above proposition can give us an interesting outlook on uncertainties considerations. Indeed, assuming that both parametersd and m are not exactly known, this would imply that the minimum velocity vmin⁡ that guarantees that the vehicle will be able to cross the dead zone is not exactly known either. In this case, choosing a feasible continuous path as suggested by Proposition 3 allows to cope with such uncertainties, since it avoids the dead zone altogether.


## 3.3. Path Generation

As a preliminary to any path generation for a sailing vehicle, it is clear that if the initial heading lies within the interval[θ̲,θ¯], the vehicle cannot move because it fails to capture energy from the environment. Therefore, the sailing vessel should start with headings outside the no-go zone.In some cases, the vehicle is able to go straight to reach the target. For this simple case, consider we are givenp1(x0,y0) and p2(xT,yT) as in Figure 3, then the angle of the line-of-sight is θLOS=atan2((yT-y0),(xT-x0)) (atan2(y,x) is a four-quadrant inverse tangent (arctangent) of the real parts of y and x, and atan2(y,x)∈[-π,π]). If θLOS is equal to the initial heading θ0, the trajectory is a simple straight line connecting p1 and p2. The length of the corresponding path is obviously ST=(xT-x0)2+(yT-y0)2.Nevertheless, the end points usually cannot be simply reached by only one straight line motion. The vehicle can still reach the destination, but with paths in which turns are obviously necessary. Furthermore, if the general direction towards destination lies within a sector defined by the no-sailing zone, the vehicle should go by either tacking or wearing, which are the two main maneuvers to go upwind in sailing (see details in [9, 10]). The paths for these two maneuvers are constructed by sequences of straight lines and circles. Since the maximum steering angles δ¯ or -δ¯ are applied during the turn, the radius of the circles followed by vehicle is r=L/tanδ¯. Figure 4 lays out routes for tacking (a) and wearing (b) maneuvers.As alluded to in the previous section, and as a direct consequence of Proposition3, a single wearing maneuver/loop entirely avoids the dead zone, and the path is, in this case, separated into three pieces, which are straight line [p1,p41], arc [p41,p42], and straight line [p42,p4] (see Figure 4(b)). A tacking maneuver is easily constructed similarly to a wearing one (points linking the straight lines and the circles are obtained directly from a method identical to the one detailed in the appendix). However, this maneuver has to be divided into five different segments, accounting for the presence of the dead zone: straight line [p1,p31], arc [p31,p32], arc in the dead zone [p32,p33], arc [p33,p34], and straight line [p34,p3] (see Figure 4(a)).Here, the idea is that tacking is always preferred because it is usually faster, as wearing around means losing way. Geometrically, selection of the right maneuver (i.e., tacking or wearing) must, however, take into account the distance between two established points, that is, if they are too close from each other for a tack, there might be not enough space for turning with radiusr, hence the vehicle can only go wearing about.Whether we are tacking or wearing, both these maneuvers can be considered as two examples of the samegeometric task, while crossing the no-sailing zone is specific to tacking, hence more of a dynamic flavor. Hence, for the geometric task, each segment i (straight line or arc) of the path is represented by the following differential equation in  xi(s),yi(s),θi(s):
(19)dxids(s)=cos⁡θi(s),dyids(s)=sin⁡θi(s),dθids(s)=1Ltanδi(s),
where s(t) is the path variable. Since p1(x0,y0,θ0) and p3(xT,yT) (or p4(xT,yT)) are known, together with the final headings θT which are supposed to be decided upon, obtaining the length Si of each segment can be done by solving yet another TPBVP. Taking for instance the path of a tacking maneuver, as seen in Figure 4(a), proceed similarly to Section 2 and formulate ODEs and appropriate boundary conditions as follows:(20)dxdτ(τ)=[s1cos⁡θ1(τ)s1sin⁡θ1(τ)0s2cos⁡θ2(τ)s2sin⁡θ2(τ)s2tanδ¯Ls3cos⁡θ3(τ)s3sin⁡θ3(τ)s3tanδ¯Ls4cos⁡θ4(τ)s4sin⁡θ4(τ)s4tanδ¯Ls5cos⁡θ5(τ)s5sin⁡θ5(τ)0],Cτ=[x1(0)-x0x1(1)-x2(0)y1(0)-y0y1(1)-y2(0)θ1(0)-θ0x2(1)-x3(0)y2(1)-y3(0)θ2(0)-θ0θ2(1)-θ̲x3(1)-x4(0)y3(1)-y4(0)θ3(0)-θ̲θ3(1)-θ¯x4(1)-x5(0)y4(1)-y5(0)θ4(0)-θ¯θ4(1)-θTx5(1)-xTy5(1)-yTθ5(0)-θT].
Consequently, the length for each segment (i.e., si) on the path can be solved automatically and numerically by a BVP solver.


## 3.4. Feedforward Controller Computation

Once a path is defined, the objective is to generate appropriate control signals that will steer the vehicle along this path. Obviously, a feedforward strategy similar to the one in Section2 can be applied here, as we only need to determine switching times for the constant control levels F¯, -F¯, and 0, the steering angle levels δ¯, -δ¯, and 0.In order to get these switching times forF(t), and as represented in Figure 5, the basic path/length dynamics of system (16) can be simply described as follows:(21){ṡ(t)=v(t),s(0)=0,s(T)=sT,mv̇(t)+dv(t)=F(t),v(0)=0,v(T)=0,
where sT=∑i=1nsi. Comparing Figure 5(a) with Figure 1, it is obvious our one-dimensional problem of Section 2 is similar to the tacking maneuver, the wearing maneuver being even simple due to the absence of dead zone crossing. Hence, we use the same method for motion planning of the 1D case, which is shown in Figure 2, where x0 corresponds to 0 and xT corresponds to sT.Basic dynamics for (a) tacking and (b) wearing.
(a)(b)In this context, the only difference is that if while entering the dead zone, the vehicle velocity is not sufficient, instead of going backwards, a tacking maneuver is changed into a wearing one. This implies reshaping the path, as described in the previous Section3.3.Finally, using functions(t) obtained from solving (21), together with segment length si, it is straight-forward to get the switching times for steering function δ(t).


## 3.5. On-Line Path Planning

In sailing, the environment is inherently unstable and changes in wind speed and direction might occur. In the important case of a change in wind direction, the path should obviously be recomputed, and the control input profiles applied immediately under the new conditions.Using only minor changes, our strategy can swiftly adapt to a new wind direction (see also [26] on replanning issues). First, for on-line planning purposes, instead of our vehicle starting at v(0)=0, we now naturally have v(0)=v0, with v0 being the vehicle velocity when the wind direction changes. Regarding wind direction, and assuming first that the wind is coming from the north (i.e., the wind angle is α=-π/2), once the wind shifts (i.e., the new wind angle is α′), the Cartesian coordinates with respect to the wind changes as well, and the position of the vehicle in the new coordinate system can then be redefined as (x0′,y0′)T=R(Δα)(x0,y0)T. The rotation matrix induced by the wind shift is(22)R=(cos⁡(Δα)-sin⁡(Δα)sin⁡(Δα)cos⁡(Δα)),
in which Δα=α-α′ is the difference between the wind angles. Similarly, the specified target is also transformed in the new coordinate system as well as the initial heading. Consequently, according to terminal conditions (x0′,y0′,θ0′) and (xT′,yT′), the path is replanned by using our path generation strategy. Then the control input profiles F(t) and δ(t) are computed as before.Note that more replanning can occur for other changes as well, like, for example, if the considered vehicle is a landyacht and the friction with respect to the ground changes, thereby changing parameterd. Obviously, updating our motion plans in realtime somewhat transforms our initial feedforward control structure into a hybrid feedback controller. Although the stability of such controller is definitely of interest, it is outside the scope of the present paper (see also [27] for interesting results of stability of hybrid systems).


## 4. Simulation Results

In this section, we illustrate our feedforward control strategies with a few simulation results, and for which the system parameters were taken asm=150 kg, d=135N·s/m, L=3m, F¯=3000N, δ¯=π/6, θ̲=π/3, and θ¯=2π/3. To solve the different TPBVPs present in our algorithms, we use the function bvp4c from MATLAB.In Figure6 two examples of possible maneuvers of the vehicle in the plane are represented, starting with initial position (10,10) and heading π/6. The wind is assumed to be coming from the north. The red curve represents a wearing maneuver going to position (15,15) while the tacking maneuver going to (20,30) is pictured in blue.Figure 6
Trajectories followed by the vehicle with red arrow indicating where the wind comes from.Figure7 shows the control input signals F(t) and δ(t) corresponding to the two maneuvers of Figure 6. As can be seen from Figure 7(a), F(t) has either constant level 3000N, -3000N or F=0, the latter level meaning the vehicle is crossing the no-go zone. On the other hand, and as pictured on the red curve, the external force will never be 0 if the sailing vessel is wearing or going straight. In Figure 7(b) the variations of the steering angle are represented.Control inputs for tacking and wearing maneuvers. (a) External force profile and (b) steering angle.
(a)(b)Figure8 represents the variations of the longitudinal velocity and the heading angle, respectively. Note for the blue curve the decrease in velocity while entering the dead zone, followed by a reacceleration as soon as the vehicle gets out of it (between time t=1.7610 s and t=2.1240s).Vehicle velocity and heading angle for tacking and wearing maneuvers. (a) Vehicle velocity and (b) heading angle.
(a)(b)Figure9 shows another simulation result illustrating the implementation of the on-line replanning scenario. The wind is initially coming from the north (blue arrow) and the vehicle is set to go upwind from position (10,10) to (-10,30) with initial heading θ0=-3π/4 and starting velocity v0=0. Following our motion planning strategy, the trajectory is supposed to follow the blue path represented in Figure 9. However, at time t=2.3550s, that is, as the vehicle travels through position (-12.5,7.5), the wind suddenly changes direction, so that the vehicle cannot follow the initially planned path, because in this case, the latter part of the blue path is directly facing the wind. Hence, using the current velocity as the new initial velocity, replanning is computed at t=2.3550s and new control levels are applied to steer the vehicle on the new path (in red) towards destination.Figure 9
Trajectories followed by the vehicle when the wind shifts. Blue and red arrows indicate that the wind direction alters.


## 5. Concluding Remarks

For motion planning issues, the essence of the dynamical properties of sailing systems lies in the no-go zone that prevents sailors from sailing directly into the wind. In this paper, we have shown, through simplifying further our already simple kinematic sailing model, that several problems, that is, controllability, path generation, and control input generation can all be formulated as two-point boundary value problems, for which many solvers are available. Note that, in our view, it is the simplicity of the method that allows to solve elegantly a problem for a nonlinear system involving both a saturation and a dead zone at the same time, and that might have been difficult to solve with other available techniques.On the methodological point-of-view, this can be somewhat related to some dynamic inversion strategies where controllability considerations are directly used to construct feedforward control strategies (see, e.g., [21]). On a more technical perspective, our ideas can of course be seen as being close in spirit to techniques used in bang-bang control (see [28] among others), and additional results might be gained by pushing investigations further in this direction, notably with regard to time optimization and/or consideration of models with increasing complexity.



---

*Source: 402017-2011-11-03.xml*