90
Acceleration, Braking, and Steering Controller for Polaris GEM e2 by Matthew Benton Salfer-Hobbs Bachelor of Science Mechanical Engineering Florida Institute of Technology 2017 A thesis submitted to the College of Engineering at Florida Institute of Technology in partial fulfillment of the requirements for the degree of Master of Science in Mechanical Engineering Melbourne, Florida May, 2019

Acceleration, Braking, and Steering Controller for Polaris

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Acceleration, Braking, and Steering Controller for Polaris GEM e2

by

Matthew Benton Salfer-Hobbs

Bachelor of ScienceMechanical Engineering

Florida Institute of Technology2017

A thesissubmitted to the College of Engineering

at Florida Institute of Technologyin partial fulfillment of the requirements

for the degree of

Master of Sciencein

Mechanical Engineering

Melbourne, FloridaMay, 2019

c⃝ Copyright 2019 Matthew Benton Salfer-Hobbs

All Rights Reserved

The author grants permission to make single copies.

We the undersigned committeehereby approve the attached thesis

Acceleration, Braking, and Steering Controller for Polaris GEM e2by Matthew Benton Salfer-Hobbs

Matthew Jensen, Ph.D.Assistant ProfessorMechanical EngineeringCommittee Chair

Anthony Smith, Ph.D.Assistant ProfessorElectrical and Computer EngineeringOutside Committee Member

Hector Gutierrez, Ph.D.ProfessorMechanical EngineeringCommittee Member

Ashok Pandit, Ph.D.Professor and Department HeadMechanical and Civil Engineering

ABSTRACT

Title:

Acceleration, Braking, and Steering Controller for Polaris GEM e2

Author:

Matthew Benton Salfer-Hobbs

Major Advisor:

Matthew Jensen, Ph.D.

This paper discusses the design and simulation of lane keeping and velocity con-

trollers for a Polaris GEM e2. The controllers were designed to be implemented in

Florida Institute of Technology’s entry for the Intelligent Ground Vehicle Compe-

tition self-drive challenge. The software and physical implementation of actuators

were included to control the acceleration, braking, and steering. The accelerator

pedal was replaced with a set of digitally controlled potentiometers, the brake

pedal was replaced with a linear actuator, and the steering column was replaced

with a stepper motor. Each actuator was controlled by a Raspberry Pi 3. A slid-

ing mode controller was designed and its performance was evaluated against a PID

controller for lane keeping. The sliding mode controller had a consistently smaller

lateral error, especially during changes to the radius of the curve. Velocity control

was simulated using a derived dynamic model for the longitudinal motion of the

car. An adaptive control method was designed for velocity control and compared

to PID. The adaptive control method reduced the error in longitudinal position

during both acceleration and deceleration.

iii

Table of Contents

Abstract iii

List of Figures vii

List of Tables x

Acknowledgments xi

Dedication xii

1 Introduction 1

1.1 Background Information . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1.1 Automotive Safety . . . . . . . . . . . . . . . . . . . . . . . 1

1.1.2 Levels of Autonomous Driving . . . . . . . . . . . . . . . . . 3

1.1.3 Control Systems . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.2 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.3 Importance of Study . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2 Literature Review 10

2.1 Definitions of Variables and Axes . . . . . . . . . . . . . . . . . . . 10

2.2 Kinematic and Dynamic Models . . . . . . . . . . . . . . . . . . . . 12

2.2.1 2 DOF Model . . . . . . . . . . . . . . . . . . . . . . . . . . 13

iv

2.2.2 3 DOF Model . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.2.3 5 DOF Model . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.2.4 8 DOF Model and Higher . . . . . . . . . . . . . . . . . . . 16

2.3 Control Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.3.1 PID Controllers . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.3.2 Fuzzy Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.3.3 Adaptive Controller . . . . . . . . . . . . . . . . . . . . . . . 23

2.3.4 Sliding Mode Controller . . . . . . . . . . . . . . . . . . . . 25

2.4 ROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.4.1 Communication Framework . . . . . . . . . . . . . . . . . . 27

3 Methodology 29

3.1 Overview of Polaris GEM e2 . . . . . . . . . . . . . . . . . . . . . . 29

3.2 Control Systems Overview . . . . . . . . . . . . . . . . . . . . . . . 30

3.3 Accelerator Control . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.4 Brake Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.5 Steering Angle Control . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.6 Kinematic Model for Simulations . . . . . . . . . . . . . . . . . . . 41

3.7 Dynamic Model for Longitudinal Motion . . . . . . . . . . . . . . . 42

3.8 Velocity Control Methods . . . . . . . . . . . . . . . . . . . . . . . 46

3.8.1 PID Control . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

3.8.2 Adaptive Control . . . . . . . . . . . . . . . . . . . . . . . . 47

3.8.3 Simulated Paths . . . . . . . . . . . . . . . . . . . . . . . . . 49

3.9 Lane Keeping Control Methods . . . . . . . . . . . . . . . . . . . . 51

3.9.1 PID Control . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

3.9.2 Sliding Control . . . . . . . . . . . . . . . . . . . . . . . . . 52

v

3.9.3 Simulated Path . . . . . . . . . . . . . . . . . . . . . . . . . 53

4 Results 56

4.1 Velocity Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

4.1.1 Acceleration . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

4.1.2 Deceleration . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

4.2 Lane Keeping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

4.2.1 Decreasing Radius . . . . . . . . . . . . . . . . . . . . . . . 62

4.2.2 Step Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

4.2.3 Sinusoidal Curve . . . . . . . . . . . . . . . . . . . . . . . . 65

5 Conclusions and Future Work 67

5.1 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

5.2 Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

5.2.1 Increasing DOF . . . . . . . . . . . . . . . . . . . . . . . . . 68

5.2.2 System Integration . . . . . . . . . . . . . . . . . . . . . . . 69

5.2.3 Revise Sliding Mode Controller . . . . . . . . . . . . . . . . 69

5.2.4 Utilize Fuzzy Logic . . . . . . . . . . . . . . . . . . . . . . . 69

References 71

vi

List of Figures

1.1 Stanley, the 2005 DARPA Grand Challenge winner, [17] . . . . . . . 3

1.2 Example of adaptive cruise control. Car 1 maintains a safe distance

from the car 2 using on-board sensors. . . . . . . . . . . . . . . . . 4

1.3 Simple diagram of a feedback control loop . . . . . . . . . . . . . . 7

2.1 Vehicle fixed coordinate system, [18] . . . . . . . . . . . . . . . . . 11

2.2 Dynamic model of a vehicle, [47] . . . . . . . . . . . . . . . . . . . . 13

2.3 2DOF model of a bicycle, [40] . . . . . . . . . . . . . . . . . . . . . 14

2.4 3DOF model of a vehicle, [42] . . . . . . . . . . . . . . . . . . . . . 15

2.5 Model of tire slip angle, [36] . . . . . . . . . . . . . . . . . . . . . . 16

2.6 8 DOF model of a vehicle, [11] . . . . . . . . . . . . . . . . . . . . . 17

2.7 Structure of multi-vehicle adaptive cruise control, [41] . . . . . . . . 18

2.8 Diagram of a PID control loop, [15] . . . . . . . . . . . . . . . . . . 19

2.9 Response of a PID system, [24] . . . . . . . . . . . . . . . . . . . . 20

2.10 Budapest University autonomous go-cart, [9] . . . . . . . . . . . . . 21

2.11 Rule table for fuzzy logic controller, [56] . . . . . . . . . . . . . . . 23

2.12 Difference between Sign and Sat function, [14] . . . . . . . . . . . . 26

2.13 Example of ROS publisher and subscriber setup. . . . . . . . . . . . 28

3.1 Polaris GEM e2, [38] . . . . . . . . . . . . . . . . . . . . . . . . . . 29

vii

3.2 Controller architecture. . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.3 Diagram of axis labels for Xbox 360 controller using ROS joy package. 32

3.4 Pinout of the accelerator sensor, courtesy of Polaris. . . . . . . . . . 33

3.5 Signals received by the Accelerator sensor, courtesy of Polaris. . . . 33

3.6 Wiring Diagram for accelerator control. . . . . . . . . . . . . . . . . 35

3.7 ARM66SMK stepper motor with linear actuator. . . . . . . . . . . 36

3.8 ARD-KD closed loop motor driver. . . . . . . . . . . . . . . . . . . 36

3.9 Wiring diagram for braking controller. . . . . . . . . . . . . . . . . 37

3.10 Trinamic PD 86-3-1180 with gearbox side view. . . . . . . . . . . . 38

3.11 Trinamic PD 86-3-1180 with gearbox front view. The driving gear

is shown in blue, and the driven gear is shown in red. . . . . . . . . 39

3.12 Position error for PID control of stepper motor due to step input. . 40

3.13 Position error for PID control of stepper motor due to ramp input. . 40

3.14 Forces acting on car for longitudinal motion. . . . . . . . . . . . . . 44

3.15 PID tuning for velocity control. . . . . . . . . . . . . . . . . . . . . 47

3.16 Desired velocity of vehicle during acceleration simulation. . . . . . . 49

3.17 Desired position of vehicle during acceleration simulation. . . . . . . 50

3.18 Desired velocity of vehicle during deceleration simulation. . . . . . . 50

3.19 Desired position of vehicle during acceleration simulation. . . . . . . 51

3.20 PID tuning for steering. . . . . . . . . . . . . . . . . . . . . . . . . 52

3.21 Desired path of vehicle during decreasing radius lane keeping simu-

lation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

3.22 Desired radius of vehicle during decreasing radius lane keeping sim-

ulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

3.23 Desired path of vehicle during sinusoidal lane keeping simulation. . 55

