Trajectory Generation using Sharpness Continuous Dubins-like Paths
with Applications in Control of Heavy Duty Vehicles

arXiv:1801.08995v1 [] 26 Jan 2018

Rui Oliveira1,2 , Pedro F. Lima1,2 , Marcello Cirillo2 , Jonas Mårtensson1 and Bo Wahlberg1
Abstract— We present a trajectory generation framework for
control of wheeled vehicles under steering actuator constraints.
The motivation is smooth autonomous driving of heavy vehicles.
The key idea is to take into account rate, and additionally,
torque limitations of the steering actuator directly. Previous
methods only take into account curvature rate limitations,
which deal indirectly with steering rate limitations. We propose
the new concept of Sharpness Continuous curves, which uses
cubic and sigmoid curvature trajectories together with circular
arcs to steer the vehicle. The obtained trajectories are characterized by a smooth and continuously differentiable steering
angle profile. These trajectories provide low-level controllers
with reference signals which are easier to track, resulting in
improved performance. The smoothness of the obtained steering
profiles also results in increased passenger comfort. The method
is characterized by a fast computation time, which can be
further speeded up through the use of simple pre-computations.
We detail possible path planning applications of the method,
and conduct simulations that show its advantages and real time
capabilities.

I. INTRODUCTION
A. Background and Motivation
Path planning deals with the generation of paths or trajectories (paths with an associated time law) for a vehicle.
The generated paths/trajectories are then used as a reference
signal for the controllers implemented in the vehicle. Planning methods for autonomous vehicles have come a long way
from the initial problem of finding collision free paths, being
now focused on properties such as kinodynamic constraints,
optimality, and uncertainty [1], [2]. Non-holonomic systems,
such as car-like vehicles, must follow specific patterns of
motion, that are defined by their kinematic constraints. These
constraints introduce an additional difficulty, as they limit the
maneuverability of the vehicle, resulting in limited types of
paths that are admissible, i.e., can be feasibly followed.
Steering methods are planners that are able to compute
a path between vehicle states in an environment without
obstacles. Even though the vast majority of autonomous vehicle applications involve the presence of obstacles, steering
methods still prove to be useful, as they are often used as
part of obstacle avoiding path planners [3]–[6].
The Dubins path [7] is a steering method able to connect
two arbitrary vehicle poses through a minimal length path.
*This work was partially supported by the Wallenberg Autonomous
Systems and Software Program (WASP)
1 School of Electrical Engineering, ACCESS Linnaeus Centre,
KTH Royal Institute of Technology, SE-100 44 Stockholm, Sweden
rfoli@kth.se,
pfrdal@kth.se,
jonas1@kth.se,

bo@kth.se
2 Scania,

Autonomous

Transport

Solutions,

marcello.cirillo@scania.com

Södertälje,

Sweden

However it is limited to vehicles moving either forward or
backward and assumes instantaneous changes in the angular
velocity. This concept was later extended to a vehicle that is
able to change directions along the path, i.e. switch between
forward and backward motion, resulting in the Reeds-Shepp
paths [8].
Both [7] and [8] assume instantaneous angular velocity
changes, resulting in paths with a discontinuous curvature
profile. To perfectly track these paths, a car-like vehicle
would have to immediately change its steering angle, or
alternatively, to steer while stopped, which is not feasible/desirable in practice.
In order to achieve curvature continuous paths, [9] proposed an extension to Reeds-Sheeps paths. Making use of
clothoidal paths, the authors developed a steering method
that provides curvature continuous paths. Clothoids are an
obvious choice, since they have long been used in road
design, as they allow for smooth driving [10]. Additionally
the curvature and curvature rate are bounded, making them
more suitable to be followed by actual car-like vehicles.
Curvature continuity is, however, not enough for path
feasibility. The continuity must also be present in the sharpness, that is, the curvature rate. A discontinuity in the
sharpness of the path implies an infinite acceleration in the
steering wheel actuator, that renders the path impossible to
track precisely. Sharpness continuity, and consequently path
feasibility, are thus, of extreme importance when precise
maneuvering is needed. In such case, we would like to
provide the vehicle with paths that are easy to follow [11]. By
generating references that are easier to follow, the low-level
controller performance is expected to improve. Passenger
comfort comes as an added benefit, due to the smoother
curvature profiles imposed by a continuous sharpness.
To the best of our knowledge, [12] is the only work
addressing sharpness continuity. However, the method only
takes into account the curvature and sharpness of the path,
not tackling the actual steering actuator limitations.
B. Main Contributions
The contribution of this work comes from the generation
of vehicle trajectories that:
• Directly take into account steering actuator magnitude,
rate, and torque limitations;
• Ease the controller task and improve passenger comfort;
• Can connect arbitrary poses with arbitrary curvatures;
• Have fast computation times.
We build upon the work of [9], replacing clothoidal paths
with cubic and sigmoid curvature paths. Cubic curvature

