Florida State University Libraries

Electronic Theses, Treatises and Dissertations The Graduate School

2008 Modeling and Simulation of Skid Steered Robot Pioneer 3AT Dhanashekar Arcot Krishnamurthy

Follow this and additional works at the FSU Digital Library. For more information, please contact [email protected]

FLORIDA STATE UNIVERSITY

COLLEGE OF ENGINEERING

MODELING AND SIMULATION OF SKID STEERED ROBOT

PIONEER – 3 AT

By

DHANASHEKAR ARCOT KRISHNAMURTHY

A Thesis submitted to the Department of Mechanical Engineering In partial fulfillment of the requirements for the degree of Master of Science

Degree Awarded: Spring Semester, 2008 The members of the Committee approve the Thesis of Dhanashekar Arcot Krishnamurthy defended on March 27th, 2008.

______

Patrick Hollis Professor Directing Thesis

______

Carl Moore Committee Member

______

Juan Ordonez Committee Member

Approved:

______

Chiang Shih, Chair, Department of Mechanical Engineering

______

Ching-Jen Chen, Dean, College of Engineering

The Office of Graduate Studies has verified and approved the above named committee members.

ii

ACKNOWLEDGEMENTS

I would like to take this opportunity to thank a few of the many people who have made my graduate studies and this thesis possible. First of all, I would like to thank my advisor Dr. Patrick Hollis for his valuable guidance and support. I would also like to extend my gratitude to Dr. Emmanuel Collins who gave me an opportunity to work with the CISCOR group in the mechanical engineering department. I would like to thank Dr. Juan Ordonez and Dr. Carl Moore, for serving in my graduate committee. Special thanks to Wei and Oscar, whose work with the Pioneer 3AT torque controller made running the robot test runs possible. Also, I thank the other members of the CISCOR group, for support and help in the research. I owe special gratitude to a number of close friends here in Tallahassee. They made my stay pleasant and enjoyable. Finally, I’m thankful to my family and friends back home in India. They give me the strength and courage to face and overcome new challenges.

iii TABLE OF CONTENTS

List of Tables ...... v List of Figures ...... vi Abstract ...... viii

1. Introduction and Background ...... 1

1.1 Autonomous ground vehicle ...... 1 1.2 Purpose and organization of the thesis ...... 2 1.3 Steering mechanisms ...... 4 1.4 Vehicle dynamic modeling ...... 7 1.5 Pioneer 3AT and Torque controller...... 10

2. Physical parameter determination ...... 13

2.1 Center of mass ...... 14 2.2 Moment of inertia ...... 18 2.3 Friction and rolling resistance coefficient ...... 24

3. Mathematical Modeling ...... 26

3.1 Theoretical model ...... 26 3.2 Robot test-runs ...... 34 3.3 Simulations using MATLAB ...... 38

4. Simulation using ADAMS ...... 43

4.1 ProE model of Pioneer 3AT ...... 43 4.2 Modeling and analysis ...... 45

5. Conclusions and future work...... 54

APPENDICES ...... 55

A MATLAB code for simulation of robot ...... 55

REFERENCES ...... 60

BIOGRAPHICAL SKETCH …..…………………………………………… 61

iv

LIST OF TABLES

Table 2.1: Weights of different parts ...... 23

Table 2.2: Oscillation time ...... 23

Table 2.3: Moment of inertia values of the robot ...... 23

v LIST OF FIGURES

Figure 1.1: Independent steering system ...... 4

Figure 1.2: Single axis system ...... 5

Figure 1.3: Skid steered system ...... 6

Figure 1.4: Axis system ...... 7

Figure 1.5: Forces acting on the wheel ...... 8

Figure 1.6: Pioneer 3AT ...... 10

Figure 2.1: Robot reference axis system ...... 13

Figure 2.2: Weighing the robot ...... 14

Figure 2.3: Weight distribution ...... 15

Figure 2.4: Position of CG ...... 16

Figure 2.5: CG in Z direction ...... 17

Figure 2.6: Hanging weight ...... 18

Figure 2.7: Experimental 4 wire setup ...... 20

Figure 2.8: Three Wire setup ...... 21

Figure 2.9: ‘x’ and ‘y’ axes setup ...... 22

Figure 2.10: Friction coefficient ...... 25

Figure 3.1: SAE vehicle axis system ...... 26

Figure 3.2: Free body diagram ...... 28

Figure 3.3: Robot test runs – straight line motion ...... 35

Figure 3.4: Robot test runs – curve motion ...... 36

Figure 3.5: Robot test runs – inclined plane motion ...... 37

vi Figure 3.6: Simulation result – straight line motion ...... 39

Figure 3.7: Robot path for curve motion ...... 40

Figure 3.8: Simulation result – curve motion ...... 41

Figure 3.9: Simulation result – inclined plane motion ...... 42

Figure 4.1: CAD model of Pioneer 3 AT ...... 43

Figure 4.2: Front and side view of ProE model ...... 44

Figure 4.3: ADAMS wireframe model ...... 45

Figure 4.4: ADAMS straight line motion ...... 46

Figure 4.5: Velocity in forward direction ...... 47

Figure 4.6: Velocities from robot straight line run ………………………… 47

Figure 4.7: Robot path for curved motion ...... 48

Figure 4.8: ADAMS inclined plane motion ...... 49

Figure 4.9: Robot circular path on a flat plane ...... 50

Figure 4.10: Robot circular path on an inclined plane ...... 51

Figure 4.11: Robot circular path on a declined plane ...... 51

Figure 4.12: Velocities in X and Y direction-flat plane ...... 52

Figure 4.12: Velocities in X and Y direction-inclined plane ...... 53

Figure 4.13: Velocities in X and Y direction-declined plane ...... 53

vii

ABSTRACT

Mobile robots are used extensively for their ability to navigate and perform tasks in unstructured environments, without continuous human guidance. They are used for space exploration, military surveillance, nuclear power industry, security, etc. Before these robots are put to work, they need to be tested under different conditions. While developing or testing these robots, it is important that one models the actual vehicle and simulates test conditions similar to the actual ones. These models give an idea of how the robot is going to behave and thus play a critical role in the development of the vehicle navigation and control systems. For a skid steered robot like the Pioneer 3AT, the velocity constraints are quite different from other mobile platforms, because the wheels must skid laterally to follow a curved path. This implies that the control of this robot at the kinematic level only is not sufficient and, in general, demands the use of a dynamic model. This thesis develops a mathematical model of a 4-wheel skid- steering , the Pioneer 3AT. The model is validated with actual experiments on the Pioneer 3AT and also modeling and simulation using Pro Engineer and ADAMS.

viii 1. INTRODUCTION AND BACKGROUND:

1.1 AUTONOMOUS GROUND VEHICLE In the broadest “dictionary” sense, an is any piece of mechanized equipment that moves across the surface of the ground and serves as a means of carrying or transporting something, but explicitly does NOT carry a human being. An Autonomous UGV can be defined as a robot which can perform desired tasks in unstructured environments without continuous human guidance. Autonomous ground vehicles are used for space exploration, for example the NASA’s Mars Rover. PackBot Scout and Military R-Gator, developed by iRobot, are military surveillance autonomous vehicles. AGV’s are also used as security and sentry robots and in the nuclear power industry. AGV’s can be grouped based on their area of importance, i.e. research, mission oriented or commercially used. The academic community usually refers to AGV’s as mobile robots. Surveys of early mobile robot and autonomous vehicle research include [Flynn, 1985], [Harmon, 1986], [Klafter 1988], [Meystel, 1991], [Everett, 1995]. The first major research-oriented AGV development effort was Shakey, developed in the late 1960’s to serve as a test-bed for DARPA (Defense Advanced Research Project Administration) - funded AI work at Stanford Research Institute (SRI). Since then, a number of developers have been actively designing and manufacturing robots for both civilian and military use to perform dull, dirty and dangerous activates. One such successful organization, Mobile Robots Inc. developed the Pioneer 3AT robot to serve as a base for researchers and universities.

