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

• Users may download and print one copy of any publication from the public portal for the purpose of private study or research. • You may not further distribute the material or use it for any profit-making activity or commercial gain • You may freely distribute the URL identifying the publication in the public portal Download policy If you believe that this document breaches copyright please contact us providing details, and we will remove access to the work immediately and investigate your claim.


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][2][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][5][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 nosailing 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][13][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, Section 2 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.

A One-Dimensional Model.
To begin with, let us consider a system represented by the following scalar nonlinear differential equation: where m and d are strictly positive constants while function g(x) is such that 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 function g(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 x 0 < x to a "target" position x T > 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.

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 ẋ = 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][21][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.
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: Proof.Similarly to [10], start with (1), g(x)F = 0 representing the system in the no-go zone, Replace ẋ(t) with v(t), (4) becomes The solution of this first-order differential equation with initial condition v 0 is then which gives ẋ(t) = v 0 e −(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 Hence x(t) will never go beyond x provided we have the following inequality: 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).
Journal of Control Science and Engineering 3 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) = u i on t ∈ [t i−1 , t i ), i = 1, 2, 3, . . ., n, our problem can be simplified further and system (1)-(2) can straightforwardly be transformed into a collection of systems where u i can take three values, that is, F, −F, or 0, and T i := t i − t i−1 is the duration for which each control input level is applied.The initial time for the first system is set to t 0 = 0, and, assuming we have a collection of n systems, the total horizon of simulation T is simply expressed as T = i=n i=1 T i .In the following, our goal is to generate start/stop maneuvers (i.e., trajectories such that v(0) = 0 and v(T) = 0) crossing the dead zone (i.e., x(0) < x and x(T) > x).
As we have seen in Proposition 1, the system must have a minimum velocity, v min , 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 |x min − x| below which one has to go backwards before accelerating forward (see Figure 1).
Obtaining x min can be done by examining the following system: From (10), solving x min also implies solving T 1 = t 1 , the time it will take to the system to reach the entrance of the dead zone x 1 (t 1 ) = x with a velocity v 1 (t 1 ) = v min .Thus, finding unknowns x min and T 1 -that are related to the controllability property of the system (if x 1 (0) > x min while v 1 (0) = 0, the system cannot cross the dead zone)-obviously corresponds to solving a two-point boundary value problem (TPBVP) as v 1 (0) = 0, v 1 (T 1 ) = v min and x 1 (T 1 ) = x are given.Additionally, that our first controllability consideration, expressed by Proposition 1, could have also been given a TPBVP flavor, as v min can also be regarded as the solution of a TPBVP with (4) as the system.Regarding motion planning issues, the determination of each time-interval T i during which u i 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]) where p is a vector of unknown parameters, together with an associated constraint function C representing the boundary conditions 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 with the constraints 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): 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 x 0 > x min , the system is simply steered backwards with {−F, F} before applying the first case and solving (15).Similarly to the decision to go backwards or not that is dictated by x min , the distinction between case 1, case 2, and 1: start/end points x(0) = (x 0 , 0), x(T) = (x T , 0) 2: compare x 0 with x min to check whether it needs to go backwards, if yes, go backwards and restart from step 1 3: solve TPBVP for input levels {F, 0, −F} to get T 1 , T 2 , T 3 , and x t3 4: if x t3 = x T 5: case 1: apply input levels {F, 0, −F} with durations {T 1 , T 2 , T 3 } 6: else if x t3 > x T 7: case 2: solve TPBVP for input levels {F, −F, 0, −F} and apply them with obtained durations {T 1 , T 2 , T 3 , T 4 } 8: else (i.e., x t3 < x T ) 9: case 3: solve TPBVP for input levels {F, 0, F, −F} and apply them with obtained durations {T 1 , T 2 , T 3 , T 4 } 10: end Algorithm 1: Motion planning algorithm.Goal: To generate a sequence of control signals for the propulsive force.