paths are easy and intuitive to compute. Even though they
are only differentiable, instead of infinitely differentiable,
as in [12], they still result in paths which do not require
infeasible torques from a steering wheel actuator. Sigmoid
curvature paths take inspiration from [12], and they are used
due to their characteristic smooth profile. Additionally, we
formulate the constraints so that we can limit the actual
steering angle rate and steering angle acceleration of the
vehicle, instead of the sharpness of the path, as done in
previous approaches [9], [12]. The maximum steering angle
rate and acceleration are more intuitive constraints than the
maximum sharpness, and they can be directly obtained from
the vehicle actuator limitations. The proposed method is also
computationally inexpensive and can be used as part of an
online planner in autonomous vehicle systems.
C. Outline
The structure of the paper is as follows. In Section II, we
present the vehicle model used and the problem to be solved.
Following that, Section III presents the proposed method to
solve the stated problem. Sections IV and V present Cubic
Curvature and Sigmoid curvature paths, which are used to
construct sharpness continuous paths. Section VI contains
experimental simulation results, showcasing the performance
of the method. Some conclusions and directions of future
work are presented in Section VII.
II. P ROBLEM S TATEMENT
A. Vehicle Model
We start by defining the vehicle model as:
  

 
ẋ
cos θ
0
ẏ   sin θ 
0
 =

 
 θ̇   κ  v + 0 σ.
0
1
κ̇
(x, y) represents the location of the vehicle rear wheel axle
center and θ its orientation. The curvature κ of a vehicle with
wheelbase length l is related to its steering angle φ through
tan φ
.
(1)
l
The steering angle of the vehicle is set by an actuator,
which like any real system has physical limitations. The
limitations we target in this work are:
• Maximum steering angle amplitude φmax ,
• Maximum steering angle rate of change φ̇max ,
• Maximum steering actuation acceleration φ̈max .
These limitations effectively affect the vehicles motion capabilities and should be dealt with when generating paths to
be followed.
κ=

B. Path Feasibility
Path feasibility depends on the capabilities of the vehicle
that performs it and on the path itself. The limited steering
angle amplitude φmax imposes a maximum allowed curvature on the path κmax . By generating paths which have a
curvature profile |κ| ≤ κmax , as done by Dubins [7], it is

possible to address this limitation. Limited steering angle rate
of change φ̇max is tackled in [9] by limiting the sharpness
of the generated paths.
In this paper, we deal with the third limitation, related
to the limited steering angle acceleration φ̈max . Having a
limited φ̈max results in φ̇ being a continuous function, which
in turn indicates that φ is a continuously differentiable, C1
function. The paths generated by [9] have corresponding φ̇
profiles with discontinuities, that require an infinite φ̈max .
This is impossible to achieve by an actuator, and motivates
the usage of paths with a C1 steering profile.
The steering profile is related to the curvature profile
through (1). The sharpness α is defined as the spatial
derivative of the curvature
∂κ
,
α=
∂s
where s is the distance along the path. By ensuring sharpness
continuity in a path, we guarantee that the curvature, and the
steering profile of such a path is C1 , and that a vehicle will
be able to follow it with bounded steering acceleration φ̈max .
In the following section, we detail how to generate paths
that respect all three limitations previously stated.
III. S HARPNESS C ONTINUOUS PATHS
A. Principle
Dubins paths use a combination of arc circle turns and/or
line segments to connect two arbitrary poses. The arc circle
turns have a turning radius of κmax guaranteeing that a
maximum steering angle φmax is never exceeded. In [9],
this idea is extended with so called Curvature Continuous
(CC) turns, which replace arc circles by a combination of
clothoid and arc circle segments so as to guarantee curvature
continuity.
We extend this idea further, replacing the clothoid segments by cubic and sigmoid curvature paths, and in that way,
achieving sharpness continuity. This comes with the added
benefit that such paths are feasible with a limited steering
acceleration φ̈max .
B. Sharpness Continuous Turns
We propose a novel concept of a turn, called Sharpness
Continuous (SC) turn. Unlike the previously proposed CC
turns [9], an SC turn is able to achieve curvature rate
continuity.
The SC turn consists of three segments, an initial cubic or
sigmoid curvature path Γa , a circular arc Γ◦ , and a final cubic
or sigmoid curvature path Γb . Figure 1 shows an example of
a SC turn. The initial segment Γa starts at a configuration
qa and ends with maximum curvature, ±κmax . The second
segment is a circular arc Γ◦ with radius κ−1
max and arbitrary
arc length. The SC turn is completed with a path Γb , with
starting curvature ±κmax and ending at a configuration qb .
We assume, without loss of generality, that the vehicle,
and subsequently the path, starts at a configuration qa =
(xa , ya , θa , κa ) = (0, 0, 0, 0). From qa , it then follows the
path Γa taking it to a configuration qi = (xi , yi , θi , κmax ).