1 1.2 PURPOSE AND ORGANIZATION OF THE THESIS Mobile robots are used extensively for their ability to navigate and perform tasks in unstructured environments. Before these robots are put to work, they need to be tested under different conditions. While developing or testing the robot, it is important that one models the actual vehicle and simulates test conditions similar to those the robots might encounter. These models are important because, • They give an idea of how the actual vehicle might behave. • They avoid unnecessary testing. • They help in predicting robot performance in extreme conditions. • They are used in the design of vehicle navigation and control systems and • They play a critical role in the engineering of robotic control code.

In the past, significant research has been focused on the description of kinematic models of mobile robots. Researchers typically consider wheeled platforms with non-holonomic constraints while assuming perfect rolling. On the other hand, research that examines skid steering effects in the model is sparse. The steering of this type of robot is achieved by differentially driving wheel pairs on each side of the robot. For the robot to follow a curved path, the wheels must skid laterally. Hence the velocity constraints occurring here are different from those met on other mobile platforms where the wheels are not supposed to skid. This implies that the control of the robot at the kinematic level only is not sufficient and, in general demands the use of a dynamic model. The objective of this research is to develop a dynamic model for the skid steered robot PIONEER 3-AT. This dynamic model, unlike previous work in the area, will attempt to predict the motion of the robot in a 3-dimensional plane. The model will be used in path planning and motion control algorithms, developed as part of a control structure for autonomous vehicles.

2 The thesis focus is on dynamic modeling, 3D solid modeling and simulation. Pro-E and ADAMS are used for solid modeling and dynamic simulation. Matlab is used for theoretical simulation. The robot PIONEER 3-AT is used for validating some of the results from the simulations. Chapter 1 provides background information on the Pioneer 3AT robot, skid-steered vehicles and some of the associated basic concepts. Chapter 2 lists the experiments carried out on the robot to accurately determine important parameters used in the model. Chapter 3 focuses on the theoretical dynamic model and its equations, and simulations in MATALB. The test-runs on the Pioneer 3AT are also detailed. Chapter 4 deals with the simulation of the model in ADAMS and its results. It also displays the Pro-E model of the robot.. Chapter 5 summarizes the conclusions, some limitations and potential future work to overcome these limitations.

3 1.3 STEERING MECHANISMS: Steering systems used on autonomous ground vehicles can be broadly classified into three major types: Independent or explicit steering, single axle steering, and skid steering. This section introduces each of them, emphasizing skid steering. Independent steering, as shown in figure 1.1, explicitly articulates each of the wheels to the desired heading. These systems are generally used on robots requiring high maneuverability, especially in unprepared terrains. The downsides of explicit steering are higher actuator count, part count and the necessary swept volume. These vehicles can make sharper turns when compared to vehicles with single axle steering systems.

Figure 1.1 INDEPENDENT STEERING SYSTEM

4

Figure 1.2 SINGLE AXLE SYSTEM

Single axle steering, as shown above in figure 1.2, is achieved by adding a free pivot to one of the vehicle axles. It is most commonly used in on-road vehicles. The advantages include mechanical simplicity and relatively low steering power. One disadvantage is that wheels run in separate tracks when going in curves. Under difficult ground conditions this requires increased drive propulsion as each wheel is driving over fresh terrain.

Skid steered vehicles do not have axles connecting the left and right wheels. Instead, all wheels on one side are connected via chains or other such mechanisms. The wheels on one side can be rotated independent of the other side. The vehicle can achieve a turn by making the wheels on one side rotate faster than those on the other side. The difference in rotation causes the vehicle to skid and turn in the direction of the slower wheels, hence the term skid steer. The method of steering and propulsion is conceptually similar to that of tracked vehicles.

5

Figure 1.3 SKID STEERED SYSTEM

Skid steering, figure 1.3, is compact, light and requires few part. It is an effective and easy solution for steering the robot. These vehicles exhibit agile maneuverability to the extent of turning in place, about their center of gravity. When compared to the previously mentioned steering systems, skid steered systems have greater traction on the surface that they travel and hence are best used when traveling on rough terrain. However, it is not as accurate as other steering methods. The skidding causes unpredictable power requirements because of terrain irregularities and non linear tire-soil interaction. Therefore, the performance of the vehicle strongly depends on the surface of the terrain and speed of the vehicle. This type of steering also imposes considerable strain on parts associated with steering. The wheels and in some cases the surface of the terrain also have considerable wear and tear. Skid steering system behavior is complex to model mathematically, because the turn maneuver is performed by skidding on the ground where the amount of skid varies with the terrain. Speed and steering of skid-steered systems are strongly dependent on each other. Any attempt to maneuver the vehicle affects the speed of the vehicle and vice versa.

6 1.4 VEHICLE DYNAMIC MODELING Vehicle dynamic modeling is concerned with the characteristic movements (accelerating, braking, cornering, ride etc.) exhibited by the vehicle in response to forces imposed on it. Much of the study in vehicle dynamics involves how and why these forces are produced. This section provides information on dynamic modeling of vehicle and tire and defines some of the important concepts associated with it.

1.4.1 VEHCILE AXIS SYSTEM

Figure 1.4 AXIS SYSTEM

The ‘xyz’ frame is fixed to the robot and moves with it. Inertia properties related to this frame are taken as constant. This frame represents the body fixed coordinate system. The rotational motion along the x, y and z axis are called roll, pitch and yaw respectively. Vehicle tractive force is along x axis and the lateral force acts along y axis. The ‘XYZ’ frame is the inertial or world coordinate system. This axis system is fixed to the ground and remains so. All motions of the vehicle happen relative to this frame. The XYZ and xyz coordinate systems are related by a transformation matrix. The forces acting on the vehicle are analyzed in the body fixed frame and then transformed to the inertial frame to plot the path the robot takes.

7 1.4.2 TIRE - FORCES AND MOMENTS Forces and torques for acceleration of a vehicle in the horizontal plane are generated at the tires. Interaction between the tires and the road supply the tractive braking and cornering forces for maneuvering. The following picture depicts the forces considered acting on the wheel.

Figure 1.5 FORCES ACTING ON THE WHEEL

The active force Fx and the reactive force Frz are related to the wheel

torque and gravity, respectively. Fx is linearly dependent on the vehicle control input τ , namely, τ F = x r

The vector Fy denotes the lateral reactive force while the vector Rx results from the rolling resistance momentτ . r

8 1.4.3 BASIC DEFINITIONS

LONGITUDINAL ACCELERATION: Acceleration of the vehicle in the x direction or component of acceleration of a point on the vehicle, in the x direction. NORMAL ACCELERATION: Component of the vector acceleration of a point on the vehicle, in the z direction. LATERAL ACCELERATION: Component of the vector acceleration of a point on the vehicle, in the y direction. HEADING ANGLE: It is the angle between the trace of the robot path on the x-y plane and the X axis of the inertial coordinate system. ROLL ANGLE: Angle between vehicle y axis and ground plane. PITCH ANGLE: Angle between vehicle x axis and ground plane. NORMAL FORCE: Component of force vector in z direction. ROLLING MOMENT: Component of moment vector tending to rotate the vehicle about x axis, positive counterclockwise when looking in the positive direction of x axis. PITCHING MOMENT: Component of moment vector tending to rotate the vehicle about y axis. YAWING MOMENT: Component of moment vector tending to rotate the vehicle about z axis. LATERAL COEFFICIENT OF FRICTION: It is defined as the ratio between lateral force and load on the tire. Lateral_ force µ = L oad__ on tire

9 1.5 PIONEER 3-AT AND TORQUE CONTROLLER The Pioneer 3AT, figure 1.6, is a highly versatile all-terrain robotic platform, chosen by many DARPA grantees and others requiring a high-performance robot with plenty of real estate for customization. The 4-wheel drive skid steered robot, runs on 12V sealed lead-acid batteries, and stores up to 252 watt-hours of hot swappable batteries. It also needs communication with a PC client, via one of the following: • Wireless radio modem • Robot-to-laptop connecter • Robot-to-desktop tether • Or connection to an embedded computer

Its sensing capabilities extend far beyond the ordinary with laser based navigation options, integrated inertial correction to compensate for slippage, GPS, bumpers, gripper, vision, stereo range finders, compass and a rapidly growing suite of other options.

Figure 1.6 PIONEER 3-AT

10 A product of “MobileRobots Inc”, P-3AT runs on ARIA robotics API software, and is used for research and prototyping applications involving: • Mapping • Navigation • Reconnaissance • Vision • Manipulation • Cooperation • And other behaviors