DZ
x T F = 0 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).
As seen earlier in this paper, studying controllability is linked to a TPBVP (e.g., the one giving x min ), 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]).

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 Section 2 could be used with only minor adjustments.
The model is described by the following set of four differential equations: 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 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 (3.1).From the way the function g(θ(t)) is defined, it is clear that the control input F(t) has no effect on system (3.1) 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. System (3.1)-( 17) can then be directly put into a statespace form ẋ(t) = f(x(t), u(t), t), where the state vector is The controllability properties of system (3.1)-(17) are in a sense identical to what we saw in Section 2. Thus, the following proposition, whose proofs 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 state x(0) = (x(0), y(0), θ(0 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: 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 Figure 4, 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.
As we have seen in Proposition 2, and by noting v θ of the vehicle when entering the dead zone (see Figure 4(a)), the system (3.1)-(17) cannot be steered across the dead zone when v θ < v min .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 (x 0 , y 0 ) and (x T , y T ) 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 parameters d and m are not exactly known, this would imply that the minimum velocity v min 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.

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 given p 1 (x 0 , y 0 ) and p 2 (x T , y T ) as in Figure 3, then the angle of the line-of-sight is θ LOS = atan2((y T − y 0 ), (x T −x 0 )) (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 p 1 and p 2 .The length of the corresponding path is obviously S T = (x T − x 0 ) 2 + (y T − y 0 ) 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 nosailing 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 δ.As alluded to in the previous section, and as a direct consequence of Proposition 3, 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 [p 1 , p 41 ], arc [p 41 , p 42 ], and straight line [p 42 , p 4 ] (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 [p 1 , p 31 ], arc [p 31 , p 32 ], arc in the dead zone [p 32 , p 33 ], arc [p 33 , p 34 ], and straight line [p 34 , p 3 ] (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 radius r, 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 same geometric 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 x i (s), y i (s), θ i (s): where s(t) is the path variable.Since p 1 (x 0 , y 0 , θ 0 ) and p 3 (x T , y T ) (or p 4 (x T , y T )) are known, together with the final headings θ T which are supposed to be decided upon, obtaining the length S i 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: Consequently, the length for each segment (i.e., s i ) on the path can be solved automatically and numerically by a BVP solver.signals that will steer the vehicle along this path.Obviously, a feedforward strategy similar to the one in Section 2 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.

Feedforward Controller
In order to get these switching times for F(t), and as represented in Figure 5, the basic path/length dynamics of system (3.1) can be simply described as follows: where s T = n i=1 s i .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 x 0 corresponds to 0 and x T corresponds to s T .
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 Section 3.3.
Finally, using function s(t) obtained from solving (21), together with segment length s i , 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) = v 0 , with v 0 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 (x 0 , y 0 ) T = R(Δα)(x 0 , y 0 ) T .The rotation matrix induced by the wind shift is 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 (x 0 , y 0 , θ 0 ) and (x T , y T ), 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 parameter d.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).

Simulation Results
In this section, we illustrate our feedforward control strategies with a few simulation results, and for which the system parameters were taken as m = 150 kg, d = 135 N•s/m, L = 3 m, F = 3000 N, δ = π/6, θ = π/3, and θ = 2π/3.To solve the different TPBVPs present in our algorithms, we use the function bv p4c from MATLAB.
In Figure 6 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 7 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 3000 N, −3000 N 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.
Figure 8 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.1240 s).
Figure 9 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 v 0 = 0. Following our motion planning strategy, the trajectory is supposed to follow the blue path represented in Figure 9.However, at time t = 2.3550 s, 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.3550 s and new control levels are applied to steer the vehicle on the new path (in red) towards destination.

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 Figure 10: Wearing path between two points when θ 0 ∈ (0, π/2) and y T ≥ y 0 .(a) For x T < x 1 and (b) for x T ≥ x 1 .
Figure 12: Wearing path between two points when θ 0 ∈ (π/2, π) and y T ≥ y 0 , with Figure 13: Wearing path between two points when θ 0 = ±π and y T ≥ y 0 , with   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 twopoint 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 Lemma 3. A feasible continuous wearing trajectory constituted by L 1 , R, and L 2 (as described in Figure 10(b)) always exists between (x 0 , y 0 ) and (x T , y T ) if θ 0 is outside the dead zone and θ 0 ∈ (0, π/2), and if the following inequalities are verified: Proof.Under condition (A.2), introduce θ T ∈ (−π/2, 0) and let L 2 be the straight line going through the point (x T , y T ), with heading angle θ T .L 2 intersects with L 1 while L 1 is built in the same way as in Figure 10(a).Similarly to the proof of Lemma 2, a circle of radius r intersects L 1 and L 2 at points p 1 and p 2 , respectively.(A.4) Proof.We will prove both Lemmas 4 and 5 here.To begin with, we need to define coordinate x 2 of inequalities (A.3) and (A.4).To do so, and as can be seen in Figure 11, draw a clockwise circle of radius r starting from (x 0 , y 0 ).Defining the final heading as θ T (θ T ∈ (π/2, π)), a tangent line with θ T intersects the horizontal line y = y T at (x 2 , y T ), where x 2 = x 0 − (y T − y 0 )/ tan(π − θ T ) − r/ tan((π − θ T )/2).For the case where x T > x 2 (see Figure 11(a)), L 2 is on the line going through (x T , y T ), with orientation θ T .The circle with radius r intersects y = y 0 and L 2 at points p 1 and p 2 , respectively.L 1 is then naturally formed by going forward from C 0 to p 1 .
For the case where x T ≤ x 1 (see Figure 11(b)), it is possible to change the initial heading from 0 to −π by turning around, so that two arcs and three lines are used to create the path.Additionally, the length of L 1 is decided upon, which in turn influences the length of L 2 .
By symmetry, it is straightforward to derive similar lemmas when θ 0 ∈ (π/2, π) and θ 0 = ±π and y T ≥ y 0 , with only minor adjustments for expressions of x 1 and x 2 in equations (A.1)-(A.4).Figures 12 and 13 illustrate how these paths can be constructed for specific initial and final configurations.
It is of course also possible for a sailing vehicle to start with a heading angle θ 0 ∈ (−π, 0) to go upwind afterwards.In this case, we can just change the initial configuration to reach an intermediate configuration C 0 = (x 0 , y 0 , θ 0 ), where y T > y 0 and θ 0 ∈ (0, π). Figure 14 shows how to make a path between C 0 and intermediate configuration C 0 so that previously used techniques represented in Figures 10 and 12 can be used directly with C 0 as an initial configuration.
Similarly, for vehicles with a destination point situated downwind (i.e., y T < y 0 ), the above lemmas can still be applied to construct paths according to the new initial configuration C 0 , provided we first construct a first path from C 0 to C 0 as shown in Figure 15.
Finally, and similarly again for a destination point situated downwind, going from a heading angle θ 0 ∈ [0, π] to θ 0 ∈ (−π, 0), as shown in Figure 16 in turns allows to use previous intermediate paths of Figure 15 or Figure 14.
To summarize the above path construction, Table 1 resumes the different conditions and their associated path sequence.

Figure 1 :
Figure 1: Sketch map for the river crossing problem.

Figure 3 :
Figure 3: Polar diagram representing the no-sailing zone.

Figure 4
lays out routes for tacking (a) and wearing (b) maneuvers.

Figure 6 :
Figure 6: Trajectories followed by the vehicle with red arrow indicating where the wind comes from.

Figure 7 :
Figure 7: Control inputs for tacking and wearing maneuvers.(a) External force profile and (b) steering angle.

Figure 8 :
Figure 8: Vehicle velocity and heading angle for tacking and wearing maneuvers.(a) Vehicle velocity and (b) heading angle.

Figure 9 :
Figure 9: Trajectories followed by the vehicle when the wind shifts.Blue and red arrows indicate that the wind direction alters.

Figure 11 :
Figure 11: Wearing path between two points when θ 0 = 0 and y T ≥ y 0 .(a) For x T > x 2 and (b) for x T ≤ x 2 .