Gelöste Aufgaben/JUMP/Car-Body: Unterschied zwischen den Versionen

Aus numpedia
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 220: Zeile 220:


==tmp==
==tmp==
{{MyCodeBlock
{{MyNoncodeBlock
|title=Contact-Point and -Normal
|title=Contact-Point and -Normal
|text=Text
|text=
|code=
<syntaxhighlight lang="lisp" line start=1>
1+1=2
</syntaxhighlight>
}}
 
<!------------------------------------------------------------------------->
==tmp==
{{MyCodeBlock
|title=Contact Forces
|text=Text
|code=
<syntaxhighlight lang="lisp" line start=1>
1+1=2
</syntaxhighlight>
}}
 
<!------------------------------------------------------------------------->
==tmp==
[[Datei:JUMP-carbody-slide5.png|mini|Contact conditions.]]Finding the contact between wheel and road is our next challenge. We need to differentiate between the straight lines and the parabolas - but in both cases, we are looking for the equation of the normal “''N''“ to the road-surface, which cuts through the wheel-hub.
[[Datei:JUMP-carbody-slide5.png|mini|Contact conditions.]]Finding the contact between wheel and road is our next challenge. We need to differentiate between the straight lines and the parabolas - but in both cases, we are looking for the equation of the normal “''N''“ to the road-surface, which cuts through the wheel-hub.


Zeile 318: Zeile 299:


And we get a third-degree polynomial in “''x''“ from the second equation. The three solutions for point “''C''” usually comprise complex (they have a real and imaginary part) solutions depending on the curvature (convex or concave) of the parabola. That’s not a problem but increases computational cost significantly - because we will need to solve this equation for each value of ''U<sub>3</sub>, U<sub>4</sub>'' again and again.
And we get a third-degree polynomial in “''x''“ from the second equation. The three solutions for point “''C''” usually comprise complex (they have a real and imaginary part) solutions depending on the curvature (convex or concave) of the parabola. That’s not a problem but increases computational cost significantly - because we will need to solve this equation for each value of ''U<sub>3</sub>, U<sub>4</sub>'' again and again.
}}
<!------------------------------------------------------------------------->
==tmp==
{{MyCodeBlock
|title=Contact Forces
|text=Text
|code=
<syntaxhighlight lang="lisp" line start=1>
1+1=2
</syntaxhighlight>
}}
<!------------------------------------------------------------------------->
==tmp==