δ
qb

µ

Ω2

Γb
Ω1

qj

r

r1 cos µ1

q1

Ω

q2
r2 sin µ2

r1 sin µ1

Γo

r2 cos µ2

r2

µ1 µ2

r1

κ−1
max
Ω1

Γa

r1 cos µ1

qi

µ1

r1
q1

µ2

q2
r2 cos µ2

r2

qa
r1 sin µ1

Fig. 1: Sharpness continuous turn general case

Ω2
r2 sin µ2

The path has as initial and final conditions κi = κa and
κf = κmax . The values xi , yi , and θi are those that result
from following the curvature profile of Γa with a starting
vehicle state qa .
Once the vehicle has a curvature κmax , it then follows a
circular arc path Γ◦ with radius κ−1
max . The circular arc starts
at the position (xi , yi ) and has its center at a distance κ−1
max
perpendicular to the orientation oi from point (xi , yi ). The
center is then given by
−1
(xΩ , yΩ ) = (xi − κ−1
max sin θi , yi + κmax cos θi ).

(2)

The last path segment Γb departs from the circular arc and
it brings the vehicle to a configuration qb = (xb , yb , θb , κb ).
Configuration qb depends on the point of departure from the
circular arc, qj . However, it always lies in a circle Ω, which
has the same center as the circular arc, (xΩ , yΩ ).
In order to find the radius of circle Ω, we first assume
an auxiliary circular arc to be centered at (xΩz , yΩz ) =
(0, κ−1
max ). We then assume a departure configuration from
the circle at (0, 0, 0, κmax). Then, by following the path
given by a curvature profile with initial and final curvatures
κi = κmax and κf = κg , we will end at a configuration
qz = (xz , yz , θz , κz ). qz is a configuration located at an
auxiliary Ωz circle (the auxiliary equivalent of the Ω circle),
which has the same center as the circular arc. Thus we can
compute the radius of Ωz , which is equal to the radius of Ω,
as
q
q
2
r = (xg − xΩz )2 + (yg − yΩz )2 = x2g + (yg − κ−1
max ) .
(3)
An additional angle µ is defined as being the difference
between θb and the tangential angle to Ω at configuration qb .
It is computed using the previous auxiliary circular arc as


π
yb − κ−1
max
+ − θb
(4)
µ = arctan
xb
2

Fig. 2: Computing the external (top) and internal (bottom)
tangents

It can then be observed that given a certain initial configuration qa , the possible positions of the ending configuration
qb , resulting from a combination of a cubic or sigmoid
curvature path, a circular arc, and another cubic or sigmoid
curvature path lie on a circle Ω. The possible θb orientations
of these configurations are given by the tangential angle at
the circle plus µ.
C. Connecting Sharpness Continuous Turns
A SC path between start and goal configurations qs and
qg can be found by connecting two SC turns. Such path
consists of three elements:
• a SC turn starting at the initial configuration qs and
ending at a configuration with null curvature q1 ,
• a line segment starting at q1 and ending at q2 , with
orientation equal to both q1 and q2 ,
• a SC turn starting at configuration q2 with null curvature, and ending at the final configuration qg .
In order to connect two SC turns, we need to find the
configurations q1 and q2 that belong to the starting and
ending SC turn possible departure configurations, and that
can be connected with a line segment. That is, q1 and q2
must have the same orientation θ, and both must lie on a
line segment with an inclination angle θ.
As seen before, the possible set of departure configurations
of a SC turn are located in a circle, and its orientations
differ from the circle tangent by µ. Thus, to connect two
SC turns, we need a way to connect two circles Ωs and Ωf
with arbitrary centers, radii, and µ values.

We first assume two auxiliary circles Ω1 and Ω2 , as
depicted in Figure 2 (top). Ω1 and Ω2 have the same radii
and µ values as the original circles Ωs and Ωf . Ω1 is centered
at (0, 0) and Ω2 is located so that q1 and q2 are collinear.
We are interested in finding the center of Ω2 = (xΩ2 , yΩ2 ).
From Figure 2 (top) it can be seen that
yΩ2 = −r1 cos µ1 + r2 cos µ2 .