viii

4.1 Position of PID and adaptive controller during acceleration. The

desired position is covered by the adaptive controller. . . . . . . . . 57

4.2 Velocity of PID and adaptive controller during acceleration. The

desired velocity is covered by the adaptive controller. . . . . . . . . 57

4.3 Position error for PID and Adaptive controller during acceleration. 58

4.4 Velocity error for PID and Adaptive controller during acceleration. . 58

4.5 Position of PID and adaptive controller during deceleration. The

desired position is covered by the adaptive controller. . . . . . . . . 60

4.6 Velocity of PID and adaptive controller during deceleration.The de-

sired velocity is covered by the adaptive controller. . . . . . . . . . 60

4.7 Position error for PID and Adaptive controller during deceleration. 61

4.8 Velocity error for PID and Adaptive controller during deceleration. 61

4.9 Position of vehicle during decreasing radius turn. . . . . . . . . . . 63

4.10 Lateral Error for PID and Sliding control during decreasing radius

turn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

4.11 Steering angle during lane keeping simulation. the paths overlap

each other for the majority of the simulation. . . . . . . . . . . . . 64

4.12 Lateral position for PID and Sliding controller after step input of 1m. 65

4.13 Position of vehicle during sinusoidal path. Sliding control is over-

lapping the desired path. . . . . . . . . . . . . . . . . . . . . . . . 66

4.14 Lateral Error for PID and Sliding control during sinusoidal path. . . 66

ix

List of Tables

3.1 Polaris GEM e2 Specifications [38] . . . . . . . . . . . . . . . . . . 30

3.2 Voltage and potentiometer settings for accelerator control. Digital

(1) and (2) show the values sent to each potentiometer. . . . . . . . 34

3.3 Values used for velocity simulation. . . . . . . . . . . . . . . . . . . 46

x

Acknowledgements

I am thankful for my parents and for their continuing support of my education.

They helped to give me countless opportunities and learning experiences. I would

like to thank Dr. Matthew Jensen for guiding and mentoring me through my

Bachelors and Masters program at Florida Institute of Technology. I would also

like to thank Magna and Polaris funding and supporting Florida Tech’s IGVC

team. Lastly, I would like to thank Thomas LaPointe, who introduced me to the

world of robotics.

xi

Dedication

This paper is dedicated to Victoria Bruce. Her support during all the late nights

spent running simulations and writing has not gone unnoticed.

xii

Chapter 1

Introduction

1.1 Background Information

1.1.1 Automotive Safety

Autonomous vehicles are a largely researched topic with a wide public following.

While the history of the automobile is relatively brief, it has quickly become a

necessity. Approximately 95 percent of households in the United States own at

least one car and 85 percent of Americans commute to work via car [12]. As

integral as driving has become to daily life, it still carries a variety of risks. In

2015, at least 2,338,000 injuries and 35,000 deaths were related to car accidents in

the United States [3]. These values remain high, even though a variety of safety

measures have been implemented since the inception of public driving. Examples

of these safety measures include: New York becoming the first state to ban drunk

driving in 1910, the application of the three-way traffic light in 1930, and the

development of airbags and seatbelts in the 1950s [2]. Various agencies were also

1

formed in response to the necessity of driving, including the establishment of the

Department of Transportation in 1967 and the National Highway Traffic Safety

Administration in 1970 [2].

Each of these initiatives have aided in preventing automobile related deaths.

However, death is still a prominent risk of driving. However, a major risk factor

that none of these initiatives can prevent is human error. Approximately 94 percent

of major accidents are caused by human error, such as distraction and slow reaction

times [4]. This has resulted in a wide public interest in developing fully automated

vehicles. In addition to reducing human fatalities, autonomy also bears economic

benefits. Within the United States alone, the estimated economic cost of all traffic

related crashes was $242 billion in 2010 [5]. Also, the efficiency of traffic would

improve, leading to smoother and faster traffic flow [19].

Research into autonomous vehicle gained more popularity in 2002 when the

Defense Advanced Research Projects Agency (DARPA) developed the DARPA

Grand Challenge. This challenge was designed to further develop the field of

autonomous vehicles by offering $1 million to a team that would design a vehicle

that could drive itself though a desert course. This first iteration of this challenge

was in 2004 and it yielded no successful vehicles. Then in 2005, the Stanford

Racing Teams vehicle (shown in Figure 1.1) was able to complete the challenge

by navigating 132 miles of terrain in less than 7 hours. In 2007, Carnegie Melon

University completed the DARPA Urban Challenge, which made use of a more

conventional city-styled course [6]. The most recently developed challenge is the

Intelligent Ground Vehicle Competition (IGVC) Self-Drive Challenge, which will

help autonomous vehicles evolve further with the current available technology.

2

Figure 1.1: Stanley, the 2005 DARPA Grand Challenge winner, [17]

1.1.2 Levels of Autonomous Driving

There are numerous aspects of driving automation; as these aspects are compiled,

the extent of input necessary by the driver for vehicle operation is altered. The

Society of Automotive Engineers breaks down this concept into five levels of au-

tonomy [25]. For Level 1, the driver is still fully engaged; however the driver

has additional support features. These features either provide steering support or

brake/acceleration support [25]. Examples of these supports include lane centering

and adaptive cruise control [25].

Adaptive cruise control, much like regular cruise control, allows the driver to

set a desired travel speed [29]. Adaptive cruise control is different from regular

cruise control because it utilizes forward mounted sensors [29]. These sensors

are used to maintain a safe gap based on distance and speed to the lead vehicle

(Figure 1.2) [29]. If the lead vehicle begins to slow, adaptive cruise control uses

the engine and brakes to slow the vehicle and maintain a minimum gap [29]. Some

3

Figure 1.2: Example of adaptive cruise control. Car 1 maintains a safe distancefrom the car 2 using on-board sensors.

systems allow the driver to specify longer or shorter following distances [29]. When

the lead vehicle increases speed, adaptive cruise control automatically accelerates

the vehicle back to the set speed [29]. If the lead vehicle slows below a certain

speed, some systems may disengage and alert the driver to brake as they resume

control, while other systems may bring the vehicle to a complete stop [29]. Lane

centering is accomplished using sensors designed to detect road lanes and collect

data about the environment surrounding the vehicle [8]. This information is then

used to determine the reference trajectory for the vehicle [8]. Interestingly, the

center of the lane is not always the ideal trajectory for the vehicle [8]. A common

example is when the vehicle is driving along a curve, as a normal driver would,

the system dictates a path closer to the inside lane boundary, while keeping the

vehicle completely inside the lane [8].

The second level of driving automation is very similar to Level 1. The level still

4

expects the driver to be fully engaged and supervise the support systems, however

both steering and acceleration support are supplied to the driver simultaneously

[25]. Examples of implementations that have been available for public use include

Teslas Autopilot, Cadillac Super Cruise, Volvo Pilot Assist, and others [1].

The features that are implemented in Levels 3 and 4 are both capable of driving

the vehicle under restricted conditions, and these systems will only operate when

all of the specified conditions are met [25]. For both of these levels, when the system

is enacted the driver is not in any control of the vehicle; the vehicle is capable of

speeding up, slowing down, passing slower cars, and making emergency decisions

such as swerving or braking [4]. The major difference between Levels 3 and 4 is

that Level 3 still needs the driver to be monitoring the system, because when the

system requests it, the driver must resume driving and take over all controls [25].

Meanwhile, Level 4 will not require the driver to take over the controls [25]. Level

4 may request for the driver to take over the controls, however if the driver does

not take over, the vehicle will safely pull off of the road and come to a complete

stop until the driver acknowledges the request to take over the controls [4]. Due

to the possible risks associated with Level 3, many manufacturers, such as Volvo,

tend to implement Level 2 or Level 4 systems [13]. Conversely, other companies,

including Audi, already implement Level 3 systems, since they believe that the

benefits of the system outweigh the risks [13].

The fifth level of autonomous driving represents full automation [25]. The fea-

tures for this level are the same as Level 4, however Level 5 is capable of automated

driving under all conditions and it will never request for the driver to take over

controls [25]. This level of automation is expected to be in use as early as the

mid-2020s [4]. A prominent challenge to reaching Level 5 is developing a control

5

system that has the ability to quickly use information from its sensors to design,

update and execute the safest possible path. As of 2018, 73 percent of drivers in

the United States fear riding in fully autonomous vehicles [1], this is likely due to

fatalities associated with the technology that were widely publicized. This further

proves the necessity of designing the systems to be extremely reliable as a means

to alleviate public concern.

1.1.3 Control Systems

Control systems have a vast history; the earliest example dating back over 2000

years to the water clocks described by Vitruvius and Ktesibios [10]. More com-

plex controllers emerged as devices increased in complexity over time. In the

early 1900s, feedback controllers became common for the regulation of various sys-

tems, such as voltages and planes. Simultaneously, proportional-integral-derivative

(PID) controllers with automatic gain adjustment were integrated into the steering

systems of ships in order to adjust automatically to sea conditions [10].

A simplified model of a feedback controls system includes the controller, the

system, and its outputs (Figure 1.3). Sensors are in place to aid in determining

the error between the desired values and the measured values. The determined

error is then used by the controller to generate an input to the system towards

correcting the error [16]. Certain controllers utilize a system model that predicts

the reaction of the physical system and account for it in the generated inputs.

6

Figure 1.3: Simple diagram of a feedback control loop

1.2 Objectives

This thesis focuses on the implementation of a drive-by-wire system for the Polaris

GEM e2, as well as the development of control methods for lane keeping and

velocity control. The achievement of having the Polaris GEM e2 drive-by-wire was

accomplished by having the brake, accelerator and steering of the vehicle controlled

