add missing file for jsbsim

This commit is contained in:
Michael Oborne 2011-12-10 05:51:09 +08:00
parent 2f962fe6da
commit 005a8afa07
37 changed files with 65018 additions and 0 deletions

View File

@ -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>

View File

@ -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>

View File

@ -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>

File diff suppressed because it is too large Load Diff

View File

@ -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>

View File

@ -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

View File

@ -0,0 +1,9 @@
<?xml version="1.0"?>
<!-- Trajectory Marker config file - Lee Elliott -->
<PropertyList>
<path>Trajectory-Marker.ac</path>
</PropertyList>

View File

@ -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>

View File

@ -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

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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);
}

View File

@ -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>

View File

@ -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();
});

View File

@ -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);
}
}

View File

@ -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>

View File

@ -0,0 +1,4 @@
<?xml version="1.0"?>
<electric_engine name="a2830-12">
<power unit="WATTS"> 187 </power>
</electric_engine>

View File

@ -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>

File diff suppressed because it is too large Load Diff

View File

@ -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>

View File

@ -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!

View File

@ -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 -->

View File

@ -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 -->

View File

@ -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>

View File

@ -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 -->

View File

@ -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 -->