(5)

We assume that the distance r(Ω1 , Ω2 ) between the circle
centers is the same as the distance of the original circles
r(Ωs , Ωf ). We then have
q
2 .
(6)
xΩ2 = r(Ωs , Ωf )2 − yΩ
2

We know that q1 = (r1 sin µ1 , −r1 cos µ1 , 0) and q2 =
(xΩ2 − r2 sin µ2 , yΩ2 − r2 cos µ2 , 0). In order to find these
configurations in the original circles Ωs and Ωf , we need to
first apply a rotation ∆θ = arctan(yΩg − yΩs , xΩg − xΩs )
to q1 and q2 . We then translate these configurations by
(∆x , ∆y ) = (xΩs , yΩs ). The resulting rotated and translated
configurations correspond to the desired tangent configurations between the circles Ωs and Ωf .
The above procedure finds the departure configurations
between two counter clockwise (left steering) SC turns
(shown in Figure 2 (top)). The same procedure, with minor
alterations, can also be used to find the possible departure
configurations between any combination of clockwise (right
steering) and counter clockwise turns. Figure 2 (bottom)
shows an example of counter clockwise and clockwise turns.
This method is valid as long as the found tangent configurations q1 and q2 do not lie inside the circles Ω2 and Ω1 ,
respectively.
D. Small Orientation Change Turns
A SC turn can sometimes have a very small orientation
change δ between its starting and departing poses. Let us
define δθ (Γi ) and δθ (Γf ) as the orientation changes between
the initial and final poses of paths Γi and Γf . For an
orientation change |δ| < |δθ (Γi ) + δθ (Γf )|, the SC turn has
to perform a very long circular arc segment, so that it can
correctly connect the start pose to the departing pose.
In order to avoid this large turn, the method presented
in [9] uses a combination of a clothoid and a symmetric
clothoid, that achieves this exact orientation change without
having to travel along the arc circle. In [13], the same authors
found analytical expressions for this elementary path, that
can achieve such an orientation change, and end up at the
necessary departure configuration. Unfortunately, in our case
we were not able to derive analytical expressions for the case
of cubic and sigmoid curvature profiles.
To achieve a SC turn that can achieve a small orientation
change δ without having to resort to a large circular arc
segment, we make use of splines. In [14], seventh order
polynomials are used to generate paths between two arbitrary
configurations. Using the same method we connect the
starting pose to the departing pose. We additionally enforce
a sharpness of zero at the endpoints in order to guarantee
sharpness continuity.

E. Finding the Shortest SC Path
In order to find the shortest SC path between two configurations qs and qg , we need to compute all the possible SC
turns that can be spanned from these configurations. The SC
turns are then connected, in order to generate possible SC
paths. The process is detailed below.
Each of the configurations qs and qg can span a total of
four SC turns, depending if the vehicle is moving forwards or
backwards, or if the vehicle is turning left or right. The case
of a SC turn which assumes the vehicle moving forward and
turning left is shown in Figure 1. The method explained in
section III-B can be readily used to obtain SC turns moving
forward, independent of the direction they are turning. The
procedure to obtain a SC turn moving backwards is fairly
similar, the only difference being that now the SC turn is
constructed backwards from the desired configuration from
which we wish to span the SC turn.
In total, there are 16 possible paths between the two sets
of 4 SC turns spanned from configurations qs and qg . Each
path is found by computing the SC path, resulting from
connecting two SC turns, as detailed in section III-C. Each
SC path length is evaluated, and the shortest of all possible
paths is then selected as the solution.
IV. C UBIC C URVATURE PATHS
A. Introduction
Cubic curvature paths are defined as paths with a cubic
curvature profile κ(s) = a3 s3 + a2 s2 + a1 s + a0 , where s
is the length along the path. As an example, clothoids have
instead a linear curvature profile κ(s) = a1 s + a0 , where a1
is the clothoid sharpness α, and a0 the initial curvature of
the clothoid κ(0) = κi .
We choose a cubic curvature profile because it is the minimum degree polynomial which allows us to define arbitrary
initial and final curvatures, κi and κf , and sharpnesses αi
and αf . The sharpness profile of these paths is given by:
α(s) =

∂κ(s)
= 3a3 s2 + 2a2 s + a1 .
∂s

(7)

In order to find the parameters of the cubic polynomial, we
use the initial and final constraints:
κ(0) = κi = a0 ,
α(0) = αi = a1 ,
κ(sf ) = κf = a3 sf 3 + a2 sf 2 + a1 sf + a0 ,
α(sf ) = αf = 3a3 sf 2 + 2a2 sf + a1 ,