electronically. The conversion of the vehicle involved the removal of the steering

column and replacing it with a stepper motor to manage the steering angle. The

acceleration pedal was replaced with a set of digitally controlled potentiometers,

and the brake pedal was replaced with a linear actuator. Once the drive-by-wire

controls were enabled, two separate controllers were designed and simulated for

velocity control and lane keeping. These two systems work together to control the

vehicles path.

This thesis proposed an adaptive trajectory controller, which will decide on

7

a percentage of actuation for the brake and accelerator in order to maintain or

change its speed. Adaptive trajectory control allows the controller to be robust to

unknown and changing parameters, such as road conditions [55]. As a comparison,

a PID controller was also designed. These two methods were both applied to a

model of the vehicle travelling in a straight line. The tracking accuracy of both

position and velocity were evaluated. This thesis also examined the usefulness of a

sliding mode controller for lane keeping. A sliding mode controller works to reduce

the tracking error to zero by driving the system onto a sliding surface in state

space [14]. The sliding mode control was compared to a PID controller using a 2

degree of freedom bicycle style model.

The resulting vehicle would have the ability to accelerate and maintain a speed

limit, follow a reference trajectory, and brake within a safe distance. Additionally,

the resulting system will provide an autonomous platform for researchers to test

their own sensors and path planning algorithms by simplifying the necessary inputs

to the controller.

1.3 Importance of Study

The purpose of this thesis is to establish steering, brake, and acceleration control

that can easily be set up and used on autonomous vehicles. This system is ex-

pected to be used for Florida Institute of Technology’s Intelligent Ground Vehicle

Competition (IGVC) entry. Research on self-driving cars is still an expanding field.

Various controllers such as PID, non-linear, and adaptive have been proposed pre-

viously for lane keeping [57] [43] [9]. Previous research has shown that various

forms of PID controllers work for velocity control [21] [9]. Fuzzy logic has also

8

been proposed for accelerating and braking [33] [56]. Currently, the proposed slid-

ing mode controller for lane keeping and adaptive trajectory controller for velocity

have not yet been widely examined.

As of July 2018, it has been estimated that autonomous vehicles could con-

tribute $2 trillion to the U.S. economy by 2050 [1]. In turn, by 2030 is has also

been forecasted that the car data industry could be appreciated at $750 million

[1]. Currently, most of the autonomous vehicles that populate public streets are

driverless shuttles [1]. Many implementations of this are already planned across the

United States, while cities like Las Vegas, NV and San Ramon, CA already have

driverless shuttles in regular use on public streets [1]. It has also been predicted

that there will be a need for autonomous vehicles for our vastly growing elderly

population [1]. In 2050, there is projected to be 83.7 million Americans over the

age of 65 and currently nearly one-third of states do not yet have autonomous

vehicle legislation or executive orders set [1].

There is a need for testing platforms that can be quickly adapted to test new

ideas. The control algorithm and physical implementation proposed in this thesis

would provide a straight forward hardware and software setup that would allow

researchers to shift their focus to higher level tasks such as designing an AI for

path planning in emergencies or fusing different sensor data together to perform

fast and accurate object detection and classification.

9

Chapter 2

Literature Review

2.1 Definitions of Variables and Axes

The Society of Automotive Engineers (SAE) uses standard terminology to describe

the vehicles motion both locally and globally. These definitions are based off of

SAE-J670.

Earth-Fixed Axis System: This is a fixed-reference system denoted by X, Y,

and Z. The origin for this coordinate system is chosen by the user, and

is attached to the ground. X and Y make up the ground plane, and Z is

the vertical plane [34].

Vehicle Axis System: This is a reference system that is fixed to the center of

gravity (COG) of the vehicle, and is denoted by x, y, and z (Figure 2.1).

The coordinate system is orthogonal and right-handed. The x-axis of the

vehicle points in the forward direction of motion and horizontal when

the vehicle is travelling in a straight line on flat terrain. The y-axis is

also horizontal, and is 90 degrees from the x-axis. This points the y-axis

10

directly to the drivers right. The z-axis is perpendicular to the x and y

axis, pointing vertically into the ground [34].

Figure 2.1: Vehicle fixed coordinate system, [18]

Longitudinal direction: This is the forward moving direction of the vehicle.

This is normally in reference to the body of the vehicle but can be also

used from a fixed reference point. The x-axis represents the longitudinal

direction [34].

Lateral direction: This is the sideways moving direction of the vehicle. The

y-axis represents this direction [34].

Yaw angle: This represents the rotation of the vehicle about the z-axis. The

yaw angle can be used in both the vehicle axis system and the earth-fixed

axis system. An example would be showing the vehicles relative angle to

the direction the road is pointing [34].

Roll angle: This is the rotation of the vehicle about the x-axis. This angle

changes as the vehicle turns, due to the body of the car leaning from the

forces [34].

Pitch angle: This is the rotation of the vehicle about the y-axis. This angle

11

changes as the vehicle accelerates or decelerates [34].

Steering angle: This is the angle between the direction the front of the vehicle

is pointing and the direction the steered wheels are pointing. Looking at

the x-y plane of the vehicle coordinate system, this angle is zero when

aligned with the x-axis [34].

Body slip angle: This is the angle between the vehicles velocity vector and

longitudinal direction [34].

2.2 Kinematic and Dynamic Models

An accurate model is necessary for providing controls and simulations of a vehi-

cle. The model can vary in complexity to meet the demands of the simulation.

Primarily, the differences between the various models are the number of degrees of

freedom (DOF) and the assumptions made to complete the model. In this case,

DOF refers to the directions the vehicle can move and rotate, as well as how the

internal parts such as suspension can move. There are six DOF that govern how

the vehicle moves. The vehicle can travel longitudinally, or in the direction of its

length (x-axis). It can also travel laterally, which perpendicular to the longitudinal

direction (y-axis). The third axis is vertical (z-axis). All three of these axes also

can be rotated around. The longitudinal axis allows for roll, the lateral axis allows

for pitch, and the vertical axis allows for yaw [47]. These 6 motions explain the

vehicles motion in three-dimensional space, as shown in figure 2.2.

12

Figure 2.2: Dynamic model of a vehicle, [47]

2.2.1 2 DOF Model

In a 2 DOF model, the vehicle is simplified to the kinematic equivalent of a bicycle.

The purpose of this model is to analyze the lateral and yaw motions of the vehicle.

This type of model tends to be used when designing a steering controller; the

lateral positon error is minimized by using the steering angle as an input [20]. The

longitudinal velocity is considered a constant, and the roll and weight transfer of

the vehicle is ignored. The simplified model is shown below in figure 2.3.

This model is excellent when looking at the lateral forces, but also ignores many

aspects of the model. Assumptions made to simplify the model include: ignoring

aerodynamic forces and load transfer [42]. The equations of motion would look

like [40]:

X = V cos(ψ + β) (2.1)

Y = V sin(ψ + β) (2.2)

13

ψ =V cos(β)

ℓf + ℓr(tan(δf )− tan(δr)) (2.3)

These equations can be simplified down further with the assumption that the

rear tires remain aligned with the longitudinal axis. Therefore, δr can be set to 0,

simplifying equation 2.3 to [40]:

ψ =V cos(β)

ℓf + ℓr(tan(δf )) (2.4)

Figure 2.3: 2DOF model of a bicycle, [40]

2.2.2 3 DOF Model

The 3 DOF model builds onto the bicycle model by including longitudinal motion.

However, this model still ignores any effect that tire slip in the longitudinal direc-

tion might have on the vehicle. Thus, traction control is unable to be implemented

in this model, but it is still accurate in low speed situations, where slip is minimal.

14

The 3 DOF model allows the full motion of the vehicle to be estimated in the X-Y

plane, as shown in figure 2.4.

Figure 2.4: 3DOF model of a vehicle, [42]

The following equations of motion, using the labels found in figure 2.4, show

both the dynamic model of the 3 DOF system and the translation to the X-Y

coordinate system [42].

Iθ = aPfδ + bFξf − bFξr (2.5)

m(Vξ + Vηθ) = Pfδ + Fξf + Fξr (2.6)

m(Vη + Vξθ) = Pf + Pr + Fξfδ (2.7)

x = −Vξsin(θ) + Vηcos(θ) (2.8)

y = Vξcos(θ) + Vηsin(θ) (2.9)

15

Equations 2.5 to 2.7 describe the motion of the vehicle relative to its own

coordinate system. Equations 2.8 and 2.9 translate the vehicles motion onto a

global X-Y plane.

2.2.3 5 DOF Model

The 5 DOF model builds on the previous model by included longitudinal slip of

the front and rear wheels. This accounts for skidding while turning and slip angle

when describing the motion of the vehicle. Slip angle is described as the difference

between the direction of the wheels and the direction the vehicle is traveling, as

shown in figure 2.5. This occurs when the vehicle is cornering, as the contact patch

of the tire slides laterally while rolling [36]. By including rotational effects of the

wheels, traction can be estimated [37].

Figure 2.5: Model of tire slip angle, [36]

2.2.4 8 DOF Model and Higher

An 8 DOF model improves upon the 5 DOF model by raising the number of tires

from two to four and also accounting for the roll of the vehicle. This means that

the left and right side of the vehicle no longer respond as they did as individual

16

pairs in the 5 DOF model, signifying that the rotational degree of all four tires is

considered , as shown in figure 2.6. This model is commonly used for suspension

design and analyzing ride comfort [42]. Roll, as well as load transfer is estimated.

Figure 2.6: 8 DOF model of a vehicle, [11]

The 8 DOF model becomes highly nonlinear as more lateral forces are included.

In turn, more formulas become necessary to calculate values such as tire force

