mirror of https://github.com/ArduPilot/ardupilot
add missing file for jsbsim
This commit is contained in:
parent
2f962fe6da
commit
005a8afa07
|
@ -0,0 +1,92 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<PropertyList>
|
||||
<name>rascal-config</name>
|
||||
<layout>vbox</layout>
|
||||
<x>40</x>
|
||||
<y>40</y>
|
||||
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
|
||||
<empty><stretch>true</stretch></empty>
|
||||
|
||||
<text>
|
||||
<label>Rascal Configuration</label>
|
||||
</text>
|
||||
|
||||
<empty><stretch>true</stretch></empty>
|
||||
|
||||
<button>
|
||||
<pref-width>16</pref-width>
|
||||
<pref-height>16</pref-height>
|
||||
<legend></legend>
|
||||
<default>1</default>
|
||||
<keynum>27</keynum>
|
||||
<border>2</border>
|
||||
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>rascal.dialog.close()</script>
|
||||
</binding>
|
||||
</button>
|
||||
</group>
|
||||
|
||||
<hrule/>
|
||||
|
||||
<group>
|
||||
<layout>table</layout>
|
||||
|
||||
<!-- row zero -->
|
||||
<checkbox>
|
||||
<row>0</row> <col>0</col>
|
||||
<halign>left</halign>
|
||||
<label>External Autopilot Enable</label>
|
||||
<property>/ugear/settings/ap-enable</property>
|
||||
<live>true</live>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</checkbox>
|
||||
|
||||
<!-- row one -->
|
||||
<checkbox>
|
||||
<row>1</row> <col>0</col>
|
||||
<halign>left</halign>
|
||||
<label>External Turret Control Enable</label>
|
||||
<property>/ugear/settings/turret-enable</property>
|
||||
<live>true</live>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</checkbox>
|
||||
|
||||
<!-- row two -->
|
||||
<checkbox>
|
||||
<row>2</row> <col>0</col>
|
||||
<halign>left</halign>
|
||||
<label>Smoke</label>
|
||||
<property>/sim/multiplay/generic/int[0]</property>
|
||||
<live>true</live>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</checkbox>
|
||||
|
||||
<!-- row three -->
|
||||
<checkbox>
|
||||
<row>3</row> <col>0</col>
|
||||
<halign>left</halign>
|
||||
<label>Trajectory Markers</label>
|
||||
<property>/sim/multiplay/generic/int[1]</property>
|
||||
<live>true</live>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</checkbox>
|
||||
|
||||
</group>
|
||||
|
||||
<hrule/>
|
||||
|
||||
</PropertyList>
|
|
@ -0,0 +1,51 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Generated by Aero-Matic v 0.7
|
||||
|
||||
Inputs:
|
||||
horsepower: 3.8
|
||||
pitch: fixed
|
||||
Outputs:
|
||||
linear-blade-inches: 10.331602005498
|
||||
-->
|
||||
|
||||
<propeller name="Rascal Propeller">
|
||||
<ixx> 0.00085 </ixx>
|
||||
<diameter unit="IN"> 18.0 </diameter>
|
||||
<numblades> 2 </numblades>
|
||||
<minpitch> 30 </minpitch>
|
||||
<maxpitch> 30 </maxpitch>
|
||||
|
||||
<table name="C_THRUST" type="internal">
|
||||
<tableData>
|
||||
0.0 0.0776
|
||||
0.1 0.0744
|
||||
0.2 0.0712
|
||||
0.3 0.0655
|
||||
0.4 0.0588
|
||||
0.5 0.0518
|
||||
0.6 0.0419
|
||||
0.7 0.0318
|
||||
0.8 0.0172
|
||||
1.0 -0.0058
|
||||
1.4 -0.0549
|
||||
</tableData>
|
||||
</table>
|
||||
|
||||
<table name="C_POWER" type = "internal">
|
||||
<tableData>
|
||||
0.0 0.0902
|
||||
0.1 0.0893
|
||||
0.2 0.0880
|
||||
0.3 0.0860
|
||||
0.4 0.0810
|
||||
0.5 0.0742
|
||||
0.6 0.0681
|
||||
0.7 0.0572
|
||||
0.8 0.0467
|
||||
1.0 0.0167
|
||||
1.4 -0.0803
|
||||
</tableData>
|
||||
</table>
|
||||
|
||||
</propeller>
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- Zenoah G-26A -->
|
||||
<!-- 2.96 hp engine -->
|
||||
<!-- one horsepower equals 745.69987 Watts -->
|
||||
|
||||
<electric_engine name="electric_1mw">
|
||||
<power unit="WATTS"> 2207.27 </power>
|
||||
</electric_engine>
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,87 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<path>Rascal110-000-013.ac</path>
|
||||
|
||||
<model>
|
||||
<path>Aircraft/Rascal/Models/smokeW.xml</path>
|
||||
<offsets>
|
||||
<x-m> 2.0</x-m>
|
||||
<y-m> 0.0</y-m>
|
||||
<z-m> 0.0</z-m>
|
||||
<roll-deg> 0</roll-deg>
|
||||
<pitch-deg> 0</pitch-deg>
|
||||
<heading-deg>0</heading-deg>
|
||||
</offsets>
|
||||
</model>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>L_Aileron</object-name>
|
||||
<property>/surface-positions/left-aileron-pos-norm</property>
|
||||
<factor>20.0</factor> <!-- fixme -->
|
||||
<center>
|
||||
<x-m>0.735</x-m>
|
||||
<y-m>-0.450</y-m>
|
||||
<z-m>0.139</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0.037</x>
|
||||
<y>1.0</y>
|
||||
<z>-0.029</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>R_Aileron</object-name>
|
||||
<property>/surface-positions/right-aileron-pos-norm</property>
|
||||
<factor>20.0</factor> <!-- fixme -->
|
||||
<center>
|
||||
<x-m>0.735</x-m>
|
||||
<y-m>0.450</y-m>
|
||||
<z-m>0.139</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>-0.037</x>
|
||||
<y>1.0</y>
|
||||
<z>0.029</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>Elevator</object-name>
|
||||
<property>/surface-positions/elevator-pos-norm</property>
|
||||
<factor>35.0</factor> <!-- fixme -->
|
||||
<center>
|
||||
<x-m>1.752</x-m>
|
||||
<y-m>0.0</y-m>
|
||||
<z-m>0.051</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0.0</x>
|
||||
<y>1.0</y>
|
||||
<z>0.0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>Rudder</object-name>
|
||||
<property>/surface-positions/rudder-pos-norm</property>
|
||||
<factor>35.0</factor> <!-- fixme -->
|
||||
<center>
|
||||
<x-m>1.752</x-m>
|
||||
<y-m>0.0</y-m>
|
||||
<z-m>0.0</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0.0</x>
|
||||
<y>0.0</y>
|
||||
<z>1.0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
</PropertyList>
|
|
@ -0,0 +1,30 @@
|
|||
AC3Db
|
||||
MATERIAL "ac3dmat9" rgb 0 0 1 amb 0 0 1 emis 0 0 1 spec 0 0 1 shi 0 trans 0
|
||||
MATERIAL "ac3dmat3" rgb 1 0 0 amb 1 0 0 emis 1 0 0 spec 1 0 0 shi 0 trans 0
|
||||
OBJECT world
|
||||
kids 2
|
||||
OBJECT poly
|
||||
name "line"
|
||||
loc 0 0.5 0
|
||||
numvert 2
|
||||
0 0.5 0
|
||||
0 -0.5 0
|
||||
numsurf 1
|
||||
SURF 0x22
|
||||
mat 0
|
||||
refs 2
|
||||
0 0 1
|
||||
1 0 0
|
||||
kids 0
|
||||
OBJECT poly
|
||||
name "line"
|
||||
numvert 2
|
||||
0 0 -3
|
||||
0 0 3
|
||||
numsurf 1
|
||||
SURF 0x22
|
||||
mat 1
|
||||
refs 2
|
||||
0 0 1
|
||||
1 0 0
|
||||
kids 0
|
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Trajectory Marker config file - Lee Elliott -->
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<path>Trajectory-Marker.ac</path>
|
||||
|
||||
</PropertyList>
|
|
@ -0,0 +1,102 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- New version May, 07, 2009 by 102nd-YU-Nitro -->
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<!-- OSG Particles -->
|
||||
<particlesystem>
|
||||
<name>smoke</name>
|
||||
|
||||
<offsets>
|
||||
<x-m> 0.000 </x-m>
|
||||
<y-m> 0.000 </y-m>
|
||||
<z-m> -0.000 </z-m>
|
||||
<roll-deg> 0.000 </roll-deg>
|
||||
<pitch-deg> 0.000 </pitch-deg>
|
||||
<heading-deg> 0.000 </heading-deg>
|
||||
</offsets>
|
||||
|
||||
<texture>smoke.png</texture>
|
||||
|
||||
<condition>
|
||||
<property>sim/multiplay/generic/int[0]</property>
|
||||
</condition>
|
||||
|
||||
<emissive>false</emissive>
|
||||
<lighting>false</lighting>
|
||||
<align>billboard</align> <!-- billboard / fixed -->
|
||||
<attach>world</attach> <!-- world / local-->
|
||||
|
||||
<placer>
|
||||
<type>point</type> <!-- sector / segments / point -->
|
||||
</placer>
|
||||
|
||||
<shooter>
|
||||
<theta-min-deg>10</theta-min-deg>
|
||||
<theta-max-deg>86</theta-max-deg>
|
||||
<phi-min-deg>-1.5</phi-min-deg>
|
||||
<phi-max-deg>8</phi-max-deg>
|
||||
<speed-mps>
|
||||
<value>10</value>
|
||||
<spread>2.5</spread>
|
||||
</speed-mps>
|
||||
<rotation-speed>
|
||||
<x-min-deg-sec>5</x-min-deg-sec>
|
||||
<y-min-deg-sec>5</y-min-deg-sec>
|
||||
<z-min-deg-sec>5</z-min-deg-sec>
|
||||
<x-max-deg-sec>60</x-max-deg-sec>
|
||||
<y-max-deg-sec>60</y-max-deg-sec>
|
||||
<z-max-deg-sec>60</z-max-deg-sec>
|
||||
</rotation-speed>
|
||||
</shooter>
|
||||
|
||||
<counter>
|
||||
<particles-per-sec>
|
||||
<value>100</value>
|
||||
<spread>1</spread>
|
||||
</particles-per-sec>
|
||||
</counter>
|
||||
|
||||
<particle>
|
||||
<start>
|
||||
<color>
|
||||
<red><value> 0.9 </value></red>
|
||||
<green><value> 0.9 </value></green>
|
||||
<blue><value> 0.9 </value></blue>
|
||||
<alpha><value> 0.3 </value></alpha>
|
||||
</color>
|
||||
<size>
|
||||
<value>0.3</value>
|
||||
</size>
|
||||
</start>
|
||||
|
||||
<end>
|
||||
<color>
|
||||
<red><value> 0.900 </value></red>
|
||||
<green><value> 0.900 </value></green>
|
||||
<blue><value> 0.900 </value></blue>
|
||||
<alpha><value> 0.001 </value></alpha>
|
||||
</color>
|
||||
<size>
|
||||
<value>10.0</value>
|
||||
</size>
|
||||
</end>
|
||||
|
||||
<life-sec>
|
||||
<value>60</value>
|
||||
</life-sec>
|
||||
|
||||
<mass-kg>0.001</mass-kg>
|
||||
<radius-m>1.0</radius-m>
|
||||
</particle>
|
||||
|
||||
<program>
|
||||
<fluid>air</fluid> <!-- air / water -->
|
||||
<gravity>false</gravity>
|
||||
<wind>true</wind>
|
||||
</program>
|
||||
|
||||
</particlesystem>
|
||||
|
||||
</PropertyList>
|
|
@ -0,0 +1,244 @@
|
|||
This model is based on the Rascal110 from FlightGear, and adapted for
|
||||
use in the ArduPilot test system. Many thanks to all who have
|
||||
contributed!
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
This information has not been updated for the Rascal, please ignore, we
|
||||
are still at pre-pre-pre-alpha with this model!
|
||||
|
||||
PIPER J3 CUB PERFORMANCE DATA
|
||||
=============================
|
||||
|
||||
[This information is copied from the 1946 J3C-65 owner's handbook.]
|
||||
|
||||
FLYING HINTS
|
||||
|
||||
The Piper Cub Special represents more than 15 years of diligent
|
||||
aircraft engineering and manufacturing experience. Its simplicity of
|
||||
design and construction, its low operating and maintenance costs, its
|
||||
inherent stability, ruggedness, and its outstanding safety and ease of
|
||||
flying, have made it the most popular airplane in aviation history.
|
||||
The Piper Cub Special is the time-tested product of millions of hours
|
||||
of flying under all conceivable conditions both in the military and in
|
||||
peace time.
|
||||
|
||||
There are hints on starting, flying, stopping, and other related
|
||||
topics that are important to the owner who wants to conserve his
|
||||
airplane -- keep it in maximum airworthy condition -- and enjoy a full
|
||||
measure of flying satisfaction.
|
||||
|
||||
|
||||
First, each pilot should become familiar enough with his Piper Cub
|
||||
Special that he can accomplish a satisfactory pre-flight inspection.
|
||||
This check is simple and requires only a few minutes. See Section IX
|
||||
for check list. Daily check of airplane prior to flight should be the
|
||||
first in a number of safe flying habits the pilot should acquire.
|
||||
|
||||
|
||||
A. BEFORE STARTING ENGINE
|
||||
|
||||
(1) Make routine check of gasoline supply. Visible fuel gauge is
|
||||
integral part of gas tank cap; it will not show number of gallons but
|
||||
will show proportion of fuel in tank by length of rod which extends
|
||||
upward from cap. A full tank of 12 U.S. gallons will be indicated by
|
||||
11 inches of rod extending beyond cap. Keep gas gauge rod clean and
|
||||
smooth with crocus cloth for accuracy and freedom of movement.
|
||||
|
||||
(2) Check oil level in engine sump by removing oil cap and gauge. Oil
|
||||
stick should indicate oil level up to index mark of 4 quarts.
|
||||
|
||||
(3) Check freedom of movement of flight and engine controls.
|
||||
|
||||
|
||||
B. STARTING ENGINE
|
||||
|
||||
(1) Chock wheels, or have occupant who is familiar with controls set
|
||||
brakes in cabin.
|
||||
|
||||
(2) Ignition switch OFF. Verify.
|
||||
|
||||
(3) Set throttle approximately 1/10 open.
|
||||
|
||||
(4) Push fuel shut-off ON.
|
||||
|
||||
(5) Turn propeller through several times.
|
||||
|
||||
(6) Turn ignition switch ON.
|
||||
|
||||
(7) Start engine by pulling propeller through with a snap.
|
||||
|
||||
CAUTION -- Always handle propeller as if switch were "ON." Stand as
|
||||
far in front of propeller as possible. Use both hands and grasp one
|
||||
blad approximately midway from tip. Do not overgrasp blade. Do not
|
||||
wear long, loose clothing. Make sure footing is sure to preclude
|
||||
possibility of feet slipping.
|
||||
|
||||
(8) If engine does not start, turn switch OFF. Turn primer knob to
|
||||
unlock, pull out, pump three or four times, then reseat primer and
|
||||
lock by turning in opposite direction. In extremely cold weather a
|
||||
few strokes of the primer as the engine starts will enable it to keep
|
||||
running. NOTE -- Avoid excessive priming as it causes raw gasoline to
|
||||
wash lubricating oil from engine cylinder walls. Do not prime warm
|
||||
engine.
|
||||
|
||||
(9) Repeat starting procedures 6, 7.
|
||||
|
||||
(10) If engine loads up and refuses to start, turn ignition switch
|
||||
"OFF,", open throttle wide and turn propeller through backwards
|
||||
several times to unload excessive gas mixture in cylinders. Then
|
||||
close throttle and repeat starting procedure.
|
||||
|
||||
|
||||
C. ENGINE WARM-UP
|
||||
|
||||
(1) As soon as engine starts, advance throttle slightly to idle at 700
|
||||
R.P.M. Check engine instruments. If oil pressure gauge does not
|
||||
indicate pressure within 30 seconds, stop engine immediately, check
|
||||
and correct trouble before any further operation. Oil temperature
|
||||
during operating should not rise above 200° F. and oil pressure should
|
||||
not fall below 30 pounds. With engine warm, idling speed should be
|
||||
550-600 R.P.M.
|
||||
|
||||
(2) Rev engine up to 2100 R.P.M. on both magnetos. Switch to LEFT and
|
||||
RIGHT magnetos. R.P.M. drop should not be over 75 R.P.M. CAUTION
|
||||
--Do not operate engine on either single magneto for more than 30
|
||||
seconds at a time, as this tends to foul the non-operating spark plugs
|
||||
in the ignition circuit of the magneto that is switched off.
|
||||
|
||||
|
||||
D. STOPPING ENGINE
|
||||
|
||||
(1) Never cut switch immediately after landing as this causes engine
|
||||
to cool too rapidly.
|
||||
|
||||
(2) Idle engine, especially in high temperature operating conditions,
|
||||
for several minutes. It is advisable to switch to each magneto for 30
|
||||
second intervals to allow gradual cooling of engine. This helps to
|
||||
prevent overheating of spark plug insulators and will lessen tendency
|
||||
for "after-firing."
|
||||
|
||||
(3) Check for carburetor heat OFF during idling.
|
||||
|
||||
|
||||
E. TAXIING
|
||||
|
||||
(1) Open throttle to start airplane in motion; then close throttle to
|
||||
a setting sufficient to keep airplane rolling. Do not keep throttle
|
||||
advanced so that it is necessary to control taxi speed of airplane
|
||||
with brakes. This causes unnecessary wear and tear on brakes and
|
||||
tires.
|
||||
|
||||
(2) Taxi slowly (speed of a fast walk) controlling direction with
|
||||
rudder which is connected to a steerable tail wheel. Use brakes only
|
||||
for positive, precision ground control when necessary.
|
||||
|
||||
(3) Taxi upwind with stick back; downwind with stick foreward. When
|
||||
ground winds are in excess of 15 M.P.H., turn into wind using ailerons
|
||||
in direction of turn; apply ailerons away from the turn when turning
|
||||
downwind. This procedure helps to prevent the wind "picking up" a
|
||||
wing during windy, gusty conditions. Always make ground turns slowly.
|
||||
|
||||
|
||||
F. GENERAL FLYING
|
||||
|
||||
(1) For takeoff use full throttle, heading into wind. Airplane loaded
|
||||
will become airborne at approximately 39 M.P.H. Best climb speed is
|
||||
an indicated 55 M.P.H.
|
||||
|
||||
(2) Indicated R.P.M. for cruising speed of 73 M.P.H. is 2150.
|
||||
Take-off R.P.M. is 2300. Do not fly at full throttle over 3 minutes.
|
||||
|
||||
(3) Use CARBURETOR AIR HEAT when engine runs "rough" and tachometer
|
||||
shows drop in R.P.M. which may be due to ice forming in carburetor.
|
||||
Tachometer should recover to within 50 R.P.M. below normal when using
|
||||
carburetor heat. Push heater to "OFF" position, and if icing
|
||||
condition has been cleared, R.P.M. should return to normal. Continued
|
||||
use of carburetor heat will only cause increased fuel consumption and
|
||||
loss of power.
|
||||
|
||||
(4) Maximum permissible diving speed is 122 M.P.H.
|
||||
|
||||
|
||||
G. APPROACH AND LANDING
|
||||
|
||||
(1) Push carburetor heat ON prior to throttling back for glide, or for
|
||||
any other flight maneuver.
|
||||
|
||||
(2) Glide between 50-60 M.P.H. depending upon loading of airplane and
|
||||
gust conditions.
|
||||
|
||||
NOTE -- "Clear" engine by opening throttle gently, every 200-250 feet
|
||||
of descent during a long glide so that engine temperature will be
|
||||
maintained.
|
||||
|
||||
Throttle action on the part of the pilot should be smooth and gentle
|
||||
at all times.
|
||||
|
||||
|
||||
H. PARKING AND MOORING
|
||||
|
||||
(1) After termination of flight, enter flying time in aircraft and
|
||||
engine log books.
|
||||
|
||||
(2) Turn ignition and fuel OFF.
|
||||
|
||||
(3) Chcok the wheels of airplane.
|
||||
|
||||
(4) If airplane is not to be flown for some time, it should be
|
||||
hangared or tied down. Use good quality 1/2" - 5/8" diameter rope.
|
||||
Secure to lift assist handle at aft end of fuselage; also at upper end
|
||||
of both front wing lift struts where they attach to wing. Make sure
|
||||
that rope passes between aileron cable and lift strut. Mooring ropes,
|
||||
when airplane is tied down, should have no slack.
|
||||
|
||||
(5) Lock aileron and elevator controls by wrapping front seat belt
|
||||
completely around rear control stick, tighten and buckle.
|
||||
|
||||
(6) Under excessively wind conditions, airplane should be tailed into
|
||||
wind for mooring.
|
||||
|
||||
|
||||
|
||||
|
||||
[Here is my older information.]
|
||||
|
||||
These are the only numbers I could find. They are for a J3 Cub with
|
||||
an 85HP engine rather than 65 hp, so some adjustments may be
|
||||
necessary. The source is
|
||||
|
||||
http://www.evergreenfs.com/planedata.htm
|
||||
|
||||
|
||||
Speeds
|
||||
------
|
||||
Best rate of climb (Vy): 65 mph (57 kt)
|
||||
Best angle of climb (Vx): 55 mph (48 kt)
|
||||
Cruise: 70 mph (61 kt)
|
||||
Never-exceed (Vne): 122 mph (106 kt)
|
||||
Best Glide (Vglide): 60 mph (52 kt)
|
||||
Stall (Vs): 38 mph (33 kt)
|
||||
Maneuvering (Va): 70 mph (61 kt)
|
||||
Approach: 50-60 mph (44-52 kt)
|
||||
|
||||
Power
|
||||
-----
|
||||
Take off: full
|
||||
Climb: 50 rpm below full
|
||||
Cruise: 2300 rpm
|
||||
Approach: 1200 rpm
|
||||
Practice stalls: 1200 rpm
|
||||
|
||||
Distances
|
||||
---------
|
||||
Take-off: 450-800 ft
|
||||
Landing: 200-800 ft
|
||||
|
||||
Fuel
|
||||
----
|
||||
Total fuel: 12 gal US
|
||||
Usable fuel: 12 gal US
|
||||
Grade: 80/87
|
||||
GPH: 5 gal US/hr
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<key n="9">
|
||||
<name>Ctrl-I</name>
|
||||
<desc>Show configuration dialog</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>rascal.dialog.toggle()</script>
|
||||
</binding>
|
||||
</key>
|
||||
|
||||
<key n="83">
|
||||
<name>S</name>
|
||||
<desc>Toggle smoke</desc>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>sim/multiplay/generic/int[0]</property>
|
||||
</binding>
|
||||
</key>
|
||||
|
||||
</PropertyList>
|
|
@ -0,0 +1,25 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<submodel>
|
||||
<name>trajectory marker</name>
|
||||
<model>Aircraft/Rascal/Models/Trajectory-Marker.xml</model>
|
||||
<trigger>/sim/multiplay/generic/int[1]</trigger>
|
||||
<speed>0</speed>
|
||||
<repeat>true</repeat>
|
||||
<delay>0.75</delay>
|
||||
<count>-1</count>
|
||||
<x-offset>-0.5</x-offset>
|
||||
<y-offset>0.0</y-offset>
|
||||
<z-offset>-0.08</z-offset>
|
||||
<yaw-offset>0.0</yaw-offset>
|
||||
<pitch-offset>0.0</pitch-offset>
|
||||
<eda>1000000000.00</eda>
|
||||
<life>600</life>
|
||||
<buoyancy>32</buoyancy>
|
||||
<wind>false</wind>
|
||||
<aero-stabilised>false</aero-stabilised>
|
||||
</submodel>
|
||||
|
||||
</PropertyList>
|
|
@ -0,0 +1,527 @@
|
|||
<?xml version="1.0"?>
|
||||
<?xml-stylesheet href="http://jsbsim.sourceforge.net/JSBSim.xsl" type="text/xsl"?>
|
||||
<fdm_config name="rascal" version="2.0" release="BETA"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
||||
|
||||
<fileheader>
|
||||
<author> Author Name </author>
|
||||
<filecreationdate> Creation Date </filecreationdate>
|
||||
<version> Version </version>
|
||||
<description> Models a rascal </description>
|
||||
</fileheader>
|
||||
|
||||
<metrics>
|
||||
<wingarea unit="FT2"> 10.57 </wingarea>
|
||||
<wingspan unit="FT"> 9.17 </wingspan>
|
||||
<chord unit="FT"> 1.15 </chord>
|
||||
<htailarea unit="FT2"> 1.69 </htailarea>
|
||||
<htailarm unit="FT"> 3.28 </htailarm>
|
||||
<vtailarea unit="FT2"> 1.06 </vtailarea>
|
||||
<vtailarm unit="FT"> 0 </vtailarm>
|
||||
<location name="AERORP" unit="IN">
|
||||
<x> 37.4 </x>
|
||||
<y> 0 </y>
|
||||
<z> 0 </z>
|
||||
</location>
|
||||
<location name="EYEPOINT" unit="IN">
|
||||
<x> 20 </x>
|
||||
<y> 0 </y>
|
||||
<z> 5 </z>
|
||||
</location>
|
||||
<location name="VRP" unit="IN">
|
||||
<x> 0 </x>
|
||||
<y> 0 </y>
|
||||
<z> 0 </z>
|
||||
</location>
|
||||
</metrics>
|
||||
|
||||
<mass_balance>
|
||||
<ixx unit="SLUG*FT2"> 1.95 </ixx>
|
||||
<iyy unit="SLUG*FT2"> 1.55 </iyy>
|
||||
<izz unit="SLUG*FT2"> 1.91 </izz>
|
||||
<ixy unit="SLUG*FT2"> 0 </ixy>
|
||||
<ixz unit="SLUG*FT2"> 0 </ixz>
|
||||
<iyz unit="SLUG*FT2"> 0 </iyz>
|
||||
<emptywt unit="LBS"> 13 </emptywt>
|
||||
<location name="CG" unit="IN">
|
||||
<x> 36.4 </x>
|
||||
<y> 0 </y>
|
||||
<z> 4 </z>
|
||||
</location>
|
||||
</mass_balance>
|
||||
|
||||
<ground_reactions>
|
||||
<contact type="BOGEY" name="LEFT_MLG">
|
||||
<location unit="IN">
|
||||
<x> 33.1 </x>
|
||||
<y> -9.9 </y>
|
||||
<z> -13.1 </z>
|
||||
</location>
|
||||
<static_friction> 1.0 </static_friction>
|
||||
<dynamic_friction> 0.8 </dynamic_friction>
|
||||
<rolling_friction> 0.02 </rolling_friction>
|
||||
<spring_coeff unit="LBS/FT"> 12 </spring_coeff>
|
||||
<damping_coeff unit="LBS/FT/SEC"> 1 </damping_coeff>
|
||||
<max_steer unit="DEG"> 0.0 </max_steer>
|
||||
<brake_group> NONE </brake_group>
|
||||
<retractable>0</retractable>
|
||||
</contact>
|
||||
<contact type="BOGEY" name="RIGHT_MLG">
|
||||
<location unit="IN">
|
||||
<x> 33.1 </x>
|
||||
<y> 9.9 </y>
|
||||
<z> -13.1 </z>
|
||||
</location>
|
||||
<static_friction> 1.0 </static_friction>
|
||||
<dynamic_friction> 0.8 </dynamic_friction>
|
||||
<rolling_friction> 0.02 </rolling_friction>
|
||||
<spring_coeff unit="LBS/FT"> 12 </spring_coeff>
|
||||
<damping_coeff unit="LBS/FT/SEC"> 1 </damping_coeff>
|
||||
<max_steer unit="DEG"> 0.0 </max_steer>
|
||||
<brake_group> NONE </brake_group>
|
||||
<retractable>0</retractable>
|
||||
</contact>
|
||||
<contact type="BOGEY" name="TAIL_LG">
|
||||
<location unit="IN">
|
||||
<x> 68.9 </x>
|
||||
<y> 0 </y>
|
||||
<!-- this sets the position of the tail wheel much
|
||||
lower than it should be, so that we start with
|
||||
zero pitch, which makes for a better simulation
|
||||
of ground start on the accelerometers/gyros in
|
||||
ArduPlane -->
|
||||
<z> -7.8 </z>
|
||||
</location>
|
||||
<static_friction> 1.0 </static_friction>
|
||||
<dynamic_friction> 0.8 </dynamic_friction>
|
||||
<rolling_friction> 0.02 </rolling_friction>
|
||||
<spring_coeff unit="LBS/FT"> 12 </spring_coeff>
|
||||
<damping_coeff unit="LBS/FT/SEC"> 1 </damping_coeff>
|
||||
<max_steer unit="DEG"> 360.0 </max_steer>
|
||||
<brake_group> NONE </brake_group>
|
||||
<retractable>0</retractable>
|
||||
</contact>
|
||||
</ground_reactions>
|
||||
|
||||
<propulsion>
|
||||
<engine file="Zenoah_G-26A">
|
||||
<location unit="IN">
|
||||
<x> 36 </x>
|
||||
<y> 0 </y>
|
||||
<z> 0 </z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<roll> 0.0 </roll>
|
||||
<pitch> 0 </pitch>
|
||||
<yaw> 0 </yaw>
|
||||
</orient>
|
||||
<feed>0</feed>
|
||||
<thruster file="18x8">
|
||||
<location unit="IN">
|
||||
<x> 1 </x>
|
||||
<y> 0 </y>
|
||||
<z> 0 </z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<roll> 0.0 </roll>
|
||||
<pitch> 0.0 </pitch>
|
||||
<yaw> 0.0 </yaw>
|
||||
</orient>
|
||||
<p_factor>1.0</p_factor>
|
||||
</thruster>
|
||||
</engine>
|
||||
<tank type="FUEL"> <!-- Tank number 0 -->
|
||||
<location unit="IN">
|
||||
<x> 36.36 </x>
|
||||
<y> 0 </y>
|
||||
<z> -1.89375 </z>
|
||||
</location>
|
||||
<capacity unit="LBS"> 1.5 </capacity>
|
||||
<contents unit="LBS"> 1.5 </contents>
|
||||
</tank>
|
||||
</propulsion>
|
||||
|
||||
<flight_control name="FCS: rascal">
|
||||
<channel name="All">
|
||||
|
||||
<summer name="Pitch Trim Sum">
|
||||
<input>fcs/elevator-cmd-norm</input>
|
||||
<input>fcs/pitch-trim-cmd-norm</input>
|
||||
<clipto>
|
||||
<min>-1</min>
|
||||
<max>1</max>
|
||||
</clipto>
|
||||
</summer>
|
||||
|
||||
<aerosurface_scale name="Elevator Control">
|
||||
<input>fcs/pitch-trim-sum</input>
|
||||
<range>
|
||||
<min>-0.35</min>
|
||||
<max>0.3</max>
|
||||
</range>
|
||||
<output>fcs/elevator-pos-rad</output>
|
||||
</aerosurface_scale>
|
||||
|
||||
<aerosurface_scale name="Elevator Normalized">
|
||||
<input>fcs/elevator-pos-rad</input>
|
||||
<domain>
|
||||
<min>-0.3</min>
|
||||
<max> 0.3</max>
|
||||
</domain>
|
||||
<range>
|
||||
<min>-1</min>
|
||||
<max> 1</max>
|
||||
</range>
|
||||
<output>fcs/elevator-pos-norm</output>
|
||||
</aerosurface_scale>
|
||||
|
||||
<summer name="Roll Trim Sum">
|
||||
<input>fcs/aileron-cmd-norm</input>
|
||||
<input>fcs/roll-trim-cmd-norm</input>
|
||||
<clipto>
|
||||
<min>-1</min>
|
||||
<max>1</max>
|
||||
</clipto>
|
||||
</summer>
|
||||
|
||||
<aerosurface_scale name="Left Aileron Control">
|
||||
<input>fcs/roll-trim-sum</input>
|
||||
<range>
|
||||
<min>-0.35</min>
|
||||
<max>0.35</max>
|
||||
</range>
|
||||
<output>fcs/left-aileron-pos-rad</output>
|
||||
</aerosurface_scale>
|
||||
|
||||
<aerosurface_scale name="Right Aileron Control">
|
||||
<input>-fcs/roll-trim-sum</input>
|
||||
<range>
|
||||
<min>-0.35</min>
|
||||
<max>0.35</max>
|
||||
</range>
|
||||
<output>fcs/right-aileron-pos-rad</output>
|
||||
</aerosurface_scale>
|
||||
|
||||
<aerosurface_scale name="Left aileron Normalized">
|
||||
<input>fcs/left-aileron-pos-rad</input>
|
||||
<domain>
|
||||
<min>-0.35</min>
|
||||
<max> 0.35</max>
|
||||
</domain>
|
||||
<range>
|
||||
<min>-1</min>
|
||||
<max> 1</max>
|
||||
</range>
|
||||
<output>fcs/left-aileron-pos-norm</output>
|
||||
</aerosurface_scale>
|
||||
|
||||
<aerosurface_scale name="Right aileron Normalized">
|
||||
<input>fcs/right-aileron-pos-rad</input>
|
||||
<domain>
|
||||
<min>-0.35</min>
|
||||
<max> 0.35</max>
|
||||
</domain>
|
||||
<range>
|
||||
<min>-1</min>
|
||||
<max> 1</max>
|
||||
</range>
|
||||
<output>fcs/right-aileron-pos-norm</output>
|
||||
</aerosurface_scale>
|
||||
|
||||
<summer name="Rudder Command Sum">
|
||||
<input>fcs/rudder-cmd-norm</input>
|
||||
<input>fcs/yaw-trim-cmd-norm</input>
|
||||
<clipto>
|
||||
<min>-1</min>
|
||||
<max>1</max>
|
||||
</clipto>
|
||||
</summer>
|
||||
|
||||
<aerosurface_scale name="Rudder Control">
|
||||
<input>fcs/rudder-command-sum</input>
|
||||
<range>
|
||||
<min>-0.35</min>
|
||||
<max>0.35</max>
|
||||
</range>
|
||||
<output>fcs/rudder-pos-rad</output>
|
||||
</aerosurface_scale>
|
||||
|
||||
<aerosurface_scale name="Rudder Normalized">
|
||||
<input>fcs/rudder-pos-rad</input>
|
||||
<domain>
|
||||
<min>-0.35</min>
|
||||
<max> 0.35</max>
|
||||
</domain>
|
||||
<range>
|
||||
<min>-1</min>
|
||||
<max> 1</max>
|
||||
</range>
|
||||
<output>fcs/rudder-pos-norm</output>
|
||||
</aerosurface_scale>
|
||||
</channel>
|
||||
</flight_control>
|
||||
|
||||
<aerodynamics>
|
||||
<axis name="DRAG">
|
||||
<function name="aero/coefficient/CD0">
|
||||
<description>Drag_at_zero_lift</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<table>
|
||||
<independentVar>aero/alpha-rad</independentVar>
|
||||
<tableData>
|
||||
-1.5700 1.5000
|
||||
-0.2600 0.0560
|
||||
0.0000 0.0280
|
||||
0.2600 0.0560
|
||||
1.5700 1.5000
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/CDi">
|
||||
<description>Induced_drag</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>aero/cl-squared</property>
|
||||
<value>0.0400</value>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/CDbeta">
|
||||
<description>Drag_due_to_sideslip</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<table>
|
||||
<independentVar>aero/beta-rad</independentVar>
|
||||
<tableData>
|
||||
-1.5700 1.2300
|
||||
-0.2600 0.0500
|
||||
0.0000 0.0000
|
||||
0.2600 0.0500
|
||||
1.5700 1.2300
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/CDde">
|
||||
<description>Drag_due_to_Elevator_Deflection</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>fcs/elevator-pos-norm</property>
|
||||
<value>0.0300</value>
|
||||
</product>
|
||||
</function>
|
||||
</axis>
|
||||
|
||||
<axis name="SIDE">
|
||||
<function name="aero/coefficient/CYb">
|
||||
<description>Side_force_due_to_beta</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>aero/beta-rad</property>
|
||||
<value>-1.0000</value>
|
||||
</product>
|
||||
</function>
|
||||
</axis>
|
||||
|
||||
<axis name="LIFT">
|
||||
<function name="aero/coefficient/CLalpha">
|
||||
<description>Lift_due_to_alpha</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<table>
|
||||
<independentVar>aero/alpha-rad</independentVar>
|
||||
<tableData>
|
||||
-0.2000 -0.7500
|
||||
0.0000 0.2500
|
||||
0.2300 1.4000
|
||||
0.6000 0.7100
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/CLde">
|
||||
<description>Lift_due_to_Elevator_Deflection</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>fcs/elevator-pos-rad</property>
|
||||
<value>0.2000</value>
|
||||
</product>
|
||||
</function>
|
||||
</axis>
|
||||
|
||||
<axis name="ROLL">
|
||||
<function name="aero/coefficient/Clb">
|
||||
<description>Roll_moment_due_to_beta</description>
|
||||
<!-- aka dihedral effect -->
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/bw-ft</property>
|
||||
<property>aero/beta-rad</property>
|
||||
<value>-0.1000</value>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/Clp">
|
||||
<description>Roll_moment_due_to_roll_rate</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/bw-ft</property>
|
||||
<property>aero/bi2vel</property>
|
||||
<property>velocities/p-aero-rad_sec</property>
|
||||
<value>-0.4000</value>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/Clr">
|
||||
<description>Roll_moment_due_to_yaw_rate</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/bw-ft</property>
|
||||
<property>aero/bi2vel</property>
|
||||
<property>velocities/r-aero-rad_sec</property>
|
||||
<value>0.1500</value>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/Clda">
|
||||
<description>Roll_moment_due_to_aileron</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/bw-ft</property>
|
||||
<property>fcs/left-aileron-pos-rad</property>
|
||||
<table>
|
||||
<independentVar>velocities/mach</independentVar>
|
||||
<tableData>
|
||||
0.0000 0.1300
|
||||
2.0000 0.0570
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/Cldr">
|
||||
<description>Roll_moment_due_to_rudder</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/bw-ft</property>
|
||||
<property>fcs/rudder-pos-rad</property>
|
||||
<value>0.0100</value>
|
||||
</product>
|
||||
</function>
|
||||
</axis>
|
||||
|
||||
<axis name="PITCH">
|
||||
<function name="aero/coefficient/Cmalpha">
|
||||
<description>Pitch_moment_due_to_alpha</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/cbarw-ft</property>
|
||||
<property>aero/alpha-rad</property>
|
||||
<value>-0.5000</value>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/Cmde">
|
||||
<description>Pitch_moment_due_to_elevator</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/cbarw-ft</property>
|
||||
<property>fcs/elevator-pos-rad</property>
|
||||
<table>
|
||||
<independentVar>velocities/mach</independentVar>
|
||||
<tableData>
|
||||
0.0000 -0.5000 <!-- was -1.1 -->
|
||||
2.0000 -0.2750
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/Cmq">
|
||||
<description>Pitch_moment_due_to_pitch_rate</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/cbarw-ft</property>
|
||||
<property>aero/ci2vel</property>
|
||||
<property>velocities/q-aero-rad_sec</property>
|
||||
<value>-12.0000</value>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/Cmadot">
|
||||
<description>Pitch_moment_due_to_alpha_rate</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/cbarw-ft</property>
|
||||
<property>aero/ci2vel</property>
|
||||
<property>aero/alphadot-rad_sec</property>
|
||||
<value>-7.0000</value>
|
||||
</product>
|
||||
</function>
|
||||
</axis>
|
||||
|
||||
<axis name="YAW">
|
||||
<function name="aero/coefficient/Cnb">
|
||||
<description>Yaw_moment_due_to_beta</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/bw-ft</property>
|
||||
<property>aero/beta-rad</property>
|
||||
<value>0.1200</value>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/Cnr">
|
||||
<description>Yaw_moment_due_to_yaw_rate</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/bw-ft</property>
|
||||
<property>aero/bi2vel</property>
|
||||
<property>velocities/r-aero-rad_sec</property>
|
||||
<value>-0.1500</value>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/Cndr">
|
||||
<description>Yaw_moment_due_to_rudder</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/bw-ft</property>
|
||||
<property>fcs/rudder-pos-rad</property>
|
||||
<value>-0.0500</value>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/Cnda">
|
||||
<description>Adverse_yaw</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/bw-ft</property>
|
||||
<property>fcs/left-aileron-pos-rad</property>
|
||||
<value>-0.0300</value>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/Cndi">
|
||||
<description>Yaw_moment_due_to_tail_incidence</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/bw-ft</property>
|
||||
<value>0.0007</value>
|
||||
</product>
|
||||
</function>
|
||||
</axis>
|
||||
</aerodynamics>
|
||||
</fdm_config>
|
|
@ -0,0 +1,172 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
************************************************************************
|
||||
Rascal 110 R/C airplane config. This files ties together all the components
|
||||
used by FGFS to represent the Rascal 110 (by Sig Mfg) including the flight
|
||||
dynamics model, and external 3D model.
|
||||
************************************************************************
|
||||
-->
|
||||
|
||||
<PropertyList>
|
||||
<sim>
|
||||
|
||||
<description>Rascal 110 (R/C)</description>
|
||||
<author>Lee Elliot (3D) Dave Culp (JSBsim dynamics) and Curt Olson</author>
|
||||
<aircraft-version>0.1</aircraft-version>
|
||||
<model-hz>400</model-hz>
|
||||
|
||||
<startup>
|
||||
<splash-texture>Aircraft/Rascal/Rascal110-splash.rgb</splash-texture>
|
||||
</startup>
|
||||
|
||||
<flight-model>jsb</flight-model>
|
||||
<aero>Rascal110-JSBSim</aero>
|
||||
<fuel-fraction>0.8</fuel-fraction>
|
||||
|
||||
<systems>
|
||||
<autopilot>
|
||||
<path>Aircraft/Rascal/Systems/110-autopilot.xml</path>
|
||||
</autopilot>
|
||||
<electrical>
|
||||
<path>Aircraft/Rascal/Systems/electrical.xml</path>
|
||||
</electrical>
|
||||
</systems>
|
||||
|
||||
<sound>
|
||||
<path>Aircraft/Generic/generic-sound.xml</path>
|
||||
</sound>
|
||||
|
||||
<panel>
|
||||
<visibility archive="n">false</visibility>
|
||||
</panel>
|
||||
|
||||
<model>
|
||||
<path archive="y">Aircraft/Rascal/Models/Rascal110.xml</path>
|
||||
</model>
|
||||
|
||||
<view>
|
||||
<internal archive="y">true</internal>
|
||||
<config>
|
||||
<x-offset-m archive="y">0.0</x-offset-m>
|
||||
<y-offset-m archive="y">-0.15</y-offset-m>
|
||||
<z-offset-m archive="y">0.9</z-offset-m>
|
||||
<pitch-offset-deg>0</pitch-offset-deg>
|
||||
</config>
|
||||
</view>
|
||||
|
||||
<submodels>
|
||||
<serviceable type="bool">1</serviceable>
|
||||
<path>Aircraft/Rascal/Rascal-submodels.xml</path>
|
||||
</submodels>
|
||||
|
||||
<view n="1">
|
||||
<config>
|
||||
<target-z-offset-m archive="y" type="double">0.5</target-z-offset-m>
|
||||
</config>
|
||||
</view>
|
||||
|
||||
<view n="2">
|
||||
<config>
|
||||
<target-z-offset-m archive="y" type="double">0.5</target-z-offset-m>
|
||||
</config>
|
||||
</view>
|
||||
|
||||
<view n="3">
|
||||
<config>
|
||||
<target-z-offset-m archive="y" type="double">0.5</target-z-offset-m>
|
||||
</config>
|
||||
</view>
|
||||
|
||||
<view n="4">
|
||||
<config>
|
||||
<target-z-offset-m archive="y" type="double">0.5</target-z-offset-m>
|
||||
</config>
|
||||
</view>
|
||||
|
||||
<view n="5">
|
||||
<config>
|
||||
<target-z-offset-m archive="y" type="double">0.5</target-z-offset-m>
|
||||
</config>
|
||||
</view>
|
||||
|
||||
<view n="6">
|
||||
<config>
|
||||
<target-z-offset-m archive="y" type="double">0.5</target-z-offset-m>
|
||||
</config>
|
||||
</view>
|
||||
|
||||
<multiplay>
|
||||
<chat_display>1</chat_display>
|
||||
<generic>
|
||||
<int type="bool">0</int> <!-- smoke -->
|
||||
<int type="bool">0</int> <!-- trajectory markers -->
|
||||
</generic>
|
||||
</multiplay>
|
||||
|
||||
<help>
|
||||
<title>Rascal 110 (Sig Mfg)</title>
|
||||
<line>Cruise speed: 60 kts</line>
|
||||
<line>Never-exceed (Vne): 85 kts</line>
|
||||
<line>Best Glide (Vglide): 20 kts</line>
|
||||
<line>Maneuvering (Va): 50 kts</line>
|
||||
<line>Approach speed: 20-25 kts</line>
|
||||
<line>Stall speed (Vs): 15 kts</line>
|
||||
</help>
|
||||
|
||||
</sim>
|
||||
|
||||
<nasal>
|
||||
<rascal>
|
||||
<file>Aircraft/Rascal/Systems/main.nas</file>
|
||||
<file>Aircraft/Rascal/Systems/airdata.nas</file>
|
||||
<file>Aircraft/Rascal/Systems/ugear.nas</file>
|
||||
<script>
|
||||
setlistener("/sim/signals/fdm-initialized", func {
|
||||
var left = screen.display.new(20, 10);
|
||||
left.add("/surface-positions/right-aileron-pos-norm");
|
||||
left.add("/surface-positions/elevator-pos-norm");
|
||||
left.add("/surface-positions/rudder-pos-norm");
|
||||
left.add("/engines/engine/rpm");
|
||||
|
||||
var right = screen.display.new(-250, 20);
|
||||
right.add("/orientation/pitch-deg");
|
||||
right.add("/orientation/roll-deg");
|
||||
right.add("/position/altitude-agl-ft");
|
||||
right.add("/velocities/airspeed-kt");
|
||||
});
|
||||
</script>
|
||||
</rascal>
|
||||
</nasal>
|
||||
|
||||
<yasim>
|
||||
<Rascal110>
|
||||
<pilot-lb>2</pilot-lb>
|
||||
</Rascal110>
|
||||
</yasim>
|
||||
|
||||
<input>
|
||||
<keyboard include="Rascal-keyboard.xml"/>
|
||||
</input>
|
||||
|
||||
<controls>
|
||||
<flight>
|
||||
<aileron-trim>-0.01</aileron-trim> <!-- fixed -->
|
||||
<elevator-trim>0.00</elevator-trim> <!-- controllable -->
|
||||
<rudder-trim>0.00</rudder-trim> <!-- fixed -->
|
||||
</flight>
|
||||
<engines>
|
||||
<engine n="0">
|
||||
<magnetos>3</magnetos>
|
||||
</engine>
|
||||
</engines>
|
||||
<smoke alias="/sim/multiplay/generic/int[0]"/>
|
||||
<trajectory-markers alias="/sim/multiplay/generic/int[1]"/>
|
||||
</controls>
|
||||
|
||||
<engines>
|
||||
<engine>
|
||||
<rpm type="double">700</rpm>
|
||||
</engine>
|
||||
</engines>
|
||||
|
||||
</PropertyList>
|
|
@ -0,0 +1,522 @@
|
|||
<?xml version="1.0"?>
|
||||
<?xml-stylesheet href="http://jsbsim.sourceforge.net/JSBSim.xsl" type="text/xsl"?>
|
||||
<fdm_config name="rascal" version="2.0" release="BETA"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
||||
|
||||
<fileheader>
|
||||
<author> Author Name </author>
|
||||
<filecreationdate> Creation Date </filecreationdate>
|
||||
<version> Version </version>
|
||||
<description> Models a rascal </description>
|
||||
</fileheader>
|
||||
|
||||
<metrics>
|
||||
<wingarea unit="FT2"> 10.57 </wingarea>
|
||||
<wingspan unit="FT"> 9.17 </wingspan>
|
||||
<chord unit="FT"> 1.15 </chord>
|
||||
<htailarea unit="FT2"> 1.69 </htailarea>
|
||||
<htailarm unit="FT"> 3.28 </htailarm>
|
||||
<vtailarea unit="FT2"> 1.06 </vtailarea>
|
||||
<vtailarm unit="FT"> 0 </vtailarm>
|
||||
<location name="AERORP" unit="IN">
|
||||
<x> 37.4 </x>
|
||||
<y> 0 </y>
|
||||
<z> 0 </z>
|
||||
</location>
|
||||
<location name="EYEPOINT" unit="IN">
|
||||
<x> 20 </x>
|
||||
<y> 0 </y>
|
||||
<z> 5 </z>
|
||||
</location>
|
||||
<location name="VRP" unit="IN">
|
||||
<x> 0 </x>
|
||||
<y> 0 </y>
|
||||
<z> 0 </z>
|
||||
</location>
|
||||
</metrics>
|
||||
|
||||
<mass_balance>
|
||||
<ixx unit="SLUG*FT2"> 1.95 </ixx>
|
||||
<iyy unit="SLUG*FT2"> 1.55 </iyy>
|
||||
<izz unit="SLUG*FT2"> 1.91 </izz>
|
||||
<ixy unit="SLUG*FT2"> 0 </ixy>
|
||||
<ixz unit="SLUG*FT2"> 0 </ixz>
|
||||
<iyz unit="SLUG*FT2"> 0 </iyz>
|
||||
<emptywt unit="LBS"> 13 </emptywt>
|
||||
<location name="CG" unit="IN">
|
||||
<x> 36.4 </x>
|
||||
<y> 0 </y>
|
||||
<z> 4 </z>
|
||||
</location>
|
||||
</mass_balance>
|
||||
|
||||
<ground_reactions>
|
||||
<contact type="BOGEY" name="LEFT_MLG">
|
||||
<location unit="IN">
|
||||
<x> 33.1 </x>
|
||||
<y> -9.9 </y>
|
||||
<z> -13.1 </z>
|
||||
</location>
|
||||
<static_friction> 0.8 </static_friction>
|
||||
<dynamic_friction> 0.5 </dynamic_friction>
|
||||
<rolling_friction> 0.02 </rolling_friction>
|
||||
<spring_coeff unit="LBS/FT"> 120 </spring_coeff>
|
||||
<damping_coeff unit="LBS/FT/SEC"> 20 </damping_coeff>
|
||||
<max_steer unit="DEG"> 0.0 </max_steer>
|
||||
<brake_group> LEFT </brake_group>
|
||||
<retractable>0</retractable>
|
||||
</contact>
|
||||
<contact type="BOGEY" name="RIGHT_MLG">
|
||||
<location unit="IN">
|
||||
<x> 33.1 </x>
|
||||
<y> 9.9 </y>
|
||||
<z> -13.1 </z>
|
||||
</location>
|
||||
<static_friction> 0.8 </static_friction>
|
||||
<dynamic_friction> 0.5 </dynamic_friction>
|
||||
<rolling_friction> 0.02 </rolling_friction>
|
||||
<spring_coeff unit="LBS/FT"> 120 </spring_coeff>
|
||||
<damping_coeff unit="LBS/FT/SEC"> 20 </damping_coeff>
|
||||
<max_steer unit="DEG"> 0.0 </max_steer>
|
||||
<brake_group> RIGHT </brake_group>
|
||||
<retractable>0</retractable>
|
||||
</contact>
|
||||
<contact type="BOGEY" name="TAIL_LG">
|
||||
<location unit="IN">
|
||||
<x> 68.9 </x>
|
||||
<y> 0 </y>
|
||||
<z> -6.6 </z>
|
||||
</location>
|
||||
<static_friction> 0.8 </static_friction>
|
||||
<dynamic_friction> 0.5 </dynamic_friction>
|
||||
<rolling_friction> 0.02 </rolling_friction>
|
||||
<spring_coeff unit="LBS/FT"> 24 </spring_coeff>
|
||||
<damping_coeff unit="LBS/FT/SEC"> 20 </damping_coeff>
|
||||
<max_steer unit="DEG"> 360.0 </max_steer>
|
||||
<brake_group> NONE </brake_group>
|
||||
<retractable>0</retractable>
|
||||
</contact>
|
||||
</ground_reactions>
|
||||
|
||||
<propulsion>
|
||||
<engine file="Zenoah_G-26A">
|
||||
<location unit="IN">
|
||||
<x> 36 </x>
|
||||
<y> 0 </y>
|
||||
<z> 0 </z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<roll> 0.0 </roll>
|
||||
<pitch> 0 </pitch>
|
||||
<yaw> 0 </yaw>
|
||||
</orient>
|
||||
<feed>0</feed>
|
||||
<thruster file="18x8">
|
||||
<location unit="IN">
|
||||
<x> 1 </x>
|
||||
<y> 0 </y>
|
||||
<z> 0 </z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<roll> 0.0 </roll>
|
||||
<pitch> 0.0 </pitch>
|
||||
<yaw> 0.0 </yaw>
|
||||
</orient>
|
||||
<p_factor>1.0</p_factor>
|
||||
</thruster>
|
||||
</engine>
|
||||
<tank type="FUEL"> <!-- Tank number 0 -->
|
||||
<location unit="IN">
|
||||
<x> 36.36 </x>
|
||||
<y> 0 </y>
|
||||
<z> -1.89375 </z>
|
||||
</location>
|
||||
<capacity unit="LBS"> 1.5 </capacity>
|
||||
<contents unit="LBS"> 1.5 </contents>
|
||||
</tank>
|
||||
</propulsion>
|
||||
|
||||
<flight_control name="FCS: rascal">
|
||||
<channel name="All">
|
||||
|
||||
<summer name="Pitch Trim Sum">
|
||||
<input>fcs/elevator-cmd-norm</input>
|
||||
<input>fcs/pitch-trim-cmd-norm</input>
|
||||
<clipto>
|
||||
<min>-1</min>
|
||||
<max>1</max>
|
||||
</clipto>
|
||||
</summer>
|
||||
|
||||
<aerosurface_scale name="Elevator Control">
|
||||
<input>fcs/pitch-trim-sum</input>
|
||||
<range>
|
||||
<min>-0.35</min>
|
||||
<max>0.3</max>
|
||||
</range>
|
||||
<output>fcs/elevator-pos-rad</output>
|
||||
</aerosurface_scale>
|
||||
|
||||
<aerosurface_scale name="Elevator Normalized">
|
||||
<input>fcs/elevator-pos-rad</input>
|
||||
<domain>
|
||||
<min>-0.3</min>
|
||||
<max> 0.3</max>
|
||||
</domain>
|
||||
<range>
|
||||
<min>-1</min>
|
||||
<max> 1</max>
|
||||
</range>
|
||||
<output>fcs/elevator-pos-norm</output>
|
||||
</aerosurface_scale>
|
||||
|
||||
<summer name="Roll Trim Sum">
|
||||
<input>fcs/aileron-cmd-norm</input>
|
||||
<input>fcs/roll-trim-cmd-norm</input>
|
||||
<clipto>
|
||||
<min>-1</min>
|
||||
<max>1</max>
|
||||
</clipto>
|
||||
</summer>
|
||||
|
||||
<aerosurface_scale name="Left Aileron Control">
|
||||
<input>fcs/roll-trim-sum</input>
|
||||
<range>
|
||||
<min>-0.35</min>
|
||||
<max>0.35</max>
|
||||
</range>
|
||||
<output>fcs/left-aileron-pos-rad</output>
|
||||
</aerosurface_scale>
|
||||
|
||||
<aerosurface_scale name="Right Aileron Control">
|
||||
<input>-fcs/roll-trim-sum</input>
|
||||
<range>
|
||||
<min>-0.35</min>
|
||||
<max>0.35</max>
|
||||
</range>
|
||||
<output>fcs/right-aileron-pos-rad</output>
|
||||
</aerosurface_scale>
|
||||
|
||||
<aerosurface_scale name="Left aileron Normalized">
|
||||
<input>fcs/left-aileron-pos-rad</input>
|
||||
<domain>
|
||||
<min>-0.35</min>
|
||||
<max> 0.35</max>
|
||||
</domain>
|
||||
<range>
|
||||
<min>-1</min>
|
||||
<max> 1</max>
|
||||
</range>
|
||||
<output>fcs/left-aileron-pos-norm</output>
|
||||
</aerosurface_scale>
|
||||
|
||||
<aerosurface_scale name="Right aileron Normalized">
|
||||
<input>fcs/right-aileron-pos-rad</input>
|
||||
<domain>
|
||||
<min>-0.35</min>
|
||||
<max> 0.35</max>
|
||||
</domain>
|
||||
<range>
|
||||
<min>-1</min>
|
||||
<max> 1</max>
|
||||
</range>
|
||||
<output>fcs/right-aileron-pos-norm</output>
|
||||
</aerosurface_scale>
|
||||
|
||||
<summer name="Rudder Command Sum">
|
||||
<input>fcs/rudder-cmd-norm</input>
|
||||
<input>fcs/yaw-trim-cmd-norm</input>
|
||||
<clipto>
|
||||
<min>-1</min>
|
||||
<max>1</max>
|
||||
</clipto>
|
||||
</summer>
|
||||
|
||||
<aerosurface_scale name="Rudder Control">
|
||||
<input>fcs/rudder-command-sum</input>
|
||||
<range>
|
||||
<min>-0.35</min>
|
||||
<max>0.35</max>
|
||||
</range>
|
||||
<output>fcs/rudder-pos-rad</output>
|
||||
</aerosurface_scale>
|
||||
|
||||
<aerosurface_scale name="Rudder Normalized">
|
||||
<input>fcs/rudder-pos-rad</input>
|
||||
<domain>
|
||||
<min>-0.35</min>
|
||||
<max> 0.35</max>
|
||||
</domain>
|
||||
<range>
|
||||
<min>-1</min>
|
||||
<max> 1</max>
|
||||
</range>
|
||||
<output>fcs/rudder-pos-norm</output>
|
||||
</aerosurface_scale>
|
||||
</channel>
|
||||
</flight_control>
|
||||
|
||||
<aerodynamics>
|
||||
<axis name="DRAG">
|
||||
<function name="aero/coefficient/CD0">
|
||||
<description>Drag_at_zero_lift</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<table>
|
||||
<independentVar>aero/alpha-rad</independentVar>
|
||||
<tableData>
|
||||
-1.5700 1.5000
|
||||
-0.2600 0.0560
|
||||
0.0000 0.0280
|
||||
0.2600 0.0560
|
||||
1.5700 1.5000
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/CDi">
|
||||
<description>Induced_drag</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>aero/cl-squared</property>
|
||||
<value>0.0400</value>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/CDbeta">
|
||||
<description>Drag_due_to_sideslip</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<table>
|
||||
<independentVar>aero/beta-rad</independentVar>
|
||||
<tableData>
|
||||
-1.5700 1.2300
|
||||
-0.2600 0.0500
|
||||
0.0000 0.0000
|
||||
0.2600 0.0500
|
||||
1.5700 1.2300
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/CDde">
|
||||
<description>Drag_due_to_Elevator_Deflection</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>fcs/elevator-pos-norm</property>
|
||||
<value>0.0300</value>
|
||||
</product>
|
||||
</function>
|
||||
</axis>
|
||||
|
||||
<axis name="SIDE">
|
||||
<function name="aero/coefficient/CYb">
|
||||
<description>Side_force_due_to_beta</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>aero/beta-rad</property>
|
||||
<value>-1.0000</value>
|
||||
</product>
|
||||
</function>
|
||||
</axis>
|
||||
|
||||
<axis name="LIFT">
|
||||
<function name="aero/coefficient/CLalpha">
|
||||
<description>Lift_due_to_alpha</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<table>
|
||||
<independentVar>aero/alpha-rad</independentVar>
|
||||
<tableData>
|
||||
-0.2000 -0.7500
|
||||
0.0000 0.2500
|
||||
0.2300 1.4000
|
||||
0.6000 0.7100
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/CLde">
|
||||
<description>Lift_due_to_Elevator_Deflection</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>fcs/elevator-pos-rad</property>
|
||||
<value>0.2000</value>
|
||||
</product>
|
||||
</function>
|
||||
</axis>
|
||||
|
||||
<axis name="ROLL">
|
||||
<function name="aero/coefficient/Clb">
|
||||
<description>Roll_moment_due_to_beta</description>
|
||||
<!-- aka dihedral effect -->
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/bw-ft</property>
|
||||
<property>aero/beta-rad</property>
|
||||
<value>-0.1000</value>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/Clp">
|
||||
<description>Roll_moment_due_to_roll_rate</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/bw-ft</property>
|
||||
<property>aero/bi2vel</property>
|
||||
<property>velocities/p-aero-rad_sec</property>
|
||||
<value>-0.4000</value>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/Clr">
|
||||
<description>Roll_moment_due_to_yaw_rate</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/bw-ft</property>
|
||||
<property>aero/bi2vel</property>
|
||||
<property>velocities/r-aero-rad_sec</property>
|
||||
<value>0.1500</value>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/Clda">
|
||||
<description>Roll_moment_due_to_aileron</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/bw-ft</property>
|
||||
<property>fcs/left-aileron-pos-rad</property>
|
||||
<table>
|
||||
<independentVar>velocities/mach</independentVar>
|
||||
<tableData>
|
||||
0.0000 0.1300
|
||||
2.0000 0.0570
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/Cldr">
|
||||
<description>Roll_moment_due_to_rudder</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/bw-ft</property>
|
||||
<property>fcs/rudder-pos-rad</property>
|
||||
<value>0.0100</value>
|
||||
</product>
|
||||
</function>
|
||||
</axis>
|
||||
|
||||
<axis name="PITCH">
|
||||
<function name="aero/coefficient/Cmalpha">
|
||||
<description>Pitch_moment_due_to_alpha</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/cbarw-ft</property>
|
||||
<property>aero/alpha-rad</property>
|
||||
<value>-0.5000</value>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/Cmde">
|
||||
<description>Pitch_moment_due_to_elevator</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/cbarw-ft</property>
|
||||
<property>fcs/elevator-pos-rad</property>
|
||||
<table>
|
||||
<independentVar>velocities/mach</independentVar>
|
||||
<tableData>
|
||||
0.0000 -0.5000 <!-- was -1.1 -->
|
||||
2.0000 -0.2750
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/Cmq">
|
||||
<description>Pitch_moment_due_to_pitch_rate</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/cbarw-ft</property>
|
||||
<property>aero/ci2vel</property>
|
||||
<property>velocities/q-aero-rad_sec</property>
|
||||
<value>-12.0000</value>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/Cmadot">
|
||||
<description>Pitch_moment_due_to_alpha_rate</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/cbarw-ft</property>
|
||||
<property>aero/ci2vel</property>
|
||||
<property>aero/alphadot-rad_sec</property>
|
||||
<value>-7.0000</value>
|
||||
</product>
|
||||
</function>
|
||||
</axis>
|
||||
|
||||
<axis name="YAW">
|
||||
<function name="aero/coefficient/Cnb">
|
||||
<description>Yaw_moment_due_to_beta</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/bw-ft</property>
|
||||
<property>aero/beta-rad</property>
|
||||
<value>0.1200</value>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/Cnr">
|
||||
<description>Yaw_moment_due_to_yaw_rate</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/bw-ft</property>
|
||||
<property>aero/bi2vel</property>
|
||||
<property>velocities/r-aero-rad_sec</property>
|
||||
<value>-0.1500</value>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/Cndr">
|
||||
<description>Yaw_moment_due_to_rudder</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/bw-ft</property>
|
||||
<property>fcs/rudder-pos-rad</property>
|
||||
<value>-0.0500</value>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/Cnda">
|
||||
<description>Adverse_yaw</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/bw-ft</property>
|
||||
<property>fcs/left-aileron-pos-rad</property>
|
||||
<value>-0.0300</value>
|
||||
</product>
|
||||
</function>
|
||||
<function name="aero/coefficient/Cndi">
|
||||
<description>Yaw_moment_due_to_tail_incidence</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/bw-ft</property>
|
||||
<value>0.0007</value>
|
||||
</product>
|
||||
</function>
|
||||
</axis>
|
||||
</aerodynamics>
|
||||
</fdm_config>
|
Binary file not shown.
|
@ -0,0 +1,767 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Generic Autopilot Configuration -->
|
||||
|
||||
<!-- Each component is evaluated in the order specified. You can make up -->
|
||||
<!-- property names to pass the result of one component on to a subsequent -->
|
||||
<!-- component. -->
|
||||
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<!-- =============================================================== -->
|
||||
<!-- Roll Axis Modes -->
|
||||
<!-- =============================================================== -->
|
||||
|
||||
<!-- Wing leveler -->
|
||||
<pid-controller>
|
||||
<name>Wing Leveler (Turn Coordinator based)</name>
|
||||
<debug>false</debug>
|
||||
<enable>
|
||||
<prop>/autopilot/locks/heading</prop>
|
||||
<value>wing-leveler</value>
|
||||
</enable>
|
||||
<input>
|
||||
<prop>/orientation/roll-deg</prop>
|
||||
</input>
|
||||
<reference>
|
||||
<value>0.0</value>
|
||||
</reference>
|
||||
<output>
|
||||
<prop>/controls/flight/aileron</prop>
|
||||
</output>
|
||||
<config>
|
||||
<Kp>0.05</Kp> <!-- proportional gain -->
|
||||
<beta>1.0</beta> <!-- input value weighing factor -->
|
||||
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
|
||||
<gamma>0.0</gamma> <!-- input value weighing factor for -->
|
||||
<!-- unfiltered derivative error -->
|
||||
<Ti>0.5</Ti> <!-- integrator time -->
|
||||
<Td>0.01</Td> <!-- derivator time -->
|
||||
<u_min>-1.0</u_min> <!-- minimum output clamp -->
|
||||
<u_max>1.0</u_max> <!-- maximum output clamp -->
|
||||
</config>
|
||||
</pid-controller>
|
||||
|
||||
<!-- Bank hold -->
|
||||
<pid-controller>
|
||||
<name>Bank Hold</name>
|
||||
<debug>false</debug>
|
||||
<enable>
|
||||
<prop>/autopilot/locks/heading</prop>
|
||||
<value>bank-hold</value>
|
||||
</enable>
|
||||
<input>
|
||||
<prop>/orientation/roll-deg</prop>
|
||||
</input>
|
||||
<reference>
|
||||
<prop>/autopilot/settings/target-bank-deg</prop>
|
||||
</reference>
|
||||
<output>
|
||||
<prop>/controls/flight/aileron</prop>
|
||||
</output>
|
||||
<config>
|
||||
<Kp>0.05</Kp> <!-- proportional gain -->
|
||||
<beta>1.0</beta> <!-- input value weighing factor -->
|
||||
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
|
||||
<gamma>0.0</gamma> <!-- input value weighing factor for -->
|
||||
<!-- unfiltered derivative error -->
|
||||
<Ti>0.5</Ti> <!-- integrator time -->
|
||||
<Td>0.01</Td> <!-- derivator time -->
|
||||
<u_min>-1.0</u_min> <!-- minimum output clamp -->
|
||||
<u_max>1.0</u_max> <!-- maximum output clamp -->
|
||||
</config>
|
||||
</pid-controller>
|
||||
|
||||
<!-- Heading Bug Hold. 2 stage cascade controller. -->
|
||||
|
||||
<!-- Stage #1 sets target roll based on diff between current heading -->
|
||||
<!-- and heading bug. -->
|
||||
<pid-controller>
|
||||
<name>Heading Bug Hold (DG based) Stage 1</name>
|
||||
<debug>false</debug>
|
||||
<enable>
|
||||
<prop>/autopilot/locks/heading</prop>
|
||||
<value>dg-heading-hold</value>
|
||||
</enable>
|
||||
<input>
|
||||
<prop>/autopilot/internal/fdm-heading-bug-error-deg</prop>
|
||||
</input>
|
||||
<reference>
|
||||
<value>0.0</value>
|
||||
</reference>
|
||||
<output>
|
||||
<prop>/autopilot/internal/target-roll-deg</prop>
|
||||
</output>
|
||||
<config>
|
||||
<Kp>-0.1</Kp> <!-- proportional gain -->
|
||||
<beta>1.0</beta> <!-- input value weighing factor -->
|
||||
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
|
||||
<gamma>0.0</gamma> <!-- input value weighing factor for -->
|
||||
<!-- unfiltered derivative error -->
|
||||
<Ti>10.0</Ti> <!-- integrator time -->
|
||||
<Td>0.00001</Td> <!-- derivator time -->
|
||||
<u_min>-20.0</u_min> <!-- minimum output clamp -->
|
||||
<u_max>20.0</u_max> <!-- maximum output clamp -->
|
||||
</config>
|
||||
</pid-controller>
|
||||
|
||||
<!-- Stage #2 drives the ailerons to achieve the desired roll deg. -->
|
||||
<pid-controller>
|
||||
<name>Heading Bug Hold (DG based) Stage 2</name>
|
||||
<debug>false</debug>
|
||||
<enable>
|
||||
<prop>/autopilot/locks/heading</prop>
|
||||
<value>dg-heading-hold</value>
|
||||
</enable>
|
||||
<input>
|
||||
<prop>/orientation/roll-deg</prop>
|
||||
</input>
|
||||
<reference>
|
||||
<prop>/autopilot/internal/target-roll-deg</prop>
|
||||
</reference>
|
||||
<output>
|
||||
<prop>/controls/flight/aileron</prop>
|
||||
</output>
|
||||
<config>
|
||||
<Kp>0.05</Kp> <!-- proportional gain -->
|
||||
<beta>1.0</beta> <!-- input value weighing factor -->
|
||||
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
|
||||
<gamma>0.0</gamma> <!-- input value weighing factor for -->
|
||||
<!-- unfiltered derivative error -->
|
||||
<Ti>0.5</Ti> <!-- integrator time -->
|
||||
<Td>0.01</Td> <!-- derivator time -->
|
||||
<u_min>-1.0</u_min> <!-- minimum output clamp -->
|
||||
<u_max>1.0</u_max> <!-- maximum output clamp -->
|
||||
</config>
|
||||
</pid-controller>
|
||||
|
||||
<!-- True Heading hold. 2 stage cascade controller. -->
|
||||
|
||||
<!-- Stage #1 sets target roll based on diff between current heading -->
|
||||
<!-- and target heading. -->
|
||||
<pid-controller>
|
||||
<name>True Heading Hold (DG based) Stage 1</name>
|
||||
<debug>false</debug>
|
||||
<enable>
|
||||
<prop>/autopilot/locks/heading</prop>
|
||||
<value>true-heading-hold</value>
|
||||
</enable>
|
||||
<input>
|
||||
<prop>/autopilot/internal/true-heading-error-deg</prop>
|
||||
</input>
|
||||
<reference>
|
||||
<value>0.0</value>
|
||||
</reference>
|
||||
<output>
|
||||
<prop>/autopilot/internal/target-roll-deg</prop>
|
||||
</output>
|
||||
<config>
|
||||
<Kp>-1.0</Kp> <!-- proportional gain -->
|
||||
<beta>1.0</beta> <!-- input value weighing factor -->
|
||||
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
|
||||
<gamma>0.0</gamma> <!-- input value weighing factor for -->
|
||||
<!-- unfiltered derivative error -->
|
||||
<Ti>10.0</Ti> <!-- integrator time -->
|
||||
<Td>0.00001</Td> <!-- derivator time -->
|
||||
<u_min>-20.0</u_min> <!-- minimum output clamp -->
|
||||
<u_max>20.0</u_max> <!-- maximum output clamp -->
|
||||
</config>
|
||||
</pid-controller>
|
||||
|
||||
<!-- Stage #2 drives the ailerons to achieve the desired roll deg. -->
|
||||
<pid-controller>
|
||||
<name>True Heading Hold (DG based) Stage 2</name>
|
||||
<debug>false</debug>
|
||||
<enable>
|
||||
<prop>/autopilot/locks/heading</prop>
|
||||
<value>true-heading-hold</value>
|
||||
</enable>
|
||||
<input>
|
||||
<prop>/orientation/roll-deg</prop>
|
||||
</input>
|
||||
<reference>
|
||||
<prop>/autopilot/internal/target-roll-deg</prop>
|
||||
</reference>
|
||||
<output>
|
||||
<prop>/controls/flight/aileron</prop>
|
||||
</output>
|
||||
<config>
|
||||
<Kp>0.05</Kp> <!-- proportional gain -->
|
||||
<beta>1.0</beta> <!-- input value weighing factor -->
|
||||
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
|
||||
<gamma>0.0</gamma> <!-- input value weighing factor for -->
|
||||
<!-- unfiltered derivative error -->
|
||||
<Ti>0.5</Ti> <!-- integrator time -->
|
||||
<Td>0.01</Td> <!-- derivator time -->
|
||||
<u_min>-1.0</u_min> <!-- minimum output clamp -->
|
||||
<u_max>1.0</u_max> <!-- maximum output clamp -->
|
||||
</config>
|
||||
</pid-controller>
|
||||
|
||||
<!-- Nav1 hold. 2 stage cascade controller. -->
|
||||
|
||||
<!-- Stage #1 sets target roll based on diff between current heading -->
|
||||
<!-- and target heading. -->
|
||||
<pid-controller>
|
||||
<name>Nav1 Hold Stage 1</name>
|
||||
<debug>false</debug>
|
||||
<enable>
|
||||
<prop>/autopilot/locks/heading</prop>
|
||||
<value>nav1-hold</value>
|
||||
</enable>
|
||||
<input>
|
||||
<prop>/autopilot/internal/nav1-heading-error-deg</prop>
|
||||
</input>
|
||||
<reference>
|
||||
<value>0.0</value>
|
||||
</reference>
|
||||
<output>
|
||||
<prop>/autopilot/internal/target-roll-deg</prop>
|
||||
</output>
|
||||
<config>
|
||||
<Kp>-1.0</Kp> <!-- proportional gain -->
|
||||
<beta>1.0</beta> <!-- input value weighing factor -->
|
||||
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
|
||||
<gamma>0.0</gamma> <!-- input value weighing factor for -->
|
||||
<!-- unfiltered derivative error -->
|
||||
<Ti>10.0</Ti> <!-- integrator time -->
|
||||
<Td>0.00001</Td> <!-- derivator time -->
|
||||
<u_min>-20.0</u_min> <!-- minimum output clamp -->
|
||||
<u_max>20.0</u_max> <!-- maximum output clamp -->
|
||||
</config>
|
||||
</pid-controller>
|
||||
|
||||
<!-- Stage #2 drives the ailerons to achieve the desired roll deg. -->
|
||||
<pid-controller>
|
||||
<name>Nav1 Hold Stage 2</name>
|
||||
<debug>false</debug>
|
||||
<enable>
|
||||
<prop>/autopilot/locks/heading</prop>
|
||||
<value>nav1-hold</value>
|
||||
</enable>
|
||||
<input>
|
||||
<prop>/orientation/roll-deg</prop>
|
||||
</input>
|
||||
<reference>
|
||||
<prop>/autopilot/internal/target-roll-deg</prop>
|
||||
</reference>
|
||||
<output>
|
||||
<prop>/controls/flight/aileron</prop>
|
||||
</output>
|
||||
<config>
|
||||
<Kp>0.05</Kp> <!-- proportional gain -->
|
||||
<beta>1.0</beta> <!-- input value weighing factor -->
|
||||
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
|
||||
<gamma>0.0</gamma> <!-- input value weighing factor for -->
|
||||
<!-- unfiltered derivative error -->
|
||||
<Ti>0.5</Ti> <!-- integrator time -->
|
||||
<Td>0.01</Td> <!-- derivator time -->
|
||||
<u_min>-1.0</u_min> <!-- minimum output clamp -->
|
||||
<u_max>1.0</u_max> <!-- maximum output clamp -->
|
||||
</config>
|
||||
</pid-controller>
|
||||
|
||||
|
||||
<!-- =============================================================== -->
|
||||
<!-- Pitch Axis Modes -->
|
||||
<!-- =============================================================== -->
|
||||
|
||||
<!-- Simple pitch hold -->
|
||||
<pid-controller>
|
||||
<name>Pitch hold</name>
|
||||
<debug>false</debug>
|
||||
<enable>
|
||||
<prop>/autopilot/locks/altitude</prop>
|
||||
<value>pitch-hold</value>
|
||||
</enable>
|
||||
<input>
|
||||
<prop>/orientation/pitch-deg</prop>
|
||||
</input>
|
||||
<reference>
|
||||
<prop>/autopilot/settings/target-pitch-deg</prop>
|
||||
</reference>
|
||||
<output>
|
||||
<prop>/controls/flight/elevator-trim</prop>
|
||||
</output>
|
||||
<config>
|
||||
<Kp>-0.05</Kp> <!-- proportional gain -->
|
||||
<beta>1.0</beta> <!-- input value weighing factor -->
|
||||
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
|
||||
<gamma>0.0</gamma> <!-- input value weighing factor for -->
|
||||
<!-- unfiltered derivative error -->
|
||||
<Ti>0.5</Ti> <!-- integrator time -->
|
||||
<Td>0.001</Td> <!-- derivator time -->
|
||||
<u_min>-1.0</u_min> <!-- minimum output clamp -->
|
||||
<u_max>1.0</u_max> <!-- maximum output clamp -->
|
||||
</config>
|
||||
</pid-controller>
|
||||
|
||||
<!-- Simple pitch hold with yoke -->
|
||||
<pid-controller>
|
||||
<name>Pitch hold w/ yoke</name>
|
||||
<debug>false</debug>
|
||||
<enable>
|
||||
<prop>/autopilot/locks/altitude</prop>
|
||||
<value>pitch-hold-yoke</value>
|
||||
</enable>
|
||||
<input>
|
||||
<prop>/orientation/pitch-deg</prop>
|
||||
</input>
|
||||
<reference>
|
||||
<prop>/autopilot/settings/target-pitch-deg</prop>
|
||||
</reference>
|
||||
<output>
|
||||
<prop>/controls/flight/elevator</prop>
|
||||
</output>
|
||||
<config>
|
||||
<Kp>-0.05</Kp> <!-- proportional gain -->
|
||||
<beta>1.0</beta> <!-- input value weighing factor -->
|
||||
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
|
||||
<gamma>0.0</gamma> <!-- input value weighing factor for -->
|
||||
<!-- unfiltered derivative error -->
|
||||
<Ti>0.5</Ti> <!-- integrator time -->
|
||||
<Td>0.001</Td> <!-- derivator time -->
|
||||
<u_min>-1.0</u_min> <!-- minimum output clamp -->
|
||||
<u_max>1.0</u_max> <!-- maximum output clamp -->
|
||||
</config>
|
||||
</pid-controller>
|
||||
|
||||
<!-- Simple angle of attack hold -->
|
||||
<pid-controller>
|
||||
<name>AOA hold</name>
|
||||
<debug>false</debug>
|
||||
<enable>
|
||||
<prop>/autopilot/locks/altitude</prop>
|
||||
<value>aoa-hold</value>
|
||||
</enable>
|
||||
<input>
|
||||
<prop>/orientation/alpha-deg</prop>
|
||||
</input>
|
||||
<reference>
|
||||
<prop>/autopilot/settings/target-aoa-deg</prop>
|
||||
</reference>
|
||||
<output>
|
||||
<prop>/controls/flight/elevator-trim</prop>
|
||||
</output>
|
||||
<config>
|
||||
<Kp>-0.05</Kp> <!-- proportional gain -->
|
||||
<beta>1.0</beta> <!-- input value weighing factor -->
|
||||
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
|
||||
<gamma>0.0</gamma> <!-- input value weighing factor for -->
|
||||
<!-- unfiltered derivative error -->
|
||||
<Ti>0.5</Ti> <!-- integrator time -->
|
||||
<Td>0.001</Td> <!-- derivator time -->
|
||||
<u_min>-1.0</u_min> <!-- minimum output clamp -->
|
||||
<u_max>1.0</u_max> <!-- maximum output clamp -->
|
||||
</config>
|
||||
</pid-controller>
|
||||
|
||||
<!-- Altitude hold. 3 stage cascade controller. -->
|
||||
|
||||
<!-- Stage #1 sets target rate of climb based on diff between current alt -->
|
||||
<!-- and target altitude. -->
|
||||
<pi-simple-controller>
|
||||
<name>Altitude Hold (Altimeter based) Stage 1</name>
|
||||
<debug>false</debug>
|
||||
<enable>
|
||||
<prop>/autopilot/locks/altitude</prop>
|
||||
<value>altitude-hold</value>
|
||||
</enable>
|
||||
<input>
|
||||
<prop>/position/altitude-ft</prop>
|
||||
</input>
|
||||
<reference>
|
||||
<prop>/autopilot/settings/target-altitude-ft</prop>
|
||||
</reference>
|
||||
<output>
|
||||
<prop>/autopilot/internal/target-climb-rate-fps</prop>
|
||||
</output>
|
||||
<config>
|
||||
<Kp>0.3</Kp> <!-- proportional gain -->
|
||||
<Ki>0.0</Ki> <!-- integral gain -->
|
||||
<u_min>-8.33</u_min> <!-- minimum output clamp -->
|
||||
<u_max>8.33</u_max> <!-- maximum output clamp -->
|
||||
</config>
|
||||
</pi-simple-controller>
|
||||
|
||||
<!-- Stage #2 drives the target-pitch to achieve the desired climb -->
|
||||
<!-- rate. -->
|
||||
<pid-controller>
|
||||
<name>Altitude Hold (Altimeter based) Stage 2</name>
|
||||
<debug>false</debug>
|
||||
<enable>
|
||||
<prop>/autopilot/locks/altitude</prop>
|
||||
<value>altitude-hold</value>
|
||||
</enable>
|
||||
<input>
|
||||
<prop>/velocities/vertical-speed-fps</prop>
|
||||
</input>
|
||||
<reference>
|
||||
<prop>/autopilot/internal/target-climb-rate-fps</prop>
|
||||
</reference>
|
||||
<output>
|
||||
<prop>/autopilot/settings/target-pitch-deg</prop>
|
||||
</output>
|
||||
<config>
|
||||
<Kp>0.5</Kp> <!-- proportional gain -->
|
||||
<beta>1.0</beta> <!-- input value weighing factor -->
|
||||
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
|
||||
<gamma>0.0</gamma> <!-- input value weighing factor for -->
|
||||
<!-- unfiltered derivative error -->
|
||||
<Ti>1.0</Ti> <!-- integrator time -->
|
||||
<Td>0.00001</Td> <!-- derivator time -->
|
||||
<u_min>-5.0</u_min> <!-- minimum output clamp -->
|
||||
<u_max>5.0</u_max> <!-- maximum output clamp -->
|
||||
</config>
|
||||
</pid-controller>
|
||||
|
||||
<!-- Stage #3 drives the elevator trim to achieve the desired pitch -->
|
||||
<!-- angle -->
|
||||
<pid-controller>
|
||||
<name>Pitch hold</name>
|
||||
<debug>false</debug>
|
||||
<enable>
|
||||
<prop>/autopilot/locks/altitude</prop>
|
||||
<value>altitude-hold</value>
|
||||
<honor-passive>true</honor-passive>
|
||||
</enable>
|
||||
<input>
|
||||
<prop>/orientation/pitch-deg</prop>
|
||||
</input>
|
||||
<reference>
|
||||
<prop>/autopilot/settings/target-pitch-deg</prop>
|
||||
</reference>
|
||||
<output>
|
||||
<prop>/controls/flight/elevator-trim</prop>
|
||||
</output>
|
||||
<config>
|
||||
<Kp>-0.05</Kp> <!-- proportional gain -->
|
||||
<beta>1.0</beta> <!-- input value weighing factor -->
|
||||
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
|
||||
<gamma>0.0</gamma> <!-- input value weighing factor for -->
|
||||
<!-- unfiltered derivative error -->
|
||||
<Ti>0.5</Ti> <!-- integrator time -->
|
||||
<Td>0.001</Td> <!-- derivator time -->
|
||||
<u_min>-1.0</u_min> <!-- minimum output clamp -->
|
||||
<u_max>1.0</u_max> <!-- maximum output clamp -->
|
||||
</config>
|
||||
</pid-controller>
|
||||
|
||||
|
||||
<!-- AGL hold. 2 stage cascade controller. -->
|
||||
|
||||
<!-- Stage #1 sets target rate of climb based on diff between current agl -->
|
||||
<!-- and target agl. -->
|
||||
<pid-controller>
|
||||
<name>AGL Hold (Altimeter based) Stage 1</name>
|
||||
<debug>false</debug>
|
||||
<enable>
|
||||
<prop>/autopilot/locks/altitude</prop>
|
||||
<value>agl-hold</value>
|
||||
</enable>
|
||||
<input>
|
||||
<prop>/position/altitude-agl-ft</prop>
|
||||
</input>
|
||||
<reference>
|
||||
<prop>/autopilot/settings/target-agl-ft</prop>
|
||||
</reference>
|
||||
<output>
|
||||
<prop>/autopilot/internal/target-climb-rate-fps</prop>
|
||||
</output>
|
||||
<config>
|
||||
<Kp>1.0</Kp> <!-- proportional gain -->
|
||||
<beta>1.0</beta> <!-- input value weighing factor -->
|
||||
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
|
||||
<gamma>0.0</gamma> <!-- input value weighing factor for -->
|
||||
<!-- unfiltered derivative error -->
|
||||
<Ti>25.0</Ti> <!-- integrator time -->
|
||||
<Td>0.000000001</Td> <!-- derivator time -->
|
||||
<u_min>-16.67</u_min> <!-- minimum output clamp -->
|
||||
<u_max>8.33</u_max> <!-- maximum output clamp -->
|
||||
</config>
|
||||
</pid-controller>
|
||||
|
||||
<!-- Stage #2 drives the elevator-trim to achieve the desired climb rate. -->
|
||||
<pid-controller>
|
||||
<name>Altitude Hold (Altimeter based) Stage 2</name>
|
||||
<debug>false</debug>
|
||||
<enable>
|
||||
<prop>/autopilot/locks/altitude</prop>
|
||||
<value>agl-hold</value>
|
||||
</enable>
|
||||
<input>
|
||||
<prop>/velocities/vertical-speed-fps</prop>
|
||||
</input>
|
||||
<reference>
|
||||
<prop>/autopilot/internal/target-climb-rate-fps</prop>
|
||||
</reference>
|
||||
<output>
|
||||
<prop>/controls/flight/elevator-trim</prop>
|
||||
</output>
|
||||
<config>
|
||||
<Kp>-0.05</Kp> <!-- proportional gain -->
|
||||
<beta>1.0</beta> <!-- input value weighing factor -->
|
||||
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
|
||||
<gamma>0.0</gamma> <!-- input value weighing factor for -->
|
||||
<!-- unfiltered derivative error -->
|
||||
<Ti>0.5</Ti> <!-- integrator time -->
|
||||
<Td>0.001</Td> <!-- derivator time -->
|
||||
<u_min>-1.0</u_min> <!-- minimum output clamp -->
|
||||
<u_max>1.0</u_max> <!-- maximum output clamp -->
|
||||
</config>
|
||||
</pid-controller>
|
||||
|
||||
<!-- Glideslope hold. -->
|
||||
|
||||
<!-- Stage #2 drives the elevator-trim to achieve the desired climb rate. -->
|
||||
<pid-controller>
|
||||
<name>Glideslop Hold</name>
|
||||
<debug>false</debug>
|
||||
<enable>
|
||||
<prop>/autopilot/locks/altitude</prop>
|
||||
<value>gs1-hold</value>
|
||||
</enable>
|
||||
<input>
|
||||
<prop>/velocities/vertical-speed-fps</prop>
|
||||
</input>
|
||||
<reference>
|
||||
<prop>/instrumentation/nav[0]/gs-rate-of-climb</prop>
|
||||
</reference>
|
||||
<output>
|
||||
<prop>/controls/flight/elevator-trim</prop>
|
||||
</output>
|
||||
<config>
|
||||
<Kp>-0.05</Kp> <!-- proportional gain -->
|
||||
<beta>1.0</beta> <!-- input value weighing factor -->
|
||||
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
|
||||
<gamma>0.0</gamma> <!-- input value weighing factor for -->
|
||||
<!-- unfiltered derivative error -->
|
||||
<Ti>0.5</Ti> <!-- integrator time -->
|
||||
<Td>0.001</Td> <!-- derivator time -->
|
||||
<u_min>-1.0</u_min> <!-- minimum output clamp -->
|
||||
<u_max>1.0</u_max> <!-- maximum output clamp -->
|
||||
</config>
|
||||
</pid-controller>
|
||||
|
||||
|
||||
<!-- =============================================================== -->
|
||||
<!-- Velocity Modes -->
|
||||
<!-- =============================================================== -->
|
||||
|
||||
<!-- Auto throttle -->
|
||||
<pid-controller>
|
||||
<name>Auto Throttle (5 sec lookahead)</name>
|
||||
<debug>false</debug>
|
||||
<enable>
|
||||
<prop>/autopilot/locks/speed</prop>
|
||||
<value>speed-with-throttle</value>
|
||||
</enable>
|
||||
<input>
|
||||
<!-- <prop>/autopilot/internal/lookahead-5-sec-airspeed-kt</prop> -->
|
||||
<prop>/velocities/airspeed-kt</prop>
|
||||
</input>
|
||||
<reference>
|
||||
<prop>/autopilot/settings/target-speed-kt</prop>
|
||||
</reference>
|
||||
<output>
|
||||
<prop>/controls/engines/engine[0]/throttle</prop>
|
||||
<prop>/controls/engines/engine[1]/throttle</prop>
|
||||
<prop>/controls/engines/engine[2]/throttle</prop>
|
||||
<prop>/controls/engines/engine[3]/throttle</prop>
|
||||
<prop>/controls/engines/engine[4]/throttle</prop>
|
||||
<prop>/controls/engines/engine[5]/throttle</prop>
|
||||
<prop>/controls/engines/engine[6]/throttle</prop>
|
||||
<prop>/controls/engines/engine[7]/throttle</prop>
|
||||
</output>
|
||||
<config>
|
||||
<Kp>0.1</Kp> <!-- proportional gain -->
|
||||
<beta>1.0</beta> <!-- input value weighing factor -->
|
||||
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
|
||||
<gamma>0.0</gamma> <!-- input value weighing factor for -->
|
||||
<!-- unfiltered derivative error -->
|
||||
<Ti>1.0</Ti> <!-- integrator time -->
|
||||
<Td>0.001</Td> <!-- derivator time -->
|
||||
<u_min>0.0</u_min> <!-- minimum output clamp -->
|
||||
<u_max>1.0</u_max> <!-- maximum output clamp -->
|
||||
</config>
|
||||
</pid-controller>
|
||||
|
||||
<!-- Hold speed by varying pitch trim (Two stage cascading controller) -->
|
||||
<pid-controller>
|
||||
<name>Speed hold (vary pitch trim) Stage #1</name>
|
||||
<debug>false</debug>
|
||||
<enable>
|
||||
<prop>/autopilot/locks/speed</prop>
|
||||
<value>speed-with-pitch-trim</value>
|
||||
</enable>
|
||||
<input>
|
||||
<!-- <prop>/autopilot/internal/lookahead-5-sec-airspeed-kt</prop> -->
|
||||
<prop>/velocities/airspeed-kt</prop>
|
||||
</input>
|
||||
<reference>
|
||||
<prop>/autopilot/settings/target-speed-kt</prop>
|
||||
</reference>
|
||||
<output>
|
||||
<prop>/autopilot/settings/target-pitch-deg</prop>
|
||||
</output>
|
||||
<config>
|
||||
<Kp>-1.0</Kp> <!-- proportional gain -->
|
||||
<beta>1.0</beta> <!-- input value weighing factor -->
|
||||
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
|
||||
<gamma>0.0</gamma> <!-- input value weighing factor for -->
|
||||
<!-- unfiltered derivative error -->
|
||||
<Ti>2.0</Ti> <!-- integrator time -->
|
||||
<Td>0.00001</Td> <!-- derivator time -->
|
||||
<u_min>-15.0</u_min><!-- minimum output clamp -->
|
||||
<u_max>15.0</u_max> <!-- maximum output clamp -->
|
||||
</config>
|
||||
</pid-controller>
|
||||
|
||||
<pid-controller>
|
||||
<name>Speed hold (vary pitch trim) Stage #2</name>
|
||||
<debug>false</debug>
|
||||
<enable>
|
||||
<prop>/autopilot/locks/speed</prop>
|
||||
<value>speed-with-pitch-trim</value>
|
||||
</enable>
|
||||
<input>
|
||||
<prop>/orientation/pitch-deg</prop>
|
||||
</input>
|
||||
<reference>
|
||||
<prop>/autopilot/settings/target-pitch-deg</prop>
|
||||
</reference>
|
||||
<output>
|
||||
<prop>/controls/flight/elevator-trim</prop>
|
||||
</output>
|
||||
<config>
|
||||
<Kp>-0.05</Kp> <!-- proportional gain -->
|
||||
<beta>1.0</beta> <!-- input value weighing factor -->
|
||||
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
|
||||
<gamma>0.0</gamma> <!-- input value weighing factor for -->
|
||||
<!-- unfiltered derivative error -->
|
||||
<Ti>0.5</Ti> <!-- integrator time -->
|
||||
<Td>0.001</Td> <!-- derivator time -->
|
||||
<u_min>-1.0</u_min> <!-- minimum output clamp -->
|
||||
<u_max>1.0</u_max> <!-- maximum output clamp -->
|
||||
</config>
|
||||
</pid-controller>
|
||||
|
||||
<!-- Hold speed by varying elevator (2 stage cascading controller)-->
|
||||
|
||||
<!-- Stage 1, command a forward acceleration rate based on velocity error -->
|
||||
<pi-simple-controller>
|
||||
<name>Speed hold (vary elevator)</name>
|
||||
<debug>false</debug>
|
||||
<enable>
|
||||
<prop>/autopilot/locks/speed</prop>
|
||||
<value>speed-with-pitch-yoke</value>
|
||||
</enable>
|
||||
<input>
|
||||
<prop>/velocities/airspeed-kt</prop>
|
||||
</input>
|
||||
<reference>
|
||||
<prop>/autopilot/settings/target-speed-kt</prop>
|
||||
</reference>
|
||||
<output>
|
||||
<prop>/autopilot/settings/target-accel-ktps</prop>
|
||||
</output>
|
||||
<config>
|
||||
<Kp>0.2</Kp> <!-- proportional gain -->
|
||||
<Ki>0.0</Ki> <!-- integral gain -->
|
||||
<u_min>-1.0</u_min> <!-- minimum output clamp -->
|
||||
<u_max>1.0</u_max> <!-- maximum output clamp -->
|
||||
</config>
|
||||
</pi-simple-controller>
|
||||
|
||||
<!-- Stage 2, command elevator to achieve target acceleration rate -->
|
||||
<pid-controller>
|
||||
<name>Speed hold (vary elevator)</name>
|
||||
<debug>false</debug>
|
||||
<enable>
|
||||
<prop>/autopilot/locks/speed</prop>
|
||||
<value>speed-with-pitch-yoke</value>
|
||||
</enable>
|
||||
<input>
|
||||
<prop>/accelerations/airspeed-ktps</prop>
|
||||
</input>
|
||||
<reference>
|
||||
<prop>//autopilot/settings/target-accel-ktps</prop>
|
||||
</reference>
|
||||
<output>
|
||||
<prop>/controls/flight/elevator</prop>
|
||||
</output>
|
||||
<config>
|
||||
<Kp>0.02</Kp> <!-- proportional gain -->
|
||||
<beta>1.0</beta> <!-- input value weighing factor -->
|
||||
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
|
||||
<gamma>0.0</gamma> <!-- input value weighing factor for -->
|
||||
<!-- unfiltered derivative error -->
|
||||
<Ti>8.0</Ti> <!-- integrator time -->
|
||||
<Td>0.001</Td> <!-- derivator time -->
|
||||
<u_min>-0.25</u_min> <!-- minimum output clamp -->
|
||||
<u_max>0.25</u_max> <!-- maximum output clamp -->
|
||||
</config>
|
||||
</pid-controller>
|
||||
|
||||
<!-- Hold speed by varying pitch via yoke (Two stage cascading controller) -->
|
||||
<pid-controller>
|
||||
<name>Speed hold (vary pitch via yoke) Stage #1</name>
|
||||
<debug>false</debug>
|
||||
<enable>
|
||||
<prop>/autopilot/locks/speed</prop>
|
||||
<value>speed-with-pitch-yoke-pitch</value>
|
||||
</enable>
|
||||
<input>
|
||||
<!-- <prop>/autopilot/internal/lookahead-5-sec-airspeed-kt</prop> -->
|
||||
<prop>/velocities/airspeed-kt</prop>
|
||||
</input>
|
||||
<reference>
|
||||
<prop>/autopilot/settings/target-speed-kt</prop>
|
||||
</reference>
|
||||
<output>
|
||||
<prop>/autopilot/settings/target-pitch-deg</prop>
|
||||
</output>
|
||||
<config>
|
||||
<Kp>-1.0</Kp> <!-- proportional gain -->
|
||||
<beta>1.0</beta> <!-- input value weighing factor -->
|
||||
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
|
||||
<gamma>0.0</gamma> <!-- input value weighing factor for -->
|
||||
<!-- unfiltered derivative error -->
|
||||
<Ti>2.0</Ti> <!-- integrator time -->
|
||||
<Td>0.00001</Td> <!-- derivator time -->
|
||||
<u_min>-15.0</u_min><!-- minimum output clamp -->
|
||||
<u_max>15.0</u_max> <!-- maximum output clamp -->
|
||||
</config>
|
||||
</pid-controller>
|
||||
|
||||
<pid-controller>
|
||||
<name>Speed hold (vary pitch via yoke) Stage #2</name>
|
||||
<debug>false</debug>
|
||||
<enable>
|
||||
<prop>/autopilot/locks/speed</prop>
|
||||
<value>speed-with-pitch-yoke-pitch</value>
|
||||
</enable>
|
||||
<input>
|
||||
<prop>/orientation/pitch-deg</prop>
|
||||
</input>
|
||||
<reference>
|
||||
<prop>/autopilot/settings/target-pitch-deg</prop>
|
||||
</reference>
|
||||
<output>
|
||||
<prop>/controls/flight/elevator</prop>
|
||||
</output>
|
||||
<config>
|
||||
<Kp>-0.05</Kp> <!-- proportional gain -->
|
||||
<beta>1.0</beta> <!-- input value weighing factor -->
|
||||
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
|
||||
<gamma>0.0</gamma> <!-- input value weighing factor for -->
|
||||
<!-- unfiltered derivative error -->
|
||||
<Ti>0.5</Ti> <!-- integrator time -->
|
||||
<Td>0.001</Td> <!-- derivator time -->
|
||||
<u_min>-1.0</u_min> <!-- minimum output clamp -->
|
||||
<u_max>1.0</u_max> <!-- maximum output clamp -->
|
||||
</config>
|
||||
</pid-controller>
|
||||
|
||||
</PropertyList>
|
|
@ -0,0 +1,40 @@
|
|||
var last_time = 0.0;
|
||||
var last_speed = 0.0;
|
||||
var speed_sensed = 0.0;
|
||||
var sensor_step = 1.0;
|
||||
var speed_filt = 0.0;
|
||||
var accel_filt = 0.0;
|
||||
|
||||
var compute_airspeed_accel = func( speed_filt, dt ) {
|
||||
# print ( "computing forward acceleration ", dt );
|
||||
|
||||
var delta_speed = speed_filt - last_speed;
|
||||
last_speed = speed_filt;
|
||||
|
||||
var accel = delta_speed / dt;
|
||||
|
||||
return accel;
|
||||
}
|
||||
|
||||
|
||||
var update_airdata = func( dt ) {
|
||||
# crude model of a noisy electronic pitot tube
|
||||
sensed_speed = getprop("/velocities/airspeed-kt");
|
||||
var r = rand();
|
||||
if ( r < 0.3333 ) {
|
||||
sensed_speed = sensed_speed - sensor_step;
|
||||
} elsif ( r > 0.6666 ) {
|
||||
sensed_speed = sensed_speed + sensor_step;
|
||||
}
|
||||
|
||||
speed_filt = 0.97 * speed_filt + 0.03 * sensed_speed;
|
||||
|
||||
var sensed_accel = 0.0;
|
||||
if ( dt > 0 ) {
|
||||
sensed_accel = compute_airspeed_accel( speed_filt, dt );
|
||||
}
|
||||
|
||||
accel_filt = 0.97 * accel_filt + 0.03 * sensed_accel;
|
||||
|
||||
setprop("/accelerations/airspeed-ktps", accel_filt);
|
||||
}
|
|
@ -0,0 +1,140 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!-- The cub doesn't really have an electrical system but let's give -->
|
||||
<!-- it a little bit of something since we don't have a virtual ground -->
|
||||
<!-- crew to go out and flip the prop for us. -->
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<!-- Supplier list -->
|
||||
|
||||
<supplier>
|
||||
<name>Battery 1</name>
|
||||
<prop>/systems/electrical/suppliers/battery[0]</prop>
|
||||
<kind>battery</kind>
|
||||
<volts>28</volts> <!-- needs to be > 24.5, but this is a guess -->
|
||||
<amps>60</amps> <!-- I have no idea! -->
|
||||
</supplier>
|
||||
|
||||
<supplier>
|
||||
<name>Alternator 1</name>
|
||||
<prop>/systems/electrical/suppliers/alternator[0]</prop>
|
||||
<kind>alternator</kind>
|
||||
<rpm-source>/engines/engine[0]/rpm</rpm-source>
|
||||
<volts>28</volts> <!-- stubbed in -->
|
||||
<amps>60</amps> <!-- from the 172S Skyhawk Information Manual -->
|
||||
</supplier>
|
||||
|
||||
<!-- Bus list -->
|
||||
|
||||
<bus>
|
||||
<name>Master Bus</name>
|
||||
<prop>/systems/electrical/outputs/bus[0]</prop>
|
||||
<prop>/systems/electrical/outputs/transponder</prop>
|
||||
</bus>
|
||||
|
||||
<!-- Generic Outputs -->
|
||||
|
||||
<output>
|
||||
<name>Starter 1 Power</name>
|
||||
<prop>/systems/electrical/outputs/starter[0]</prop>
|
||||
</output>
|
||||
|
||||
<output>
|
||||
<name>Landing Light Power</name>
|
||||
<prop>/systems/electrical/outputs/landing-light</prop>
|
||||
</output>
|
||||
|
||||
<output>
|
||||
<name>Beacon Power</name>
|
||||
<prop>/systems/electrical/outputs/beacon</prop>
|
||||
</output>
|
||||
|
||||
<output>
|
||||
<name>Strobe Lights Power</name>
|
||||
<prop>/systems/electrical/outputs/strobe-lights</prop>
|
||||
</output>
|
||||
|
||||
<output>
|
||||
<name>Taxi Lights Power</name>
|
||||
<prop>/systems/electrical/outputs/taxi-lights</prop>
|
||||
</output>
|
||||
|
||||
<output>
|
||||
<name>Pitot Heat Power</name>
|
||||
<prop>/systems/electrical/outputs/pitot-heat</prop>
|
||||
</output>
|
||||
|
||||
|
||||
<!-- connect in power sources -->
|
||||
|
||||
<connector>
|
||||
<input>Alternator 1</input>
|
||||
<output>Master Bus</output>
|
||||
<switch>
|
||||
<prop>/controls/engines/engine[0]/master-alt</prop>
|
||||
</switch>
|
||||
</connector>
|
||||
|
||||
<connector>
|
||||
<input>Battery 1</input>
|
||||
<output>Master Bus</output>
|
||||
<switch>
|
||||
<prop>/controls/engines/engine[0]/master-bat</prop>
|
||||
</switch>
|
||||
</connector>
|
||||
|
||||
<!-- connect starter output -->
|
||||
|
||||
<connector>
|
||||
<input>Master Bus</input>
|
||||
<output>Starter 1 Power</output>
|
||||
<switch>
|
||||
<prop>/controls/engines/engine[0]/starter</prop>
|
||||
<initial-state>off</initial-state>
|
||||
</switch>
|
||||
</connector>
|
||||
|
||||
<!-- connect master bus outputs -->
|
||||
|
||||
<connector>
|
||||
<input>Master Bus</input>
|
||||
<output>Landing Light Power</output>
|
||||
<switch>
|
||||
<prop>/controls/switches/landing-light</prop>
|
||||
</switch>
|
||||
</connector>
|
||||
|
||||
<connector>
|
||||
<input>Master Bus</input>
|
||||
<output>Beacon Power</output>
|
||||
<switch>
|
||||
<prop>/controls/switches/flashing-beacon</prop>
|
||||
</switch>
|
||||
</connector>
|
||||
|
||||
<connector>
|
||||
<input>Master Bus</input>
|
||||
<output>Strobe Lights Power</output>
|
||||
<switch>
|
||||
<prop>/controls/switches/strobe-lights</prop>
|
||||
</switch>
|
||||
</connector>
|
||||
|
||||
<connector>
|
||||
<input>Master Bus</input>
|
||||
<output>Taxi Lights Power</output>
|
||||
<switch>
|
||||
<prop>/controls/switches/taxi-lights</prop>
|
||||
</switch>
|
||||
</connector>
|
||||
|
||||
<connector>
|
||||
<input>Master Bus</input>
|
||||
<output>Pitot Heat Power</output>
|
||||
<switch>
|
||||
<prop>/controls/switches/pitot-heat</prop>
|
||||
</switch>
|
||||
</connector>
|
||||
|
||||
</PropertyList>
|
|
@ -0,0 +1,22 @@
|
|||
var dialog = gui.Dialog.new("/sim/gui/dialogs/rascal/config/dialog",
|
||||
"Aircraft/Rascal/Dialogs/config.xml");
|
||||
|
||||
var last_time = 0.0;
|
||||
|
||||
|
||||
var main_loop = func {
|
||||
var time = getprop("/sim/time/elapsed-sec");
|
||||
var dt = time - last_time;
|
||||
last_time = time;
|
||||
|
||||
update_airdata( dt );
|
||||
update_ugear( dt );
|
||||
|
||||
settimer(main_loop, 0);
|
||||
}
|
||||
|
||||
|
||||
setlistener("/sim/signals/fdm-initialized",
|
||||
func {
|
||||
main_loop();
|
||||
});
|
|
@ -0,0 +1,54 @@
|
|||
var update_ugear = func( dt ) {
|
||||
var max_zoom_rate = 10*dt;
|
||||
var max_pan_rate = 30*dt;
|
||||
var max_tilt_rate = 45*dt;
|
||||
|
||||
var ap_enable = props.globals.getNode("/ugear/settings/ap-enable");
|
||||
if ( ap_enable == nil ) {
|
||||
props.globals.initNode("/ugear/settings/ap-enable", 0, "BOOL", 1);
|
||||
ap_enable = props.globals.getNode("/ugear/settings/ap-enable");
|
||||
}
|
||||
if ( ap_enable.getBoolValue() ) {
|
||||
setprop( "/controls/flight/aileron", getprop("/ugear/act/aileron") );
|
||||
setprop( "/controls/flight/elevator", getprop("/ugear/act/elevator") );
|
||||
}
|
||||
|
||||
var turret_enable = props.globals.getNode("/ugear/settings/turret-enable");
|
||||
if ( turret_enable == nil ) {
|
||||
props.globals.initNode("/ugear/settings/turret-enable", 0, "BOOL", 1);
|
||||
turret_enable = props.globals.getNode("/ugear/settings/turret-enable");
|
||||
}
|
||||
|
||||
if ( (getprop("/sim/current-view/name") == "Camera View")
|
||||
and turret_enable.getBoolValue() )
|
||||
{
|
||||
var target_zoom = getprop("/ugear/act/channel6");
|
||||
var target_pan = -getprop("/ugear/act/channel7");
|
||||
if ( target_pan < -180.0 ) { target_pan += 360.0; }
|
||||
if ( target_pan > 180.0 ) { target_pan -= 360.0; }
|
||||
var target_tilt = -getprop("/ugear/act/channel8");
|
||||
var cur_zoom = getprop("/sim/current-view/field-of-view");
|
||||
var cur_pan = getprop("/sim/current-view/heading-offset-deg");
|
||||
var cur_tilt = getprop("/sim/current-view/pitch-offset-deg");
|
||||
var diff = 0.0;
|
||||
|
||||
diff = target_zoom - cur_zoom;
|
||||
if ( diff > max_zoom_rate ) { diff = max_zoom_rate; }
|
||||
if ( diff < -max_zoom_rate ) { diff = -max_zoom_rate; }
|
||||
setprop("/sim/current-view/field-of-view", cur_zoom + diff);
|
||||
|
||||
diff = target_pan - cur_pan;
|
||||
if ( diff > 180 ) { diff -= 360; }
|
||||
if ( diff < -180 ) { diff += 360; }
|
||||
if ( diff > max_pan_rate ) { diff = max_pan_rate; }
|
||||
if ( diff < -max_pan_rate ) { diff = -max_pan_rate; }
|
||||
setprop("/sim/current-view/heading-offset-deg", cur_pan + diff);
|
||||
|
||||
diff = target_tilt - cur_tilt;
|
||||
if ( diff > 90 ) { diff = 90; }
|
||||
if ( diff < -90 ) { diff = -90; }
|
||||
if ( diff > max_tilt_rate ) { diff = max_tilt_rate; }
|
||||
if ( diff < -max_tilt_rate ) { diff = -max_tilt_rate; }
|
||||
setprop("/sim/current-view/pitch-offset-deg", cur_tilt + diff);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0"?>
|
||||
<initialize name="Start up at Canberra Model Aircraft Club">
|
||||
<latitude unit="DEG"> -35.362851 </latitude>
|
||||
<longitude unit="DEG"> 149.165223 </longitude>
|
||||
<altitude unit="M"> 0 </altitude>
|
||||
<vt unit="FT/SEC"> 0.0 </vt>
|
||||
<gamma unit="DEG"> 0.0 </gamma>
|
||||
<phi unit="DEG"> 0.0 </phi>
|
||||
<theta unit="DEG"> 0.0 </theta>
|
||||
<psi unit="DEG"> 0.0 </psi>
|
||||
</initialize>
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0"?>
|
||||
<electric_engine name="a2830-12">
|
||||
<power unit="WATTS"> 187 </power>
|
||||
</electric_engine>
|
|
@ -0,0 +1,76 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- Generated by Aero-Matic v 1.1
|
||||
|
||||
Inputs:
|
||||
horsepower: 0.250767
|
||||
pitch: fixed
|
||||
max engine rpm: 9435
|
||||
prop diameter (ft): 0.83333333333333
|
||||
|
||||
Outputs:
|
||||
max prop rpm: 22515.60
|
||||
gear ratio: 0.42
|
||||
Cp0: 0.002731
|
||||
Ct0: 0.003823
|
||||
static thrust (lbs): 0.66
|
||||
-->
|
||||
<propeller name="prop">
|
||||
<!--<ixx> 0.00 </ixx>-->
|
||||
<ixx> 0.000041666666 </ixx>
|
||||
<!--assuming solid rod of mass 8 g-->
|
||||
<diameter unit="IN"> 10.0 </diameter>
|
||||
<numblades> 2 </numblades>
|
||||
<gearratio> 1.0 </gearratio>
|
||||
<p_factor> 0.79 </p_factor>
|
||||
<table name="C_THRUST" type="internal">
|
||||
<tableData><!--experimentally measured-->
|
||||
0.0 0.0054513
|
||||
1.4 0.0054513
|
||||
<!--aeromatic generated-->
|
||||
<!--0.0 0.0042-->
|
||||
<!--0.1 0.0040-->
|
||||
<!--0.2 0.0038-->
|
||||
<!--0.3 0.0035-->
|
||||
<!--0.4 0.0032-->
|
||||
<!--0.5 0.0028-->
|
||||
<!--0.6 0.0023-->
|
||||
<!--0.7 0.0017-->
|
||||
<!--0.8 0.0009-->
|
||||
<!--1.0 -0.0003-->
|
||||
<!--1.2 -0.0016-->
|
||||
<!--1.4 -0.0030-->
|
||||
</tableData>
|
||||
</table>
|
||||
<table name="C_POWER" type="internal">
|
||||
<tableData>
|
||||
0.0 0.0028
|
||||
0.1 0.0028
|
||||
0.2 0.0027
|
||||
0.3 0.0027
|
||||
0.4 0.0025
|
||||
0.5 0.0023
|
||||
0.6 0.0021
|
||||
0.7 0.0018
|
||||
0.8 0.0015
|
||||
1.0 0.0005
|
||||
1.2 -0.0008
|
||||
1.4 -0.0025
|
||||
1.6 -0.0042
|
||||
</tableData>
|
||||
</table>
|
||||
<!-- thrust effects of helical tip Mach -->
|
||||
<table name="CT_MACH" type="internal">
|
||||
<tableData>
|
||||
0.85 1.0
|
||||
1.05 0.8
|
||||
</tableData>
|
||||
</table>
|
||||
<!-- power-required effects of helical tip Mach -->
|
||||
<table name="CP_MACH" type="internal">
|
||||
<tableData>
|
||||
0.85 1.0
|
||||
1.05 1.8
|
||||
2.00 1.4
|
||||
</tableData>
|
||||
</table>
|
||||
</propeller>
|
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,88 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList>
|
||||
<!--Airframe-->
|
||||
<path>arducopter.ac</path>
|
||||
<offsets>
|
||||
<z-m>0.0</z-m>
|
||||
<y-m>0</y-m>
|
||||
<x-m>0.0</x-m>
|
||||
<pitch-deg>0</pitch-deg>
|
||||
<heading-deg>180</heading-deg>
|
||||
</offsets>
|
||||
<!--Propeller Right-->
|
||||
<animation>
|
||||
<type>noshadow</type>
|
||||
<object-name>propeller0</object-name>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>spin</type>
|
||||
<object-name>propeller0</object-name>
|
||||
<property>/engines/engine[0]/rpm</property>
|
||||
<factor>100</factor>
|
||||
<axis>
|
||||
<x1-m>0.000</x1-m>
|
||||
<y1-m>-0.288</y1-m>
|
||||
<z1-m>0.046</z1-m>
|
||||
<x2-m>0.000</x2-m>
|
||||
<y2-m>-0.288</y2-m>
|
||||
<z2-m>0.012</z2-m>
|
||||
</axis>
|
||||
</animation>
|
||||
<!--Propeller Left-->
|
||||
<animation>
|
||||
<type>noshadow</type>
|
||||
<object-name>propeller1</object-name>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>spin</type>
|
||||
<object-name>propeller1</object-name>
|
||||
<property>/engines/engine[1]/rpm</property>
|
||||
<factor>100</factor>
|
||||
<axis>
|
||||
<x1-m>0.000</x1-m>
|
||||
<y1-m>0.288</y1-m>
|
||||
<z1-m>0.046</z1-m>
|
||||
<x2-m>0.000</x2-m>
|
||||
<y2-m>0.288</y2-m>
|
||||
<z2-m>0.012</z2-m>
|
||||
</axis>
|
||||
</animation>
|
||||
<!--Propeller Front-->
|
||||
<animation>
|
||||
<type>noshadow</type>
|
||||
<object-name>propeller2</object-name>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>spin</type>
|
||||
<object-name>propeller2</object-name>
|
||||
<property>/engines/engine[2]/rpm</property>
|
||||
<factor>100</factor>
|
||||
<axis>
|
||||
<x1-m>0.288</x1-m>
|
||||
<y1-m>0.000</y1-m>
|
||||
<z1-m>0.046</z1-m>
|
||||
<x2-m>0.288</x2-m>
|
||||
<y2-m>0.000</y2-m>
|
||||
<z2-m>0.012</z2-m>
|
||||
</axis>
|
||||
</animation>
|
||||
<!--Propeller Back-->
|
||||
<animation>
|
||||
<type>noshadow</type>
|
||||
<object-name>propeller3</object-name>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>spin</type>
|
||||
<object-name>propeller3</object-name>
|
||||
<property>/engines/engine[3]/rpm</property>
|
||||
<factor>100</factor>
|
||||
<axis>
|
||||
<x1-m>-0.288</x1-m>
|
||||
<y1-m>0.000</y1-m>
|
||||
<z1-m>0.046</z1-m>
|
||||
<x2-m>-0.288</x2-m>
|
||||
<y2-m>0.000</y2-m>
|
||||
<z2-m>0.012</z2-m>
|
||||
</axis>
|
||||
</animation>
|
||||
</PropertyList>
|
|
@ -0,0 +1,3 @@
|
|||
This model is based on the arducopter mode from James Goppert, and
|
||||
adapted for use in the ArduPilot test system. Many thanks to all who
|
||||
have contributed!
|
|
@ -0,0 +1,93 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
************************************************************************
|
||||
Arducotper UAV Model
|
||||
************************************************************************
|
||||
-->
|
||||
<PropertyList>
|
||||
<sim>
|
||||
<description>Arducopter UAV (R/C)</description>
|
||||
<author>James Goppert</author>
|
||||
<aircraft-version>0.0</aircraft-version>
|
||||
<status>experimental</status>
|
||||
<flight-model>jsb</flight-model>
|
||||
<aero>arducopter</aero>
|
||||
<model-hz>50</model-hz>
|
||||
<sound>
|
||||
<path>Aircraft/Generic/generic-sound.xml</path>
|
||||
</sound>
|
||||
<panel>
|
||||
<visibility archive="n">false</visibility>
|
||||
</panel>
|
||||
<model>
|
||||
<path archive="y">Aircraft/arducopter/Models/arducopter.xml</path>
|
||||
</model>
|
||||
<view>
|
||||
<internal archive="y">true</internal>
|
||||
<config>
|
||||
<x-offset-m archive="y">0.0</x-offset-m>
|
||||
<y-offset-m archive="y">0.15</y-offset-m>
|
||||
<z-offset-m archive="y">0.90</z-offset-m>
|
||||
<pitch-offset-deg>0</pitch-offset-deg>
|
||||
</config>
|
||||
</view>
|
||||
<chase-distance-m archive="y" type="double">-5.5</chase-distance-m>
|
||||
<help>
|
||||
<title>arducopter UAV</title>
|
||||
<line>Cruise speed: ? mph</line>
|
||||
<line>Never-exceed (Vne): ? mph</line>
|
||||
<line>Best Glide (Vglide): ? mph</line>
|
||||
<line>Maneuvering (Va): ? mph</line>
|
||||
<line>Approach speed: ? mph</line>
|
||||
<line>Stall speed (Vs): ? mph</line>
|
||||
</help>
|
||||
<startup>
|
||||
<splash-title>Arducopter UAV DIY Drones/ OPENMAV</splash-title>
|
||||
<splash-texture>Aircraft/arducopter/arducopter.jpg</splash-texture>
|
||||
</startup>
|
||||
</sim>
|
||||
<controls>
|
||||
<flight>
|
||||
<aileron-trim>0.00</aileron-trim>
|
||||
<!-- fixed -->
|
||||
<elevator-trim>0.00</elevator-trim>
|
||||
<!-- controllable -->
|
||||
</flight>
|
||||
</controls>
|
||||
<consumables>
|
||||
<fuel>
|
||||
<tank n="0">
|
||||
<level-gal_us>0</level-gal_us>
|
||||
</tank>
|
||||
</fuel>
|
||||
</consumables>
|
||||
<payload>
|
||||
<weight>
|
||||
<name type="string">Payload</name>
|
||||
<weight-lb alias="/fdm/jsbsim/inertia/pointmass-weight-lbs[0]"/>
|
||||
<min-lb type="double">0.0</min-lb>
|
||||
<max-lb type="double">1.0</max-lb>
|
||||
</weight>
|
||||
</payload>
|
||||
<nasal>
|
||||
<arducopter>
|
||||
<script>
|
||||
setlistener("/sim/signals/fdm-initialized", func {
|
||||
var left = screen.display.new(20, 10);
|
||||
left.add("/engines/engine[0]/rpm");
|
||||
left.add("/engines/engine[1]/rpm");
|
||||
left.add("/engines/engine[2]/rpm");
|
||||
left.add("/engines/engine[3]/rpm");
|
||||
|
||||
var right = screen.display.new(-250, 20);
|
||||
right.add("/position/altitude-agl-ft");
|
||||
right.add("/orientation/roll-deg");
|
||||
right.add("/orientation/pitch-deg");
|
||||
right.add("/orientation/heading-deg");
|
||||
right.add("/instrumentation/gps/indicated-ground-speed-kt");
|
||||
});
|
||||
</script>
|
||||
</arducopter>
|
||||
</nasal>
|
||||
</PropertyList>
|
||||
<!-- vim:sw=4:ts=4:expandtab -->
|
|
@ -0,0 +1,248 @@
|
|||
<?xml version="1.0"?>
|
||||
<?xml-stylesheet type="text/xsl" href="http://jsbsim.sourceforge.net/JSBSim.xsl"?>
|
||||
<fdm_config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="dflyer" version="2.0" release="ALPHA" xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
||||
<fileheader>
|
||||
<author> James Goppert </author>
|
||||
<filecreationdate> 2010-03-11 </filecreationdate>
|
||||
<version>0.0 </version>
|
||||
<description> Arducopter DIY Drones UAV. </description>
|
||||
</fileheader>
|
||||
<metrics>
|
||||
<wingarea unit="M2"> 0.017</wingarea>
|
||||
<wingspan unit="M"> 0.13 </wingspan>
|
||||
<chord unit="FT"> 0.0 </chord>
|
||||
<htailarea unit="FT2"> 0.0 </htailarea>
|
||||
<htailarm unit="FT"> 0.0 </htailarm>
|
||||
<vtailarea unit="FT2"> 0.0 </vtailarea>
|
||||
<vtailarm unit="FT"> 0.0 </vtailarm>
|
||||
<location name="AERORP" unit="IN">
|
||||
<x> 0.00 </x>
|
||||
<y> 0.00 </y>
|
||||
<z> 0.00 </z>
|
||||
</location>
|
||||
<location name="EYEPOINT" unit="IN">
|
||||
<x> 0.0 </x>
|
||||
<y> 0.0 </y>
|
||||
<z> 0.0 </z>
|
||||
</location>
|
||||
<location name="VRP" unit="IN">
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>0</z>
|
||||
</location>
|
||||
</metrics>
|
||||
<mass_balance>
|
||||
<!--roughtly approximating this as a solid sphere with correct mass-->
|
||||
<ixx unit="KG*M2"> 0.036 </ixx>
|
||||
<iyy unit="KG*M2"> 0.036 </iyy>
|
||||
<izz unit="KG*M2"> 0.036 </izz>
|
||||
<emptywt unit="KG"> 1.0 </emptywt>
|
||||
<location name="CG" unit="IN">
|
||||
<x> 0.0 </x>
|
||||
<y> 0.0 </y>
|
||||
<z> 0.0 </z>
|
||||
</location>
|
||||
<pointmass name="Payload">
|
||||
<weight unit="KG"> 0.0 </weight>
|
||||
<location unit="IN">
|
||||
<x> 0.0 </x>
|
||||
<y> 0.0 </y>
|
||||
<z> 0.0 </z>
|
||||
</location>
|
||||
</pointmass>
|
||||
</mass_balance>
|
||||
<ground_reactions>
|
||||
<contact type="BOGEY" name="frontbase">
|
||||
<location unit="M">
|
||||
<x> -0.283 </x>
|
||||
<y> 0.00 </y>
|
||||
<z> -0.033</z>
|
||||
</location>
|
||||
<static_friction> 0.80 </static_friction>
|
||||
<dynamic_friction> 0.50 </dynamic_friction>
|
||||
<spring_coeff unit="N/M"> 800 </spring_coeff>
|
||||
<damping_coeff unit="N/M2/SEC2" type="SQUARE"> 7 </damping_coeff>
|
||||
<damping_coeff_rebound unit="N/M2/SEC2" type="SQUARE"> 300 </damping_coeff_rebound>
|
||||
</contact>
|
||||
<contact type="BOGEY" name="rearbase">
|
||||
<location unit="M">
|
||||
<x> 0.283 </x>
|
||||
<y> 0.00 </y>
|
||||
<z> -0.033</z>
|
||||
</location>
|
||||
<static_friction> 0.80 </static_friction>
|
||||
<dynamic_friction> 0.50 </dynamic_friction>
|
||||
<spring_coeff unit="N/M"> 800 </spring_coeff>
|
||||
<damping_coeff unit="N/M2/SEC2" type="SQUARE"> 7 </damping_coeff>
|
||||
<damping_coeff_rebound unit="N/M2/SEC2" type="SQUARE"> 300 </damping_coeff_rebound>
|
||||
</contact>
|
||||
<contact type="BOGEY" name="leftbase">
|
||||
<location unit="M">
|
||||
<x> 0.00 </x>
|
||||
<y> 0.283 </y>
|
||||
<z> -0.033</z>
|
||||
</location>
|
||||
<static_friction> 0.80 </static_friction>
|
||||
<dynamic_friction> 0.50 </dynamic_friction>
|
||||
<spring_coeff unit="N/M"> 800 </spring_coeff>
|
||||
<damping_coeff unit="N/M2/SEC2" type="SQUARE"> 7 </damping_coeff>
|
||||
<damping_coeff_rebound unit="N/M2/SEC2" type="SQUARE"> 300 </damping_coeff_rebound>
|
||||
</contact>
|
||||
<contact type="BOGEY" name="rightbase">
|
||||
<location unit="M">
|
||||
<x> 0.00 </x>
|
||||
<y> -0.283 </y>
|
||||
<z> -0.033</z>
|
||||
</location>
|
||||
<static_friction> 0.80 </static_friction>
|
||||
<dynamic_friction> 0.50 </dynamic_friction>
|
||||
<spring_coeff unit="N/M"> 800 </spring_coeff>
|
||||
<damping_coeff unit="N/M2/SEC2" type="SQUARE"> 7 </damping_coeff>
|
||||
<damping_coeff_rebound unit="N/M2/SEC2" type="SQUARE"> 300 </damping_coeff_rebound>
|
||||
</contact>
|
||||
</ground_reactions>
|
||||
<!-- the front and rear motors spin clockwise, and the left and right motors spin counter-clockwise. -->
|
||||
<propulsion>
|
||||
<engine file="a2830-12" name="front">
|
||||
<location unit="M">
|
||||
<x> -0.283 </x>
|
||||
<y> 0.00 </y>
|
||||
<z> 0.00 </z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<pitch> 90.00 </pitch>
|
||||
<roll> 0.00 </roll>
|
||||
<yaw> 0.00 </yaw>
|
||||
</orient>
|
||||
<feed>0</feed>
|
||||
<thruster file="prop10x4.5">
|
||||
<location unit="M">
|
||||
<x> -0.283 </x>
|
||||
<y> 0.00 </y>
|
||||
<z> 0.125 </z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<pitch> 90.00 </pitch>
|
||||
<roll> 0.00 </roll>
|
||||
<yaw> 0.00 </yaw>
|
||||
</orient>
|
||||
<sense> 1 </sense>
|
||||
<p_factor> 10 </p_factor>
|
||||
</thruster>
|
||||
</engine>
|
||||
<engine file="a2830-12" name="rear">
|
||||
<location unit="M">
|
||||
<x> 0.283 </x>
|
||||
<y> 0.000 </y>
|
||||
<z> 0.000 </z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<pitch> 90.00 </pitch>
|
||||
<roll> 0.00 </roll>
|
||||
<yaw> 0.00 </yaw>
|
||||
</orient>
|
||||
<feed>0</feed>
|
||||
<thruster file="prop10x4.5">
|
||||
<location unit="M">
|
||||
<x> 0.283 </x>
|
||||
<y> 0.000 </y>
|
||||
<z> 0.125 </z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<pitch> 90.00 </pitch>
|
||||
<roll> 0.00 </roll>
|
||||
<yaw> 0.00 </yaw>
|
||||
</orient>
|
||||
<sense> 1 </sense>
|
||||
<p_factor> 10 </p_factor>
|
||||
</thruster>
|
||||
</engine>
|
||||
<engine file="a2830-12" name="left">
|
||||
<location unit="M">
|
||||
<x> 0.00 </x>
|
||||
<y> 0.283 </y>
|
||||
<z> 0.00 </z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<pitch> 90.00 </pitch>
|
||||
<roll> 0.00 </roll>
|
||||
<yaw> 0.00 </yaw>
|
||||
</orient>
|
||||
<feed>0</feed>
|
||||
<thruster file="prop10x4.5">
|
||||
<location unit="M">
|
||||
<x> 0.00 </x>
|
||||
<y> 0.283 </y>
|
||||
<z> 0.125 </z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<pitch> 90.00 </pitch>
|
||||
<roll> 0.00 </roll>
|
||||
<yaw> 0.00 </yaw>
|
||||
</orient>
|
||||
<sense> -1 </sense>
|
||||
<p_factor> 10 </p_factor>
|
||||
</thruster>
|
||||
</engine>
|
||||
<engine file="a2830-12" name="right">
|
||||
<location unit="M">
|
||||
<x> 0.000 </x>
|
||||
<y> -0.283 </y>
|
||||
<z> 0.000 </z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<pitch> 90.00 </pitch>
|
||||
<roll> 0.00 </roll>
|
||||
<yaw> 0.00 </yaw>
|
||||
</orient>
|
||||
<feed>0</feed>
|
||||
<thruster file="prop10x4.5">
|
||||
<location unit="M">
|
||||
<x> 0.000 </x>
|
||||
<y> -0.283 </y>
|
||||
<z> 0.125 </z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<pitch> 90.00 </pitch>
|
||||
<roll> 0.00 </roll>
|
||||
<yaw> 0.00 </yaw>
|
||||
</orient>
|
||||
<sense> -1 </sense>
|
||||
<p_factor> 10 </p_factor>
|
||||
</thruster>
|
||||
</engine>
|
||||
<tank type="FUEL" number="0">
|
||||
<location unit="M">
|
||||
<x> 0.00 </x>
|
||||
<y> 0.00 </y>
|
||||
<z> -0.07 </z>
|
||||
</location>
|
||||
<!--have to have a fuel capacity, so setting it small-->
|
||||
<capacity unit="KG"> 0.00000000001 </capacity>
|
||||
<contents unit="KG"> 0.0 </contents>
|
||||
</tank>
|
||||
</propulsion>
|
||||
<aerodynamics>
|
||||
<axis name="LIFT">
|
||||
</axis>
|
||||
<axis name="DRAG">
|
||||
<function name="aero/coefficient/CD0">
|
||||
<description>Overall Drag</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<value>1</value>
|
||||
</product>
|
||||
</function>
|
||||
</axis>
|
||||
<axis name="SIDE">
|
||||
</axis>
|
||||
<axis name="ROLL">
|
||||
</axis>
|
||||
<axis name="PITCH">
|
||||
</axis>
|
||||
<axis name="YAW">
|
||||
</axis>
|
||||
</aerodynamics>
|
||||
</fdm_config>
|
||||
<!-- vim:ts=2:sw=2:expandtab -->
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0"?>
|
||||
<initialize name="reset00">
|
||||
<ubody unit="M/SEC"> nan </ubody>
|
||||
<vbody unit="M/SEC"> nan </vbody>
|
||||
<wbody unit="M/SEC"> nan </wbody>
|
||||
<phi unit="DEG"> nan </phi>
|
||||
<theta unit="DEG"> -nan </theta>
|
||||
<psi unit="DEG"> nan </psi>
|
||||
<longitude unit="DEG"> nan </longitude>
|
||||
<latitude unit="DEG"> nan </latitude>
|
||||
<altitude unit="M"> nan </altitude>
|
||||
</initialize>
|
|
@ -0,0 +1,93 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
************************************************************************
|
||||
Arducotper UAV Model
|
||||
************************************************************************
|
||||
-->
|
||||
<PropertyList>
|
||||
<sim>
|
||||
<description>Arducopter UAV (R/C) (plus quad)</description>
|
||||
<author>James Goppert</author>
|
||||
<aircraft-version>0.0</aircraft-version>
|
||||
<status>experimental</status>
|
||||
<flight-model>jsb</flight-model>
|
||||
<aero>plus_quad2</aero>
|
||||
<model-hz>50</model-hz>
|
||||
<sound>
|
||||
<path>Aircraft/Generic/generic-sound.xml</path>
|
||||
</sound>
|
||||
<panel>
|
||||
<visibility archive="n">false</visibility>
|
||||
</panel>
|
||||
<model>
|
||||
<path archive="y">Aircraft/arducopter/Models/plus_quad2.xml</path>
|
||||
</model>
|
||||
<view>
|
||||
<internal archive="y">true</internal>
|
||||
<config>
|
||||
<x-offset-m archive="y">0.0</x-offset-m>
|
||||
<y-offset-m archive="y">0.15</y-offset-m>
|
||||
<z-offset-m archive="y">0.90</z-offset-m>
|
||||
<pitch-offset-deg>0</pitch-offset-deg>
|
||||
</config>
|
||||
</view>
|
||||
<chase-distance-m archive="y" type="double">-5.5</chase-distance-m>
|
||||
<help>
|
||||
<title>plus_quad UAV</title>
|
||||
<line>Cruise speed: ? mph</line>
|
||||
<line>Never-exceed (Vne): ? mph</line>
|
||||
<line>Best Glide (Vglide): ? mph</line>
|
||||
<line>Maneuvering (Va): ? mph</line>
|
||||
<line>Approach speed: ? mph</line>
|
||||
<line>Stall speed (Vs): ? mph</line>
|
||||
</help>
|
||||
<startup>
|
||||
<splash-title>Arducopter UAV DIY Drones/ OPENMAV</splash-title>
|
||||
<splash-texture>Aircraft/arducopter/arducopter.jpg</splash-texture>
|
||||
</startup>
|
||||
</sim>
|
||||
<controls>
|
||||
<flight>
|
||||
<aileron-trim>0.00</aileron-trim>
|
||||
<!-- fixed -->
|
||||
<elevator-trim>0.00</elevator-trim>
|
||||
<!-- controllable -->
|
||||
</flight>
|
||||
</controls>
|
||||
<consumables>
|
||||
<fuel>
|
||||
<tank n="0">
|
||||
<level-gal_us>0</level-gal_us>
|
||||
</tank>
|
||||
</fuel>
|
||||
</consumables>
|
||||
<payload>
|
||||
<weight>
|
||||
<name type="string">Payload</name>
|
||||
<weight-lb alias="/fdm/jsbsim/inertia/pointmass-weight-lbs[0]"/>
|
||||
<min-lb type="double">0.0</min-lb>
|
||||
<max-lb type="double">1.0</max-lb>
|
||||
</weight>
|
||||
</payload>
|
||||
<nasal>
|
||||
<plus_quad2>
|
||||
<script>
|
||||
setlistener("/sim/signals/fdm-initialized", func {
|
||||
var left = screen.display.new(20, 10);
|
||||
left.add("/controls/engines/engine[0]/throttle");
|
||||
left.add("/controls/engines/engine[1]/throttle");
|
||||
left.add("/controls/engines/engine[2]/throttle");
|
||||
left.add("/controls/engines/engine[3]/throttle");
|
||||
|
||||
var right = screen.display.new(-250, 20);
|
||||
right.add("/position/altitude-agl-ft");
|
||||
right.add("/orientation/roll-deg");
|
||||
right.add("/orientation/pitch-deg");
|
||||
right.add("/orientation/heading-deg");
|
||||
right.add("/instrumentation/gps/indicated-ground-speed-kt");
|
||||
});
|
||||
</script>
|
||||
</plus_quad2>
|
||||
</nasal>
|
||||
</PropertyList>
|
||||
<!-- vim:sw=4:ts=4:expandtab -->
|
|
@ -0,0 +1,248 @@
|
|||
<?xml version="1.0"?>
|
||||
<?xml-stylesheet type="text/xsl" href="http://jsbsim.sourceforge.net/JSBSim.xsl"?>
|
||||
<fdm_config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="dflyer" version="2.0" release="ALPHA" xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
||||
<fileheader>
|
||||
<author> James Goppert </author>
|
||||
<filecreationdate> 2010-03-11 </filecreationdate>
|
||||
<version>0.0 </version>
|
||||
<description> Arducopter DIY Drones UAV. </description>
|
||||
</fileheader>
|
||||
<metrics>
|
||||
<wingarea unit="M2"> 0.017</wingarea>
|
||||
<wingspan unit="M"> 0.13 </wingspan>
|
||||
<chord unit="FT"> 0.0 </chord>
|
||||
<htailarea unit="FT2"> 0.0 </htailarea>
|
||||
<htailarm unit="FT"> 0.0 </htailarm>
|
||||
<vtailarea unit="FT2"> 0.0 </vtailarea>
|
||||
<vtailarm unit="FT"> 0.0 </vtailarm>
|
||||
<location name="AERORP" unit="IN">
|
||||
<x> 0.00 </x>
|
||||
<y> 0.00 </y>
|
||||
<z> 0.00 </z>
|
||||
</location>
|
||||
<location name="EYEPOINT" unit="IN">
|
||||
<x> 0.0 </x>
|
||||
<y> 0.0 </y>
|
||||
<z> 0.0 </z>
|
||||
</location>
|
||||
<location name="VRP" unit="IN">
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>0</z>
|
||||
</location>
|
||||
</metrics>
|
||||
<mass_balance>
|
||||
<!--roughtly approximating this as a solid sphere with correct mass-->
|
||||
<ixx unit="KG*M2"> 0.036 </ixx>
|
||||
<iyy unit="KG*M2"> 0.036 </iyy>
|
||||
<izz unit="KG*M2"> 0.036 </izz>
|
||||
<emptywt unit="KG"> 1.0 </emptywt>
|
||||
<location name="CG" unit="IN">
|
||||
<x> 0.0 </x>
|
||||
<y> 0.0 </y>
|
||||
<z> 0.0 </z>
|
||||
</location>
|
||||
<pointmass name="Payload">
|
||||
<weight unit="KG"> 0.0 </weight>
|
||||
<location unit="IN">
|
||||
<x> 0.0 </x>
|
||||
<y> 0.0 </y>
|
||||
<z> 0.0 </z>
|
||||
</location>
|
||||
</pointmass>
|
||||
</mass_balance>
|
||||
<ground_reactions>
|
||||
<contact type="BOGEY" name="frontbase">
|
||||
<location unit="M">
|
||||
<x> -0.283 </x>
|
||||
<y> 0.00 </y>
|
||||
<z> -0.033</z>
|
||||
</location>
|
||||
<static_friction> 0.80 </static_friction>
|
||||
<dynamic_friction> 0.50 </dynamic_friction>
|
||||
<spring_coeff unit="N/M"> 800 </spring_coeff>
|
||||
<damping_coeff unit="N/M2/SEC2" type="SQUARE"> 7 </damping_coeff>
|
||||
<damping_coeff_rebound unit="N/M2/SEC2" type="SQUARE"> 300 </damping_coeff_rebound>
|
||||
</contact>
|
||||
<contact type="BOGEY" name="rearbase">
|
||||
<location unit="M">
|
||||
<x> 0.283 </x>
|
||||
<y> 0.00 </y>
|
||||
<z> -0.033</z>
|
||||
</location>
|
||||
<static_friction> 0.80 </static_friction>
|
||||
<dynamic_friction> 0.50 </dynamic_friction>
|
||||
<spring_coeff unit="N/M"> 800 </spring_coeff>
|
||||
<damping_coeff unit="N/M2/SEC2" type="SQUARE"> 7 </damping_coeff>
|
||||
<damping_coeff_rebound unit="N/M2/SEC2" type="SQUARE"> 300 </damping_coeff_rebound>
|
||||
</contact>
|
||||
<contact type="BOGEY" name="leftbase">
|
||||
<location unit="M">
|
||||
<x> 0.00 </x>
|
||||
<y> 0.283 </y>
|
||||
<z> -0.033</z>
|
||||
</location>
|
||||
<static_friction> 0.80 </static_friction>
|
||||
<dynamic_friction> 0.50 </dynamic_friction>
|
||||
<spring_coeff unit="N/M"> 800 </spring_coeff>
|
||||
<damping_coeff unit="N/M2/SEC2" type="SQUARE"> 7 </damping_coeff>
|
||||
<damping_coeff_rebound unit="N/M2/SEC2" type="SQUARE"> 300 </damping_coeff_rebound>
|
||||
</contact>
|
||||
<contact type="BOGEY" name="rightbase">
|
||||
<location unit="M">
|
||||
<x> 0.00 </x>
|
||||
<y> -0.283 </y>
|
||||
<z> -0.033</z>
|
||||
</location>
|
||||
<static_friction> 0.80 </static_friction>
|
||||
<dynamic_friction> 0.50 </dynamic_friction>
|
||||
<spring_coeff unit="N/M"> 800 </spring_coeff>
|
||||
<damping_coeff unit="N/M2/SEC2" type="SQUARE"> 7 </damping_coeff>
|
||||
<damping_coeff_rebound unit="N/M2/SEC2" type="SQUARE"> 300 </damping_coeff_rebound>
|
||||
</contact>
|
||||
</ground_reactions>
|
||||
<!-- the front and rear motors spin clockwise, and the left and right motors spin counter-clockwise. -->
|
||||
<propulsion>
|
||||
<engine file="a2830-12" name="front">
|
||||
<location unit="M">
|
||||
<x> -0.283 </x>
|
||||
<y> 0.00 </y>
|
||||
<z> 0.00 </z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<pitch> 90.00 </pitch>
|
||||
<roll> 0.00 </roll>
|
||||
<yaw> 0.00 </yaw>
|
||||
</orient>
|
||||
<feed>0</feed>
|
||||
<thruster file="prop10x4.5">
|
||||
<location unit="M">
|
||||
<x> -0.283 </x>
|
||||
<y> 0.00 </y>
|
||||
<z> 0.125 </z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<pitch> 90.00 </pitch>
|
||||
<roll> 0.00 </roll>
|
||||
<yaw> 0.00 </yaw>
|
||||
</orient>
|
||||
<sense> 1 </sense>
|
||||
<p_factor> 10 </p_factor>
|
||||
</thruster>
|
||||
</engine>
|
||||
<engine file="a2830-12" name="rear">
|
||||
<location unit="M">
|
||||
<x> 0.283 </x>
|
||||
<y> 0.000 </y>
|
||||
<z> 0.000 </z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<pitch> 90.00 </pitch>
|
||||
<roll> 0.00 </roll>
|
||||
<yaw> 0.00 </yaw>
|
||||
</orient>
|
||||
<feed>0</feed>
|
||||
<thruster file="prop10x4.5">
|
||||
<location unit="M">
|
||||
<x> 0.283 </x>
|
||||
<y> 0.000 </y>
|
||||
<z> 0.125 </z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<pitch> 90.00 </pitch>
|
||||
<roll> 0.00 </roll>
|
||||
<yaw> 0.00 </yaw>
|
||||
</orient>
|
||||
<sense> 1 </sense>
|
||||
<p_factor> 10 </p_factor>
|
||||
</thruster>
|
||||
</engine>
|
||||
<engine file="a2830-12" name="left">
|
||||
<location unit="M">
|
||||
<x> 0.00 </x>
|
||||
<y> 0.283 </y>
|
||||
<z> 0.00 </z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<pitch> 90.00 </pitch>
|
||||
<roll> 0.00 </roll>
|
||||
<yaw> 0.00 </yaw>
|
||||
</orient>
|
||||
<feed>0</feed>
|
||||
<thruster file="prop10x4.5">
|
||||
<location unit="M">
|
||||
<x> 0.00 </x>
|
||||
<y> 0.283 </y>
|
||||
<z> 0.125 </z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<pitch> 90.00 </pitch>
|
||||
<roll> 0.00 </roll>
|
||||
<yaw> 0.00 </yaw>
|
||||
</orient>
|
||||
<sense> -1 </sense>
|
||||
<p_factor> 10 </p_factor>
|
||||
</thruster>
|
||||
</engine>
|
||||
<engine file="a2830-12" name="right">
|
||||
<location unit="M">
|
||||
<x> 0.000 </x>
|
||||
<y> -0.283 </y>
|
||||
<z> 0.000 </z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<pitch> 90.00 </pitch>
|
||||
<roll> 0.00 </roll>
|
||||
<yaw> 0.00 </yaw>
|
||||
</orient>
|
||||
<feed>0</feed>
|
||||
<thruster file="prop10x4.5">
|
||||
<location unit="M">
|
||||
<x> 0.000 </x>
|
||||
<y> -0.283 </y>
|
||||
<z> 0.125 </z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<pitch> 90.00 </pitch>
|
||||
<roll> 0.00 </roll>
|
||||
<yaw> 0.00 </yaw>
|
||||
</orient>
|
||||
<sense> -1 </sense>
|
||||
<p_factor> 10 </p_factor>
|
||||
</thruster>
|
||||
</engine>
|
||||
<tank type="FUEL" number="0">
|
||||
<location unit="M">
|
||||
<x> 0.00 </x>
|
||||
<y> 0.00 </y>
|
||||
<z> -0.07 </z>
|
||||
</location>
|
||||
<!--have to have a fuel capacity, so setting it small-->
|
||||
<capacity unit="KG"> 0.00000000001 </capacity>
|
||||
<contents unit="KG"> 0.0 </contents>
|
||||
</tank>
|
||||
</propulsion>
|
||||
<aerodynamics>
|
||||
<axis name="LIFT">
|
||||
</axis>
|
||||
<axis name="DRAG">
|
||||
<function name="aero/coefficient/CD0">
|
||||
<description>Overall Drag</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<value>1</value>
|
||||
</product>
|
||||
</function>
|
||||
</axis>
|
||||
<axis name="SIDE">
|
||||
</axis>
|
||||
<axis name="ROLL">
|
||||
</axis>
|
||||
<axis name="PITCH">
|
||||
</axis>
|
||||
<axis name="YAW">
|
||||
</axis>
|
||||
</aerodynamics>
|
||||
</fdm_config>
|
||||
<!-- vim:ts=2:sw=2:expandtab -->
|
Loading…
Reference in New Issue