(8)

where sf is the path length, and is itself an unknown.
In our application we want to ensure sharpness continuity,
for this purpose we need to set the initial and final sharpness
values, αi and αf to zero. This allows us to stitch together
cubic curvature paths with other path segments while ensuring sharpness continuity.

this time by a scaling factor of φ̈peak /φ̈max . In order to
make sure that the path respects both rate and acceleration
limitations, we need to scale its length by the greater of
the two scaling factors. Once the new path length sf is
computed, the cubic curvature path is recomputed, by solving
the linear equation system given by the initial and final cubic
polynomial constraints (8).

V. S IGMOID C URVATURE PATHS
A. Introduction
Sigmoids are comprised of several functions which
achieve an ”S”-like shape. One such function is the hyperbolic tangent tanh(x). Paths with a curvature profile given
by an hyperbolic tangent slowly change from one curvature
to another in a very smooth way.
We consider paths which follow a curvature profile of the
type κ(s) = A tanh(Bs), where A depends on the desired
initial and final path curvatures, and B is a tunable parameter,
controlling the smoothness of the path.
Assuming that A = 1, we plot the resulting hyperbolic
tangent function for different values of B in Figure 3. It can
be seen that an increasing magnitude of B results in a sharper
transition. The sharper the transition, the more difficult the
curvature profile is to follow. Choosing a too small value of
B will result in easy to follow paths, but at the cost of large
path lengths.
We want our path to start at an initial curvature κi and
finish at a final curvature κf . Once decided on a certain B
value, B ∗ , we evaluate the function κ(x) = A tanh(B ∗ x),
in the interval x ∈ [−1, 1]. To achieve the desired curvature
change between κi and κf we need
A∗ =

(κf − κi )
2 tanh(B ∗ )

The function κ(x) = A∗ tanh(Bx)−A∗ tanh(−B)+κi will
then, in the domain x ∈ [−1, 1] take values from κi to κf .
B. Sharpness Discontinuity
The sharpness profile of a sigmoid curvature path is given
by
sf
α(s) = A∗ Bsech2 (B(s − )),
2

1
0.8
0.6
0.4
0.2
tanh(Bx)

B. Ensuring Steering Rate and Acceleration Constraints
In order to have a feasible path, we need to ensure that a
vehicle can follow it while complying with its steering limits.
By ensuring that both κi and κf are smaller in magnitude
than κmax , we ensure that the cubic curvature path always
has a steering angle magnitude smaller than κmax .
The steering angle profile corresponding to the cubic
curvature path is first computed from the path curvature using
(1). Assuming then that the vehicle is following the path at
a given velocity v, the steering angle rate and acceleration
profiles are computed. Both profiles have a peak magnitude
rate φ̇peak and acceleration φ̈peak . In case φ̇peak is larger
than the allowed maximum steering rate φ̇max the length sf
needs to be increased so that φ̇peak = φ̇max . This can be
achieved by simply scaling the path length by φ̇peak /φ̇max .
Similarly if φ̈peak > φ̈max , we scale
q the path length, however

0
−0.2
−0.4
−0.6
B=1
B=2
B=3

−0.8
−1
−1

−0.8

−0.6

−0.4

−0.2

0
x

0.2

0.4

0.6

0.8

1

Fig. 3: Influence of B in the hyperbolic tangent function

which at the beginning and ending of the path s = 0 and s =
s
sf , has a non-null sharpness α = ±A∗ Bsech2 (B 2f ). This
means that if we stitch a sigmoid curvature path with another
path that has an initial or final null sharpness, we do not
have the desired sharpness continuity property. However the
magnitude of the discontinuity can be reduced by increasing
the magnitude of the B value. By choosing large enough B
values, this discontinuity becomes almost unnoticeable.
C. From Maximum Steering Rate to Maximum Sharpness
As for the case of cubic curvature paths, the steering rate
and acceleration profiles of the path need to be computed. A
scaling of the path length is then performed to ensure that the
path complies with the steering rate and acceleration limits.
The procedure to do so follows the same steps as explained
in IV-B.
VI. R ESULTS
A. Convergence of SC Paths to Dubins Paths
As previously mentioned the Dubins paths are proven to
be optimal in terms of length. The CC and SC paths are,
however, longer than the Dubins path. This happens because
the CC and SC turns have longer turning radii than a stand
alone circular arc with a radius r = κ−1
max .
In Figure 4, we show the Dubins path for a given start
and goal configuration. We then overlay SC paths with
different maximum sharpness for the same start and goal
configurations. It can be seen that the greater the maximum
sharpness of the SC paths is, i.e. the greater the achievable
steering rate and accelerations of the vehicle, the closer it
approaches the Dubins path. This is somewhat intuitive, as
increasing the maximum sharpness of the path results in
increasing the rate of change of the curvature profile. If
αmax → ∞, then the curvature transitions from and to κmax
would be immediate, and the SC path would be equivalent
to the Dubins path.
B. Notes on Computational Complexity
As previously mentioned, given two configurations qs and
qg , the SC method computes all possible SC turns and how
they can be connected. The connection process, as detailed