versus slip angle. Tables are also used to determine values for forces that cannot

be calculated with the available information [42].

Even more complex, a 14 DOF full vehicle model figure (2.2) gives a more

accurate description of the dynamics. In this variation, suspension is included

within the model itself, making the prediction of how the vehicle will handle more

precisely. This allows maneuvers to be planned with a better knowledge of the

safety margin [47].

2.3 Control Systems

There are several different controllers used in autonomous vehicles. Controllers can

be categorized into two main subsets: upper level and lower level [41]. Controllers

17

from both levels work together towards the same goal [41]. For example, the figure

(2.7) represents the basics of a system designed as an adaptive cruise controller

used on vehicles in a convoy. The upper level controller figures out the desired

acceleration of each vehicle in the convoy, then passes this information onto the

lower controller, which is in each vehicle, to follow this command [41].

Figure 2.7: Structure of multi-vehicle adaptive cruise control, [41]

The necessary information for the upper level controller is normally limited to

the kinematics of the vehicle. This allows the controller to determine an optimal

path for the vehicle to follow. The lower level controller is responsible for executing

the determined path. In order for the lower level controller to accomplish this, the

control may need to have a substantial model of the dynamics of the vehicle [53].

Controllers have multiple options for schemes that they may use; examples in-

clude proportional-integral-derivative controllers, adaptive controllers, fuzzy logic,

sliding mode, etc.

18

2.3.1 PID Controllers

Proportional-Integral-Derivative (PID) controller are the most common control

schemes to use on dynamic systems [54]. These controllers are relatively simple to

use, since they only require tuning a few coefficients: Kp, Ki, and Kd [52]. PID

controllers function as a closed-loop system; they accept tracking errors as their

input and output signals to the system, as shown in the figure 2.8.

Figure 2.8: Diagram of a PID control loop, [15]

The three coefficients (Kp, Ki, and Kd) each have unique affects to the sys-

tems output functions [54]. Kp represents the proportional gain; its purpose is

to decrease the steady state error of the system [54]. This controller is generally

used in first order processes that have single energy storage to work to stabilize

the process [54]. This coefficient depends on the error between the reference and

measure value of the system [24]. When Kp is increased, the speed of the systems

response increases, the stability declines, and the accuracy improves [54]. This

means that the increase causes the responses to become more extreme until it

begins to oscillate [24].

Kd represents the derivative gain, which is the response rate that the reference

value is changing. When the derivative gain is used with a PI controller, they

19

work together to eliminate the overshoot and oscillations that occur in the output

response of the system [54].If Kd is increased, the speed of the systems response

increases, the stability would improve, and the accuracy would not be affected [54].

Finally, Ki represents the integral component that aims to bring the steady

state error to zero [24]. If Ki were to increase, then the speed of the systems

response decreases, the stability declines, and the accuracy improves [54].

Figure 2.9: Response of a PID system, [24]

The focus for a PID controller is to achieve the designs required rise time, per-

cent overshoot, settling time, and steady-state error (figure 2.9). Tuning of the

system can be achieved by manually changing the values until satisfied. Alterna-

tively, the Ziegler-Nichols method can be used. The Ziegler-Nichols method starts

by setting Ki and Kd both to zero. Kp is increased until periodic oscillations occur

for the system response. This critical Kp value, as well as information about the

oscillations, is used to determine the correct values for all gains [52].

PID systems have been used extensively for controlling the velocity of vehicles.

In some cases, the controller is slightly modified by using set-point weighting, which

helps to tone down the controllers response to large jumps in the reference velocity

[21]. At one university, the PID controller was simplified down into a Proportional-

20

Integral (PI) controller. This controller used engine rpm to measure the speed of

a go-cart (figure 2.10), which then was fed into a PI controller to manage its

speed. The same researchers designed and tested a Proportional-Derivative (PD)

controller for steering the go-cart [9].

Figure 2.10: Budapest University autonomous go-cart, [9]

2.3.2 Fuzzy Logic

Fuzzy logic provides a decision-making mechanism that has numerous uses and

benefits [27]. This mechanism can deal with uncertain or vague situations [27].

It also has the ability to conduct mathematical analysis and approximation for

linear, nonlinear, or dynamic problems, and construct inference models for solving

and controlling problems [26]. Fuzzy logic can effectively mimic human reasoning

since it can permit control without extensive knowledge of equations related to the

process that it is controlling [33]. Fuzzy logic has previously been implemented as

an adaptive cruise control. No mathematical models are used, instead researchers

integrated a set of rules based off of drivers responses to various situations [30].

21

Fuzzy logic is dictated by a set of rules. These rules determine the responses

of the controller to the inputted information [33]. Information about the system is

initially passed through a filter that fuzzifies the information into values ranging

between 0 (false) and 1 (true) [46]. The fuzzified information is checked against the

rules, an output is determined, and then the output goes through a process called

deffuzification [46]. Using the previously mentioned fuzzy adaptive cruise control,

simple logic such as if the speed error is greater than 0 then decrease accelerator

input [31]. Once the input direction is determined, a simple equation (eqn 2.10)

calculates the proportion by which the accelerator changes [33].

xout =.33up+ .76down

.33 + .76(2.10)

Fuzzy logic generally has been used for only speed control. There have been

a few cases where it has found use outside of this area, one of which is in brake

control design. Weidong Xiang, of University of Michigan, suggested that a fuzzy

control method would work quite well to control differential braking in a vehicle

[56]. This would allow for the yaw of the vehicle to be stabilized in intense braking

situations, including ice and snow [56]. Figure 2.11 shows an example of the fuzzy

logic table for the braking controller.

22

Figure 2.11: Rule table for fuzzy logic controller, [56]

2.3.3 Adaptive Controller

Adaptive controllers are designed to be robust to changing parameters. Adaptive

controllers work under the assumption that not all parameters of the system are

known, and continuously estimate the missing parameters [55]. Given decent dy-

namic equations, this allows the adaptive controller to have an accurate estimate of

information that would be impossible or costly to gather using sensors. In a steer-

by-wire system, an adaptive controller performed better than its PID counterpart

[57].

αox(n) + f(x, x, t) = u (2.11)

x = x(t)− xd(t) (2.12)

s = (d

dt+ λ)(n−1)x = x(n−1) − x(n−1)

r ; λ > 0 (2.13)

23

x(n−1)r = x

(n−1)d − (n− 1)λx(n−2) − ...− λ(n−1)x (2.14)

V =1

2αos

2 (2.15)

V = αoss = s(u− Y α) (2.16)

Y =

[Y0 Y1 ... Ym

](2.17)

α =

⎡⎢⎢⎢⎢⎢⎢⎢⎣

α0

α1

...

αm

⎤⎥⎥⎥⎥⎥⎥⎥⎦(2.18)

Equations 2.11 through 2.20 represent a generalized setup of an adaptive control

solution [49]. Given an equation with several unknown parameters (Equation 2.11),

the tracking error is brought into state space using Equation 2.13. The Lyapunov

function candidate is described with Equation 2.15 and then its derivative is taken.

The derivative is then used to come up with an input (Equation 2.19). The input,

u, makes use of the known parameters, Y, and the unknown estimated parameters,

α. The unknown estimated parameters are altered each iteration of the control

loop using Equation 2.20 [49].

u = Y α− ks ; k > 0 (2.19)

24

˙α = −PY T s ; P = P T > 0 (2.20)

2.3.4 Sliding Mode Controller

Sliding mode controllers have a variety of uses in autonomous vehicles. One ex-

ample is a Mixed Slip-Deceleration (MSD) controller designed by Mara Tanelli

that uses the sliding mode controller for braking [50]. Sliding mode controllers are

designed to take the system state into a region where s (the tracking error as a

sliding variable) is 0 . This brings the tracking error to zero as well when sliding

conditions are met [14].

x(n) = f(x, x, t) + u (2.21)

x = x− xd (2.22)

s = (d

dt+ λ)(n−1)x ; λ > 0 (2.23)

s = x(n) + λx(n−1) (2.24)

s = f(x, x, t) + u− x(n)d + λx(n−1) (2.25)

Equations 2.21 through 2.25 show the generalized setup for a sliding mode

controller [49]. The tracking error (2.22) is brought into a sliding plane using

Equation 2.23. From here, the derivative of s is taken, and then Equation 2.21 is

25

substituted inside Equation 2.24 to achieve Equation 2.25. This equation is then

rearranged to provide a preliminary input, u (Equation 2.26) [49].

Figure 2.12: Difference between Sign and Sat function, [14]

u = −f + x(n)d − λx(n−1) (2.26)

u = u− ksgn(s) (2.27)

u = u− (k − ϕ)sat(s

ϕ) (2.28)

Sliding controllers have two variations in the control law: sign functions and

saturated functions [14]. These variations each have a slightly different purpose

(figure 2.12). Sign functions only output either positive or negative values (Equa-

tion 2.27). This causes chattering in the response of the system, which can be

detrimental depending on the usage [49]. Chattering occurs because of time delays

between the sensors and actuators of the system. The tracking error constantly

26

passes 0 and does not settle in most cases [49]. A saturation function stops the

chattering, but is at the cost of always leaving a slight tracking error in place

(Equation 2.28). In a lot of cases, the slight error is better than the possibility of

chattering [7].

2.4 ROS

The Robot Operating System, ROS, is an open source framework designed for

writing robot software [39]. This system is also a collection of libraries, tools and

conventions that help to simplify the task of implementing complex and dynamic

robot behavior across a broad range of robotic platforms [39]. The ideas for ROS

were initially developed by researchers at Stanford in 2007 [45]. From the time of

ROSs inception, it has grown extremely fast with the help of numerous contributors