TECHICAL SPECIFICATIONS: The rugged P3-AT has a 50cm x 49cm x 26cm aluminum body with 21.5cm diameter drive wheels. The four motors use 38.3:1 gear ratios and contain 100-tick encoders. This skid-steer platform is holonomic and can rotate in place moving both wheels, or it can move wheels on one side only to form a circle of 40cm radius. P3-AT can climb a 45% grade and sills of 9cm. On flat floor, the P3-AT can move at speeds of 0.7 mps. At slower speeds on flatter terrains, it can carry payloads up to 30 kg. Payloads include additional batteries and all accessories and must be balanced appropriately for effective operation of the robot.

DRIVE SYSTEM: For the skid steer robot, each side of the machine is powered by 2 electric motors. Each of the 4 motors (two for each side) connects to a sprocket, and each drive sprocket is connected to a hub via a short shaft. Both the sprockets on any side are connected by a chain to the two wheels on the same side. The sprockets and chains serve two purposes: They distribute the power from 2 motors equally to two wheels, and they provide a gear reduction to increase the torque at the wheels.

11 1.5.1 TORQUE CONTROLLER To facilitate easy comparison between the robot test runs carried out in the lab and the simulations of the dynamic model in MATLAB, the controller of the robot is substituted with a ‘torque controller’, which has the input as torque. The controller used is Maxton motor controller. The pioneer 3AT is equipped with 4 motors, two on each side. The torque τ , applied at each wheel, is related to the tractive force, Fx by the equation,

τ = r* Fx where, r is the radius of the wheel. Also, torque is a product of the current, I , input into the motor and the

torque constant, Kt .

τ = IK* t where the value of Kt is 0.023.

Thus the input into the controller is current and a constant voltage of 12 v, from the robot battery. The controller outputs the corresponding torque values to the motor. • The torque controller has some limitations which make its usage demanding. The maximum speed achievable by the robot is approximately 1 m/s. By maintaining a constant torque, the velocity of the robot keeps increasing until the saturation limit of the motor. The maximum velocity has to be taken into consideration when simulating the dynamic model in MATLAB. • Moreover, since the maximum current applicable to each motor, before it saturates, is 2.5 A, the possible range of torques that can be used is limited. The motor characteristics also indicate that larger changes in the current produce comparatively smaller changes in torque. • For lateral motion, due to the high value of the friction coefficient, high torque is needed. Since the total current that can be input to the motors is only around 10 A, only a limited number of curved paths can obtained for comparison with the MATLAB simulations.

12 2. PHYSICAL PARAMETER DETERMINATION: When a vehicle is being modeled, knowing certain physical parameters of the system can lead to more accurate results. Some are standard physical quantities while others need to be assumed. There are also several parameters that need to be determined experimentally. It is very useful to acquire data experimentally and use it in the modeling. This makes the model more authentic and one can now rely more on the simulation results. The properties of the vehicle to be determined experimentally are • The mass ‘m’ • Position of center of mass ‘G’ • The Moment of Inertia • Coefficient of friction and rolling resistance

The following sections elaborate on the experiments performed and the results obtained with reference to the above mentioned properties. The standard SAE vehicle axis system, as shown in figure 2.1, is used to reference the robot. Accordingly, x axis is in the longitudinal direction, y in the lateral direction and z points straight downwards.

Figure 2.1 ROBOT REFERENCE AXIS SYSTEM

13 2.1 CENTER OF MASS The mass ‘m’ of the robot is measured simply by suspending the robot from a hoist through a spring scale, as shown in figure 2.2. For accurate results, the robot is mounted with all its sensors and other accessories. The measurement on the spring scale was noted to be 79 lb.

Figure 2.2 WEIGHING THE ROBOT

14 2.1.1 WEIGHT DISTRIBUTION The weight distribution of the robot is measured by taking the weight under each wheel. The values measured under each wheel also provide a verification of the weight measured directly.

Figure 2.3 WEIGHT DISTRIBUTION

15 Measuring the weight distribution about the CG in x and y directions, we get the CG position in the ‘x-y’ plane.

Figure 2.4 POSTION OF CG

X1 * 37 = X2 * 42 Hence X1 = 13.8 cm and X2 = 12.2 cm. Also Y1 * 38 = Y2 * 41 Therefore Y1 = 20.5 cm and Y2 = 19 cm

16 In the ‘z’ direction the CG is obtained by tilting the robot on one side, as shown in figure 2.5, till the weight starts acting in the other direction. The stable point before this state is marked on both sides to get the CG.

Figure 2.5 CG IN ‘Z’ DIRECTION

17 2.2 MOMENT OF INERTIA There are several ways to experimentally measure the moment of inertia of an object. The method used in this study is to suspend the object from a frictionless pin A and let the object oscillate freely like a pendulum, as shown in figure 2.6. By measuring the oscillating period, we can measure the moment of inertia about A for the object.

Figure 2.6 HANGING WEIGHT

Since the motion is rotation about a fixed axis, Newton’s second law can "" be written as, ƒMIIAAA=α = θ . Which gives, "" −mgdsinθ = I A θ "" IAθ+ mgd sin θ = 0 If the angle of oscillation is small,

sinθ≈ θ

18 So the differential equation of motion for the pendulum is, "" mgd θ+ θ = 0 I A Therefore the oscillation period is, I T = 2π A mgd

Hence, (T2 *** m g d ) I = 4*π 2 The principle inertia axes are considered to be similar to the body fixed xyz axes. The vehicle is put into oscillation about one of the fixed axis. With a restoring moment due to weight, the natural frequency is measured. Knowing the restoring stiffness, the second moment of mass about an axis through G parallel to the fixed axis can be calculated by using the parallel axis theorem. An appropriate fixed axis is therefore chosen to investigate the inertia in yaw, pitch and roll motion. The experimental setup consists of a wooden platform suspended by 4 wires from a steel platform which is hoisted of the ground. The robot is placed on the hanging platform and given small oscillations, rotating about the pivot at the top of the setup. By noting the time for an oscillation, the inertia is calculated. The readings are repeated to check the consistency.

I x and I y are obtained by the 4 wire setup, shown in figure 2.7.

19

Figure 2.7 EXPERIMENTAL 4 WIRE SETUP

20 For yaw, the setup is modified. Instead of the 4-wire support, the platform is suspended by three equally spaced wires of length ‘l’. Each wire has tension W/3 where W is the total weight. So when the platform is rotated by , there exists a restoring moment of W Rθ WR2 θ MR=3* * * =

3 LLp p

Hence the torsional stiffness is dM WR2 =

dθ Lp

Therefore the natural frequency of vibration is 1 WR2 f =

2π ILp

Keeping the above principle in mind, the upper frame was made rigid and the setup below it was given twisting moment to make small oscillations, Figure 2.8.

Figure 2.8 THREE WIRE SETUP

21

Figure 2.9 ‘x’ AND ‘y’ AXES SETUP

22 The time for one oscillation is noted for x, y and z rotations. The readings were repeated to check the consistency.

Table 2.1 WEIGHTS OF DIFFERENT PARTS ROBOT 79 lb

PLATFORM 44.5 lb

HANGING FRAME 13.5 lb

Table 2.2 OSCILLATION TIME 4 WIRE EMPTY FRAME 1.81s 4 WIRE FRAME WITH ROBOT, OSCILLATION ALONG ‘X’ AXIS 2.16s

4 WIRE FRAME WITH ROBOT, OSCILLATION ALONG ‘Y’ AXIS 2.101s

EMPTY FRAME, 3-WIRE SETUP TWISTING OSCILLATION TIME 1.224s

FRAME WITH ROBOT, 3-WIRE SETUP TWISTING OSCILLATION 0.9533s

Table 2.3 MOMENT OF INERTIA VALUES OF THE ROBOT MOMENT OF INERTIA OF THE ROBOT ABOUT THE ‘X’ AXIS 4.6539 lbft^2

MOMENT OF INERTIA OF THE ROBOT ABOUT THE ‘Y’ AXIS 4.5658 lbft^2

MOMENT OF INERTIA OF THE ROBOT ABOUT THE ‘Z’ AXIS 9.7323 lbft^2