40

ture. In fact, one can allow the start and goal configuration to
have curvature values in a discrete set K = [κ1 , κ2 , . . . , κN ].

35
30

D. Spline Computations

y position (m)

25
20
15
10
5

Dubins (α = ∞ )
α = 0.5
α = 0.25
α = 0.125

0
−5

−10

−5

0

5

10

15

20

25

30

35

40

45

x position (m)

Fig. 4: SC paths with increasing sharpness α converge to the
Dubins path
in section III-C, is computationally cheap, requiring only a
few trigonometric operations.
The bulk of processing comes from finding the possible
SC turns each configuration can span. As seen in section
III-B, a SC turn depends on the cubic or sigmoid curvature
paths that are part of it. In order to evaluate these paths,
one has to generate their curvature profiles from the given
initial and final constraints. To comply with the steering
constraints, a numerical evaluation of a steering profile must
be done, in order to find the path length scaling factors, as
detailed in section IV-B. When one has the desired curvature
profile, the orientation θ can be obtained analytically. The x
and y positions of the path are, however, found by solving
the vehicle model equations, using an Euler method. The
computational cost of this, results from a trade-off between
desired precision and required real-time capabilities of the
SC method.
In order to greatly decrease the computation complexity
of the method, some shortcuts can be taken, as detailed in
the following section.
C. Precomputation of Cubic Curvature Paths
As previously stated, the SC method computation speed is
limited by the generation of the cubic or sigmoid curvature
paths. Depending on the application however, some assumptions can be made, which can greatly improve the query time
of the method, by allowing a precomputation of the cubic or
sigmoid curvature paths to be used.
If one assumes that the start and end configurations always
have null curvatures, then one can compute in an initialization procedure, all the possible cubic or sigmoid curvature
paths starting and ending at curvatures κ = 0, ±κmax . In this
way, we skip the expensive generation of cubic curvature
paths needed to find out the possible SC turns, greatly
reducing the computation time of the SC method. In order
to generate a SC turn, one just has to use the precomputed
paths and apply rotations and translations on them.
The precomputation of paths can still be achieved, without
limiting the start and goal configurations to have null curva-

In the case when small turn paths need to be used (detailed
in section III-D), a numerical evaluation of the whole spline
path is needed. Determining the coefficients of a spline is
computationally cheap, but generating the path points is
expensive, as it requires a simulation of a vehicle model,
in order to find the x and y positions.
Furthermore, splines of such high order, are prone to be
numerically unstable, resulting in curvature profiles with a
large magnitude. This phenomena becomes more evident the
closer the poses are and the smaller the deflection angle is.
Thus, after a spline path is computed, an evaluation step is
required, in order to check that the path complies with the
steering limitations of the vehicle.
E. Timing Evaluation
We test the steering method, measuring its computational
speed for several problem instances. The method is implemented in C++ and running on a Linux Mint distribution. The
computer used is equipped with an Intel Core i7-6820HQ
Processor running at 2.70 GHz, and with 16,0 GB of RAM.
We randomly generate 1000 queries to the steering
method. The start and goal configurations of each query
are generated by sampling the x and y coordinates from
a uniform random distribution between −50 and 50. The
orientations sampled from the interval [−π, π], and the
curvatures are from the discrete equispaced set of curvatures
[−κmax , . . . , 0, . . . , κmax ]. The set of discrete curvatures has
in total 11 elements.
In the first test, we simply evaluate queries resulting in
a path that does not require spline computations. For each
query that is found to result in an SC path without splines,
we run the query first using precomputed paths and then
without using the precomputed paths. For each query we
compute the resulting SC path 100 times, and average its
running time. When making use of precomputations, we
get an average time for finding the solution of 70µs, while
without precomputations we get an average time of 12ms.
The precomputations prove to be of extreme importance,
increasing the computational performance up to 3 orders of
magnitude.
The second test follows the previous setup, but now only
measuring the performance of SC path solutions that have a
spline in it. 1000 queries are evaluated, and averaged over
100 repetitions. When using precomputations, we get an
average query time of 100µs. Without precomputations we
get 14ms.
The reported results indicate that the steering method is
extremely inexpensive when making use of precomputations.
Even in the case when no precomputations are made, the
method runs in few milliseconds, making it suitable for realtime applications.