[45]. The core features of ROS include communications and hardware integration.

2.4.1 Communication Framework

When a new robot application is being implemented, one of the first developments

needs to be a communication system [44]. ROS offers many options for passing

information to and from systems; these options are called nodes [44]. Each node

has its own separate task and they are available on any operating system. At

its most basic level, ROS acts as middleware. Middleware is a message passing

interface that allows for inter-process communication [44]. In the application to-

wards autonomous vehicles described in this thesis, ROS is primarily used to detail

communication between nodes using the publish/subscribe method (Figure 2.13).

27

Figure 2.13: Example of ROS publisher and subscriber setup.

28

Chapter 3

Methodology

3.1 Overview of Polaris GEM e2

Figure 3.1: Polaris GEM e2, [38]

The Polaris Gem e2 is an electric powered FMVSS 500 class vehicle capable

of speeds up to 25 mph. It is front wheel drive and powered by an AC induction

motor. Braking is provided by disks on the front tires and hydraulic drums on

29

the rear tires. Information for the vehicle is provided via the data sheets from the

company [38].

Table 3.1: Polaris GEM e2 Specifications [38]

Specification Imperial Values Metric Values

Top speed 25 mph 11.7 m/sEngine size 6.7 hp 5 kW h

Vehicle weight 1200 lbs 544 kgPayload 800 lbs 363 kg

Turning radius 150 in 3.81 mWheelbase 69 in 1.753 mBatteries 48 v 48 v

Dimensions(Lxwxh) 103x55.5x73 (in) 2.62x1.41x1.854 (m)Range 30 miles 48.2 km

3.2 Control Systems Overview

The project was divided into two main components: an upper level controller

and multiple lower level controllers, as shown in Figure 3.2. The upper level

controller determines the actions the vehicle should take to maintain a constant

velocity, accelerate, decelerate, or turn. It calculates a steering angle, as well as

the percentage the gas pedal and brake pedal should be applied. The upper level

controller then passes the desired values to three separate lower level controllers.

The lower level controllers use a combination of hardware and software to physically

generate the requested inputs. If any error or discrepancy occurs, the lower level

controller sends a fault message to alert the upper level controller of the situation.

30

Figure 3.2: Controller architecture.

The ROS publisher/subscriber system is used to pass the information between

the controllers. ROS also has a built-in package called Joy. The Joy node allows for

integration of joystick style controllers, such as the Xbox 360 (Figure 3.3). Axis 0

and 3 are used for manually controlling steering and acceleration respectively. Each

axis outputs a number between -1 and 1, with 0 being joystick center. Steering

directly translates the axis value to a steering angle. Acceleration splits the axis

value up: if the value is greater than 0, it is applied to the accelerator and if the

value is less than zero, it is applied to the brake.

31

Figure 3.3: Diagram of axis labels for Xbox 360 controller using ROS joy package.

3.3 Accelerator Control

The proposed method for accelerator control of the Polaris GEM E2 was to use

two potentiometers that were controlled by a Raspberry Pi Model 3 to mimic the

effect of a gas pedal. Normally, the Polaris GEM E2 sends information directly

from the accelerator sensor to indicate the necessary power the engine needs to

supply. The sensor supplies a constant reference signal of 5 volts to a set of

two potentiometers, located in the gas pedal. As the pedal is pressed down, the

wipers for the potentiometers slide from their minimum positions to their maximum

positions. The outputs of the wipers are sent into the aps1 and aps2 pins of the

sensor, shown below in Figure 3.4. The accelerator sensor then reads in the 2

values, which are between 0.5 volts and 4.5 volts. The relation between the value

the sensor reads and power given to the engine is approximately linear, and can

be estimated as shown in Figure 3.5.

32

Figure 3.4: Pinout of the accelerator sensor, courtesy of Polaris.

Figure 3.5: Signals received by the Accelerator sensor, courtesy of Polaris.

The proposed control method was tested using an Arduino that read the wiper

outputs of both the gas pedal and the Raspberry Pi to find the minimum and

maximum settings for each potentiometer (Table 3.2).

33

Table 3.2: Voltage and potentiometer settings for accelerator control. Digital (1)and (2) show the values sent to each potentiometer.

Position APS 1 APS 2 Digital (1) Digital(2)

0 % pedal 1.08 V .52 V 27 13100 % pedal 4.20 V 2.09 V 108 54

Next, a linear equation was used to propagate all the values between the min-

imum and maximum position. The Raspberry Pi communicated with the digital

potentiometers using Serial Periphery Interface (SPI) to adjust the potentiometers

settings. The circuit was setup as depicted in Figure 3.6. The logic circuit of the

potentiometers was powered by the 5v output of the Raspberry Pi, and the MOSI

and clock SPI pins went to both of the potentiometers. Two separate chip select

pins were used to switch between them.

No additional control method was required, because the digital potentiometers

immediately change their values as needed to the necessary input for the accelera-

tor. Thus, as the values are sent from the general controller for velocity, they are

immediately applied to the accelerator.

34

Figure 3.6: Wiring Diagram for accelerator control.

3.4 Brake Control

The brakes for the Polaris GEM e2 consist of disks for the front brakes and drums

for the rear brakes. It is actuated using a pedal connected to the hydraulic master

cylinder. For the proposed control method, the brakes were controlled via an

electronically controlled actuator. This was achieved by the removal of the pedal

and the relocation of the master cylinder. The master cylinder was relocated to

be in line with an Oriental Motors ARM66SMK stepper motor (Figure 3.7) and

ARD-KD closed loop driver (Figure 3.8). As the stepper motor rotates, it engages

with a linear actuator to push the master cylinder. The ARD-KD driver requires

24 volt input signals.

35

Figure 3.7: ARM66SMK stepper motor with linear actuator.

Figure 3.8: ARD-KD closed loop motor driver.

In order to send commands to the driver, the Raspberry Pi 3 is connected to a

voltage converter that takes its eight 3.3v digital signals and steps them up to the

appropriate 24 V level (Figure 3.9). Six of the eight input signals are used to tell

the motor to go to an absolute position [32]. Zero percent on pressing the brake is

equal to a value of -1800 steps. 100 percent is equal to -5800 steps. The remaining

36

60 positions resulting from various binary combinations of the 5 signals are equally

spread out between the start and end points. As the software on the Raspberry

Pi receives a percentage of braking power, it converts it to the binary position and

directly passes the signal to the driver. As a result, there is not a need to design

a control method, since the driver is already providing it.

Figure 3.9: Wiring diagram for braking controller.

37

3.5 Steering Angle Control

Steering for the Polaris GEM e2 was initially set up as a mechanical linkage between

the steering wheel and a rack and pinion style system. The wheels have a max

steering angle of approximately 25 degrees, and it took 1.5 revolutions of the

steering wheel to achieve the max angle. In order for the steering to be controlled

via actuator, the steering wheel and column were removed. A Trinamic PD86-3-

1180 stepper motor and controller combination was mounted above the rack and

pinion setup, and a 2:1 ratio gear box was designed to connect the motor to the

pinion, shown in Figure 3.10 and Figure 3.11.

Figure 3.10: Trinamic PD 86-3-1180 with gearbox side view.

The stepper motor has 200 full steps per revolution, and can vary the microstep

resolution to be between 0 and 256 microsteps per full step. This totals the max

resolution to 51,200 pulses per revolution [51]. As a compromise between motor

speed and torque, a microstep resolution of 8 was selected, bringing the pulses per

revolution down to 1600. To reach the maximum steering angle, the motor must

pulse 4800 times (Equation 3.1).

38

Figure 3.11: Trinamic PD 86-3-1180 with gearbox front view. The driving gear isshown in blue, and the driven gear is shown in red.

4800pulses = 1600ppr ∗ 1.5rotations ∗ 2.0gearratio (3.1)

The controller running the stepper motor is given an input using step and direc-

tion. An Arduino Uno receives the commanded steering angle from the Raspberry

Pi 3 via serial communication, and turns it into the correct number of pulses. Then,

a PID controller is used to quickly and efficiently send pulses to the controller to

move the motor into place. The PID controller creates an output of pulses per

second (PPS). Due to torque limitations of the stepper motor when turning the

wheels, the output of the controller is saturated to a maximum absolute value of

10000 PPS. The initial values chosen for the controller were 10, 0.5, and 1 for

Kp, Ki, and Kd respectively. To test the values, the desired position of the motor

was stepped up by 1 rotation. Figure 3.12 shows the error (based on number of

rotations) over time based on the step input. Figure 3.13 shows the error when a

ramp input of 2 rotations per second is used.

39

Figure 3.12: Position error for PID control of stepper motor due to step input.

Figure 3.13: Position error for PID control of stepper motor due to ramp input.

40

3.6 Kinematic Model for Simulations

To properly model the path for the vehicle, several factors had to be taken into

consideration. These included the speed that the vehicle would be allowed to

travel, the likelihood of wheel slip, and vehicle parameters such as minimum turn-

ing radius. A 2 degree-of-freedom model was selected based off of these criteria.

The diagram for the 2 DOF model can be found in Figure 2.3. The vehicle uses

an inputted speed and steering angle to calculate the body slip angle, rate of rota-

tion of the vehicle, and velocity in the X and Y direction, using slightly modified

equations from section 2.2.1:

X = V cos(ψ + β) (3.2)

Y = V sin(ψ + β) (3.3)

ψ =V sin(β)

ℓr(3.4)

β = arctan(tan(δf )ℓr

ℓf + ℓr) (3.5)

Generally, this model is good for lower speed applications, but starts deviating

from higher DOF models as the speed increases above a certain point due to tire