23 2.3 FRICTION AND ROLLING RESISTENCE COEFFICIENT Friction is defined as the force acting between two surfaces sliding over each other. The frictional force on a surface is exerted in the direction opposite to its motion, relative to the other surface. µ , the coefficient of friction, is an empirical property of the contacting surfaces. The value of µ determines the amount of friction between the two sliding bodies. For the robot, the coefficient of friction between the tires and the ground, along longitudinal and lateral directions needs to be determined. To accomplish this, the robot wheels are locked and it is pulled with the help of a measuring

pulley, as shown in figure 2.10. The friction force f f is measured at the instant when the robot started sliding on the surface. If fn is the normal force i.e. mass of the robot, then f µ = f

fn Rolling resistance is defined as the resistance which occurs when a round object such as a tire rolls on a surface. To measure the rolling resistance for the robot tires, the robot is pulled at a constant velocity, with the help of a spring balance, to measure the force at which it rolls, i.e. the rolling resistance force.

The coefficient of rolling resistance, fr is measured similar to coefficient of friction, but the friction force is replaced with the rolling resistance force. The

value of fr is much smaller than µ because the wheels of the robot are locked while trying to measure friction.

24

Figure 2.10 FRICITION COEFFICIENT

The experimental value of µ µ on the lab surface was measured to be 0.506 in the longitudinal direction. Since the robot speed is very low, we can take the same value for coefficient of dynamic friction. The rolling resistance coefficient was measured to be 0.043.

25 3. MATHEMATICAL MODELING:

3.1 THEORETICAL MODEL The following section describes the development of a mathematical model used for theoretical simulation modeling. We do not focus on real time control since the objective was to model and validate the skid steered vehicle by simulation. The vehicle dynamic model is developed by neglecting some effects introduced by suspension and tire deformation. The following assumptions are made • The vehicle speed is very low • Longitudinal slippage is neglected • Lateral force on the tire is directly proportional to its vertical load • Vehicle is rotating counterclockwise. • The vehicle is always moving on a locally flat surface i.e. there exists no bumps or other obstacles on the road.

XYZ is the fixed-reference or global coordinate system, while xyz is the body-fixed or local coordinate system. The dynamic model is based on the standard bicycle model (3 degrees of freedom) in the local coordinate system. The standard SAE vehicle axis system is used, with x pointing forward, y in the lateral direction and z pointing vertically downwards. .

Figure 3.1 SAE VEHICLE AXIS SYSTEM

26 The two coordinate systems are connected by a 1-2-3 rotation sequence.

The respective angels are roll(φ ) , pitch (θ ) and yaw(ψ ).

Let x"",, y z" be the linear velocities and φ"",, θ ψ" be the angular velocities of the vehicle in frame xyz . In the fixed frame XYZ the absolute velocities are

»X" ÿ » cψ c θ− s ψ c θ s θ ÿ » x" ÿ …Ÿ " … Ÿ…Ÿ …ŸY=… csscsψθφ + φψ − ssscc ψθφ + ψφ − cs θφŸ…Ÿ y" …Ÿ" … Ÿ…Ÿ Z ⁄ −cscψθφ + ss ψφ ssc ψθφ + cs ψφ cc θφ ⁄ z" ⁄

Differentiating with respect to time gives the acceleration. Assuming the robot always moves on a locally flat surface, the derivatives of the roll and pitch angles are zero.

»X"" ÿ » cψ c θ− s ψ c θ s θÿ »"" x − y " ψ" ÿ …Ÿ "" … Ÿ…Ÿ …ŸY=… csscsψθφ + φψ − ssscc ψθφψφ + − cs θφŸ…Ÿ"" yx + " ψ" …Ÿ"" … Ÿ…Ÿ Z ⁄ −cscψθφ + ss ψφ ssc ψθφ + cs ψφ cc θφ ⁄ "" z ⁄

The weight vector acting in the global Z direction in local coordinates is,

»−cψ s θ c φ + s ψ s φ ÿ …Ÿ W = W…Ÿ sψ s θ c φ+ c ψ s φ …Ÿcθ c φ ⁄

Considering all forces parallel and normal to the local frame, let XXXYYZZ1, 2... 4; 1,... 4; 1,... 4 be the reaction forces along the longitudinal, lateral and vertical directions.

27 If F is the sum of all the forces, then ƒ FW= , »X1 + X2 + X3 + X4 ÿ » − cψ s θ c φ + s ψ s φ ÿ …Ÿ…Ÿ …Ÿ…ŸY1 + Y2 + Y3 + Y4 = W sψ s θ c φ + c ψ s φ …Ÿ…ŸZ1 + Z2 + Z3 + Z4 ⁄ cθ c φ ⁄ ______equation 1

The free body diagram of the robot is shown below. Here a, b are the distances of the center of mass from the front and rear wheels respectively. t is the track width and L , the wheelbase, is the sum of a and b. The wheels are numbered as shown in Figure 3.2.

Figure 3.2 FREE BODY DIAGRAM

28 3.1.1 LOAD DISTRIBUTION: The model attempts to predict the robot motion while it is moving on inclined planes. Hence the weight distribution on each wheel needs to be calculated before hand. We assume a load distribution based on the bicycle model for front to rear weight distribution. Then we split the front and rear loads left to right based on the inclination of the vehicle. The wheel load distribution is a statically indeterminate problem. On non-planar surfaces only 3 wheels contact the surface.

Assume there is no net moment on the vehicle at the CG. i.e. ƒM CG = 0 , then t t (1Z+ Z 3) − (2 Z + Z 4) + h (1 Y + Y 2 + Y 3 + Y 4)0 = 2 2 aZZ(1+ 2) − bZZ (3 + 4) − hXX (1 + 2 + X 3 + X 4)0 = t t b(3 Y+ Y 4) − a (1 Y + Y 2) + (2 X + x 4) − (1 X + x 3)0 = 2 2 ______equation 2

Where h is the height of the CG above the ground plane. Solving and rearranging equation 2 using equation 1, we obtain the load acting on individual sets of wheels. For example, W Z3+ Z 4 = ( a cosθ cos φ − h ( − cos ψ sin θ cos φ + sin θ sin φ )) L W Z1+ Z 2 = (cos bθ cos φ + h (cos − ψ sin θ cos φ + sin θ sin φ )) L

Wcosθ cos φ hW (sin ψ sin θ cos φ+ cos ψ sin φ ) ZZ2+ 4 = + 2 t Wcosθ cos φ hW (sin ψ sin θ cos φ+ cos ψ sin φ ) ZZ1+ 3 = − 2 t

29 The four equations represent the reactive forces acting on the rear, front, right and left sides respectively, in the Z direction.

The fraction of the load that represents the right and left sides are

Z2+ Z 4 1 h (sinψ sin θ cos φ + cos ψ sin φ ) right = = + Wcosθ cos φ 2 t cos θ cos φ

1h (sinψ sin θ cos φ+ cos ψ sin φ ) left = − 2t cosθ cos φ

Representing cos(x) as c(x) and sin(x) as s(x), finally the total load on the front left wheel is,

W≈1 h (sψ s θ c φ+ c ψ s φ ) ’ Z1= (cc bθ φ + h (csc − ψ θ φ + ss)) θ φ ∆ − ÷ L «2t cθ c φ ◊

≈b h(csc−ψ θ φ + ss) θ φ ’≈ 1 h (ssc ψ θ φ + cs) ψ φ ’ ZW1= cθ c φ ∆ + ÷∆ − ÷ «L Lcθ c φ ◊« 2 t c θ c φ ◊ Similarly, finding the total load on the other wheels,

≈b h(csc−ψ θ φ + ss) θ φ ’≈ 1 h (ssc ψ θ φ + cs) ψ φ ’ ZW2= cθ c φ ∆ + ÷∆ + ÷ «L Lcθ c φ ◊« 2 t c θ c φ ◊ ≈a h(csc−ψ θ φ + ss) θ φ ’≈ 1 h (ssc ψ θ φ + cs) ψ φ ’ ZW3= cθ c φ ∆ − ÷∆ − ÷ «L Lcθ c φ ◊« 2 t c θ c φ ◊ ≈a h(csc−ψ θ φ + ss) θ φ ’≈ 1 h (ssc ψ θ φ + cs) ψ φ ’ ZW4= cθ c φ ∆ − ÷∆ + ÷ «L Lcθ c φ ◊« 2 t c θ c φ ◊

