Bachelor Thesis: Analysis of Vehicle Behavior To Find Criteria For Steering Robot Tests
Bachelor Thesis: Analysis of Vehicle Behavior To Find Criteria For Steering Robot Tests
Bachelor Thesis: Analysis of Vehicle Behavior To Find Criteria For Steering Robot Tests
Preface
This report is the result of our thesis that concludes the education as Bachelor of Science in Automotive Engineering at Lule University of Technology (LTU). The actual subject was found through contact with Mikael Nybacka who worked as a researcher at the Department of Applied Physics and Mechanical Engineering, Division of Functional Product Development at LTU. We want to thank Mikael Nybacka who found this thesis for us, and he was also our supervisor. Thank you for helping and supporting us through this thesis. You have been a helping hand through a lot of steps, from testing and the use of CANalyzer to the later part with analyzing the data. Particularly with the analysis in Matlab where you have been a great help in modifying and adapting the code for our needs. We also want to thank the division Machine Element and their project Winter Tire for the opportunity to use their car and CANalyzer tool for our tests.
ii
Abstract
To test and to verify the properties of a new product, such as the concept of a new car or a tire model, is an important part in modern automotive technology and industry. Today the testing of winter tires is almost entirely done by human drivers. By adopting the use of a steering robot in tire tests several advantages can be achieved such as repeatability and time saving in the way that it is not necessary to mark out the test track with cones. But is it possible to use a steering robot in tire tests during winter, and how to evaluate the tests? Which parameters regarding vehicle dynamics can be useful for the evaluation of a steering robot? To answer these questions different tests was performed with a car and at the same time data was logged from the vehicles CAN-bus. In a simulation program for cars the same type of tests was executed to get data that could be compared to the real life tests. These data was then analyzed and evaluated to find suitable criteria that could be useful in the evaluation of a steering robot and tire tests. Parameters such as cornering stiffness, slip angles and lateral forces can be analyzed for tire tests because of the influence they have on the dynamics of the vehicle. The slip curve for the tire can show the correlation between these such as which lateral force gives a certain amount of tire slip and the rate of change for tire slip relative to change in lateral force. These criteria can indicate variances when comparing different tires. For analysis of the criterias such as yaw rate response, Matlab tools were developed to make it fast and easy to analyze and visualize the raw test data. With a human driver it is more difficult to maintain consistency than with the use of a steering robot, i.e. if the driver is supposed to give a 90 degree input to the steering wheel there will often be a tolerance of several degrees. In this case a steering robot would give a much more consistent input, but on the other hand it could be desirable to get the steering robot to act more human under certain circumstances.
iii
iv
Nomenclature
Yaw angle Yaw rate Pitch angle Pitch rate Roll angle Roll rate Tire slip angle Body slip angle Steering angle Friction coefficient Under steering coefficient
Abbreviations:
ABS CAN CG, COG ECU ESC FWVM OBDII SWA TCS TM UKF
Anti-lock Braking System Controller Area Network Center of Gravity Electronic Control Unit Electronic Stability Control Four-Wheel Vehicle Model On-Board Diagnostics gen.2 Steering Wheel Angle Traction Control System Tire Model Unscented Kalman Filter
vi
Table of Contents
Table of Contents ................................................................................................................................................. 1 1 Introduction ........................................................................................................................................................ 4 1.1 Background ................................................................................................................................... 4 1.2 Purpose ......................................................................................................................................... 4 1.3 Goal ............................................................................................................................................... 4 1.4 Delimitations .................................................................................................................................. 4 2 Method ................................................................................................................................................................ 6 2.1 Matlab ............................................................................................................................................ 6 2.2 CarSim ........................................................................................................................................... 6 2.3 CANalyzer...................................................................................................................................... 7 2.4 Volvo XC90 .................................................................................................................................... 7 2.5 Kalman filter ................................................................................................................................... 7 2.5.1 Basic Kalman filter ............................................................................................................................. 7 2.5.2 Unscented Kalman filter (UKF) ........................................................................................................ 8 3 Vehicle Dynamics............................................................................................................................................ 10 3.1 Definition of yaw, pitch and roll .................................................................................................... 10 3.2 Single-track model ....................................................................................................................... 11 3.3 Double-track model ..................................................................................................................... 12 3.4 Under- and Oversteer .................................................................................................................. 14 3.5 Tire dynamic behavior ................................................................................................................. 15 3.6 Longitudinal tire forces at small slip angles ................................................................................. 17 3.7 Lateral Tire Force at Small Slip Angle ......................................................................................... 18 3.8 Friction and friction coefficient ..................................................................................................... 20 4 Test and Simulations ...................................................................................................................................... 22 4.1 Test Procedures .......................................................................................................................... 22 4.1.1 Split mu ............................................................................................................................................. 23 4.1.2 Sine step ........................................................................................................................................... 23 4.1.3 Impulse steer .................................................................................................................................... 23 4.1.4 Constant radius ................................................................................................................................ 23 4.1.5 Constant SWA with increasing velocity ........................................................................................ 24 1
4.1.6 Circle test with increasing SWA at constant velocity .................................................................. 24 4.1.7 Full-brake .......................................................................................................................................... 24 5 Results .............................................................................................................................................................. 26 5.1 Cornering stiffness and instantaneous cornering stiffness.......................................................... 26 5.2 Lateral slip curve ......................................................................................................................... 27 5.3 Lateral force stability.................................................................................................................... 28 5.4 Steering Wheel Angle .................................................................................................................. 31 5.4.1 Steerback .......................................................................................................................................... 31 5.4.2 No Steerback .................................................................................................................................... 32 5.5 Yaw Rate ..................................................................................................................................... 33 5.5.1 Steerback .......................................................................................................................................... 33 5.5.1 No Steerback .................................................................................................................................... 34 5.6 SWA vs. Yaw Rate ...................................................................................................................... 35 5.6.1 Steerback .......................................................................................................................................... 35 5.6.1 No Steerback .................................................................................................................................... 36 5.7 Human Driver and Steering Robot .............................................................................................. 36 5.8 Yaw rate response....................................................................................................................... 38 5.9 Friction coefficient........................................................................................................................ 41 6 Conclusions ..................................................................................................................................................... 44 Error Assessments ............................................................................................................................................. 46 Future Work......................................................................................................................................................... 48 References .......................................................................................................................................................... 50 Appendix A .......................................................................................................................................................... 52 A.1 ..................................................................................................................................................... 52 A.2 ..................................................................................................................................................... 57 A.3 ..................................................................................................................................................... 61 A.4 ..................................................................................................................................................... 63 A.5 ..................................................................................................................................................... 65 A.6 ..................................................................................................................................................... 67 A.8 ..................................................................................................................................................... 69 A.9 ..................................................................................................................................................... 71
1 Introduction
1.1 Background
In earlier research done by Mikael Nybacka at the Centre for Automotive Systems Technologies and Testing, CASTT at Lule University of Technology, it has been stated that the test industry has shown interest in the possibility of using steering robots in winter testing [1]. Winter tire tests are generally performed by a human test driver, which can give inaccurate input data and can make the tests less consistent. Test companies and car manufacturers are seeking new ways to simplify and standardize their test methods, which would decrease the amount of time spent on testing thus lowering costs. The repeatability that a steering robot provides is also a desirable function, with the path following function it is possible to reduce costs and time even more since there is no need for cones on the test track. Path following also allows the tests to be moved slightly to the side after each test by updating the path with new GPS coordinates, this makes it possible to attain repeatability associated to the surface. In order to prepare for an evaluation of using steering robots during winter tests it is important to understand what need to be measured and what type of tests needs to be done. Performing simulations some criteria describing the vehicle behavior and response could be studied when changing tire properties. Using simulations only one variable can be changed which makes it easier to analyze the effect. Measurements also need to be performed by collecting data from a test vehicles CAN-bus, this in order to know which criteria that can be studied in real life but also to prepare for a future study.
1.2 Purpose
The purpose of this thesis is to analyze vehicle behavior to find criteria for steering robot tests in winter conditions, primarily winter tire tests.
1.3 Goal
The goal for the thesis is to find suitable criteria and Matlab programs that can be used when evaluating steering robots for winter conditions.
1.4 Delimitations
Actual steering robots will not be used in the evaluation due to low budget. Simulations will instead be done in CarSim. Vehicle control systems such as ESC, ABS and TCS will not be evaluated in the thesis, neither the performance of the tires. Our focus will be on analyzing vehicle dynamics to find suitable criteria to use in future evaluation of steering robot.
2 Method
A vehicle was prepared and driven on a test track i.e. checking the tire pressure and installing the CANalyzer and connect it to the OBDII and to the laptop. Then all the different tests were performed and data was logged for each test and saved to an M-file (Matlab). The same type of tests was also simulated in CarSim for comparison of real life tests with simulated tests.
2.1 Matlab
MATLAB is a numerical computing and interactive environment for data analysis and visualization, plotting of functions and data, algorithm development and numeric computation [8]. In this case it has been used to analyze and process data that was logged from the vehicle during tests. The files from the different tests will contain several parameters and a lot of data. All this data and information is hard to interpret and not so useful if not visualized, and for this purpose Matlab is a handy tool. It was determined for each type of test which type of data, and in which time interval, that were of interest in the specific type of test. Matlab was used to filter out the desired data for further analysis and plotting. Sometimes it is desirable that a plot starts from a specific point in the test run. Matlab is used to find the criteria that would set the starting point for the plot, and also when to end the plot. If there are several runs from a test and one parameter is to be plotted and compared it is also an advantage to synchronize them in time. Data parameters from the vehicle are logged with different sampling frequency and this have to be adjusted for the possibility to plot them against each other. The Matlab code that is used can be viewed in Appendix A.
2.2 CarSim
CarSim simulates the dynamic behavior of race-cars, passenger cars, light trucks, and utility vehicles [9]. CarSim animates simulated tests and give outputs for over 700 calculated variables to plot and analyze, or export to other software such as MATLAB, Excel, and optimization tools. CarSim can be used to design, develop, test and plan vehicle development programs. Simulations of test procedures have been done in this thesis to show how tires affect vehicle dynamic behavior and to study which criteria and maneuvers that are suitable for steering robot tests, also to compare the input data from CarSim with the input data from a human driver. The simulated tests will be used as the reference for the tests made with the real car. CarSim will also show what criteria to look for when winter tires are tested with a steering robot. This is possible since you can change one parameter at a time to see differences between the tests, in our case the inflation pressure will be varied. . For a tire manufacturer there are several parameters that are of interest. Material differences between tires by the same manufacture could be investigated, also different dimensions and tread shape. It should be noted that when varying inflation pressure and comparing different tire models, the material affect will also matter and will most likely influence the results.
2.3 CANalyzer
CANalyzer is the universal analysis tool for ECU networks and distributed systems [10]. CANalyzer makes it easy to observe, analyze, and supplement data traffic in CAN, LIN, MOST, or FlexRay systems. It was used during the test procedures for data acquisition and data visualization. By creating a log file that only saves the parameters needed it simplifies the data analysis. The log file was saved as m-file (Matlab) directly after each test run.
2.5.2 Unscented Kalman filter (UKF) Since the basic Kalman filter is limited to a linear assumption a variety of Kalman filters have been developed, this is because more complex systems can be nonlinear. One of these filters is called the Unscented Kalman Filter (UKF) [18], it uses a deterministic sampling technique known as the unscented transform (see Figure 1), to pick a minimal set of sample points (called sigma points) around the mean. These sigma points are then spread through the nonlinear functions, from which the covariance and mean of the estimate are then recovered [18]. The outcome is a filter which more accurately captures the true covariance and mean. Since not all the variables of interest can be measured (logged) directly from the vehicle, e.g. the slip angle , it is necessary to find another way to estimate these variables. To achieve this it was the UKF that was used to analyze and process the available data logged from the vehicle during tests. The UKF was implemented in Matlab, as a Matlab-code, to perform this task (see Appendix A.1). The code was written by Simon Srk and Jouni Hartikainen and provided to us by our supervisor Mikael Nybacka, whom also has edited the code to make it more functional for our purpose.
3 Vehicle Dynamics
Vehicle dynamics is a complicated analytical and experimental area that is used to study and understand the responses of a vehicle in various in-motion situations.
Figure 2. A 3-D rotation can be described as a sequence of yaw, pitch and roll rotations [23].
Yaw: Pitch:
A rotation around the vertical z-axis through the roof of the vehicle. Is a rotation around the transverse axis of the vehicle, through the passenger doors. The force of pitch causes the front of the vehicle to dive during braking and to rise during acceleration. Is rotation around the x-axis, i.e. in the longitudinal direction of the vehicle. It means that the vehicle chassis will try to lean in either direction [2].
Roll:
10
In this model the vehicles ordinary two wheels per axle has been replaced by one single wheel. The vehicle is assumed to have planar motion. The steering angle for the front wheel is represented by . The steering angle controls the turn radius R for a given wheel base L and can be calculated by the steady state steering angle equation[3]. = + , >> (3.1)
The slip angle of the each wheel is denoted by , which is defined as the angle between the orientation of the tire and the orientation of the velocity vector of the wheel. The front and and respectively. The velocity and direction of the center of gravity of rear slip angles are the vehicle, CG is called , which can be divided into two vector components, one for the xdirection , and one for the y-direction , [3]. The equation for body slip is defined as: =
, ,
(3.2)
and are the lateral forces acting on the front and rear axle. The angle is the vehicle body slip and in the figure 3 is the yawing velocity which is referred to as the yaw rate, . One thing to note about the single-track model assumption; the left and right front wheels are represented by one single wheel in this model. It should be noted that the left and right steering angles in general will be approximately equal, but not exactly so. This is because the radius of the path is different for the right and left wheel.
11
The rolling resistance is neglected in order to simplify the lateral and longitudinal dynamics. Furthermore the rear and front track widths are assumed to be equal. and represents the distance from the vehicles center of gravity (COG) to the front and rear axles, respectively. The sideslip at the vehicle CG is the difference between the velocity heading and the true heading of the vehicle. The angular velocity of the vehicle about the CG is the yaw rate . The forward and lateral velocities are and respectively. For the front and rear tires of the vehicle the longitudinal and lateral forces are shown. The tire slip angle is , ,, the difference between the tires longitudinal axis and the tires velocity vector. The tire velocity vector can be obtained from the vehicles velocity (at the CG) and the yaw rate [12].
12
To simplify the model the following assumptions are made: The rear longitudinal forces are neglected relative to the front longitudinal forces, the case of a front-wheel drive vehicle1. Longitudinal front axle forces are considered by assuming that = +
The front steering angles are equal = = and rear steering angles are approximately null = = 0 , this means that the direction or heading of the rear tires is the same as that of the vehicle. The lateral dynamics of the vehicle can be obtained by summing the moments and forces about the vehicles center of gravity. Consequently, the simplified FWVM is formulated as the following dynamic relationships [12]:
1 = 1 = 1 = = 1 = + 1 + + + + + + cos + + + + + + 2 cos + sin + sin + +
where
The vehicle velocity , steering angle , yaw rate and the vehicle body slip angle , where: used as a basis to calculate the tire slip angles
Here is to be noticed that this is in which way [12] has based the double-track model, thus also the calculations, to assume a front-wheel drive vehicle when considering longitudinal and lateral forces. In this thesis the same calculation model is used in the estimations even though the vehicle used is a four-wheel drive. There has not been implemented a new model to identify differences between two-wheel and four-wheel drive.
13
+ = + = + = = + 2 2 2 2
Most cars have a certain degree of understeer built into the vehicle because this is considered to be safer. This is because if the vehicle is understeering it is a natural tendency to reduce the power which will reduce the understeering. Even an inexperienced driver can better handle an understeer situation as opposed to oversteer. The understeer gradient describes vehicle handling characteristics. Using the steady-state bicycle model, the understeer gradient can be determined from the weight distribution and the cornering stiffness.
14
Neutral steer = Understeer > Oversteer < <0 < (3.5) >0 > (3.4) =0 = (3.3)
Where and are the vehicle loads on the front and rear axles, and are the 2 cornering stiffness for the front and rear tire and and are the slip angles for the front and rear tire respectively. Neutral steer = 0 means that no change in steer angle on a constant radius turn is > 0 means that the steer necessary even as the speed of the vehicle varies. Understeer angle should increase on a constant radius turn as the speed of the vehicle increases. Oversteer < 0 means that the steer angle turn should decrease on a constant radius as the speed of the vehicle increases.
Figure 6. Definition of under and oversteering with respect to under steer gradient [15].
Cornering stiffness does not only refer to the tires of the vehicle but also the compliances of the vehicle suspension such as bushings etc. 15
vehicle, which can be controlled by cornering stiffness of the tires. When the vehicle turns and the tires reach the adhesion limit caused by the cornering forces, the vehicle tends to produce slide-out or rollover due to the centrifugal force acting through the mass center of the car [15]. Cornering stiffness [N/rad] increases when increasing wheel load, inflation pressure, rim width, tread wear and other factors. Cornering stiffness divided by wheel load is referred to as the cornering coefficient. Cornering coefficient is also known as the normalized lateral force. is the cornering force and is the slip angle. Up to about 0.3 gs of lateral acceleration the force-slip angle curve is considered to be linear where the slip angle reaches approximately 5 according to [2]. The equation below only considers this linear regime. It is notable that the cornering stiffness of a tire increases as the wheel load increases, while the cornering coefficient decreases. Since the cornering stiffness for the tires is unknown and difficult to control, the easiest way to change the cornering stiffness is to change the inflations pressure. Therefore the inflation pressure was the only parameter that was varied during real world tests [15]. = = Cornering force = Cornering stiffness = Slip angle It is possible to estimate the slip angle for each of the four wheels if the cornering characteristics, vehicle geometry and operational conditions are known. Slip angles are measured between the wheel plane and the velocity vector, which can be seen in the single-track model in figure 3. = + = + , , (3.7) (3.8) (3.6)
= Load on front and rear axles. = Cornering stiffness of individual front and rear tires. = (3.9)
= Understeering coefficient The understeer coefficient depends on front and rear axle loads and the cornering stiffness of the tire. The cornering stiffness depends on material and dimensional factors but also the inflation pressure, which can be controlled by the driver, and is also the easiest way to change the cornering stiffness as mentioned earlier. The value of determines the handling characteristics of the car. If the understeering coefficient is positive the car is said to be understeering, if negative it will oversteer and if zero it is said that the slip angles are equal at the front and rear. Therefore the steer angle required to turn is reduced to the low speed Ackermann equation. The definition of under and oversteering was discussed earlier in section 3.4. =
16
Longitudinal slip ratio is defined as: During braking = During acceleration = (3.12) (3.11)
17
(3.13)
is the angle that the velocity vector produces at the front wheel with the longitudinal axis of the vehicle and is the front wheel steering angle. The slip angle at the rear wheel is similarly given by = (3.14)
where is the angle that the velocity vector produces at the rear wheel makes with the longitudinal axis. If there is no steering angle applied and the vehicle is driving straight than the result will be zero slip angles.
18
Lateral tire force can be written as for the front wheels = and for the rear wheels = = is called the cornering stiffness. (3.18) = (3.17)
19
(3.19)
The coefficient of friction is a number that represents the friction between two surfaces, in this case between the tire and the ground. The symbol used for the friction coefficient is . Dry friction of the static type is governed by the following equation:
20
(3.20)
Where is the maximum force of friction, is the normal force between the surfaces in contact and is the coefficient of static friction [19]. The friction coefficient is a dimensionless coefficient [19]. scalar with no measuring unit.
21
Tire Model A B C D
Spring Rate
Spring Rate 230 N/mm 115 N/mm 230 N/mm 230 N/mm
It is not possible to change the inflation pressure in CarSim, instead the spring rate is varied. The spring rate is proportional to the inflation pressure since the tire is assumed to act like a simple vertical spring connecting the unsprung mass to the ground. If the stiffness is not
22
known, it can be estimated based on the fact that a tire at its rated load will experience a deflection of approximately 25 mm. That is, the estimated stiffness is [14]: / =
( ) ( )
(4.1)
4.1.1 Split mu
Split mu test means that a vehicle is driven on surfaces with two different friction coefficients simultaneously, which is achieved by driving the left side of the vehicle on a low friction surface, usually icy road and the right side of the vehicle on dry asphalt. The friction coefficient in the simulation was set to = 0.4 for the low friction side, the value is higher than for icy road, this is to get closer to the test done in real life were there was no snow available so gravel was used instead. For the dry asphalt, the friction coefficient was = 0.9 which is a normal value for road friction on asphalt [5]. This test was performed not only with different tire set ups, but we also tried to emulate two different driver reactions in the real world testing. Therefore we get more information about the abilities of the steering robots attempt to imitate different human driving behaviors. These two different reactions, called steer back and no steer back, are defined as; after applying full brake the driver will try to keep the direction of travel or get chocked and freeze the steering wheel.
23
Figure 12. Under and oversteer shown by performing a constant radius test [15].
4.1.5 Constant SWA with increasing velocity This maneuver is performed with a constant steering wheel angle while increasing the velocity at a specified rate. During the real life tests the steering angle varied between 205 and 245 degrees, due to difficulties to maintain constant steering wheel angle, in the simulations a steering angle of 230 degrees was chosen. The speed was increased at a rate of 1.67 km/h per second in the simulation. The vehicle will travel in a constant circle until it no longer can maintain steady state cornering at which that point the vehicle will start initiating under or over steering [3]. 4.1.6 Circle test with increasing SWA at constant velocity The aim for this test is to reach the adhesion limit of the tires and it will show similar results as the constant steer test. 4.1.7 Full-brake Another type of test performed was a full brake test. The car was driven in a straight line on dry and clean asphalt and the speed was set to 70 km/h. Then full brakes were applied and data was logged during the full brake. This test was performed because the data was needed to calculate the friction coefficient for the road surface that the tests were performed on. As mentioned earlier in the theory chapter there is two types of friction coefficient, one for static and one for kinetic friction. But since the wheels are in motion (rolling) and there are some wheel slip the friction coefficient of interest is the one for kinetic friction. This is because the ABS allows some wheel slip in order to achieve the best braking possible. When ABS operates, the target slip rate can be from 10 to 30% [22].
24
25
5 Results
This section will show the results from the simulations and the analysis of real life tests. The criteria will also be presented and visualized, moreover the driver influence of the tests will also be discussed to some extent.
Figure 13. Lateral response of two tire models with different loads where the left curve represents a lateral slip curve and the figure on the right represents the instantaneous lateral cornering stiffness vs. lateral slip angle [23].
The field tests and simulations were done with a steer rate of 180 degrees per second which does not give the whole slip curve to compute the instantaneous cornering stiffness, but the difference in cornering stiffness is still visible. Beside from the controllability and the responsiveness, maximum cornering can be plotted for the same tire which has been run several times. Thus the deviation from results can be visualized and statistically show if the cornering stiffness is consistent for every test. Consistency would most likely be higher for tests done with a steering robot than tests done by a human driver. It would therefore be more difficult to execute this test with this criteria since the human driver adds to the input error, which is the steering angle.
26
Figure 14. Simulation results from Sine Step Test with Tire Model C and D where they represent the red and blue curve respectively.
The real life tests show the spread in maximum lateral force at a certain slip angle and how will be affected if is raised or decreased by 10%. Therefore it is a good criteria for the stability test of a tire. At what will the vehicle start to understeer and how does the spring rate and tire width affect the maximum lateral acceleration. Table 2 shows how the tire models affected the handling of the vehicle during the simulations. It is interesting to see how similar TM A and C are although the tire width is larger for TM A.
27
Table 2. Values from the Constant Radius test where slip angle fr represents the angle at Max. Fyfr.
[ ]
These simulation results show clearly that tire width has more effect on the vehicle behavior than the tire pressure, which in this case is the tire spring rate.
Table 3. These results can be compared with the simulations done with TM A and TM B.
[ 9.1 8.9
[ ]
[ 13.2 10.0
28
What happens to the lateral force if there is a 10% change of the slip from the maximum value of the force? The maximum lateral force: = 5765 This represents a slip angle of 0.22 radians. = = These values give the lateral force: = 5661 = 5670 5661 98,2% 5765 5670 98,4% 5765 0,9 1,1
29
These results can be compared with the simulation results, although they were carried out at a low friction surface. Simulations showed for the same calculation a difference in less than 1% when changing the slip angle with 10%. There was no visible difference between the simulations when tire spring rate was changed which can be seen in table 4. However increasing tire width lead to a decrease in FY and the tire slip angle at where maximum FY occurs also decreased. This indicates a less good handling behavior for winter conditions because the vehicle is dependent on how much lateral force it can resist. If the vehicle experiences lesser lateral force, it means that the tires cannot absorb the forces acting on it. The tests were not driven in an ideal steady state procedure, which can affect the results in the tire slip curve. CarSim uses different methods to calculate the tire models, there are models based on dynamic calculations and also models that are based on data from real life tests that are implemented in CarSim.
spread Max. >1% >1% >1% >1% 2633 2641 2633 2511
[ ]
30
The breaking starts and then it can be viewed how the driver is moving the steering wheel in order to keep the vehicle in a straight line until it stops. There are noticeable variances in how the driver moves the steering wheel in the eight different runs. The largest range is for data 3 which varies between -21,0 and 69,0 degrees. And the smallest range is for data 5 which are from -15.0 to 24.0 degrees. Data for the steering wheel movement for all runs can be viewed in table 5.
Table 2. Data for SWA (degrees).
31
5.4.2 No Steerback In this test the human driver was trying to keep the steering wheel in the same position during braking that it has before braking when driving in a straight line. Because of braking on split mu the vehicle will bend its path over to the side with higher mu, due to the different in friction on the ground. The SWA during braking can be viewed in figure 20.
The breaking starts and then the driver are supposed to keep the steering wheel in the same position, to lock the steering wheel, until the vehicle stops. From the plot it can be noticed that there is a movement of the steering wheel in the different runs. For the run plotted with data 3 the movement is from -9,0 and up to 12,0 giving it the range of 21,0 degrees. And for the run with data 5 the movement varies between -9,0 and -4,5 giving a range of 4,5 degrees. Data for the steering wheel movement for all eight runs can be viewed in table 7.
Table 3. Data for SWA (degrees).
32
33
5.5.1 No Steerback What happens with the yaw rate during braking with no driver steerback can be viewed in figure 21. The braking starts and then it can be viewed in the plot how the yaw rate starts to increase on the negative side and reaches a maximum value and then decreases towards zero and then increases on the positive side before the vehicle stops. Even in this case, like with steerback, the yaw rate changes direction. But it can be noticed that with no steerback it has a slower change, the values stay on the negative side for a longer time, than in the case with steerback. Data for the yaw rate for all eight runs can be viewed in table 8.
34
35
5.6.1 No Steerback A plot of the yaw rate against SWA can be viewed in figure 22, in this plot there are no large differences between the curves. This is due to the relatively small movements of the steering wheel compared to figure 19 were there curves covers a larger area. It can be viewed that data 1, data 2 and data 3 that has compensation on the steering wheel also has a little lower yaw rate. And that data 7 and 8 who has smaller steering wheel movements has a little higher yaw rate due to the vehicles aspiration to turn its path because of the difference in friction.
36
Figure 23. SWA for human driver during steerback and no steerback.
The simulation in figure 24 shows the steering angle for Steerback and no Steerback test. The vehicle comes to a stop after about 2.3 seconds but the simulations does not end until all transients such as pitch and roll have come to a stop. Thus the steering angle after 2.3 is neglected. The difference in steer input between real life tests and simulations could be due to the difference in friction coefficient on the low friction side of the test. The simulation was run on a friction coefficient of = 0.4 which represents packed snow, whereas in real life test asphalt was covered with gravel for the low friction side. For split mu test there should also be a calculation of the two different friction coefficients. But due to an inaccurate setting in the CANalyzer software during testing there was no logged data for the longitudinal acceleration.
37
Figure 25. Lateral slip curve for impulse steer test one second in after initiating steer.
38
Yaw rate response when initiating impulse steer, interesting angle interval is between 0 and 90 degrees SWA. This will tell how well the vehicle responds to a steer impulse depending on the tire setup (figure 26). By approximating the curve to a linear curve the slope will represent the responsiveness of the tire models. ( ) = ( ) The steer angle in the simulation takes only 0.2 seconds to reach target SWA which is 90 and 4.3 on the right front wheel. Thus the same time interval will be analyzed in the real life test.
Understeer gradient when varying tire width has the same characteristics as the slip angle and the lateral force , since it is dependent on and Therefore fluctuations decrease when the tire width increases which can be seen in figure 27.
Figure 28. Yaw rate vs. road wheel angle from the simulation done in CarSim.
39
Figure 29. Yaw rate on the y-axis and road wheel angle on the x-axis. The graph shows the response 0.2 seconds after steer initiation. The red line represents the linear approximation.
Table 6 shows the results from the impulse steer done in real life testing and in CarSim simulations. The simulations show very small differences in yaw rate response which can be due to the very controllable environments and accurately computed results, in contrast to the field tests. Real life tests with inexperienced test drivers ads to the inaccurate results and large deviations. The result also tells that if a parameter such as the inflations pressure is to be changed, and the test is performed by a human driver, it would be very difficult to investigate the effect of varied inflation pressure. The steer input and the steer gain are the two parameters that have the greatest influence on the results from the field test. Logically, the steer gain is very difficult to maintain consistent, which affects the yaw rate response curve greatly. This could be the reason why the field test results vary as much as they do. These problems would be eliminated with the use of a steering robot where steer input and steer gain are predetermined before the test procedure is performed.
Table 6. The yaw rate response in the impulse steer test
Field tests
Simulation tests
Test Run Responsiveness [rad/s/rad] Tire Model Responsiveness [rad/s/rad] 1 2 3 4 0.24 0.47 0.61 0.25 A B C D 0.087 0.088 0.087 0.092
40
Since
Where is represented by the mean value of the data points between the two markers in the plot. So these data points were determined from the logged data using Matlab. The data can be viewed in table 10, where the first value represents the left marker in the plot and the last value represents the right marker, respectively.
41
Time [ ] 15,16 15,28 15,40 15,51 15,63 15,75 15,87 15,99 16,11 16,23 16,35 16,47 16,59 16,70 16,82 The mean value of these 15 points is:
[ ] -8,68 -8,61 -8,68 -8,68 -8,78 -9,10 -9,17 -9,10 -9,38 -9,48 -9,38 -8,89 -8,89 -9,17 -9,10 / will be used to get a positive
= 9,0068
To calculate the friction coefficient the absolute value of value for the coefficient. = = 9,0068 0,92 9,81
42
43
6 Conclusions
The criteria that has been presented in this thesis provides information for the engineer or tire tester to draw conclusions of the stability, responsiveness and the effect on vehicle dynamics. Moreover, the criteria provides a tool for comparing different winter tires in detail and their performance in different tests. With more time to truly understand vehicle dynamics and tire dynamic behavior, a few more criteria for winter tire tests with steering robot could have been presented. The vehicle dynamics world is a complex place and it takes time to adjust to it. Matlab is a powerful tool to make mathematical calculations and numerical analysis, but as a beginner it takes some time to learn the program and to get used to it. However, we managed to make codes to filter, synchronize and visualize the raw test data. These works but they still need to be adjusted between the tests. There is still work to do in that area, see the section about Future work. The results show that there is a possibility to put this project in use, we believe that this will not only shorten development time, but also increase the quality of the test performances. It is also a step for implementation in the doctoral thesis by Mikael Nybacka [1] where cars are tested at the test facilities and the data can be analyzed instantaneously at the test facility by the test engineers or by engineers abroad with minimum data processing. We think that this thesis has brought a different perspective on how tire testing is to be performed. With the use of these criteria and implementation of steering robots different ways of testing winter tires is achieved. We believe that it is therefore possible to analyze small differences between tires by eliminating the human errors in the test procedures. Tests were inflation pressure is changed for instance, the results from real life tests performed by a human driver generate more error to the result than the influence of pressure change in the test, and therefore it becomes almost impossible to analyze the effect of pressure change in such tests. This concludes that the use of a steering robot with these criteria is something that test facilities and the test industries should consider and broaden the services that can be provided to the tire manufacturers. With the automatized Matlab code the analysis process could be shortened, whereas the development process also gets shorter and time and money is saved. It would have been interesting to study the human behavior in different driving situations and in different types of test, to compare drivers of different age and with various driving experience. As mentioned earlier this human factor could be a disadvantage in certain situations and test procedures but it could also be a resource if it would be desirable to implement a human behavior to the steering robot. Human test drivers are still very important and should perform certain tests as a complement to the steering robot, because of the human feedback and the feeling that a test driver can provide.
44
45
Error Assessments
In measurements and calculations there are sources of error, e.g. tolerances in sensors, estimations, conversion of data or round off error when calculating. The Unscented Kalman Filter uses a calculation model that does not take in count the influence of vehicle suspension and the load shifting that follows, it considers the vehicle as a rigid body. The Kalman filter does not provide accurate calculations since it is an estimation algorithm which also contributes to the source of error. CarSim on the other hand uses predefined mathematical models for the vehicle suspension and the tires are considered as springs with a spring rate instead of inflation pressure. This could affect the results when the tire models with different spring rate are compared with each other. In Matlab it was discovered that for specific situations the data sampling frequency had been too low. To fix this problem the data matrix was extended by a spline function, this fitting of the data also adds some to the source of error. When we first started to look at the data from the tests we discovered that it was large variances in the data from different runs of the same test. These variances was not only because tests were repeated which always results in deviations when performed by a human driver, but also because the inconsistency when performing the test procedures. The test track was not marked in any way, we only made up the tracks visually which made it difficult to maintain the predetermined path. Tests were run on a closed air strip with limited track width which did not allow us to perform the tests as the simulations were done. The Constant Radius Test for instance should have a radius of at least 30 meters but that was not possible. This would have provided more accurate tire slip curves. Some criteria could not be analyzed due to logging issues during certain tests. Since the time with the test vehicle was limited, as mentioned earlier, it was not possible to redo the tests again. Through the work we encountered a lot of difficulties, one early disadvantage was that data was logged with different sampling frequency which was a problem when it was desirable to plot two of these data against each other. Later we got access to a data processing algorithm called UKF which was a pre-made Matlab code. This was a quite complex code to understand and it also needed a lot of modifications to suit our needs so that we could get the desired data out of it. It also showed when plotting short intervals that the sampling frequency from the vehicle was too low, so the data had to be tweaked to get better resolution in these plots.
46
47
Future Work
Some of the tests with the car in this thesis were repeated a number of times, but some tests were only performed as little as two times. Because of this it was not possible to compare a number of runs of the same test against each other to make a more statistical analysis. So it would be of interest to have more time with a test vehicle to be able to repeat the tests numerous times to get more data for analysis. It would also be interesting to make the tests on snowy and icy conditions because the purpose with the thesis is made for winter tire testing. Furthermore it would be appropriate to run tests with a real steering robot and to compare the results with the ones from simulations and from the tests with a human driver. Maybe that could make it possible to verify or discard the discovered criteria for the use of a steering robot, or even to find new ones. If simulations is going to be used, more data and information about the real test vehicle is needed to get a more real life like simulated vehicle. This would give more close results to the real life tests. A guide for the procedure when logging the data during the field tests would simplify the analysis because of no need for filtering out the unnecessary raw data. An advantage would also be to make a template for how every type of test should be performed to get more consistent data from the tests. By building up Matlab code for analysis it would be very intuitive to import and run test data, when filtering and results are provided automatically. With the template for test procedure and the analysis code a lot of time will be saved for the engineer. Little time will be spent on handling the data which leads to more time for analysis of results. Thus the development and testing time is shortened. Further development of the UKF algorithm by implementing vehicle models that represents rear wheel drive and four wheel drive will it make useful for a wider range of vehicles. The model used here is only for front wheel drive vehicles. There is also other type of tests that could be of interest to investigate if they would provide additional information or criteria for steering robot tests. Some examples of tests are the FMVSS 126, Fish hook and the Double lane change.
48
49
References
[1] M.Nybacka, Exploring Technologies for Service Provision in Automotive Winter Testing in Doctoral Thesis 2009. Lule University of technology, Sweden, 2009. [2] R.Stone and J.K. Ball, Automotive Engineering Fundamentals , 400 Commonwealth Drive, Warrendale, ISBN: 0-7680-0987-1, U.S.A., Society of automotive engineers Inc, 2004, [3] R.Rajamani, Vehicle dynamics and control, ISBN: 0-387-28823-6, U.S.A., 2006 [4] J.Y.Wong, Theory of ground vehicles, ISBN: 0387742433, U.S.A., 2001, [5] D.Crolla, Automotive Engineering: Powertrain, Chassis System and Vehicle Body, ISBN: 978-1-85671-577-7, 30 Corporate Drive Suite 400, Burlington, MA 01803, U.S.A., 2009. [6] National Highway Traffic Safety Administration, NHTSA, PROPOSED FMVSS No.126 Electronic Stability Control Systems, 2006. [7] F.Puhn, How to make your car handle, ISBN: 0-912656-46-8, The Berkley publishing group, a division of Penguin Putnam Inc. 375 Hudson Street, New York, 1981 [8] (2010 April) MathWorks. [Online] http://www.mathworks.com/products/matlab/ [9](2010, April) CarSim. [Online] http://www.carsim.com/products/carsim/index.php [10] (2010, April) Vector CANalyzer. [Online] http://www.vector.com/vi_canalyzer_en,,223.html [11] M. L. Segel, "Theorical prediction and experimental substantiation of the response of the automobile to steering control," Automobile division of the institute of mechanical engineers, vol. 7, pp. 310-330, 1956. [12] M.Doumiati, A.C.Victorino, A.Charara, and D.Lechner Onboard Real-Time Estimation of Vehicle Lateral TireRoad Forces and Sideslip Angle, IEEE Industrial Electronics Society, ASME Dynamic Systems and Control Division, IEEE Robotics and Automation Society, 2010. [13] S.J. Julier and J.K. Uhlmann, A New Extension of the Kalman Filter to Nonlinear Systems, The Robotics Research Group, Department of Engineering Science, The University of Oxford, 1997 [14] CarSim data manual, Mechanical Simulation Corporation, 2001-2004. [15] A.N. Gent and J.D. Walter, Pneumatic Tire, Published by the National Highway Traffic Safety Administration U.S. Department of Transportation, Washington DC, 2005. [16] W.F Milliken and D. L. Milliken, Race car vehicle dynamics , 400 Commonwealth Drive, Warrendale, PA: 15096-0001, Society of automotive engineers Inc, U.S.A., 1995. [17] Peter S. Maybeck, Stochastic models, estimation and control, Vol. 1, Department of Electrical Engineering, Air Force Institute of Technology, Wright-Patterson Air Force Base, Ohio, 1979.
50
[18] Eric A. Wan and Rudolph van der Merwe, The Unscented Kalman Filter for Nonlinear Estimation, In Proceedings of IEEE Symposium 2000 on Adaptive Systems for Signal Processing, Communications and Control (AS-SPCC), Lake Louise, Canada, October 2000. [19] (2010, November) Buzzle. [Online] http://www.buzzle.com/articles/static-frictioncoefficient-of-static-friction.html [20] (2010, November) The Engineering ToolBox. [Online] http://www.engineeringtoolbox.com/friction-coefficients-d_778.html [21] (2010, November) HyperPhysics. [Online] http://hyperphysics.phy-astr.gsu.edu/hbase/frict2.html [22] Jack Erjavec, Automotive Technology: A Systems Approach, 4th Edition, ISBN: 1-40184831-1, Thomson Delmar Learning, Executive Woods, 5 Maxwell Drive, PO Box 8007, Clifton Park, NY 12065-8007, 2005. [23] Reza N. Jazar, Vehicle Dynamics: Theory and Application, ISBN: 978-0-387-74243-4, School of Aerospace, Mechanical and Manufacturing Engineering, RMIT University, Melbourne VIC, Australia, 2008. [24] Jasvipul Singh Chawla, Estimation of Side Slip in Vehicles, Dual Degree Project Dissertation, Mechanical Engineering, Computer Aided Design and Automation, Department of Mechanical Engineering, Indian Institute of Technology, Bombay, June 2006. [25] (2010, November) Ziontech. [Online] http://ziontech.wordpress.com/2009/01/07/driving-on-ice-and-snow/
51
Appendix A
A.1
% Discrete-time reentry dynamics demonstration with EKF and UKF. % % % % % % Copyright (C) 2006 Simo Srkk 2007 Jouni Hartikainen This software is distributed under the GNU General Public License (version 2 or later); please refer to the file Licence.txt, included with the software, for details.
function UKF_estimate_start global count_d count_h MM2_UKF a_fl a_fr a_rl a_rr Force_fy_fl Force_fy_fr Force_fy_rl Force_fy_rr; loadAndCorrectData_new %In this file you can choose which data to load sa = SteeringAngle(:,2); sa_sign = SteeringAngleSign(:,2); % if steering right the steering angle is negative for i=1:length(sa) if sa_sign==1 sa(i)=sa(i)*(-1); end p1 = 2.0199e-014; p2 = -1.007e-011; p3 = 1.0178e-008; p4 = -4.0401e-006; p5 = 0.064143; p6 = -0.076045; y = p1*sa(i)^5 + p2*sa(i)^4 + p3*sa(i)^3 + p4*sa(i)^2 + p5*sa(i) + p6; %This equation maps the steering wheel angle to the angle of the wheels sa(i)=y*(pi/180); %Convert to radians end acc_x = LongitudinalAcceleration(:,2); acc_y = LateralAcceleration(:,2); roll_rate = RollRateActual(:,2).*(pi/180); yaw_rate = YawRateActual(:,2).*(pi/180); speed = VehicleSpeedABS(:,2).*(0.27777778); ws_fl = WheelSpeedFL(:,2).*(0.27777778); ws_fr = WheelSpeedFR(:,2).*(0.27777778); ws_rl = WheelSpeedRL(:,2).*(0.27777778); ws_rr = WheelSpeedRR(:,2).*(0.27777778); roll_angle = zeros(length(roll_rate),1); % Setting vehicle constants a = 1.3; %Distance front axle to centre of gravity b = 1.7; %Distance rear axle to centre of gravity tw = 1.626; %Track width mass = 2195; %Mass hcog = 0.67164; %Hight of center of gravity Cxx = 50500; %Tire longitudinal stiffness Cyy = 33500; %Tire lateral stiffness 52
mu = 0.7; %Tire road friction g = 9.81; %Gravity Radius = 0.28; %Tire radius Izz = 4588; %YAW Inertia sigma_f = 0.001; %tire relaxation length front sigma_r = 0.001; %tire relaxation length rear
for s=1:length(acc_x) Fzfl(s,1) = 0.5*((b*mass*g)/(a+b))-0.5*((hcog*mass*acc_x(s,1))/(a+b))((b*hcog*mass*acc_y(s,1))/((a+b)*tw)); Fzfr(s,1) = 0.5*((b*mass*g)/(a+b))0.5*((hcog*mass*acc_x(s,1))/(a+b))+((b*hcog*mass*acc_y(s,1))/((a+b)*tw)); Fzrl(s,1) = 0.5*((b*mass*g)/(a+b))+0.5*((hcog*mass*acc_x(s,1))/(a+b))((b*hcog*mass*acc_y(s,1))/((a+b)*tw)); Fzrr(s,1) = 0.5*((b*mass*g)/(a+b))+0.5*((hcog*mass*acc_x(s,1))/(a+b))+((b*hcog*mass*acc _y(s,1))/((a+b)*tw)); end dt = 0.01; %Time step of the logged data %Matrix used to map the process noise to the states m x n = states x %process noice L=[1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0; 0 0 0 0 0 1 0 0; 0 0 0 0 0 0 1 0; 0 0 0 0 0 0 0 1]; % m0 = yaw_rate, speed, beta, Fyfl, Fyfr, Fyrl, Fyrr, Fx1 m0 = [yaw_rate(28,1);speed(28,1);0;0;0;0;0;1]; % Covariance of the states P0 = diag([0.001 0.001 0.001 0.5 0.5 0.5 0.5 0.05]); %Covariance is the spread of the data %P0 = diag([0.1 0.1 0.1 50 50 50 50 5]) % Process noise connected to the model Qc = diag([1e-3 1e-3 1e-6 0.01 0.01 0.01 0.01 0.01]) / 0.1; % Measurement noise Mc = diag([1e-4 1e-4 1e-4 1e-4]); % Parameters needed by the dynamic model as cell array d_param = {a,b,tw,mass,hcog,Cxx,Cyy,mu,g,Radius,Izz,sigma_f,sigma_r,Fzfl,Fzfr,Fzrl,Fz rr,sa,acc_x,acc_y,yaw_rate,roll_rate,speed,ws_fl,ws_fr,ws_rl,ws_rr,L,count_ d};
53
% Parameters needed by the measurement model as cell array h_param = {a,b,tw,mass,hcog,Cxx,Cyy,mu,g,Radius,Izz,sigma_f,sigma_r,sa,count_h}; % y = yaw_rate, speed, acc_x, acc_y Y(1,:) = yaw_rate(:,1)'; Y(2,:) = speed(:,1)'; Y(3,:) = acc_x(:,1)'; Y(4,:) = acc_y(:,1)'; % Handles to dynamic and measurement model functions, % and to their derivatives. func_f = @state_eq_f; func_h = @meas_eq_h; %clf; clc; disp('This is an estimation program using augmented UKF.') disp(' '); % Initial values and space for (augmented) UKF m = m0; P = P0; MM_UKF = zeros(size(m,1),size(Y,2)); MM2_UKF = zeros(size(m,1),size(Y,2)); PP_UKF = zeros(size(m,1),size(m,1),size(Y,2)); VV_UKF = zeros(size(m,1),size(Y,2)); EE_UKF = zeros(size(m,1),size(Y,2)); fprintf('Running UKF...'); % Filtering with UKF for k=1:size(Y,2) if(sa(k,1)~=0 && speed(k,1)~=0) % Need to do this since the system is not observable otherwise d_param = {a,b,tw,mass,hcog,Cxx,Cyy,mu,g,Radius,Izz,sigma_f,sigma_r,Fzfl(k,1),Fzfr(k, 1),Fzrl(k,1)... ,Fzrr(k,1),sa(k,1),acc_x(k,1),acc_y(k,1),yaw_rate(k,1),roll_rate(k,1),speed (k,1)... ,ws_fl(k,1),ws_fr(k,1),ws_rl(k,1),ws_rr(k,1),L,count_d,MM2_UKF}; h_param = {a,b,tw,mass,hcog,Cxx,Cyy,mu,g,Radius,Izz,sigma_f,sigma_r,sa(k,1),count_h,M M2_UKF}; % Augmented UKF with separate sigma points [m,P] = ukf_predict2(m,P,func_f,Qc*dt,d_param); [m,P] = ukf_update2(m,P,Y(:,k),func_h,Mc,h_param); end MM2_UKF(1,k) = sa(k,1) atan((speed(k,1)*MM_UKF(3,k)+a*yaw_rate(k,1))/((speed(k,1)(tw*(yaw_rate(k,1)/2))))); %Left front slip [rad] MM2_UKF(2,k) = sa(k,1) atan((speed(k,1)*MM_UKF(3,k)+a*yaw_rate(k,1))/((speed(k,1)+(tw*(yaw_rate(k, 1)/2))))); %Right front slip [rad]
54
MM2_UKF(3,k) = 0.0 - atan((speed(k,1)*MM_UKF(3,k)a*yaw_rate(k,1))/((speed(k,1)-(tw*(yaw_rate(k,1)/2))))); %Left rear slip [rad] MM2_UKF(4,k) = 0.0 - atan((speed(k,1)*MM_UKF(3,k)a*yaw_rate(k,1))/((speed(k,1)+(tw*(yaw_rate(k,1)/2))))); %Right rear slip [rad] MM2_UKF(5,k) = MM_UKF(4,k)/Fzfl(k,1); MM2_UKF(6,k) = MM_UKF(5,k)/Fzfr(k,1); MM2_UKF(7,k) = MM_UKF(6,k)/Fzrl(k,1); MM2_UKF(8,k) = MM_UKF(7,k)/Fzrr(k,1); count_d=count_d+1; count_h=count_h+1; MM_UKF(:,k) = m; PP_UKF(:,:,k) = P; VV_UKF(:,k) = diag(P); % EE_UKF(:,k) = (X(:,k) - m).^2; if(k>1) roll_angle(k,1)=(roll_rate(k,1)*0.01)+roll_angle(k-1,1); end end c=150; w=800; %start value for plot %end value for plot
figure(1); plot(c:w, MM_UKF(4,c:w), '-', c:w, MM_UKF(5,c:w), '-', c:w, MM_UKF(6,c:w), '-', c:w, MM_UKF(7,c:w), '-', c:w, MM_UKF(8,c:w), '-') TITLE('Lateral Forces'); legend('Fy fl [N]','Fy fr [N]','Fy rl [N]','Fy rr [N]','Fx front [N]'); figure(2); plot(c:w, MM_UKF(1,c:w), '-', c:w, MM_UKF(2,c:w),'-', c:w, MM_UKF(3,c:w),'') TITLE('YawRate, Speed and Beta'); legend('yaw rate [rad/s]','speed [m/s]','beta [rad]'); figure(3); plot(sa(c:w), MM2_UKF(1,c:w), '-', sa(c:w), MM2_UKF(2,c:w), '-', sa(c:w), MM2_UKF(3,c:w), '-', sa(c:w), MM2_UKF(4,c:w), '-') TITLE('Alpha vs Delta'); legend('alpha fl','alpha fr','alpha rl','alpha rr'); figure(4); plot(c:w, MM2_UKF(1,c:w), '-', c:w, MM2_UKF(2,c:w), '-', c:w, MM2_UKF(3,c:w), '-', c:w, MM2_UKF(4,c:w), '-') TITLE('Slip Angles'); legend('alpha fl [rad]','alpha fr [rad]','alpha rl [rad]','alpha rr [rad]'); figure(5); plot(MM2_UKF(1,c:w), MM_UKF(4,c:w), '-', MM2_UKF(2,c:w), MM_UKF(5,c:w), '', MM2_UKF(3,c:w), MM_UKF(6,c:w), '-', MM2_UKF(4,c:w), MM_UKF(7,c:w), '-') TITLE('Fy vs Alpha'); legend('Fy alpha fl','Fy alpha fr','Fy alpha rl','Fy alpha rr');
55
figure(6); plot(abs(MM2_UKF(2,c:w)), abs(MM_UKF(5,c:w)), '-') TITLE('Front Right: Fy vs Alpha'); legend('Fy alpha fr'); figure(7); plot(sa(c:w), MM_UKF(1,c:w), TITLE('YawRate vs SA');
'-')
save all_variables_filename.mat
56
A.2
% Dynamical model function for reentry problem. % Discretization is done using a simple Euler % time integration. % % % % % % %
Copyright (C) 2005-2006 Simo Srkk 2007 Jouni Hartikainen This software is distributed under the GNU General Public Licence (version 2 or later); please refer to the file Licence.txt, included with the software, for details.
function x = state_eq_f(xw,param) global count_d Fyfl_old Fyfr_old Fyrl_old Fyrr_old a_fl a_fr a_rl a_rr Force_fy_fl Force_fy_fr Force_fy_rl Force_fy_rr; dt = 0.1; a = param{1}; b = param{2}; tw = param{3}; mass = param{4}; hcog = param{5}; Cxx = param{6}; Cyy = param{7}; mu = param{8}; g = param{9}; Radius = param{10}; Izz = param{11}; sigma_f = param{12}; sigma_r = param{13}; Fzfl = param{14}(:,1)'; Fzfr = param{15}(:,1)'; Fzrl = param{16}(:,1)'; Fzrr = param{17}(:,1)'; sa = param{18}(:,1)'; acc_x = param{19}(:,1)'; acc_y = param{20}(:,1)'; yaw_rate = param{21}(:,1)'; roll_rate = param{22}(:,1)'; speed = param{23}(:,1)'; ws_fl = param{24}(:,1)'; ws_fr = param{25}(:,1)'; ws_rl = param{26}(:,1)'; ws_rr = param{27}(:,1)'; L = param{28}; count_d = param{29};
%x = yaw_rate; speed, beta, Fyfl, Fyfr, Fyrl, Fyrr, Fx1; %size(xw) x = xw(1:8,:); dot_x = zeros(size(x)); dot_x(1,:) = (1/Izz)*(a*(x(4,:)*cos(sa))+(x(5,:)*cos(sa))+(x(8,:)*sin(sa))(b*(x(6,:)+x(7,:)))+((tw/2)*(x(4,:)*sin(sa))-(x(5,:)*sin(sa)))); 57
dot_x(2,:) = (1/mass)*(x(8,:).*cos(x(3,:)-sa)+x(4,:).*sin(x(3,:)sa)+x(5,:).*sin(x(3,:)-sa)+(x(6,:)+x(7,:)).*sin(x(3,:))); dot_x(3,:) = (1./(mass*x(2,:))).*(-x(8,:).*sin(x(3,:)sa)+x(4,:).*cos(x(3,:)-sa)+x(5,:).*cos(x(3,:)sa)+(x(6,:)+x(7,:)).*cos(x(3,:)))-x(1,:); dot_x(4,:) = (x(2,:)/sigma_f).*(x(4,:)+Fyfl(sa,x(2,:),x(1,:),x(3,:),Fzfl,a,b,tw,mu,sigma_f,sigma_r,Cyy)); dot_x(5,:) = (x(2,:)/sigma_f).*(x(5,:)+Fyfr(sa,x(2,:),x(1,:),x(3,:),Fzfr,a,b,tw,mu,sigma_f,sigma_r,Cyy)); dot_x(6,:) = (x(2,:)/sigma_r).*(x(6,:)+Fyrl(sa,x(2,:),x(1,:),x(3,:),Fzrl,a,b,tw,mu,sigma_f,sigma_r,Cyy)); dot_x(7,:) = (x(2,:)/sigma_r).*(x(7,:)+Fyrr(sa,x(2,:),x(1,:),x(3,:),Fzrr,a,b,tw,mu,sigma_f,sigma_r,Cyy)); dot_x(8,:) = zeros(1,size(x,2)); [Fy_fl,alpha_fl] = Fyfl(sa,x(2,:),x(1,:),x(3,:),Fzfl,a,b,tw,mu,sigma_f,sigma_r,Cyy); [Fy_fr,alpha_fr] = Fyfr(sa,x(2,:),x(1,:),x(3,:),Fzfr,a,b,tw,mu,sigma_f,sigma_r,Cyy); [Fy_rl,alpha_rl] = Fyrl(sa,x(2,:),x(1,:),x(3,:),Fzrl,a,b,tw,mu,sigma_f,sigma_r,Cyy); [Fy_rr,alpha_rr] = Fyrr(sa,x(2,:),x(1,:),x(3,:),Fzrr,a,b,tw,mu,sigma_f,sigma_r,Cyy); load('alpha.mat'); a_fl(count_d,1) = alpha_fl; a_fr(count_d,1) = alpha_fr; a_rl(count_d,1) = alpha_rl; a_rr(count_d,1) = alpha_rr; save('alpha.mat', 'a_fl', 'a_fr', 'a_rl', 'a_rr'); Force_fy_fl(count_d,1) Force_fy_fr(count_d,1) Force_fy_rl(count_d,1) Force_fy_rl(count_d,1) = = = = Fy_fl; Fy_fr; Fy_rl; Fy_rr;
f = @(x)[dot_x(1,:);dot_x(2,:);dot_x(3,:);dot_x(4,:);dot_x(5,:);dot_x(6,:);dot_ x(7,:);dot_x(8,:)]; % 4th order Runge-Kutta x = rk4(f,0.00005,x); % Add process noise if the state is augmented if size(xw,1) > 8 && length(param) > 27 w = xw(size(L,1)+1:size(L,1)+size(L,2),:); x = x + L * w; end end function [Fyfl,alpha_fl] = Fyfl(sang,speed,yaw_rate,bet_a,Fz_fl,a,b,tw,mu,sigma_f,sigma_r,Cyy) alpha_fl = sang - atan((speed(1,:)*bet_a+a*yaw_rate)/((speed(tw*(yaw_rate/2))))); lamda_lf = ((mu*Fz_fl)/((2*Cyy)*abs(tan(alpha_fl))));
58
f_lamda=0; if(lamda_lf<1) f_lamda = (2-lamda_lf)*lamda_lf; end if(lamda_lf>=1) f_lamda=1; end Fyfl = -Cyy*tan(alpha_fl)*f_lamda; end
function [Fyfr,alpha_fr] = Fyfr(sang,speed,yaw_rate,bet_a,Fz_fr,a,b,tw,mu,sigma_f,sigma_r,Cyy) alpha_fr = sang atan((speed*bet_a+a*yaw_rate)/((speed+(tw*(yaw_rate/2))))); lamda_rf = ((mu*Fz_fr)/((2*Cyy)*abs(tan(alpha_fr)))); f_lamda=0; if(lamda_rf<1) f_lamda = (2-lamda_rf)*lamda_rf; end if(lamda_rf>=1) f_lamda=1; end Fyfr = -Cyy*tan(alpha_fr)*f_lamda; end function [Fyrl,alpha_rl] = Fyrl(sang,speed,yaw_rate,bet_a,Fz_rl,a,b,tw,mu,sigma_f,sigma_r,Cyy) alpha_rl = 0.0 - atan((speed*bet_a-a*yaw_rate)/((speed(tw*(yaw_rate/2))))); lamda_lr = ((mu*Fz_rl)/((2*Cyy)*abs(tan(alpha_rl)))); f_lamda=0; if(lamda_lr<1) f_lamda = (2-lamda_lr)*lamda_lr; end if(lamda_lr>=1) f_lamda=1; end Fyrl = -Cyy*tan(alpha_rl)*f_lamda; end function [Fyrr,alpha_rr] = Fyrr(sang,speed,yaw_rate,bet_a,Fz_rr,a,b,tw,mu,sigma_f,sigma_r,Cyy) 59
alpha_rr = 0.0 - atan((speed*bet_aa*yaw_rate)/((speed+(tw*(yaw_rate/2))))); lamda_rr = ((mu*Fz_rr)/((2*Cyy)*abs(tan(alpha_rr)))); f_lamda=0; if(lamda_rr<1) f_lamda = (2-lamda_rr)*lamda_rr; end if(lamda_rr>=1) f_lamda=1; end Fyrr = -Cyy*tan(alpha_rr)*f_lamda; end
60
A.3
clear load fullbrake_70kph_ugr.mat endtime=length(SteeringAngle_H)*SteeringAngle_H(1,1)-SteeringAngle_H(2,1); LateralAcceleration = zeros(length(SteeringAngle_H),2); LongitudinalAcceleration = zeros(length(SteeringAngle_H),2); RollRateActual = zeros(length(SteeringAngle_H),2); SteeringAngle = zeros(length(SteeringAngle_H),2); SteeringAngleSign = zeros(length(SteeringAngle_H),2); VehicleSpeedABS = zeros(length(SteeringAngle_H),2); WheelSpeedFL = zeros(length(SteeringAngle_H),2); WheelSpeedFR = zeros(length(SteeringAngle_H),2); WheelSpeedRL = zeros(length(SteeringAngle_H),2); WheelSpeedRR = zeros(length(SteeringAngle_H),2); YawRateActual = zeros(length(SteeringAngle_H),2); LateralAcceleration(:,1) = SteeringAngle_H(:,1); LongitudinalAcceleration(:,1) = SteeringAngle_H(:,1); RollRateActual(:,1) = SteeringAngle_H(:,1); SteeringAngle(:,1) = SteeringAngle_H(:,1); SteeringAngleSign(:,1) = SteeringAngle_H(:,1); VehicleSpeedABS(:,1) = SteeringAngle_H(:,1); WheelSpeedFL(:,1) = SteeringAngle_H(:,1); WheelSpeedFR(:,1) = SteeringAngle_H(:,1); WheelSpeedRL(:,1) = SteeringAngle_H(:,1); WheelSpeedRR(:,1) = SteeringAngle_H(:,1); YawRateActual(:,1) = SteeringAngle_H(:,1); LateralAcceleration(:,2) = spline(LateralAcceleration_H(:,1),LateralAcceleration_H(:,2),SteeringAngle_ H(:,1)); LongitudinalAcceleration(:,2) = spline(LongitudinalAcceleration_H(:,1),LongitudinalAcceleration_H(:,2),Stee ringAngle_H(:,1)); RollRateActual(:,2) = spline(RollRateActual_H(:,1),RollRateActual_H(:,2),SteeringAngle_H(:,1)); SteeringAngle(:,2) = spline(SteeringAngle_H(:,1),SteeringAngle_H(:,2),SteeringAngle_H(:,1)); SteeringAngleSign(:,2) = spline(SteeringAngleSign_H(:,1),SteeringAngleSign_H(:,2),SteeringAngle_H(:, 1)); VehicleSpeedABS(:,2) = spline(VehicleSpeedABS_H(:,1),VehicleSpeedABS_H(:,2),SteeringAngle_H(:,1)); WheelSpeedFL(:,2) = spline(WheelSpeedFL_H(:,1),WheelSpeedFL_H(:,2),SteeringAngle_H(:,1)); WheelSpeedFR(:,2) = spline(WheelSpeedFR_H(:,1),WheelSpeedFR_H(:,2),SteeringAngle_H(:,1)); WheelSpeedRL(:,2) = spline(WheelSpeedRL_H(:,1),WheelSpeedRL_H(:,2),SteeringAngle_H(:,1)); WheelSpeedRR(:,2) = spline(WheelSpeedRR_H(:,1),WheelSpeedRR_H(:,2),SteeringAngle_H(:,1)); YawRateActual(:,2) = spline(YawRateActual_H(:,1),YawRateActual_H(:,2),SteeringAngle_H(:,1));
61
62
A.4
%Analyze Split mu Split_mu = dir('splitmu_*.mat'); map = colormap(colorcube(16)); set(gca,'Color',[.8,.8,.8]) hold on color=0; dt = 0.01; p = 1; for k = 1:length(Split_mu); filename = Split_mu(k).name; load (filename) loadAndCorrectData_new Test_Plot_SteerAngle_Speed sa = SteeringAngle(:,2); sa_sign = SteeringAngleSign(:,2); SteerRate = zeros(length(sa),1); for n = 2:length(sa); SteerRate(n,1) = (sa(n)-sa(n-1))/0.01; end RollAngle = zeros(length(RollRateActual_H),2); for n = 2:length(RollRateActual_H(:,2)); RollAngle(n,2) = (RollRateActual_H(n,2)*0.055) + RollAngle(n-1,2); end color = color+1; figure(2); plot (sync_Var_SA(:,1), sync_Var_SA(:,2), 'Color', map(color,:)) Title('Steering Wheel Angle'); set(gca,'Color',[.8,.8,.8]) hold on figure(4); plot (sync_Var_VS(:,1), sync_Var_VS(:,2), 'Color', map(color,:)) Title('Vehicle Speed'); set(gca,'Color',[.8,.8,.8]) hold on figure(5); plot (sync_Var_YR(:,1), sync_Var_YR(:,2), 'Color', map(color,:)) Title('Yaw Rate'); set(gca,'Color',[.8,.8,.8]) hold on figure(6); plot (sync_Var_SA(:,2), sync_Var_YR(:,2), 'Color', map(color,:)) Title('Yaw Rate vs SWA'); set(gca,'Color',[.8,.8,.8]) 63 %Load all test files
hold on figure(7); plot (sync_Var_SA(:,2), sync_Var_LatA(:,2), 'Color', map(color,:)) Title('LatAcc vs SWA'); set(gca,'Color',[.8,.8,.8]) hold on figure(8); plot (sync_Var_LatA(:,1), sync_Var_LatA(:,2), 'Color', map(color,:)) Title('LatAcc'); set(gca,'Color',[.8,.8,.8]) hold on end
64
A.5
for i=1:length(SteeringAngle(:,2)) if SteeringAngleSign(i,2)==1 SteeringAngle(i,2)=SteeringAngle(i,2)*(-1); end end Var_SA = SteeringAngle; Var_VS = VehicleSpeedABS; Var_ABS = ABSMode_H; time = 0; a = 0; b = 0; c = 0; d = 0; for i = 1:1:length(Var_ABS); if Var_ABS(i,2) ~= 0 if Var_ABS(i-1,2) == 0; time = Var_ABS(i,1); end end end time = time - 0.20; for i = 1:1:length(Var_SA); if Var_SA(i,1) >= time a = i; break end end for i = 1:1:length(Var_VS); if Var_VS(i,1) >= time b = i; break end end for i = 1:1:length(Var_VS); if Var_VS(i,1) >= time && Var_VS(i,2) <= 0.1; time_2 = Var_VS(i,1); break end end time_2 = time_2 + 0.20; for i = 1:1:length(Var_SA); if Var_SA(i,1) >= time_2 c = i; break end end for i = 1:1:length(Var_VS); if Var_VS(i,1) >= time_2 65
d = i; break end end sync_Var_SA = sync_Var_VS = sync_Var_YR = sync_Var_LatA zeros(c-a,2); zeros(d-b,2); zeros(d-b,2); = zeros(d-b,2); Var_SA(a:c-1,2); Var_VS(b:d-1,2); YawRateActual(b:d-1,2); = LateralAcceleration(b:d-1,2); length(sync_Var_SA(:,1))*0.01; length(sync_Var_VS(:,1))*0.01; length(sync_Var_YR(:,1))*0.01; = length(sync_Var_LatA(:,1))*0.01;
counter=0; for j=0.00:0.01:sync_Var_SA_endtime-0.01; counter=counter+1; sync_Var_SA(counter,1)=j; end counter=0; for j=0.00:0.01:sync_Var_VS_endtime-0.01; counter=counter+1; sync_Var_VS(counter,1)=j; end counter=0; for j=0.00:0.01:sync_Var_YR_endtime-0.01; counter=counter+1; sync_Var_YR(counter,1)=j; end counter=0; for j=0.00:0.01:sync_Var_LatA_endtime-0.01; counter=counter+1; sync_Var_LatA(counter,1)=j; end
66
A.6
% Analyze Impulse steer Impulse_steer = dir('impuls_steer*.mat'); map = colormap(colorcube(15)); set(gca,'Color',[.8,.8,.8]) hold on color=0; dt = 0.01; for k = 1:length(Impulse_steer) filename = Impulse_steer(k).name; load (filename) loadAndCorrectData_new sa = SteeringAngle_H(:,2); sa_sign = SteeringAngleSign_H(:,2); for i=1:length(sa) if sa_sign(i)==1 sa(i)=sa(i)*(-1); end end SteerRate = zeros(length(sa),1); for n = 2:length(sa); SteerRate(n,1) = (sa(n)-sa(n-1))/0.01; end RollAngle = zeros(length(RollRateActual_H),2); for n = 2:length(RollRateActual_H(:,2)); RollAngle(n,2) = (RollRateActual_H(n,2)*0.055) + RollAngle(n-1,2); end LatAcc_G = zeros(length(LateralAcceleration_H),1); for j = 1:length(LateralAcceleration_H); LatAcc_G(j) = LateralAcceleration_H(j,2)/9.81; end Test_Plot_Impulse_steer color = color+1; figure(1); plot (sync_sa(:,1), sync_sa(:,2), 'Color', map(color,:)) %Load all test files
%Steering Angle
figure(2); plot (sync_sa(:,2), sync_YawRate(:,2), 'Color', map(color,:)) set(gca,'Color',[.8,.8,.8]) hold on figure(3); plot (sync_sa, sync_LatAcc(:,2), 'Color', map(color,:)) set(gca,'Color',[.8,.8,.8]) hold on end
A.7
67
time = 0; a = 0; c = 0; for i = 1:length(sa); if sa(i) >= 80 && VehicleSpeedABS_H(i,2) >= 45; time = VehicleSpeedABS_H(i,1); break end end time = time - 1.0; for i = 1:length(RollRateActual_H); if RollRateActual_H(i,1) >= time a = i; break end end for i = 1:length(SteeringAngle_H); if SteeringAngle_H(i,1) >= time+3 && sa(i) <= 0; time_2 = SteeringAngle_H(i,1); break end end time_2 = time_2 + 0.50; for i = 1:length(SteeringAngle_H); if SteeringAngle_H(i,1) >= time_2 c = i; break end end sync_sa = zeros(c-a+1,2); sync_RollAngle = zeros(c-a+1,2); sync_speed = zeros(c-a+1,2); sync_YawRate = zeros(c-a+1,2); sync_LatAcc = zeros(c-a+1,2); sync_sa(:,2) = sa(a:c); sync_RollAngle(:,2) = RollAngle(a:c,2); sync_speed(:,2) = VehicleSpeedABS_H(a:c,2); sync_YawRate(:,2) = YawRateActual_H(a:c,2); sync_LatAcc(:,2) = LateralAcceleration_H(a:c,2); sync_endtime = length(sync_sa)*0.1; counter=0; for j=0.0:0.1:sync_endtime-0.1; counter=counter+1; sync_sa(counter,1)=j; sync_RollAngle(counter,1)=j; sync_speed(counter,1)=j; sync_YawRate(counter,1)=j; sync_LatAcc(counter,1)=j; end
%SWA
68
A.8
clear load all_variables_filename %{ Plot Variables UKF 1:size(Y,2) = Total length of variables (change this to c:w for desired interval plot) MM_UKF MM_UKF MM_UKF MM_UKF MM_UKF MM_UKF MM_UKF MM_UKF (1,:) (2,:) (3,:) (4,:) (5,:) (6,:) (7,:) (8,:) = = = = = = = = = = = = YawRate Speed Beta Fy fl Fy fr Fy rl Fy rr Fx front alpha alpha alpha alpha fl fr rl rr
% Plot Interval full=size(Y,2); %full length of variable c=740; %start w=760; %stop figure(1); plot(c:w, MM_UKF(4,c:w), '-', c:w, MM_UKF(5,c:w), '-', c:w, MM_UKF(6,c:w), '-', c:w, MM_UKF(7,c:w), '-', c:w, MM_UKF(8,c:w), '-') TITLE('Lateral Forces'); legend('Fy fl [N]','Fy fr [N]','Fy rl [N]','Fy rr [N]','Fx front [N]'); figure(2); plot(c:w, MM_UKF(1,c:w), '-', c:w, MM_UKF(2,c:w),'-', c:w, MM_UKF(3,c:w),'') TITLE('YawRate, Speed and Beta'); legend('yaw rate [rad/s]','speed [m/s]','beta [rad]'); figure(3); plot(sa(c:w), MM2_UKF(1,c:w), '-', sa(c:w), MM2_UKF(2,c:w), '-', sa(c:w), MM2_UKF(3,c:w), '-', sa(c:w), MM2_UKF(4,c:w), '-') TITLE('Alpha vs Delta'); legend('alpha fl','alpha fr','alpha rl','alpha rr'); figure(4); plot(c:w, MM2_UKF(1,c:w), '-', c:w, MM2_UKF(2,c:w), '-', c:w, MM2_UKF(3,c:w), '-', c:w, MM2_UKF(4,c:w), '-') TITLE('Slip Angles'); legend('alpha fl [rad]','alpha fr [rad]','alpha rl [rad]','alpha rr [rad]'); figure(5); plot(MM2_UKF(1,c:w), MM_UKF(4,c:w), '-', MM2_UKF(2,c:w), MM_UKF(5,c:w), '', MM2_UKF(3,c:w), MM_UKF(6,c:w), '-', MM2_UKF(4,c:w), MM_UKF(7,c:w), '-') TITLE('Fy vs Alpha'); 69
legend('Fy alpha fl','Fy alpha fr','Fy alpha rl','Fy alpha rr'); figure(6); plot(abs(MM2_UKF(2,c:w)), abs(MM_UKF(5,c:w)), '.') TITLE('Front Right: Fy vs Alpha'); legend('Fy alpha fr'); figure(7); plot(sa(c:w), MM_UKF(1,c:w), TITLE('YawRate vs SA');
'-')
70
A.9
% Analyze full brake Full_brake = dir('fullbrake*.mat'); map = colormap(colorcube(15)); set(gca,'Color',[.8,.8,.8]) hold on color=0; dt = 0.01; for k = 1:length(Full_brake) filename = Full_brake(k).name; load (filename) sa = SteeringAngle_H(:,2); sa_sign = SteeringAngleSign_H(:,2); for i=1:length(sa) if sa_sign(i)==1 sa(i)=sa(i)*(-1); end end color = color+1; figure(1); plot (LongitudinalAcceleration_H(:,1), LongitudinalAcceleration_H(:,2), 'Color', map(color,:)) %Long acc Title('Longitudinal Acc'); set(gca,'Color',[.8,.8,.8]) hold on end %Load all test files
71