slip [21]. In order to consider the 2 DOF model an accurate representation, the

maximum lateral acceleration of the car had to stay under:

aymax = .5µg (3.6)

41

Generally for dry roads, µ= 0.7 is used [28]. This results in a maximum lat-

eral acceleration of 3.43 ms2. During the Self Drive Challenge that the vehicle will

participate in, the maximum allowed speed is 5 mph [23]. This converts to ap-

proximately 2.24 m/s. The minimum turning radius of the Polaris GEM e2 is 3.81

meters. When using the equation for centripetal acceleration:

ac =v2

R(3.7)

the maximum possible lateral acceleration under the given conditions was found

to be 1.32 ms2, which is well below where the limitations of the 2 DOF model begin

to show. Using the same minimum turn radius, the maximum speed that would

still allow the 2 DOF model to be valid is 3.62 m/s, or 8.1 mph. These equations

can also be used to figure out the minimum turning radius at any given speed for

the vehicle.

3.7 Dynamic Model for Longitudinal Motion

For the purposes of modelling speed, the vehicle was assumed to be moving in a

straight line. This limits velocity to a 1 DOF problem that can be used in addition

to the 2DOF model, giving a total of 3DOF. The assumption was made that the

wheels are solid disks with a moment of inertia:

I =1

2mr2 (3.8)

Since the vehicle does not has to perform high magnitude accelerations, the

tires would not be experiencing significant compression. Thus, solid disks were

42

chosen, so that the compression of the tires would be ignored for the derivation.

The wheels also operate without slip on the surface, which holds true as long as

the angular acceleration of each wheel does not override the force of friction. There

are two drag related forces acting on the vehicle against the direction of motion.

They are both functions of the vehicles geometry and speed. Aerodynamic drag

can be calculated with Equation 3.9. Rolling resistance, the other source of drag,

can be calculated with Equation 3.10. Combining the two forces results in the

total force from drag.

Fa =1

2CdρAx

2 (3.9)

Fr =MgCrx (3.10)

Fd = Fa + Fr (3.11)

The front wheels are given a driving torque, which can be broken down into

two separate sources of torque. Ta is the torque resulting from the acceleration

and deceleration of the engine. Tb is the torque resulting from the the cars brakes.

It was assumed positive torque will purely come from Ta and negative torque will

purely come from Tb. The braking torque has a simplified equation, Equation 3.14,

which allows it to convert the torque to a percentage of how far the brake is pressed

[48]. The engine torque was modeled as a linear function relating the amount the

gas pedal was pressed to the amount of torque delivered by the engine; this maxed

out at 1000 N-m.

T = Ta + Tb (3.12)

43

Ta = 1000ua (3.13)

Tb = 1.5ubKbmin(1,ω

α) (3.14)

Gravity has a component acting on the x axis if the road has an incline. During

the simulations, the angle of the road will be kept to a maximum range of -5 degrees

to 5 degrees. The discussed forces and torques are shown in Figure 3.14.

Figure 3.14: Forces acting on car for longitudinal motion.

The initial equations of motion are created for the x direction, the y direction,

and the moment about the front axle and rear axle of the vehicle. Theta, θ, is the

angle of rotation for a wheel on the vehicle.

x = rθ x = rθ x = rθ (3.15)

44

x : −MgsinΘ− f1 − f2 −1

2CdρAx

2 −MgCrx =Mx (3.16)

y : N1 +N2 −MgcosΘ = 0 (3.17)

frontwheels : T + f1r =1

2mr2

x

r(3.18)

rearwheels : f2r =1

2mr2

x

r(3.19)

Equation 3.15 gives the relationship between the wheel roll and linear distance

traveled. The x and y axis equations of motion are given by Equation 3.16 and

Equation 3.17, while the Equation 3.18 and Equation 3.19 give the moments and

inertia about the front and rear axle of the vehicle. Equation 3.18 and Equation

3.19 can be rearranged to find the values of f1 and f2, which represent the tractive

forces between the tires (front and rear) and ground. These new equations can be

substituted into Equation 3.16 to give the full equation of motion in the x direction.

M and m were combined into a singular variable M which encapsulates the entire

mass of the vehicle, wheels/tires included.

Mx+1

2CdρAx

2 +MgCrx+MgsinΘ =T

r(3.20)

Equation 3.20 was used for the dynamic analysis of all the speed controllers

for the vehicle. The values used for the different parameters of this equation are

shown in table 3.3. The parameters used were found from Polaris’ specifications

and from other research papers.

45

Table 3.3: Values used for velocity simulation.

Variable Value

M 907 kgCd .5Cr .01

ρ 1.225 kgm3

A 2.61m2

g 9.81ms2

r .25 mKb 13.33Nm

bar

3.8 Velocity Control Methods

3.8.1 PID Control

u =T

r= −Kpx−Kd

˙x−Ki

∫ t

0

xdt ; x = x− xd (3.21)

The PID controller for this system makes use of Equation 3.21. The difference

between target and actual position and velocity provide the necessary information

for the control law. The PID control was developed in Matlab, and the initial

values for Kp, Ki, and Kd were found using the Ziegler-Nichols method [52].

These values were Kp = 11040, Kd = 1930, and Ki = 157. This had an

overshoot of 43%, as well as a slow settling time of 3.6 seconds. Kd was then

increased until a final value of 19300 was selected. This gives an overshoot of 1%

and a settling time of 0.1 seconds.

46

Figure 3.15: PID tuning for velocity control.

3.8.2 Adaptive Control

For the adaptive controller, position (x) is being tracked. Using this, the interme-

diate variable is defined as Equation 3.22 [49].

s = x− xr ; xr = xd − λx (3.22)

The intermediate variable’s derivative has Equation 3.20 substituted into it and

the result is used to determine what Y, α, and u are. Equation 3.24 shows the

control law for the input.

s = x− xr =Mx−Mxr = u−Mxr − Y α (3.23)

u =T

r= Y α +Mxr −Ks ; K > 0 (3.24)

47

˙α = −PY T s ; P = P T > 0 (3.25)

The controller can estimate what α is using Equation 3.25. For this controller,

it was decided that the incline, aerodynamic drag, and rolling resistance would all

be tracked. Y and α become:

Y =

[Mg .5x2 x

](3.26)

α =

⎡⎢⎢⎢⎢⎣sinΘ

CdρA

MgCr

⎤⎥⎥⎥⎥⎦ (3.27)

48

3.8.3 Simulated Paths

Multiple functions were desired for testing velocity control. For accelerating to

a set speed, the velocity should not have any sudden and drastic changes to it.

Therefore, a desired velocity of Equation 3.28 was used.

x = 2(1− e−.5t) (3.28)

Figure 3.16: Desired velocity of vehicle during acceleration simulation.

This accelerates the vehicle from 0 to roughly 2 m/s over a simulation time

of 10 seconds. The result is a desired velocity that looks like Figure 3.16, and a

longitudinal based path that is smooth for the duration of the simulation (Figure

3.17). Choosing a final velocity of 2 m/s allows the vehicle to stay below its

maximum competition allowed running speed.

For deceleration, the goal was for the controller to be able to maintain a con-

stant deceleration. The simulated path starts with a forward velocity of 2 m/s and

49

Figure 3.17: Desired position of vehicle during acceleration simulation.

Figure 3.18: Desired velocity of vehicle during deceleration simulation.

then decelerates to 0 m/s at a rate of 0.4 ms2. This deceleration is approximately

one third of what consumers consider comfortable accelerations according to the

Department of Transportation [22]. This results in a total stopping distance of 5

50

meters. The desired velocity is shown in Figure 3.18. The desired position looks

like Figure 3.19.

Figure 3.19: Desired position of vehicle during acceleration simulation.

In both of these simulations, the tracking accuracy for velocity and position

were compared.

3.9 Lane Keeping Control Methods

3.9.1 PID Control

u =T

r= −Kpy −Kd

˙y −Ki

∫ t

0

ydt ; y = y − yd (3.29)

For lane keeping PID control, the variable being tracked is the lateral position

(y) of the vehicles center of mass (COM). This is used in conjunction with Kp, Ki,

and Kd values of 4, 4, and 2 respectively to generate a steering angle. Initially,

the Zeiger-Nichols method was attempted for tuning the controller, but the results

51

were not desirable and could not stabilize the system. The values were manually

tuned, with a few of the responses shown in Figure 3.20. The angle is also saturated

with a maximum value of 25 degrees, keeping the vehicles capabilities in mind.

Figure 3.20: PID tuning for steering.

3.9.2 Sliding Control

The sliding variable makes use of tracking the error in lateral position. The con-

troller measures y from the front axle, allowing δ to be directly used in the equation

for ˙y. This is shown in Equation 3.30.

˙y = vsin(ψ − ψd + δ) (3.30)

s = y ; y = y − yd (3.31)

52

s = ˙y (3.32)

δ = −(ψ − ψd) (3.33)

δ = δ +Ksat(s

ϕ) ; ϕ =

K

λ(3.34)

The derivative of the sliding variable has Equation 3.30 substituted into it. It

is then inverted to get an initial input, δ, which keeps the sliding plane s at zero.

In order to bring initial non-zero values onto the sliding plane, a reaching condition

is added. Initially, a sign function was used, but it resulted in chattering of the

lateral position. The sign function was changed to the saturation function, shown

in Equation 3.34. After manually testing, values for K and λ were found to be 12

and 25 respectively.

3.9.3 Simulated Path

For lane keeping, the goal was to create a decreasing radius trajectory for the

vehicle to follow. The vehicle is given a constant speed of 2 m/s and starts off

travelling in a straight line. The vehicle changes direction as the turn radius

decreases down to 4 m over a period of 10 seconds. This is accomplished by