30 Using equation 2 and the same load distribution as for the vertical loads,

≈b h(csc−ψ θ φ + ss) θ φ ’≈ 1 h (ssc ψ θ φ + cs) ψ φ ’ Y1= W() sψ s θ c φ + c ψ s φ ∆ + ÷∆ − ÷ «L Lcθ c φ ◊« 2 t c θ c φ ◊ ≈b h(csc−ψ θ φ + ss) θ φ ’≈ 1 h (ssc ψ θ φ + cs) ψ φ ’ Y2= W() sψ s θ c φ + c ψ s φ ∆ + ÷∆ + ÷ «L Lcθ c φ ◊« 2 t c θ c φ ◊ ≈a h(csc−ψ θ φ + ss) θ φ ’≈ 1 h (ssc ψ θ φ + cψ s φ ) ’ Y3= W() sψ s θ c φ + c ψ s φ ∆ − ÷∆ − ÷ «LLcθ c φ ◊« 2 t cθ c φ ◊ ≈a h(csc−ψ θ φ + ss) θ φ ’≈ 1 h (ssc ψ θ φ + cs) ψ φ ’ Y4= W() sψ s θ c φ + c ψ s φ ∆ − ÷∆ + ÷ «L Lcθ c φ ◊« 2 t c θ c φ ◊

≈b h(csc−ψ θ φ + ss) θ φ ’≈ 1 h (ssc ψ θ φ + cs) ψ φ ’ X1= W() − cψ s θ c φ + s ψ s φ ∆ + ÷∆ − ÷ «L Lcθ c φ ◊« 2 t c θ c φ ◊ ≈b h(csc−ψ θ φ + ss) θ φ ’≈ 1 h (ssc ψ θ φ + cs) ψ φ ’ X2 = W() − cψ s θ c φ + s ψ s φ ∆ + ÷∆ + ÷ «L Lcθ c φ ◊« 2 t c θ c φ ◊ ≈a h(csc−ψ θ φ + ss) θ φ ’≈ 1 h (ss ψ θ cφ+ c ψ s φ ) ’ X3 = W() − cψ s θ c φ + s ψ s φ ∆ − ÷∆ − ÷ «LLcθ c φ ◊« 2 t cθ c φ ◊ ≈a h(csc−ψ θ φ + ss) θ φ ’≈ 1 h (ssc ψ θ φ + cs) ψ φ ’ X4 = W() − cψ s θ c φ + s ψ s φ ∆ − ÷∆ + ÷ «L Lcθ c φ ◊« 2 t c θ c φ ◊

The total static ground plane force at each wheel is calculated by

2 2 FXYti= i + i Where i = 1,2,3,4.

31 3.1.2 FRICTION Based on figure 3.2, if x" and y" are the longitudinal and lateral (skidding) velocity of the CG, then the velocities of the individual wheels are given as, t x"""1= x 3 = x + θ" 2 t x"""2= x 4 = x − θ" 2 y"""1= y 2 = y + aθ" y"""3= y 4 = y − bθ"

The vertical force zi acts from the surface to the wheel. The vector Rx results from the rolling resistance moment and the vector Fy denotes the lateral reactive force. These reactive forces can be regarded as friction forces. It is important to note that friction modeling is quite complicated since it is highly nonlinear and depends on many variables. Therefore in most cases only a simplified Coulomb friction model is used to express the wheel to ground contact.

Rxi = fr** zi signxi( )

Fyi = µ ** zi sign() yi

Where i = 1,2,3,4 µ and fr are the coefficients of friction and rolling resistance respectively..

The tractive forces are supplied by the torque from the motors. These are represented as Fxi . Since there are 2 motors on either side,

τ L= 2*r * F x1

τ R= 2*r * F x2

where τ L and τ R denote the total torque produced on the left and right sides and r is the radius of the wheel of the robot.

32 3.1.3 EQUATIONS OF MOTION The equations of motion in the xyz frame are written based on the local variables x,, y ψ . For a vehicle moving on a locally flat surface, we can ignore the other components z,,φ θ . max= F xt − R x − W( − cψ s θ c φ + s ψ s φ ) may= F yt − W() sψ s θ c φ + c ψ s φ t t "" Izzψ = aFFbFF()() yy12 +− yy 34 ++() FFRR xxxx 1313 +−−−() FFRR xxxx 2424 +−− 2 2

FFFFFxt= x1 + x 2 + x 3 + x 4

FFFFFyt= y1 + y 2 + y 3 + y 4

Here, if the static ground plane force at each wheel is lesser than friction force, i.e. FZti< µ * i , then

Fyi = Yi

Fxi is the tractive force and Fyi is the lateral force acting on each wheel.

33 3.2 ROBOT TEST-RUNS The robot Pioneer 3AT was used to test the simulations with the real life runs. The flat plane test runs were performed on the lab surface, while the inclined plane test run was performed on the outdoor ramp. The robot was run repeatedly to test accuracy. We consider three cases to test against the simulations from the dynamic model. • Straight line motion – flat plane • Curve motion – flat plane • Inclined plane motion In the first and third cases, a constant equal torque is applied to both sides of the robot. For curve motion, different torque values are maintained on either side to enable the robot to follow a curved path. Even though a constant torque is applied, the torque based controller, places a limit on the speeds possible on the robot. This is because a constant torque would allow the speed to increase as long as torque is applied. The limit placed on the speed is also considered when simulating the dynamic model in MATLAB.

34 3.2.1 STRAIGHT LINE MOTION A constant torque of 3.4362 Nm was applied to both sides of the robot and the robot was run for 5 s. The test was repeated for accuracy. The robot traveled in a straight line. The average distance was measured to be 4.62 m. A marker was attached to the robot to trace its path.

Figure 3.3 ROBOT TEST RUN – STRAIGHT LINE MOTION

35 3.2.2 CURVE MOTION Considering the constraints present in the controller, torque values of 9 Nm and -5 Nm were applied to the right and left sides respectively. The marker attached to the back of the robot produced a curve, as shown in figure 3.4.

Figure 3.4 ROBOT TEST RUN – CURVE MOTION

Since the wheels skid laterally while turning, only limited number of combinations of torque values will make the robot follow a circular path. This is due to the inadequacies of the present torque controller, as explained earlier. To get a curved path, the set of torque values specified above were chosen by trail and error methods. The maximum torque applicable to either side is limited to about 10 Nm. The diameter of the path was noted to be 0.78 m. The robot was run again for 5 s.

36 3.2.3 INCLINED PLANE MOTION To test the robot on an inclined plane, the robot was run on an adjustable ramp built outside. The inclination on the ramp was approximately 10 deg. The torque values given to the two sides are 10.308 Nm. The robot was run on the inclined plane for 4 s and reached a distance of 2.54 m.

Figure 3.5 ROBOT TEST RUN – INCLINED PLANE MOTION

37 3.3 SIMULATIONS USING MATLAB: The vehicle model equations of motion, from section 3.1.3, must be written as a set of first order differential equations, to enable using first order numerical integration methods such as the Runge-Kutta method. Inputs into the vehicle are the torques on either side. The MATLAB command ODE45, was used to solve the simultaneous differential equations. The state space representation of the dynamic equations uses the variables, a1= φ" a2 =θ" a3 =ψ" a4 = x" a5 = y" a6 = z" a7 = X a8 = Y a9 = Z a10 = φ a11 =θ a12 =ψ

So that,

F− R − W( − cψ s θ c φ + s ψ s φ ) a"4=xt x + a 5 a 3 m F+ W() sψ s θ c φ + c ψ s φ a"5=yt − a 4 a 3 m t t aFFbFF()()yy12+− yy 34 ++() FFRR xxxx 1313 +−−−() FFRR xxxx 2424 +−− a"3 = 2 2 I zz a"7= a 4()() cosψ *cos θ + a 5 − sin ψ *cos θ a"8= a 4cos()ψ *sin θ *sin φ + cos φ *sin ψ + a 5( − sin ψ *sin θ *sin φ + cos ψ *cosφ ) a"9= a 4()( − cosψ *sin θ *cos φ + sin φ *sin ψ + a 5sin ψ *sin θ *cos φ + cos ψ *sin φ )