0.5

F. Simulations

Steering angle (rad)

0.4

0.3

0.2

0.1

0
0

5

10

15

20

25

30

35

Time (s)

Fig. 5: Steering reference profiles used in simulation

Lateral error (m)

0.4
CC
SC-Cubic
SC-Sigmoid

0.2
0
−0.2
0

10

20

30

40

50

60

70

Time (s)
6
Heading error (rad)

A simulation test is run in order to understand how do
the proposed paths influence the performance of a vehicle
tracking them. A kinematic vehicle model coupled with an
accurate steering actuator model are used to simulate a heavy
duty vehicle.
In the test, three paths consisting of a straight segment, a
turn, and a straight segment are generated. The first path is
generated as a CC path [9]. The second and third paths, are
generated using our proposed SC paths, where the second
path uses cubic curvature paths (referred to as SC-Cubic),
and the third path uses sigmoid curvature paths (referred to
as SC-Sigmoid). All three paths are generated so that they
abide by the same maximum steering angle magnitude φmax ,
steering angle rate φ̇max , and steering angle acceleration
φ̈max constraints. As previously explained, the CC paths
require an infinite φ̈max , being so, the CC path only respects
the steering magnitude and rate constraints.
The simulation assumes a steering actuator that is limited
in terms of achievable steering angle magnitude, rate and
acceleration. The steering angle is controlled making use
of a tuned PID controller, which receives a steering angle
reference, and actuates on the steering angle acceleration.
The PID controller was tuned to achieve a satisfactory step
response, characterized by a relatively fast settling time and
with very little overshoot. The steering angle reference is
provided from a high-level controller, which is responsible
for tracking the path. The high-level controller consists of a
feedforward part and a feedback part. The feedforward part
is obtained by finding the closest path point, and getting the
corresponding steering angle at that point. The feedback part
consists in a proportional controller which tries to regulate
both the lateral and heading error. Such a controller is
a simple implementation commonly used in path tracking
applications.
Figure 5 shows the steering reference profiles of the three
paths to be tracked. It can be seen that they consist of
two straight segments connected by a turning motion. The
difference between them is in the shape of the increasing and
decreasing sections of the steering angle. In the CC case,
the steering angle change follows a linear profile, in the SCCubic it follows a cubic profile, and in the SC-Sigmoid case
it follows a sigmoid profile.
Figure 6 shows the measured lateral and heading errors
when the vehicle tries to track the different paths. The vehicle
is initially placed at the start of the path, and it follows the
first straight segment perfectly, as expected. However, when
the turning section starts, a deviation from the path begins
to arise. This is due to the performance of the low-level
PID controller, which is not able to follow the feedforward
steering reference exactly, as is expected of a real system.
The feedback part is then responsible for trying to regulate
the errors to zero.
Shortly after the turn begins the CC path becomes unstable
whilst both the SC-Cubic and SC-Sigmoid paths are stable,
and their error then tends to zero. The error profiles show

CC
SC-Cubic
SC-Sigmoid

·10−2
CC
SC-Cubic
SC-Sigmoid

4
2
0
−2
−4

0

10

20

30

40

50

60

70

Time (s)

Fig. 6: Error profiles when tracking paths

that the worst controller performance is obtained for the case
of the CC paths.
Figure 7 shows the steering angle acceleration request,
which corresponds to the output of the PID controller. The
request is shown for both the SC-Cubic and SC-Sigmoid
paths, the CC path is not shown as it is unstable. It can be
seen that the control action is significantly lower in the case
of the SC-Sigmoid path, indicating that the steering reference
is easier to follow.
The lateral acceleration and jerk (acceleration rate) experienced by the vehicle are related to passenger comfort.
In Figure 8, the lateral accelerations are shown for a vehicle which follows the reference steering profiles, without
feedback from the lateral and heading errors. It can be seen
that the lateral acceleration of the CC paths has large jerk
values, which result from an aggressive steering actuation.
Both the SC-Cubic and SC-Sigmoid steering profiles achieve
smoother lateral acceleration profiles.
The proposed SC paths show a performance improvement,
with the SC-Sigmoid path performing slightly better than the

1

Steering acceleration request (rad/s2 )

0.8
0.6
0.4
0.2
0
−0.2
−0.4
−0.6
−0.8

SC-Cubic
SC-Sigmoid
0

5

10

15

20

25

30

35

Time (s)