increasing the yaw rate with equation 3.35. The radius then holds at 4 m for the

remainder of the simulation, as shown in Figure 3.21 and 3.22.

ψ(t) =

⎧⎪⎨⎪⎩ .05t t < 10

.5 t ≥ 10(3.35)

53

Figure 3.21: Desired path of vehicle during decreasing radius lane keeping simula-tion.

Figure 3.22: Desired radius of vehicle during decreasing radius lane keeping simu-lation.

The lane keeping controllers were also subjected to a step input for testing.

The vehicle started 1m right of the center of the lane. It then traveled at 2 m/s

54

and attempted to center itself in the lane using the different control methods.

Lastly, the lane keeping controllers were subject to a sinusoidal path. This

path was accomplished by manipulating the desired yaw rate of the vehicle with

Equation 3.36. The resulting path changes directions four times over the course

of a 30 second simulation, as shown in Figure 3.23. The minimum radius during

each curve is 5m. In all tests, various criteria were compared. Examples of these

criteria included: rise time, settling time, error and input smoothness.

ψ(t) = .4sin(.5t) (3.36)

Figure 3.23: Desired path of vehicle during sinusoidal lane keeping simulation.

55

Chapter 4

Results

4.1 Velocity Control

4.1.1 Acceleration

When simulating acceleration to 2 m/s (Figure 4.2), the adaptive controller had

a maximum position error of -0.0092 m, where as the PID controller had a larger

error of 0.09 m, as shown in Figure 4.3. This was an order of magnitude larger

than the adaptive controller. The PID controller also had minor oscillations as it

attempted to match the changing velocity. These oscillations were more appar-

ent when looking at Figure 4.4, which showcases the error in velocity. Here, the

adaptive controller was a more optimal approach, with minimal deviation from the

target velocity over the entire simulation. However, as the PID controller began

to settle, its steady state error in position began to close in on the adaptive con-

troller, with a value of 0.013 m at 10 seconds. The velocity error for PID control

also settled as the magnitude of acceleration decreased.

56

Figure 4.1: Position of PID and adaptive controller during acceleration. Thedesired position is covered by the adaptive controller.

Figure 4.2: Velocity of PID and adaptive controller during acceleration. Thedesired velocity is covered by the adaptive controller.

57

Figure 4.3: Position error for PID and Adaptive controller during acceleration.

Figure 4.4: Velocity error for PID and Adaptive controller during acceleration.

58

4.1.2 Deceleration

The adaptive controller tended to show a negative error throughout testing, this

was exacerbated during deceleration tests as shown by the velocity error in Figure

4.8. This meant that the adaptive controller had tendencies to err on the side of

being faster than the desired velocity, albeit by a very small amount (less than .01

m/s). Once again, the PID controller had diminishing oscillations in its velocity.

As with accelerating, this caused more initial variation in the error. The adaptive

controller ended up with a maximum error of -0.023 m, and the PID controller

ended with a -0.031 m error, as seen in Figure 4.7. Neither of the controllers were

allowed to have a negative velocity during simulation, because it was assumed

the vehicle would not shift from drive to reverse to fix any position error once it

stopped moving. This meant the position error remained the same once velocity

reached zero. Also, both velocity errors also jump to zero at approximately 5

seconds since the software prohibited the controllers from reversing the vehicle’s

direction. While the PID controller had a larger error in position, its steady state

error in velocity ended up being 75% of the adaptive controllers steady state error

(not including both the controller’s holding at 0 m/s once they stopped).

59

Figure 4.5: Position of PID and adaptive controller during deceleration. Thedesired position is covered by the adaptive controller.

Figure 4.6: Velocity of PID and adaptive controller during deceleration.The desiredvelocity is covered by the adaptive controller.

60

Figure 4.7: Position error for PID and Adaptive controller during deceleration.

Figure 4.8: Velocity error for PID and Adaptive controller during deceleration.

61

4.2 Lane Keeping

4.2.1 Decreasing Radius

When running the lane keeping simulation, the sliding mode controller proved to

be a more stable option than PID. The sliding mode controller had a maximum

error of .015 m before it began to slowly reduce the error. On the other hand, the

PID controller had a max error of .055 m. After staying around this magnitude

for most of the simulation, the integral portion of the PID controller managed to

bring the error down to .002 m, which was about 12% of the sliding controllers

steady state error (Figure 4.10). Notably, this happened after the radius of the

curve became constant. This meant that the sliding mode controller performed

better during its transient state, keeping up with the changing turning radius

better. The PID controller performed better in its steady state, once the radius

had stopped changing. The sliding mode controller was more consistent overall in

