User Tools

Site Tools


aircraft:tmd:rigidbody

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
aircraft:tmd:rigidbody [2018/09/30 12:53] jhaircraft:tmd:rigidbody [2018/09/30 14:43] (current) – [Rigidbody] jh
Line 5: Line 5:
 For this mathematical description Aerofly needs to know a few key parameters of the objects it is simulating. Most important of all is the **mass**, which is represented in Kilograms. The mass defines how fast an object accelerates when a given force acts onto it. For example: If an aircraft is on the ground and the aerodynamic forces are neglitable then the acceleration of the aircraft is directly proportional to the thrust of the engine divided by the mass of the aircraft. Heavier aircraft with the same thrust will therefor accelerate much slower than light aircraft. And only if the total mass of the aircraft is set to a realistic value will the acceleration be realistic. For this mathematical description Aerofly needs to know a few key parameters of the objects it is simulating. Most important of all is the **mass**, which is represented in Kilograms. The mass defines how fast an object accelerates when a given force acts onto it. For example: If an aircraft is on the ground and the aerodynamic forces are neglitable then the acceleration of the aircraft is directly proportional to the thrust of the engine divided by the mass of the aircraft. Heavier aircraft with the same thrust will therefor accelerate much slower than light aircraft. And only if the total mass of the aircraft is set to a realistic value will the acceleration be realistic.
  
-==== Rigidbody =====+Here is a visualization of how all the rigidbodies of the DR400 aircraft: 
 +{{ :aircraft:tmd:dr400_rigidbody.png |}} 
 + 
 +===== Rigidbody ======
  
 Aerofly uses the mathematical concept of a rigidbody to simulate the aircraft mass. A rigidbody in Aerofly can be thought of as a box with a certain size, a certain mass, position and orientation, velocity and angular velocity (rotation speed). Roughly speaking "a box that moves and rotates". Aerofly uses the mathematical concept of a rigidbody to simulate the aircraft mass. A rigidbody in Aerofly can be thought of as a box with a certain size, a certain mass, position and orientation, velocity and angular velocity (rotation speed). Roughly speaking "a box that moves and rotates".
  
 We usually break down the aircraft into several parts, for example the left and right wings, the fuselage, stabilizer, propeller and individual parts of the landing gear (those that move independent of each other). We usually break down the aircraft into several parts, for example the left and right wings, the fuselage, stabilizer, propeller and individual parts of the landing gear (those that move independent of each other).
- 
-Here is a visualization of how all the rigidbodies of the DR400 aircraft: 
-{{ :aircraft:tmd:dr400_rigidbody.png |}} 
- 
  
 In the [[aircraft:tmd|tmd file]] the rigidbody of the fuselage is defines like this: In the [[aircraft:tmd|tmd file]] the rigidbody of the fuselage is defines like this:
Line 70: Line 69:
  
 In the Aerofly FS 2 physics engine we have several joint types to chose from: In the Aerofly FS 2 physics engine we have several joint types to chose from:
-   * multibody_joint +   [[#Multibody-Joint|multibody_joint]] 
-   * jointlinear +   [[#Jointlinear|jointlinear]] 
-   * jointtorque+   [[#Jointtorque|jointtorque]]
  
 ==== Multibody-Joint ==== ==== Multibody-Joint ====
Line 78: Line 77:
 A ''multibody_joint'' is a connection between two rigidbodies that allows only one new degree of motion. This means the two objects are coupled together very strongly and will move or rotate pretty much dependent of each other. (not independent!) A ''multibody_joint'' is a connection between two rigidbodies that allows only one new degree of motion. This means the two objects are coupled together very strongly and will move or rotate pretty much dependent of each other. (not independent!)
  
-This is an example of the left wing's root joint. It is allows a rotation around the x-axis, which means the wing  can still flap up and down but it can't freely move forward, left/right or up/down (without rotation) relative to the fuselage or rotate around any other axis.+This joint is widely used in Aerofly FS 2, it constrains the movements of each part so that long chains like the actuated landing gear of an airliner become relatively easy to understand and set up and compute but still allowing complex movement. For example: The landing gear is rotated around one axis when it is retracted. But the lower part of the landing gear is not directly attached, it has a damper that dampens most of the shock when the aircraft touches down. 
 + 
 +This is an example of the left wing's root joint. It is allows a rotation around the x-axis, which means the wing  can still flap up and down but it can't freely move forward, left/right or up/down (without rotation) relative to the fuselage or rotate around any other axis. The values Kp and Kd are set quite high, since the wing creates a lot of lift and this joint has to transfer that bending torque around the root. It's a stiff connection that doesn't allow much movement: 
 + 
 +> **Caution**: Requires a rigidbody with the name ''Fuselage'' and another with the name ''LeftWing'' 
 <code>            <[multibody_joint][JointFuselageLeftWing][] <code>            <[multibody_joint][JointFuselageLeftWing][]
                 <[string8][Body0][Fuselage]>                 <[string8][Body0][Fuselage]>
Line 112: Line 116:
  
 === Kd === === Kd ===
-Damping constant in Newton-Meter per radiant and second = N*m/(rad*s) (type 0) or Newton per meter and second = N/(s*m) (type 1). Higher values mean the connection is damped more and the torque/force created is much higher at small relative velocities.+Damping constant in Newton-Meter per radiant per second = N*m/(rad/s) (type 0) or Newton per meter per second = N/(m/s) (type 1). Higher values mean the connection is damped more and the torque/force created is much higher at small relative velocities. 
 + 
 + 
 +==== Joint-Linear ==== 
 + 
 +Allows full 6 degrees of motion: 3 translation components and 3 rotational components. 
 + 
 +== Typical short version === 
 +> **Caution**: Requires two rigidbodies with the names ''Fuselage'' and ''LeftElevator'' 
 + 
 +<code>            <[jointlinear][JointFuselageLeftElevator][] 
 +                <[string8][Body0][Fuselage]> 
 +                <[string8][Body1][LeftElevator]> 
 +                <[tmvector3d][X0][ 1.0 0.0 0.0 ]> 
 +                <[tmvector3d][Y0][ 0.0 1.0 0.0 ]> 
 +                <[tmvector3d][Z0][ 0.0 0.0 1.0 ]> 
 +                <[tmvector3d][R0][ 0.0 0.0 0.0 ]> 
 +                <[float64][Kfx][100000000.0]> 
 +                <[float64][Kfy][100000000.0]> 
 +                <[float64][Kfz][100000000.0]> 
 +                <[float64][Dfx][100000.0]> 
 +                <[float64][Dfy][100000.0]> 
 +                <[float64][Dfz][100000.0]> 
 +                <[float64][Ktx][3000000.0]> 
 +                <[float64][Kty][100000000.0]> 
 +                <[float64][Ktz][100000000.0]> 
 +                <[float64][Dtx][100000.0]> 
 +                <[float64][Dty][100000.0]> 
 +                <[float64][Dtz][100000.0]> 
 +                <[float64][ForceMax][500000.0]> 
 +                <[float64][TorqueMax][30000.0]> 
 +            ></code> 
 +             
 +== Full version === 
 + 
 +> **Caution**: Requires two rigidbodies with the names ''Fuselage'' and ''LeftElevator'' and some object with the name ''ServoElevator'' and one with the name ''ServoRudder''
 + 
 +<code>            <[jointlinear][JointFuselageLeftElevator][] 
 +                <[string8][Body0][Fuselage]> 
 +                <[string8][Body1][LeftElevator]> 
 +                <[tmvector3d][X0][ 1.0 0.0 0.0 ]> 
 +                <[tmvector3d][Y0][ 0.0 1.0 0.0 ]> 
 +                <[tmvector3d][Z0][ 0.0 0.0 1.0 ]> 
 +                <[tmvector3d][R0][ 0.0 0.0 0.0 ]> 
 +                <[float64][Kfx][100000000.0]> 
 +                <[float64][Kfy][100000000.0]> 
 +                <[float64][Kfz][100000000.0]> 
 +                <[float64][Dfx][100000.0]> 
 +                <[float64][Dfy][100000.0]> 
 +                <[float64][Dfz][100000.0]> 
 +                <[float64][Ktx][3000000.0]> 
 +                <[float64][Kty][100000000.0]> 
 +                <[float64][Ktz][100000000.0]> 
 +                <[float64][Dtx][100000.0]> 
 +                <[float64][Dty][100000.0]> 
 +                <[float64][Dtz][100000.0]> 
 +                <[float64][ForceMax][500000.0]> 
 +                <[float64][TorqueMax][30000.0]> 
 +                <[string8][Rotation0Control][ServoElevator.Output]> 
 +                <[tmvector3d][Rotation0Axis][ 0.0 1.0 0.0 ]> 
 +                <[float64][Rotation0Angle][1.0]> 
 +                <[string8][Rotation1Control][ServoRudder.Output]> 
 +                <[tmvector3d][Rotation1Axis][ 0.0 0.0 1.0 ]> 
 +                <[float64][Rotation1Angle][1.0]> 
 +                <[tmvector3d][PreLoad][ 0.0 0.0 0.0 ]> 
 +                <[tmvector3d][PreTension][ 0.0 0.0 0.0 ]> 
 +                <[int32][Rigid][0]> 
 +            ></code> 
 + 
 +=== Rigid == 
 +Setting ''Rigid'' to 1 instead of 0 will make this connection indestructible and completely solid. No translation or rotation will be possible and all parameter values are ignored. 
 + 
 +=== R0 === 
 + 
 +''R0'' is the attachment point 
 + 
 +=== X0, Y0, Z0 === 
 + 
 +X0, Y0 and Z0 define a rotation matrix to rotate the joint's axes. This is needed if the weakest axis is at a diagonal attitude. 
 + 
 +=== Kf, Kt == 
 +All ''Kf'' values are spring constants in N/m that define the stiffness of the translation. 
 +''Kt'' are torsion damper constants. 
 + 
 +=== Df == 
 +All ''Df'' values are damping constants in N/(m/s) that define the damping or the relative velocity 
 +''Dt'' are torsion damper constants. 
 + 
 +=== ForceMax, TorqueMax === 
 +Defines the force and torque at which the connection breaks. From that moment on the two bodies are completely independant and the crash reset timer is started which reloads the aircraft after (default) 3 seconds. 
 + 
 +=== Rotation Input === 
 + 
 +Using Rotation0Control, Rotation0Angle and Rotation0Axis one can define a connection that is actuated. Another rotation on the same joint can be made with the 'Rotation1Control, Rotation1Angle and Rotation1Axis. 
 + 
 +=== PreLoad, PreTension === 
 +Defines the offset force (in Newtons) or torque (in Newton-Meters). When the deflection or displacement is zero this force or torque is still acting between the two bodies. Normally the landing gear would compress under the weight of the aircraft but the PreLoad parameter could reduce this displacement to zero on the ground. In the air the gear would then extend outward. 
 +==== Joint-Torque ==== 
 + 
 +Only applies a torque between two bodies and doesn't restrict any of the other movement. This is mostly used in combination with a multibody_joint to simulate a drive shaft. 
 + 
 +> **Caution**: Requires two rigidbodies with the names ''Fuselage'' and ''PropellerBody'' 
 + 
 +<code>            <[jointtorque][DriveShaft][] 
 +                <[string8][Body0][Fuselage]> 
 +                <[string8][Body1][PropellerBody]> 
 +                <[tmvector3d][Z0][ 1.0 0.0 0.0 ]> 
 +                <[float64][Friction][0.0]> 
 +            ></code>
aircraft/tmd/rigidbody.1538304783.txt.gz · Last modified: 2018/09/30 12:53 by jh