The vehicle is modeled based on the above equations. The parameters are a=0.138 m , b = 0.122 m , r = 0.215 m , t = 0.395 m ;

2 Izz =0.413 kgm , m = 40 kg

38 3.3.1 SIMULATION RESULTS The simulations in MATLAB are given the same torque as the robot in straight line motion i.e. 3.4362 Nm on either side. The robot CG, which is the point being simulated travels a distance of 4.79 m in the specified time interval. The output is displayed in figure 3.6 below.

Figure 3.6 SIMULATION RESULT - STARIGHT LINE MOTION

It can be observed that the distances traveled by the robot in the actual experiment and the simulation are close. The difference between the two is due to wheel slip. It is to be noted that one of the assumptions for the model, is that there is no longitudinal slip. Also, a more accurate measurement of the rolling resistance and friction coefficients may produce better results.

39 For the curved motion, the path produced by the robot test runs is analyzed. The circle made by the marker had a radius of 0.39 m. The orientation of the robot with respect to the path traced is shown in figure 3.7.

Figure 3.7 ROBOT PATH FOR CURVE MOTION

It needs to be noted that the marker is taped to the back of the robot. The distance between the robot CG, which is the point that is being simulated in MATLAB, and the tip of the marker making contact with the ground is found to be approximately 0.23 m. Thus the CG of the robot is effectively making a circle of radius 0.16 m. When the MATLAB simulation was performed for the same input value, and time and the output is displayed in Figure 3.8.

40

Figure 3.8 SIMULATION RESULT – CURVE MOTION

The result from the MATLAB simulation is seen to have a diameter of 0.25 m. this value is varying greatly from the expected circle diameter of 0.32 m, a difference of 7 cm. The difference in value can be attributed to the tire slip being very high when the wheels skid, while turning.

The inclined plane motion produces a straight line on an inclined plane. The MATLAB simulation result is shown in figure 3.9. The torque provided to both sides was 10.3 Nm. The pitch angle θ was set at an initial condition of 10 deg.

41

Figure 3.9 SIMULATION RESULT – INCLINED PLANE MOTION

The inclined plane simulation results seem to match the robot test runs accurately. This also validates the load distribution model.

42 4. SIMULATION USING ADAMS: ADAMS (Automatic Dynamic Analysis of Mechanical Systems), is a family of interactive motion simulation software. It allows importing geometry from other CAD systems and creating a virtual prototype using a full library of joints and constraints. ADAMS then checks the model and solves the simultaneous equations for kinematic, static, quasi-static and dynamic simulations. This chapter details the simulation of the Pioneer 3AT model in ADAMS and lists the results.

4.1 ProE MODEL OF PIONEER 3 AT The Pioneer 3AT is first modeled in the CAD package ProEngineer Wildfire 2.0. The various components of the robot are generated with actual dimensions and these are assembled together in a main assembly. This model, displayed in figures 4.1 and 4.2, is the imported to ADAMS for simulation.

Figure 4.1 CAD MODEL OF PIONEER 3AT

43

Figure 4.2 FRONT AND SIDE VIEW OF ProE MODEL

44 4.2 SIMULATION AND ANALYSIS The ProE assembly is imported to ADAMS and a simulation model is developed using existing joints and constraints. Actual robot dimensions and material properties are used along with modified road surfaces, to suit real-life terrain. Also, the mass of the system and its location can be specified. The robot is modeled assuming constant forward velocity, without any aerodynamic or suspension effects. The ADAMS model is displayed below in figure 4.3.

Figure 4.3 ADAMS WIREFRAME MODEL

The input for the ADAMS model is at the wheels, where angular velocity can be specified. The angular velocity from the robot test-runs are used to drive the model, so that they can be compared with actual robot paths.

45 4.2.1 ADAMS SIMULATION RESULTS For the straight line motion, the wheels are given the same velocity as measured by the controller, in the robot test-runs. The input longitudinal velocity is 0.9 m/s. The resultant path achieved by the robot is shown in figure 4.4.

Figure 4.4 ADAMS STRAIGHT LINE MOTION

The robot travels a distance of approximately 4.65m in 5s. This is close to the distance achieved during the robot test-run. It is to be noted that the input velocity is determined by taking the average of the velocities measured by the torque controller. The velocities in the forward direction are displayed, figure 4.5. The difference in distance can be attributed to the friction coefficient being approximate. Also, since constant velocity is assumed for the ADAMS model, it differs from the simulations in MATLAB and the robot test-runs, where even though the velocity is the same, they are not constant throughout. As an illustration, the linear velocity of the robot during the straight line motion test-run is plotted out in figure 4.6. Due to the existence of a saturation level in the controller, the plot for the velocity evens out at an approximate velocity of 0.9 m/s.

46

Figure 4.5 VELOCITIES IN FORWARD DIRECTION

Figure 4.6 VELOCITIES FROM ROBOT STRAIGHT LINE RUN

47 For curved motion, the ADAMS simulation matches the robot test-runs better than the MATLAB simulations. For the same input as the 9 Nm on the right hand side and -5 Nm on the left hand side, the ADAMS simulation shown in figure 4.7 was achieved. The approximate diameter of the curve is about 0.72 m, which is close to the path achieved during the robot test-run.

Figure 4.7 ROBOT PATHS FOR CURVE MOTION

For robot motion on an inclined plane, the ADAMS simulations are achieved by changing the gravity vector. The gravity vector normally points straight downwards. The vector is defined in the global coordinates, based on the degree of inclination of the plane.

48 Figure 4.8 illustrates the robot path when equal force is input to each side of the robot, when on an inclined plane of 10 degree pitch angle. The input angular velocity corresponds to 10.3 Nm torque value from the robot test run. The simulation shows the robot traveling approximately 2.8 m.

Figure 4.8 ADAMS INCLINED PLANE MOTION

The robot test run had measured at 2.54 m, while the MATLAB simulation result was very close at 2.5 m. The slight difference in the distance by the ADAMS simulation may be attributed to the incorrect measurement of friction coefficient on the ramp surface. Also, since the driving force in the ADAMS simulation is the angular velocity from the robot test run, the performance of the robot sensors, has an impact on the simulation results.

Due to the restrictions of the robot controller and the unavailability of a wide ramp, simulations of the robot turning on an inclined plane could not be carried out on the Pioneer 3-AT robot. Robot curved motion on a flat plane, on an inclined plane and on a decline, was simulated in ADAMS.

49 The model was simulated by giving double the velocity on the right hand side as compared to the left side of the robot. The inputs would approximately correspond to 10 and 20 Nm on either side. On the flat plane, the output is a circular path, displayed in figure 4.9.

Figure 4.9 ROBOT CIRCULAR PATHS ON A FLAT PLANE

When the same input was applied to a robot on a plane of inclination 10 degrees, the robot could not complete the circle due to the gravitational pull. The robot path in such a case is displayed in figure 4.10. On the other hand, a plane of decline 10 degrees has the robot sliding down the slope. The robot path is shown in figure 4.11.

50

Figure 4.10 ROBOT CIRCULAR PATHS ON AN INCLINED PLANE

Figure 4.11 ROBOT CIRCULAR PATHS ON A DECLINED PLANE

51 In figure 4.10, since there is a slope of 10 degrees, the initial path of the robot, which is a semi-circle, is slightly smaller in radii than for the path on a flat plane. Once the robot turns, the angle of the plane makes it hard for it to trace a circle. Instead, the robot tends slip down the decline. In figure 4.11, for the case of the plane of angle of decline 10 degrees, the initial movement of the robot does not resemble a semicircle, because the robot is slipping down the plane. Towards the end of the simulation the robot recovers to post a curved path. As a comparison the velocities in the longitudinal and lateral direction for the robot paths are displayed in figures 4.12, 4.13 and 4.14.

Figure 4.12 VELOCITIES IN X AND Y DIRECTION – FLAT PLANE

52

Figure 4.13 VELOCITIES IN X AND Y DIRECTION – INCLINED PLANE

Figure 4.14 VELOCITIES IN X AND Y DIRECTION – DECLINED PLANE

53 5. CONCLUSIONS AND FUTURE WORK:

In this thesis, a 3-dimensional mathematical model was developed for the Pioneer 3AT robot, and simulated using MATLAB. The robot was also modeled in the CAD software ProE and dynamic analysis was performed in ADAMS. The simulated models were compared to trail runs on the actual vehicle. From the results it is seen that the mathematical model compares favorably with the robot runs while moving in a straight line. The excessive slip in the skid steered robot while turning, led to the dynamic model not being accurate. Further work needs to be done to refine the dynamic model to simulate curve motions. A better friction model between the tires and the ground may lead to a more accurate simulation, while the robot is skidding. Also, the limitations of the torque controller and the absence of a wide ramp to test robot curve motion on an inclined plane need to be addressed. The vehicle model developed in ADAMS is without a suspension. Suspension characteristics need to be taken into account. Although the ADAMS model delivers better results, the mathematical model is of more importance due to its proposed use in robotic control code. A more advanced level of friction modeling, between the tires and the ground, will be required for the Mathematical model to produce better results.

54 APPENDICES A. MATLAB code for robot motion. global a b tr l m w Izz trac1 trac2 Height r fr mu tracmax a = 0.138 ; b = 0.122 ; tr = 0.395 ; Height = 0.2413; r = 0.1075; %in m m = 35.833; %in kg l = a+b; w = m*9.8; Izz = 0.4101; %in kg m^2 fr = 0.3; mu = 0.5; tracmax = 40; trac1 = 8.2 /(2*0.1075); %where trac1 is the driving force on the left wheel due to the torque trac2 = 8.2 /(2*0.1075); %trac2 is for the right wheel [T,a1a12] = ode45('diffa1a12',[0:0.01:5],[0 0 0 0 0 0 0 0 0 0 10 0]); plot3 (a1a12(:,8),a1a12(:,7),a1a12(:,9)); xlabel('y-axis in m'); ylabel('x-axis in m'); zlabel('z-axis in m'); % plot (a1a12(:,7),a1a12(:,8)); % xlabel('x-axis'); ylabel('y-axis');

function da1a12 = diffa1a12(t,a1a12) % using the X1..X4 stuff from Dr.hollis global a b tr l m w Izz trac1 trac2 Height r fr mu tracmax a1 = a1a12(1); % phi_dot a2 = a1a12(2); % theta_dot a3 = a1a12(3); %% psi_dot a4 = a1a12(4); %% x_dot a5 = a1a12(5); %% y_dot a6 = a1a12(6); % z_dot a7 = a1a12(7); %% X a8 = a1a12(8); %% Y a9 = a1a12(9); %% Z a10 = a1a12(10); % phi a11 = a1a12(11); % theta a12 = a1a12(12); % psi

%%%%%%%%%%%%%%%%%%%%% weight distribution %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

X1 = -w*(-cosd(a12)*sind(a11)*cosd(a10)+sind(a12)*sind(a10)) * (b/l- (Height*(- cosd(a12)*sind(a11)*cosd(a10)+sind(a12)*sind(a10)))/((l*cosd(a11)*cosd( a10))+0.01)) *

55 (1/2+(Height*(sind(a12)*sind(a11)*cosd(a10)+cosd(a12)*sind(a10)))/((tr* cosd(a11)*cosd(a10))+0.01)); X2 = -w*(-cosd(a12)*sind(a11)*cosd(a10)+sind(a12)*sind(a10)) * (b/l- (Height*(- cosd(a12)*sind(a11)*cosd(a10)+sind(a12)*sind(a10)))/((l*cosd(a11)*cosd( a10))+0.01)) * (1/2- (Height*(sind(a12)*sind(a11)*cosd(a10)+cosd(a12)*sind(a10)))/((tr*cosd( a11)*cosd(a10))+0.01)); X3 = -w*(-cosd(a12)*sind(a11)*cosd(a10)+sind(a12)*sind(a10)) * (a/l+(Height*(- cosd(a12)*sind(a11)*cosd(a10)+sind(a12)*sind(a10)))/((l*cosd(a11)*cosd( a10))+0.01)) * (1/2+(Height*(sind(a12)*sind(a11)*cosd(a10)+cosd(a12)*sind(a10)))/((tr* cosd(a11)*cosd(a10))+0.01)); X4 = -w*(-cosd(a12)*sind(a11)*cosd(a10)+sind(a12)*sind(a10)) * (a/l+(Height*(- cosd(a12)*sind(a11)*cosd(a10)+sind(a12)*sind(a10)))/((l*cosd(a11)*cosd( a10))+0.01)) * (1/2- (Height*(sind(a12)*sind(a11)*cosd(a10)+cosd(a12)*sind(a10)))/((tr*cosd( a11)*cosd(a10))+0.01));

Y1 = -w*(sind(a12)*sind(a11)*cosd(a10)+cosd(a12)*sind(a10)) * (b/l- (Height*(- cosd(a12)*sind(a11)*cosd(a10)+sind(a12)*sind(a10)))/((l*cosd(a11)*cosd( a10))+0.01)) * (1/2+(Height*(sind(a12)*sind(a11)*cosd(a10)+cosd(a12)*sind(a10)))/((tr* cosd(a11)*cosd(a10))+0.01)); Y2 = -w*(sind(a12)*sind(a11)*cosd(a10)+cosd(a12)*sind(a10)) * (b/l- (Height*(- cosd(a12)*sind(a11)*cosd(a10)+sind(a12)*sind(a10)))/((l*cosd(a11)*cosd( a10))+0.01)) * (1/2- (Height*(sind(a12)*sind(a11)*cosd(a10)+cosd(a12)*sind(a10)))/((tr*cosd( a11)*cosd(a10))+0.01)); Y3 = -w*(sind(a12)*sind(a11)*cosd(a10)+cosd(a12)*sind(a10)) * (a/l+(Height*(- cosd(a12)*sind(a11)*cosd(a10)+sind(a12)*sind(a10)))/((l*cosd(a11)*cosd( a10))+0.01)) * (1/2+(Height*(sind(a12)*sind(a11)*cosd(a10)+cosd(a12)*sind(a10)))/((tr* cosd(a11)*cosd(a10))+0.01)); Y4 = -w*(sind(a12)*sind(a11)*cosd(a10)+cosd(a12)*sind(a10)) * (a/l+(Height*(- cosd(a12)*sind(a11)*cosd(a10)+sind(a12)*sind(a10)))/((l*cosd(a11)*cosd( a10))+0.01)) * (1/2- (Height*(sind(a12)*sind(a11)*cosd(a10)+cosd(a12)*sind(a10)))/((tr*cosd( a11)*cosd(a10))+0.01));

Z1 = -w*cosd(a11)*cosd(a10) * (b/l-(Height*(- cosd(a12)*sind(a11)*cosd(a10)+sind(a12)*sind(a10)))/((l*cosd(a11)*cosd( a10))+0.01)) * (1/2+(Height*(sind(a12)*sind(a11)*cosd(a10)+cosd(a12)*sind(a10)))/((tr* cosd(a11)*cosd(a10))+0.01)); Z2 = -w*cosd(a11)*cosd(a10) * (b/l-(Height*(- cosd(a12)*sind(a11)*cosd(a10)+sind(a12)*sind(a10)))/((l*cosd(a11)*cosd( a10))+0.01)) * (1/2- (Height*(sind(a12)*sind(a11)*cosd(a10)+cosd(a12)*sind(a10)))/((tr*cosd( a11)*cosd(a10))+0.01));

56 Z3 = -w*cosd(a11)*cosd(a10) * (a/l+(Height*(- cosd(a12)*sind(a11)*cosd(a10)+sind(a12)*sind(a10)))/((l*cosd(a11)*cosd( a10))+0.01)) * (1/2+(Height*(sind(a12)*sind(a11)*cosd(a10)+cosd(a12)*sind(a10)))/((tr* cosd(a11)*cosd(a10))+0.01)); Z4 = -w*cosd(a11)*cosd(a10) * (a/l+(Height*(- cosd(a12)*sind(a11)*cosd(a10)+sind(a12)*sind(a10)))/((l*cosd(a11)*cosd( a10))+0.01)) * (1/2- (Height*(sind(a12)*sind(a11)*cosd(a10)+cosd(a12)*sind(a10)))/((tr*cosd( a11)*cosd(a10))+0.01));