{{MyCodeBlock
{{MyCodeBlock

Version vom 10. März 2021, 13:15 Uhr

← Back to Start

Scope

Car-Body

In common simulation applications - especially for full-size commercial cars - the pitch-angle of the car is assumed to be small to allow for a linearization of geometry and most parts of the equations of motion. We drop this limitation so we can do more fancy stuff with our model - like climbing steep roads or jumping across ditches.

Block Diagram.

We employ a spatial x-y coordinate system, x in horizontal, y in vertical, upwards direction. And we’ll briefly employ the z-axis as rotation direction - which is towards you following the “right-hand-rule“ for coordinate systems.

Structure

The driver controls the car's motion via the position of the "gas"-pedal, which is being translated into a torque MW at the wheel.

This toque will change velocities and thus the position of the car. These state-variables will then create - via info - a feedback to the driver.

We’ll need to invest significant efforts in describing the kinematics of the car-motion and to derive its equations of body-motion since we do not want to limit our study on small pitch-angles of the car. Key accessory will be vectors, which map locations like the center of mass:

r→C(t).

This vector has - in 2D - two coordinates u1(t),u2(t), measured in the inertial x-y frame:

r→C(t)=e_→0⋅(u1u2) with e_→0=(e→x,e→y).

representing the unit vectors spanning the x-y space. If we refer to a specific frame, we may drop the vector-notation (.→) and refer to the column-matrix of coordinates (._) only, so

r_C=(u1u2).

We’ll also employ coordinate transformations using Euler-rotations.

The car with front-wheel drive consists of the car-body with center of mass “C“, the front wheels “A“ and the rear wheel “B“. Masses of car-body and wheel-sets are M and m respectively.The geometry of the car is described by

  • a0: the wheel base;
  • a1: longitudinal distance between center of mass and front-wheel-hub;
  • a2 = a0 - a1 and
  • a3: vertical distance between center of mass and front-wheel-hub (relaxed springs).

tmp

Body

We use five coordinates to describe the motion of the car:

  • u1(t),u2(t),φ(t) for the location of the center of mass of the car-body and its pitch-angle
    ,
  • u3,u4 for the "vertical" motion of the wheel hubs relative to the car-body - which is synonym to the compression of the springs

    and
  • ψ(t) as the rotation angle of the front-wheel - we'll not account for the rotation of the rear-wheel.

So the center of mass of the car-body is

r→M=e_→0⋅(u1(t)u2(t)),

the coordinate system of the car is

e_→C=e_→0⋅D__(φ(t))

where

D__(φ)=(cos⁡(φ)−sin⁡(φ)+sin⁡(φ)cos⁡(φ)).

So the location of the front-wheel “A“ is

r→A=r→M+r→MA

or

r_A=r_M+D__(φ(t))⋅(a1−a3+u3(t)).

Likewise, the location of the rear-wheel “B“ is

r_B=r_M+D__(φ(t))⋅(−a2−a3+u4(t))

and in the following, we’ll be using the abbreviations

(U3U4)=:r_A

and

(U5U6)=:r_B.


tmp

Track

Tack specification

We describe the road by road-sections, which we call tracks. We start by defining each track as a line-segment, i.e. a first-order polynomial. The road is thus defined by pairs of track-endpoints, i.e. (xi, yi).

The track-polynomials are

ti(x)=yi⋅x~i+yi−1⋅(1−x~i) for x~i=x−xi−1xi−xi−1=Ti,1⋅x+Ti,0.

During the numerical integration of the initial-value-problem - when the car runs along the track - the solver needs to cope with the transition between two straight lines - which is numerically more efficient if we convert the road in a continuously differentiable function.

Rounding the edges.

For this purpose, we define transition polynomials pi of second degree - parabolas - as

pi(x)=∑j=02Pi,j⋅xj

which connect two neighboring tracks.

The boundary conditions for the parabolas (red) and the neighboring lines (blue) yield

ti(xi−Δxi)=pi(xi−Δxi),dtidxi|xi−Δxi=dpidxi|xi−Δxi,ti+1(xi+Δxi)=pi(xi+Δxi),dti+1dxi+1|xi+Δxi=dpidxi|xi+Δxi.

And though we have four boundary conditions, they allow for a solution with three unknown polynomial coefficients Pi if Δxi is identical left and right from xi - which we have already implied.

b3=0,b2=a2,1−a1,14Δxi,b1=(a2,1+a1,1)Δxi−xia2,1+xia1,12Δxi,b0=(a2,1−a1,1)Δxi2+(−2xia2,1−2x1a1,1+4yi)Δxi+xi2a2,1−xi2a1,14Δxi

and

a1,0=yi−xia1,1,a1,1=yi−1−yixi−1−xi,a2,0=yi−xia2,1,a2,1=yi−yi+1xi−xi+1

But instead of employing the above, we solve the linear systems of equations for the coefficients numerically.

Now each polynomial creates new endpoints xi - Δxi and xi + Δxi which substitute for the initial xi-point. The tracks are represented by a succession of lines and parabolas.

Next we need to find the contact point between wheel and road!


/*******************************************************/
/* MAXIMA script                                       */
/* version: wxMaxima 16.04.2                           */
/* author: Andreas Baumgart                            */
/* last updated: 2021-02-08                            */
/* ref: Modelling and Simulation (TUAS)                */
/* description: Rounding between straight line-segments*/
/*******************************************************/

/*******************************************************/
/* declarations                                        */
/*******************************************************/
declare("Δ",alphabetic);

params: [x[0] = 0, x[1] = 10, x[2]=15,
         y[0] = 0, y[1] =  1, y[2]=-1,
	 eps = 0.2];

/*******************************************************/
/* polynomials                                         */
/*******************************************************/
/* polynomial coefficiets of two consecutive straigt lines */
P : [[a[1,1],a[1,0]],[a[2,1],a[2,0]]];
/* polynomials of cubic and two consecutive linear polynomials */
p : [a[1,1]*x+a[1,0],
     b[3]*x^3+b[2]*x^2+b[1]*x+b[0],
     a[2,1]*x+a[2,0]];

/* compute polynomial coefficients from (x[i]/y[i])-points*/
linear : solve([subst([x=x[0]],p[1]) = y[0],
                subst([x=x[1]],p[1]) = y[1],
		subst([x=x[1]],p[3]) = y[1],
		subst([x=x[2]],p[3]) = y[2]], [a[1,0],a[1,1],a[2,0],a[2,1]])[1];
/* equations to continuously fit cubic function to lines */
equs : [subst([x=x[1]-Δx], p[1]) = subst([x=x[1]-Δx], p[2]),
        subst([x=x[1]+Δx], p[3]) = subst([x=x[1]+Δx], p[2]),
	subst([x=x[1]-Δx], diff(p[1],x)) = subst([x=x[1]-Δx], diff(p[2],x)),
	subst([x=x[1]+Δx], diff(p[3],x)) = subst([x=x[1]+Δx], diff(p[2],x))];
/* unknowns */
Q : [b[3],b[2],b[1],b[0]];

/* solve for unknowns */
sol : ratsimp(subst(linear,solve(equs,Q)[1]));

/* solve linear system of equations for unknown coefficients */
ACM : augcoefmatrix(equs,Q);
print(submatrix(ACM,5)," * ",transpose(Q)," = ",col(ACM,5))$


/* or - more simple when doing it numerically  .... */

/* coefficients of straigt line polynomials */
s : makelist(a[i,1] = (y[i-1]-y[i])/(x[i-1]-x[i]),i,1,2);

P : [[a[1,1],a[1,0]],[a[2,1],a[2,0]]];
p : [a[1,1]*x+a[1,0],
     b[3]*x^3+b[2]*x^2+b[1]*x+b[0],
     a[2,1]*x+a[2,0]];

linear : solve([subst([x=x[1]],p[1]) = y[1],
		subst([x=x[1]],p[3]) = y[1]], [a[1,0],a[2,0]])[1];

equs : [subst([x=x[1]-Δx], p[1]) = subst([x=x[1]-Δx], p[2]),
        subst([x=x[1]+Δx], p[3]) = subst([x=x[1]+Δx], p[2]),
	subst([x=x[1]-Δx], diff(p[1],x)) = subst([x=x[1]-Δx], diff(p[2],x)),
	subst([x=x[1]+Δx], diff(p[3],x)) = subst([x=x[1]+Δx], diff(p[2],x))];
Q : [b[3],b[2],b[1],b[0]];

sol : ratsimp(subst(linear,solve(equs,Q)))[1];

/* check with parameters */
subst(params,subst(s,subst(linear,solve(equs,Q))));





tmp

Contact-Point and -Normal

Contact conditions.

Finding the contact between wheel and road is our next challenge. We need to differentiate between the straight lines and the parabolas - but in both cases, we are looking for the equation of the normal “N“ to the road-surface, which cuts through the wheel-hub.

From the car-coordinates, we know the location of the wheel - e.g. “A” - expressed by its hub-vector

r→A=e_→0⋅(U3(t)U4(t)).

And we can also define

r→A(t)=r→a(t)+N→A(t).

where r→A is the vector to the contact point “a“ of wheel “A“ and N→A is the vector from “a“ to the wheel hub “A“. Since "a" is a point on a track - if wheel and road have contact - and the direction of NA is known to be perpendicular to this track in “a”, we have two equations for the two unknowns “point on track“ and “length of normal N→A“.

Contact angles

However, it remains tricky to find the material coordinate of the wheel that is at “a“. The picture below explains how first rotate the car by φ - positive about the z-axis, then rotate the wheel in negative direction by ψ and by κ in positive direction back to vertical. From there it is the known angle γA to “a“.

This succession of rotations is expressed by

γA(t)=φ(t)−ψ(t)+κ(t)

and we find contact point “a“ from

r_a=r_A+D__(γA(t))⋅(0−R)=(+Rsin⁡(γA(t))−(u3(t)−a3)sin⁡(φ⁡(t))+a1cos⁡(φ⁡(t))+u1(t)−Rcos⁡(γA(t))+a1sin⁡(φ⁡(t))+(u3(t)−a3)cos⁡(φ⁡(t))+u2(t))

and “b“ from

r_b=r_B+D__(γB(t))⋅(0−R)=(+sin⁡(γB)R−(u4(t)−a3)sin⁡(φ⁡(t))−a2cos⁡(φ⁡(t))+u1(t)−cos⁡(γB)R−a2sin⁡(φ⁡(t))+(u4(t)−a3)cos⁡(φ⁡(t))+u2(t)).

For wheel A und B, the angles ψ and κ are not identical - but we have dropped the indices here for brevity.

Track is a Line

If the track is line “i“, we have

r→a=e_→0⋅[(xi−1yi−1)⏟:=P_i−1+ξ⋅(xi−xi−1yi−yi−1)⏟:=ΔP_i]

with

P_i−1,P_i

being start- end end-points of the line with coordinates [xi, hi] and ξ naming the coordinate of point “C“. For the track-normal, we have

N→A=η⋅R⋅n→A

with the unit-normal , the wheel-radius R and the unknown η. For the unit-normal

N→A⋅ΔP→i=0 and n→A⋅n→A=1

holds.

And for the contact angles γA/B we employ

tan⁡γA(t)=NA,yNA,x.
Track is a Parabola

If the track is defined by a second-order polynomial pi, we proceed accordingly. However, the track inclination is linearly dependent on “x” and we find that the normal is proportional to:

N~_=(1−12Pi,2x+Pi,1).

From

r_A=(xpi(x))+η⋅N~_ with r_A=(U3U4)

we get two equations for the unknowns “x“ and “η“ as

u3=η+x,u4=−η2Pi,2x+Pi,1+Pi,2x2+Pi,1x+Pi,0.

And we get a third-degree polynomial in “x“ from the second equation. The three solutions for point “C” usually comprise complex (they have a real and imaginary part) solutions depending on the curvature (convex or concave) of the parabola. That’s not a problem but increases computational cost significantly - because we will need to solve this equation for each value of U3, U4 again and again.

tmp

Contact Forces

Text


1+1=2




tmp

Track

Text


1+1=2




tmp

Track

Text


1+1=2




tmp

Track

Text


1+1=2




tmp

Track

Text


1+1=2




Variables

Parameter

x

y

z

a

b

c


Wheel kinematics


Contact forces F, N
Characteristic for contact force.
Friction characteristic


next workpackage: driver-controls →


References

  • ...