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 13:12] – [Joint-Torque] 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 81: Line 80:
  
 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: 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][]
Line 122: Line 123:
 Allows full 6 degrees of motion: 3 translation components and 3 rotational components. 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 ==== ==== Joint-Torque ====
  
-Only applies a torque between two bodies and doesn't restrict any of the other movement. This is mostly in combination with a multibody_joint to simulate a drive shaft.+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][] <code>            <[jointtorque][DriveShaft][]
aircraft/tmd/rigidbody.1538305971.txt.gz · Last modified: 2018/09/30 13:12 by jh