%%%%%%%%%%%%%%% lateral and longitudinal velocities %%%%%%%%%%%%%%%%%%%%%%% long_vel1 = a4 + ((tr/2)*a3); %% a4 and a5 are long and lat velocity of CG long_vel2 = a4 - ((tr/2)*a3); long_vel3 = long_vel1; long_vel4 = long_vel2; lat_vel1 = a5 + (a*a3); lat_vel2 = lat_vel1; lat_vel3 = a5 - (b*a3); lat_vel4 = lat_vel3;

%%%%%%%%%%%%%%%%%%%%%%%% rolling resistance %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Rx1 = fr*abs(Z1)*sign(long_vel1); %% fr is rolling resistance coefficient Rx2 = fr*abs(Z1)*sign(long_vel2); Rx3 = fr*abs(Z1)*sign(long_vel3); Rx4 = fr*abs(Z1)*sign(long_vel4);

Rx = Rx1+Rx2+Rx3+Rx4;

%%%%%%%%%%%%%% total static ground plane force at each wheel %%%%%%%%%%%%%%%%

Ft1 = sqrt((X1^2)+(Y1^2)); Ft2 = sqrt((X2^2)+(Y2^2)); Ft3 = sqrt((X3^2)+(Y3^2)); Ft4 = sqrt((X4^2)+(Y4^2));

%%%%%%%%%%%%%%%%%%%%%%%%% slip during motion %%%%%%%%%%%%%%%%%%%%%%% if abs(a3)~= 0 %%%% vehicle is rotating - forces oppose local wheel velocity if Ft1 ~= 0 %%%% vehicle is not on a flat ground plane Fy1 = (-mu*abs(Z1)*lat_vel1)/(sqrt(lat_vel1^2+long_vel1^2)); Fx1 = (sign(trac1)*mu*abs(Z1)*abs(long_vel1))/(sqrt(lat_vel1^2+long_vel1^2)); else Fx1 = 0; Fy1 = 0; end

57 if Ft2 ~= 0 Fy2 = (-mu*abs(Z2)*lat_vel2)/(sqrt(lat_vel2^2+long_vel2^2)); Fx2 = (sign(trac2)*mu*abs(Z2)*abs(long_vel2))/(sqrt(lat_vel2^2+long_vel2^2)); else Fx2 = 0; Fy2 = 0; end if Ft3 ~= 0 Fy3 = (-mu*abs(Z3)*lat_vel3)/(sqrt(lat_vel3^2+long_vel3^2)); Fx3 = (sign(trac1)*mu*abs(Z3)*abs(long_vel3))/(sqrt(lat_vel3^2+long_vel3^2)); else Fx3 = 0; Fy3 = 0; end if Ft4 ~= 0 Fy4 = (-mu*abs(Z4)*lat_vel4)/(sqrt(lat_vel4^2+long_vel4^2)); Fx4 = (sign(trac2)*mu*abs(Z4)*abs(long_vel4))/(sqrt(lat_vel4^2+long_vel4^2)); else Fx4 = 0; Fy4 = 0; end else %%%% vehicle is moving in a straight line if Ft1 < (mu*abs(Z1)) %%% friction force is greater, the vehicle will not slide Fy1 = Y1; if trac1/2 < tracmax Fx1 = trac1/2; else Fx1 = tracmax; end else %%% the vehicle slides down the slope when placed on it Fy1 = (mu*abs(Z1)*Y1)/Ft1; Fx1 = (mu*abs(Z1)*X1)/Ft1; end if Ft2 < (mu*abs(Z2)) Fy2 = Y2; if trac2/2 < tracmax Fx2 = trac2/2; else Fx2 = tracmax; end else Fy2 = (mu*abs(Z2)*Y2)/Ft2; Fx2 = (mu*abs(Z2)*X2)/Ft2; end if Ft3 < (mu*abs(Z3)) Fy3 = Y3; if trac1/2 < tracmax Fx3 = trac1/2; else Fx3 = tracmax; end else Fy3 = (mu*abs(Z3)*Y3)/Ft3; Fx3 = (mu*abs(Z3)*X3)/Ft3; end

58 if Ft4 < (mu*abs(Z4)) Fy4 = Y4; if trac2/2 < tracmax Fx4 = trac2/2; else Fx4 = tracmax; end else Fy4 = (mu*abs(Z4)*Y4)/Ft4; Fx4 = (mu*abs(Z4)*X4)/Ft4; end end

Fy = Fy1 + Fy2 + Fy3 + Fy4; Fx = Fx1 + Fx2 + Fx3 + Fx4;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%% a1_dot = a1; a2_dot = a2; a3_dot = ((a*(lat_vel1+lat_vel2))- (b*(lat_vel3+lat_vel4))+(tr/2*(long_vel1+long_vel3-Rx1-Rx3))- (tr/2*(long_vel2+long_vel4-Rx2-Rx4)))/Izz; a4_dot = ((Fx - Rx -(w*(sind(a12)*sind(a10)- cosd(a12)*sind(a11)*cosd(a10))))/m)+(a5*a3); a5_dot = ((Fy+w*(sind(a12)*sind(a11)*cosd(a10)+sind(a10)*cosd(a12)))/m)-(a4*a3); a6_dot = a6; a7_dot = (a4*(cosd(a12)*cosd(a11))) + (a5*(-sind(a12)*cosd(a11))); a8_dot = (a4*(cosd(a12)*sind(a11)*sind(a10)+cosd(a10)*sind(a12))) + (a5*(-sind(a12)*sind(a11)*sind(a10)+cosd(a12)*cosd(a10))); a9_dot = (a4*(-cosd(a12)*sind(a11)*cosd(a10)+sind(a12)*sind(a10))) + (a5*(sind(a12)*sind(a11)*cosd(a10)+cosd(a12)*sind(a10))); a10_dot = a1; a11_dot = a2; a12_dot = a3;

% Facc = ((Z1+Z2+Z3+Z4)*a4_dot*Height)/(l*9.8); % a1_dot = (tr/2*(Z1+Z3)-tr/2*(Z2+Z4)-Height*(Y1+Y2+Y3+Y4-Fy))/Ixx; % a2_dot = ((a*(Z1+Z2-Facc))-(b*(Z3+Z4+Facc))+(Height*(X1+X2+X3+X4- Rx))+(Height*(2*Fx1+2*Fx2)))/Iyy; % a6_dot = (Z1+Z2+Z3+Z4-w*(cosd(a11)*cosd(a10)))/m ; % a10_dot = a1; % a11_dot = a2; da1a12 = [a1_dot;a2_dot;a3_dot;a4_dot;a5_dot;a6_dot;a7_dot;a8_dot;a9_dot;a10_dot ;a11_dot;a12_dot];

59 REFERENCES

[1] Luca Caracciolo, Alessandro De Luca, and Stefano Iannitti, “Trajectory tracking of Control of 4 wheel differential driven mobile robot” 1999 IEEE, International conference on Robotics and Automation, Detroit, Michigan.

[2] Krzysztof Kozlowski, Dariusz Pazderski, “Modeling and Control of a 4 wheel skid-steering mobile robot”, Institute of Control and systems engineering, Paznan University of technology, Poland.

[3] "Modeling and Simulation of Steering system of Autonomous Vehicles" By Shailesh Lakkad, Florida State University, Tallahassee Florida.

[4] "Modeling, Simulation and experimental validation of ATRV-Jr" By Deviprasad M Chabukswar, Florida State University, Tallahassee Florida.

[5] "A discussion of Vehicle Modeling for Control" By Michel C. Drew, University of California Berkley.

[6] Baruh, H., Analytical Dynamics.

[7] Stone, R., and Ball, J.K., Automotive Engineering Fundamentals, SAE.

[8] Milliken, W. F., Milliken, D. L., and Metz, L. D., Race Car Vehicle Dynamics, SAE

60

BIOGRAPHICAL SKETCH

Dhanashekar Arcot Krishnamurhy was born on December 29th, 1983 in Chennai, India. He graduated with a bachelor’s degree in Mechanical Engineering in April, 2005 from Anna University, Chennai, India. He entered the masters program in Mechanical Engineering at Florida State University in fall, 2005.

61