Fig. 7: Controller steering angle acceleration request when
tracking a path
CC
SC-Cubic
SC-Sigmoid

0.4

Lateral acceleration (m/s2 )

0.3

of generating a path from a combination of two SC turns
connected by a line segment. This would allow the SC paths
to be able to connect configurations that lie close together.
It is important to evaluate the path tracking performance
of a controller using these type of paths on a real system. In
this paper, the controllers used were simplified ones, which
are not often used in real systems that must achieve high
performance. It can be argued that more complex controller
approaches, such as Model Predictive Controllers (MPC) will
not have significant performance changes when using the
proposed paths. Nonetheless, alternative controllers could be
designed such that they take full advantage of the properties
of the path, without requiring the computational effort of
MPC techniques.
This work can also be extended into time optimal trajectory planning. Currently the SC paths assume a constant velocity, however, the velocity profile could be optimized, such
that the vehicle can perform the path in a time optimal way,
while still obeying steering constraints. Moreover, instead
of applying an a posteriori velocity profile optimization, a
different curvature profile could be optimized with respect
to time, and abiding by the steering constraints.

0.2

R EFERENCES

0.1

[1] M. Buehler et al., eds., The DARPA urban challenge: autonomous
vehicles in city traffic. Vol. 56. springer, 2009.
[2] H. Choset et al., Principles of robot motion: theory, algorithms, and
implementation. MIT press, 2005.
[3] Y. Kuwata et al., ”Real-time motion planning with applications to
autonomous urban driving” IEEE Transactions on Control Systems
Technology 17, no. 5 (2009): 1105-1118.
[4] S. Karaman et al., ”Anytime motion planning using the RRT,” in
Robotics and Automation (ICRA), 2011 IEEE Int. Conf. on, pp. 14781483. IEEE, 2011.
[5] T. Shima et al., ”Multiple task assignments for cooperating uninhabited
aerial vehicles using genetic algorithms” Computers & Operations
Research 33, no. 11 (2006): 3252-3269.
[6] D. Dolgov et al., ”Path planning for autonomous vehicles in unknown
semi-structured environments” The International Journal of Robotics
Research 29, no. 5 (2010): 485-501.
[7] L. E. Dubins, ”On curves of minimal length with a constraint on
average curvature, and with prescribed initial and terminal positions
and tangents” American Journal of mathematics 79, no. 3 (1957): 497516.
[8] J. Reeds and L. Shepp, ”Optimal paths for a car that goes both
forwards and backwards” Pacific journal of mathematics 145, no. 2
(1990): 367-393.
[9] T. Fraichard and A. Scheuer, ”From Reeds and Shepp’s to continuouscurvature paths” IEEE Transactions on Robotics 20, no. 6 (2004):
1025-1035.
[10] P. F. Lima et al., ”Clothoid-based model predictive control for autonomous driving” In Control Conference (ECC), 2015 European, pp.
2983-2990. IEEE, 2015.
[11] B. Nagy and A. Kelly, ”Trajectory generation for car-like robots using
cubic curvature polynomials” Field and Service Robots 11 (2001).
[12] G. Parlangeli and G. Indiveri, ”Dubins inspired 2D smooth paths
with bounded curvature and curvature derivative” IFAC Proceedings
Volumes 43, no. 16 (2010): 252-257.
[13] A. Scheuer and T. Fraichard. ”Continuous-curvature path planning for
car-like vehicles” In Intelligent Robots and Systems, 1997. IROS’97.,
Proceedings of the 1997 IEEE/RSJ International Conference on, vol.
2, pp. 997-1003. IEEE, 1997.
[14] A. Piazzi et al., ”Smooth Path Generation for Wheeled Mobile Robots
Using η3 -Splines” In Motion Control. InTech, 2010.

0
−0.1
−0.2
−0.3
−0.4
0

5

10

15

20

25

30

35

40

Time (s)

Fig. 8: Lateral acceleration when tracking a path

SC-Cubic path. Although being both sharpness continuous,
the SC-Sigmoid path presents a smoother steering profile
when compared against the SC-Cubic path, which results in
a better tracking of the steering reference, and consequently
on a better path tracking performance.
VII. CONCLUSIONS
In this paper, we presented the concept of SC paths. The
proposed paths have the characteristic of respecting not only
the maximum steering angle constraints, but also maximum
steering rate and acceleration constraints. These properties
are of importance as they ease the low-level controller
task, by taking into account important steering actuator
limitations, and consequently providing feasible to track
paths. Furthermore, these paths present an higher degree of
smoothness, which improves the driving comfort and reduces
actuator effort.
As future work, one could extend this approach by allowing the SC paths to handle more possible cases besides that