this simulation, and had more stable steering angle input as well (Figure 4.11.

62

Figure 4.9: Position of vehicle during decreasing radius turn.

Figure 4.10: Lateral Error for PID and Sliding control during decreasing radiusturn.

63

Figure 4.11: Steering angle during lane keeping simulation. the paths overlap eachother for the majority of the simulation.

4.2.2 Step Input

When looking at a step input, the PID controller had significantly less overshoot

(Figure 4.12). The sliding mode controller had a faster rise time and settling

time, but it came at the cost of extreme steering angle changes. One such jump

changed the angle from -25 degrees to 12 degrees within an extremely short period

of time, which the physical system would not be able to keep up with. This means

the sliding mode controller needs a relatively smooth trajectory to follow, with

minimal inconsistencies and jumps in lateral position.

64

Figure 4.12: Lateral position for PID and Sliding controller after step input of 1m.

4.2.3 Sinusoidal Curve

During the sinusoidal simulation, the sliding controller had minimal error compared

to the PID controller. The sliding controller had a maximum error of .014 m, while

the PID controller had a maximum error of .19 m. The resulting oscillations in

lane error from the PID controller were 10 times as large as the sliding controller.

Figure 4.14 also shows that the PID controller struggles more with minimizing the

error when the curve is changing than the sliding controller. The sliding controller

did have some oscillations while the curve changed, but it was more stable and

performed much better than the PID controller. The simulation did not account

for weight shift in the vehicle as it changed directions, due to the kinematic model

used.

65

Figure 4.13: Position of vehicle during sinusoidal path. Sliding control is overlap-ping the desired path.

Figure 4.14: Lateral Error for PID and Sliding control during sinusoidal path.

66

Chapter 5

Conclusions and Future Work

5.1 Conclusions

Methods for converting the mechanical systems of a Polaris GEM e2 to drive-

by-wire systems were discussed in this thesis. These changes included replacing

the accelerator pedal with a pair of electronically controlled potentiomenters, in-

stalling a linear actuator onto the master cylinder for the brake, and replacing the

steering wheel and column with a stepper motor and gearbox. The overall control

architecture was also described, including the use of ROS for communications and

hardware integration.

Once the separate systems were explained, a kinematic and dynamic model was

derived to simulate the vehicle. An adaptive trajectory control was proposed for

controlling the vehicles speed. Overall, the adaptive controller outperformed its

PID counterpart by having minimal oscillations and consistently decreasing errors.

When testing acceleration to 2 m/s, the adaptive controller had a maximum error

of -0.0092 m, whereas the PID controller had an error of 0.09 m, which was an

67

order of magnitude larger.

A sliding mode controller was proposed for controlling the steering angle when

path following, and it performed well at keeping the error minimized when com-

pared to a PID controller. The sliding mode controller also performed better on

a sinusoidal curve. However, when faced with a sudden jump in target lateral

position, some of its changes in the steering angle may prove problematic for the

stepper motor to keep up with. This is an issue because the vehicle must be able to

respond well to emergencies, such as people running out in front of the car. Care

must be taken to ensure that the actuator is properly considered, such as including

limits on how fast the sliding mode controller can change the angle.

5.2 Future Work

Autonomous vehicles will continue to be an important research topic in the future.

The proposed methods in this thesis are expected to be used for IGVC. In order to

utilize these features outside the scope of the competition, several improvements

should be considered.

5.2.1 Increasing DOF

Several assumptions were made throughout this thesis, including ignoring the pos-

sibility of longitudinal and lateral tire slip. While these assumptions were accept-

able for the lower speed maneuvers required by IGVC, the use of these models is

more limited in higher speed situations. If these limits, such as minimizing lateral

acceleration, are acknowledged and managed properly, then higher speed travel is

fine, but still not ideal. A higher DOF model would allow for applications such as

68

high lateral acceleration motions and more emergency oriented maneuvers.

5.2.2 System Integration

The proposed controllers (velocity and lane keeping) were only tested in a simulated

environment. Integration onto the vehicle is the next logical step. Lane keeping

using a sliding mode controller would require two pieces of information: the lateral

error from lane center, and the difference in angle between the vehicle and the

direction the road is pointed. This data could be found using lane detection with

a stereoscopic camera. Velocity control would require knowledge of the vehicles

speed. This could be done by either accessing the Polaris GEM e2 speedometer or

by using a 3rd party system to measure velocity. The implementation should be

tested in a limited capacity first to minimize risk.

5.2.3 Revise Sliding Mode Controller

The sliding mode controller should have limits in place on how fast it can change

the steering angle. Doing so will allow the controller to work within the stepper

motors limitations. This may require changing the parameters of the control law

to have re-optimize the system.

5.2.4 Utilize Fuzzy Logic

Fuzzy logic controllers are relatively underused in automotive applications. Most

research on this topic has been focused toward velocity control. One of the benefits

of testing a fuzzy logic control system is that it can be integrated with other control

laws or used on its own. Fuzzy logic could apply well to lane keeping, since it would

69

be able to handle uncertainties such as changing road conditions without having

to use processing power to estimate new parameters.

70

Bibliography

[1] Autonomous vehicles: Coming to a road near you. Government Technology,

31(5):38–41, 2018.

[2] National Highway Traffic Safety Administration. A drive through time.

https://one.nhtsa.gov/nhtsa/timeline/index.html.

[3] National Highway Traffic Safety Administration. Quick facts 2016.

https://crashstats.nhtsa.dot.gov/Api/Public/ViewPublication/812451, 2017.

[4] National Highway Traffic Safety Administration. Automated vehicles

for safety. https://www.nhtsa.gov/technology-innovation/automated-vehicles-

safety, 2018.

[5] National Highway Traffic Safety Administration. Traffic safety facts. United

States Congress, 2018.

[6] Defense Advance Research Projects Agency. The grand challenge.

https://www.darpa.mil/about-us/timeline/-grand-challenge-for-autonomous-

vehicles.

71

[7] S. Anwar. An anti-lock braking control system for a hybrid electromagnetic/-

electrohydraulic brake-by-wire system. Proceedings of the American Control

Conference, 3:2699–2704, 2004.

[8] C. Becker, L. Yount, S. Rosen-Levy, and J. Brewer. Functional safety as-

sessment of an automated lane centering system (report no. dot hs 812 573).

National Highway Traffic Safety Administration, 2018.

[9] T. Becsi and S. Aradi. Design of lane keeping algorithm of autonomous vehicle.

Periodica Polytechnica: Transportation Engineering, 44(1):60–68, 2016.

[10] S. Bennett. A brief history of automatic control. IEEE Control Systems

Magazine, 16(3):17–25, 1996.

[11] H. Cao, X. Song, S. Zhao, S. Bao, and Z. Huang. An optimal model-based

trajectory following architecture synthesising the lateral adaptive preview strat-

egy and longitudinal velocity planning for highly automated vehicle. Vehicle

System Dynamics, 55(8):1143–1188, 2017.

[12] R. Chase. Does everyone in america own a car? United States Congress, 2010.

[13] Jeff Davis. Dreaming of driverless: Whats the difference between level 2

and level 5 autonomy? https://blogs.nvidia.com/blog/2018/01/25/whats-

difference-level-2-level-5-autonomy/, 2018.

[14] R. DeCarlo and S. Zak. A quick introduction to sliding mode control and its

applications. Universita Degli Studi Di Cagliari, 2008.

[15] Dewesoft. Pid control. https://dewesoft.pro/online/course/pid-control.

72

[16] R. Dorf and R. Bishop. Modern Control Systems, 8th edition. Addison-Wesley,

Reading, MA, 1998.

[17] Neural Dump. Stanley the volkswagen wins grand challenge 2005.

https://www.neuraldump.net/2005/10/stanley-the-volkswagen-wins-grand-

challenge-2005, 2005.

[18] T. Gillespie. Fundamentals of vehicle dynamics. SAE International, 1:1–519,

2001.

[19] P. Gora and I. Rub. Traffic models for self-driving connected cars. Trans-

portation Research Procedia, 14:2207–2219, 2016.

[20] B. Guvenc, L. Guvenc, D. Odenthal, and T. Bunte. Robust two degree of

freedom vehicle steering control satisfying mixed sensitivity constraint. IEEE

Transactions on Control Systems Technology, 12:627–636, 2001.

[21] L. Han, H. Yashiro, H. Nejad, Q. Do, and S. Mita. Bezier curve based path

planning for autonomous vehicle in urban environment. IEEE Intelligent Ve-

hicle Symposium, San Diego, CA, pages 1036–1042, 2010.

[22] L. Hoberock. A survey of longitudinal acceleration comfort studies in ground

transportion vehicles. U.S. Department of Transportation, 1976.

[23] IGVC. Igvc 2019 rules. www.igvc.org/2019rules.pdf.

[24] National Instruments. Pid theory explained. http://www.ni.com/en-

us/innovations/white-papers/06/pid-theory-explained.html, 2019.

73

[25] SAE International. Sae international releases updated visual chart

for its levels of driving automation standard for self-driving vehicles.

www.sae.org/news/press-room/2018/12/sae-international-releases-updated-

visual-chart-for-its-levels-of-driving-automation-standard-for-self-driving-

vehicles, 2018.

[26] J. Jaafar and E. McKenzie. Decision making method using fuzzy logic for

autonomous agent navigation. Journal of Computer Science and Information

Technology, 3(1):8–18, 2011.

[27] J. Jang, C. Sun, and E. Mizutani. Neuro-fuzzy and soft computing, a com-

putational approach to learning and machine intelligence. IEEE Transactions

on Automatic Control, 42(10):1482–1485, 1997.

[28] E. Jones and R. Childers. Contemporary College Physics - 2nd Edition. 1993.

[29] N. Leveson. Adaptive cruise control system overview. 5th Meeting of the U.S.

Software System Safety Working Group, Anaheim, CA, 2005.

[30] Y. Li, P. Musilek, and L. Wyard-Scott. Fuzzy logic in agent-based game

design. IEEE Annual Meeting of the Fuzzy Information, Alberta, Canada,

2:734–739, 2004.

[31] S. Mostafa, A. Mustapha, M. Mohammed, M. Ahmad, and M. Mahmoud.

A fuzzy logic control in adjustable autonomy of a multi-agent system for an

automated elderly movement monitoring application. International Journal of

Medical Informatics, 112:173–184, 2018.

[32] Oriental Motors. Ard-kd user manual for ac and dc systems.

www.orientalmotor.com/products/pdfs/opmanuals/HM-60340-2E.pdf.

74

[33] J. Naranjo, C. Gonzalez, J. Reviejo, R. Garcia, and T. Pedro. Adaptive

fuzzy control for inter-vehicle gap keeping. IEEE Transactions On Intelligent

Transportation Systems, 4(3):132–142, 2003.

[34] Society of Automotive Engineers. Vehicle dynamics terminalogy. J670 200801,

2008.

[35] US Department of Transportation. Vehicle nonlinear equations of motion.

https://users.ece.cmu.edu/ koopman/ahs/ahs objectives/AHS8.pdf, January

10, 2019.

[36] H. Pacejka, E. Bakker, and L. Nyborg. Tyre modelling for use in vehicle

dynamics studies. SAE International Congress and Exposition, paper number:

870421, 1987.

[37] R. Pepy, A. Lambert, and H. Mournier. Path planning using a dynamic vehicle

model. IEEE 2nd International Conference on Information and Communica-

tion Technologies, 1:781–786, 2006.

[38] Polaris. Model specifications specs: Gem e2. gem.polaris.com/en-

us/e2/specs/.

[39] M. Quigley, B. Gerkey, and W. Smart. Programming Robots with ROS (1st

ed.). O’Reilly Media, Sebastopol, CA, 2015.

[40] R. Rajamani. Vehicle Dynamics and Control 2nd Edition. Springer, New

York, NY, 2012.

[41] R. Rajamani and C. Zhu. Semi-autonomous adaptive cruise control systems.

IEEE Transactions on Vehicular Technology, 51(5):1186–1192, 2002.

75

[42] P. Ramanata. Optimal vehicle path generator using optimization methods.

Virginia Polytechnic Institute, 1998.

[43] R. Rojas. Spirit of berlin: An autonomous car for the darpa urban challenge

hardware and software architecture. DARPA Grand Challenge, 2007.

[44] ROS. Core components. http://www.ros.org/core-components/.

[45] ROS. History. http://www.ros.org/history/, 2019.

[46] H. Seo, S. Youn, and K. Oh. A fuzzy reinforcement function for the intelligent

agent to process vague goals. IEEE 19th International conference of the North

American, Atlanta, GA, 8:29–33, 2000.

[47] J. Setiawan, M. Safarudin, and A. Singh. Modeling, simulation and validation

of 14 dof full vehicle model. IEEE International Conference on Instrumenta-

tion, Communication, Information Technology, and Biomedical Engineering,

Indonesia, pages 1–6, 2009.

[48] M. Short and M. Pont. Simulation of vehicle longitudinal dynamics. Embedded

Systems Laboratory, 2004.

[49] J. Slotine and W. Li. Applied Nonlinear Control, 2nd Edition. Prentice-Hall,

Englewood Cliffs, NJ, 1991.

[50] M. Tanelli, R. Sartori, and S. Savaresi. Combining slip and deceleration control

for brake-by-wire control systems: A sliding-mode approach. European Journal

of Control, 13(6):593–611, 2007.

[51] Trinamic. Pd86-3-1180. www.trinamic.com/products/drives/stepper-

pandrives-details/pd86-3-1180/.

76

[52] H. Unbehauen. Control Systems, Robotics and Automation- Volume II.

EOLSS Publishers, Oxford, UK, 2009.

[53] A. Vahidi and A. Eskandarian. Research advances in intelligent collision avoid-

ance and adaptive cruise control. IEEE Transactions On Intelligent Transporta-

tion Systems, 4(3):143–153, 2003.

[54] S. Vijayabaskar and T. Manigandan. Performance analysis of permanent

magnet synchronous motor using hybrid optimization algorithm. International

Journal of Advanced Engineering Technology, 7(2):748–753, 2016.

[55] C. Wen. Globally stable single loop and decentralized adaptive systems with

parameter projection. Control and Dynamic Systems, 72:301–345, 1995.

[56] W. Xiang, P. Richardson, C. Zhao, and S. Mohammed. Automobile brake-

by-wire control system design and analysis. IEEE Transactions on Vehicular

Technology, 57(1):138–145, 2008.

[57] Y. Yamaguchi and T. Murakami. Adaptive control for virtual steering char-

acteristics on electric vehicle using steer-by-wire system. IEEE Transactions

on Industrial Electronics, 56(5):1585–1594, 2009.

77