350-autopilot.xml 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509
  1. <?xml version="1.0"?>
  2. <!-- Generic Autopilot Configuration -->
  3. <!-- Each component is evaluated in the order specified. You can make up -->
  4. <!-- property names to pass the result of one component on to a subsequent -->
  5. <!-- component. -->
  6. <PropertyList>
  7. <!-- =============================================================== -->
  8. <!-- Prediction filters -->
  9. <!-- ===============================================================
  10. <predict-simple>
  11. <input>/autopilot/internal/nav1-track-error-deg</input>
  12. <output>/autopilot/internal/nav1-track-error-lookahead-deg</output>
  13. <seconds>8.0</seconds>
  14. <filter-gain>0.0</filter-gain>
  15. </predict-simple>-->
  16. <!-- =============================================================== -->
  17. <!-- Roll Axis Modes -->
  18. <!-- =============================================================== -->
  19. <!-- Wing leveler -->
  20. <pid-controller>
  21. <name>Wing Leveler (Turn Coordinator based)</name>
  22. <debug>false</debug>
  23. <enable>
  24. <prop>/autopilot/locks/heading</prop>
  25. <value>wing-leveler</value>
  26. </enable>
  27. <input>
  28. <prop>/instrumentation/turn-indicator/indicated-turn-rate</prop>
  29. </input>
  30. <reference>
  31. <value>0.0</value>
  32. </reference>
  33. <output>
  34. <prop>/controls/flight/aileron</prop>
  35. </output>
  36. <config>
  37. <Kp>1.02</Kp> <!-- proportional gain -->
  38. <beta>1.0</beta> <!-- input value weighing factor -->
  39. <alpha>0.4</alpha> <!-- low pass filter weighing factor -->
  40. <gamma>0.0</gamma> <!-- input value weighing factor for -->
  41. <!-- unfiltered derivative error -->
  42. <Ti>10.0</Ti> <!-- integrator time -->
  43. <Td>0.0000001</Td> <!-- derivator time -->
  44. <u_min>-1.0</u_min> <!-- minimum output clamp -->
  45. <u_max>1.0</u_max> <!-- maximum output clamp -->
  46. </config>
  47. </pid-controller>
  48. <!-- Heading Bug Hold. 2 stage cascade controller. -->
  49. <!-- Stage #1 sets target roll based on diff between current heading -->
  50. <!-- and heading bug. -->
  51. <pid-controller>
  52. <name>Heading Bug Hold (FDM mag heading based) Stage 1</name>
  53. <debug>false</debug>
  54. <enable>
  55. <prop>/autopilot/locks/heading</prop>
  56. <value>dg-heading-hold</value>
  57. </enable>
  58. <input>
  59. <prop>/autopilot/internal/fdm-heading-bug-error-deg</prop>
  60. </input>
  61. <reference>
  62. <value>0.0</value>
  63. </reference>
  64. <output>
  65. <prop>/autopilot/internal/target-roll-deg</prop>
  66. </output>
  67. <config>
  68. <Kp>-1.0</Kp> <!-- proportional gain -->
  69. <beta>1.0</beta> <!-- input value weighing factor -->
  70. <alpha>0.1</alpha> <!-- low pass filter weighing factor -->
  71. <gamma>0.0</gamma> <!-- input value weighing factor for -->
  72. <!-- unfiltered derivative error -->
  73. <Ti>10.0</Ti> <!-- integrator time -->
  74. <Td>0.00001</Td> <!-- derivator time -->
  75. <u_min>-30.0</u_min> <!-- minimum output clamp -->
  76. <u_max>30.0</u_max> <!-- maximum output clamp -->
  77. </config>
  78. </pid-controller>
  79. <!-- Stage #2 drives the ailerons to achieve the desired roll deg. -->
  80. <pid-controller>
  81. <name>Heading Bug Hold (DG based) Stage 2</name>
  82. <debug>false</debug>
  83. <enable>
  84. <prop>/autopilot/locks/heading</prop>
  85. <value>dg-heading-hold</value>
  86. </enable>
  87. <input>
  88. <prop>/orientation/roll-deg</prop>
  89. </input>
  90. <reference>
  91. <prop>/autopilot/internal/target-roll-deg</prop>
  92. </reference>
  93. <output>
  94. <prop>/controls/flight/aileron</prop>
  95. </output>
  96. <config>
  97. <Kp>0.02</Kp> <!-- proportional gain -->
  98. <beta>1.0</beta> <!-- input value weighing factor -->
  99. <alpha>0.1</alpha> <!-- low pass filter weighing factor -->
  100. <gamma>0.0</gamma> <!-- input value weighing factor for -->
  101. <!-- unfiltered derivative error -->
  102. <Ti>10.0</Ti> <!-- integrator time -->
  103. <Td>0.00001</Td> <!-- derivator time -->
  104. <u_min>-1.0</u_min> <!-- minimum output clamp -->
  105. <u_max>1.0</u_max> <!-- maximum output clamp -->
  106. </config>
  107. </pid-controller>
  108. <!-- True Heading hold. 2 stage cascade controller. -->
  109. <!-- Stage #1 sets target roll based on diff between current heading -->
  110. <!-- and target heading. -->
  111. <pid-controller>
  112. <name>True Heading Hold (DG based) Stage 1</name>
  113. <debug>false</debug>
  114. <enable>
  115. <prop>/autopilot/locks/heading</prop>
  116. <value>true-heading-hold</value>
  117. </enable>
  118. <input>
  119. <prop>/autopilot/internal/true-heading-error-deg</prop>
  120. </input>
  121. <reference>
  122. <value>0.0</value>
  123. </reference>
  124. <output>
  125. <prop>/autopilot/internal/target-roll-deg</prop>
  126. </output>
  127. <config>
  128. <Kp>-1.0</Kp> <!-- proportional gain -->
  129. <beta>1.0</beta> <!-- input value weighing factor -->
  130. <alpha>0.1</alpha> <!-- low pass filter weighing factor -->
  131. <gamma>0.0</gamma> <!-- input value weighing factor for -->
  132. <!-- unfiltered derivative error -->
  133. <Ti>10.0</Ti> <!-- integrator time -->
  134. <Td>0.00001</Td> <!-- derivator time -->
  135. <u_min>-30.0</u_min> <!-- minimum output clamp -->
  136. <u_max>30.0</u_max> <!-- maximum output clamp -->
  137. </config>
  138. </pid-controller>
  139. <!-- Stage #2 drives the ailerons to achieve the desired roll deg. -->
  140. <pid-controller>
  141. <name>True Heading Hold (DG based) Stage 2</name>
  142. <debug>false</debug>
  143. <enable>
  144. <prop>/autopilot/locks/heading</prop>
  145. <value>true-heading-hold</value>
  146. </enable>
  147. <input>
  148. <prop>/orientation/roll-deg</prop>
  149. </input>
  150. <reference>
  151. <prop>/autopilot/internal/target-roll-deg</prop>
  152. </reference>
  153. <output>
  154. <prop>/controls/flight/aileron</prop>
  155. </output>
  156. <config>
  157. <Kp>0.02</Kp> <!-- proportional gain -->
  158. <beta>1.0</beta> <!-- input value weighing factor -->
  159. <alpha>0.1</alpha> <!-- low pass filter weighing factor -->
  160. <gamma>0.0</gamma> <!-- input value weighing factor for -->
  161. <!-- unfiltered derivative error -->
  162. <Ti>10.0</Ti> <!-- integrator time -->
  163. <Td>0.00001</Td> <!-- derivator time -->
  164. <u_min>-1.0</u_min> <!-- minimum output clamp -->
  165. <u_max>1.0</u_max> <!-- maximum output clamp -->
  166. </config>
  167. </pid-controller>
  168. <!-- Nav1 hold. 2 stage cascade controller. -->
  169. <!-- Stage #1 sets target roll based on diff between current heading -->
  170. <!-- and target heading. -->
  171. <pid-controller>
  172. <name>Nav1 Hold Stage 1</name>
  173. <debug>false</debug>
  174. <enable>
  175. <prop>/autopilot/locks/heading</prop>
  176. <value>nav1-hold</value>
  177. </enable>
  178. <input>
  179. <prop>/autopilot/internal/nav1-track-error-deg</prop>
  180. </input>
  181. <reference>
  182. <value>0.0</value>
  183. </reference>
  184. <output>
  185. <prop>/autopilot/internal/target-roll-deg</prop>
  186. </output>
  187. <config>
  188. <Kp>-1.0</Kp> <!-- proportional gain -->
  189. <beta>1.0</beta> <!-- input value weighing factor -->
  190. <alpha>0.1</alpha> <!-- low pass filter weighing factor -->
  191. <gamma>0.0</gamma> <!-- input value weighing factor for -->
  192. <!-- unfiltered derivative error -->
  193. <Ti>10.0</Ti> <!-- integrator time -->
  194. <Td>0.00001</Td> <!-- derivator time -->
  195. <u_min>-30.0</u_min> <!-- minimum output clamp -->
  196. <u_max>30.0</u_max> <!-- maximum output clamp -->
  197. </config>
  198. </pid-controller>
  199. <!-- Stage #2 drives the ailerons to achieve the desired roll deg. -->
  200. <pid-controller>
  201. <name>Nav1 Hold Stage 2</name>
  202. <debug>false</debug>
  203. <enable>
  204. <prop>/autopilot/locks/heading</prop>
  205. <value>nav1-hold</value>
  206. </enable>
  207. <input>
  208. <prop>/orientation/roll-deg</prop>
  209. </input>
  210. <reference>
  211. <prop>/autopilot/internal/target-roll-deg</prop>
  212. </reference>
  213. <output>
  214. <prop>/controls/flight/aileron</prop>
  215. </output>
  216. <config>
  217. <Kp>0.02</Kp> <!-- proportional gain -->
  218. <beta>1.0</beta> <!-- input value weighing factor -->
  219. <alpha>0.1</alpha> <!-- low pass filter weighing factor -->
  220. <gamma>0.0</gamma> <!-- input value weighing factor for -->
  221. <!-- unfiltered derivative error -->
  222. <Ti>10.0</Ti> <!-- integrator time -->
  223. <Td>0.00001</Td> <!-- derivator time -->
  224. <u_min>-1.0</u_min> <!-- minimum output clamp -->
  225. <u_max>1.0</u_max> <!-- maximum output clamp -->
  226. </config>
  227. </pid-controller>
  228. <!-- Tacan hold. 2 stage cascade controller. -->
  229. <!-- Stage #1 sets target roll based on diff between current heading -->
  230. <!-- and target heading. -->
  231. <pid-controller>
  232. <name>Tacan Hold (DG based) Stage 1</name>
  233. <debug>false</debug>
  234. <enable>
  235. <prop>/autopilot/locks/heading</prop>
  236. <value>tacan-hold</value>
  237. </enable>
  238. <input>
  239. <prop>/autopilot/internal/fdm-heading-bug-error-deg</prop>
  240. </input>
  241. <reference>
  242. <value>0.0</value>
  243. </reference>
  244. <output>
  245. <prop>/autopilot/internal/target-roll-deg</prop>
  246. </output>
  247. <config>
  248. <Kp>-1.0</Kp> <!-- proportional gain -->
  249. <beta>1.0</beta> <!-- input value weighing factor -->
  250. <alpha>0.1</alpha> <!-- low pass filter weighing factor -->
  251. <gamma>0.0</gamma> <!-- input value weighing factor for -->
  252. <!-- unfiltered derivative error -->
  253. <Ti>10.0</Ti> <!-- integrator time -->
  254. <Td>0.00001</Td> <!-- derivator time -->
  255. <u_min>-30.0</u_min> <!-- minimum output clamp -->
  256. <u_max>30.0</u_max> <!-- maximum output clamp -->
  257. </config>
  258. </pid-controller>
  259. <!-- Stage #2 drives the ailerons to achieve the desired roll deg. -->
  260. <pid-controller>
  261. <name>Tacan Hold (DG based) Stage 2</name>
  262. <debug>false</debug>
  263. <enable>
  264. <prop>/autopilot/locks/heading</prop>
  265. <value>tacan-hold</value>
  266. </enable>
  267. <input>
  268. <prop>/orientation/roll-deg</prop>
  269. </input>
  270. <reference>
  271. <prop>/autopilot/internal/target-roll-deg</prop>
  272. </reference>
  273. <output>
  274. <prop>/controls/flight/aileron</prop>
  275. </output>
  276. <config>
  277. <Kp>0.02</Kp> <!-- proportional gain -->
  278. <beta>1.0</beta> <!-- input value weighing factor -->
  279. <alpha>0.1</alpha> <!-- low pass filter weighing factor -->
  280. <gamma>0.0</gamma> <!-- input value weighing factor for -->
  281. <!-- unfiltered derivative error -->
  282. <Ti>10.0</Ti> <!-- integrator time -->
  283. <Td>0.00001</Td> <!-- derivator time -->
  284. <u_min>-1.0</u_min> <!-- minimum output clamp -->
  285. <u_max>1.0</u_max> <!-- maximum output clamp -->
  286. </config>
  287. </pid-controller>
  288. <!-- Altitude hold. 2 stage cascade controller. -->
  289. <!-- Stage #1 sets target rate of climb based on diff between current alt -->
  290. <!-- and target altitude. -->
  291. <pi-simple-controller>
  292. <name>Altitude Hold (Altimeter based) Stage 1</name>
  293. <debug>false</debug>
  294. <enable>
  295. <prop>/autopilot/locks/altitude</prop>
  296. <value>altitude-hold</value>
  297. </enable>
  298. <input>
  299. <prop>/position/altitude-ft</prop>
  300. </input>
  301. <reference>
  302. <prop>/autopilot/settings/target-altitude-ft</prop>
  303. </reference>
  304. <output>
  305. <prop>/autopilot/internal/target-climb-rate-fps</prop>
  306. </output>
  307. <config>
  308. <Kp>0.7</Kp> <!-- proportional gain -->
  309. <Ki>0.15</Ki> <!-- integral gain -->
  310. <u_min>-14.67</u_min> <!-- minimum output clamp -->
  311. <u_max>8.33</u_max> <!-- maximum output clamp -->
  312. </config>
  313. </pi-simple-controller>
  314. <!-- Stage #2 drives the elevator-trim to achieve the desired climb rate. -->
  315. <pid-controller>
  316. <name>Altitude Hold (Altimeter based) Stage 2</name>
  317. <debug>false</debug>
  318. <enable>
  319. <prop>/autopilot/locks/altitude</prop>
  320. <value>altitude-hold</value>
  321. </enable>
  322. <input>
  323. <prop>/velocities/vertical-speed-fps</prop>
  324. </input>
  325. <reference>
  326. <prop>/autopilot/internal/target-climb-rate-fps</prop>
  327. </reference>
  328. <output>
  329. <prop>/controls/engines/engine[0]/throttle</prop>
  330. </output>
  331. <config>
  332. <Kp>-0.5</Kp> <!-- proportional gain -->
  333. <beta>0.5</beta> <!-- input value weighing factor -->
  334. <alpha>0.15</alpha> <!-- low pass filter weighing factor -->
  335. <gamma>0.0</gamma> <!-- input value weighing factor for -->
  336. <!-- unfiltered derivative error -->
  337. <Ti>5.0</Ti> <!-- integrator time -->
  338. <Td>0.000001</Td> <!-- derivator time -->
  339. <u_min>-10.0</u_min> <!-- minimum output clamp -->
  340. <u_max>10.0</u_max> <!-- maximum output clamp -->
  341. </config>
  342. </pid-controller>
  343. <!-- AGL hold. 2 stage cascade controller. -->
  344. <!-- Stage #1 sets target rate of climb based on diff between current agl -->
  345. <!-- and target agl. -->
  346. <pi-simple-controller>
  347. <name>AGL Hold (Altimeter based) Stage 1</name>
  348. <debug>false</debug>
  349. <enable>
  350. <prop>/autopilot/locks/altitude</prop>
  351. <value>agl-hold</value>
  352. </enable>
  353. <input>
  354. <prop>/position/altitude-agl-ft</prop>
  355. </input>
  356. <reference>
  357. <prop>/autopilot/settings/target-agl-ft</prop>
  358. </reference>
  359. <output>
  360. <prop>/autopilot/internal/target-climb-rate-fps</prop>
  361. </output>
  362. <config>
  363. <Kp>1</Kp> <!-- proportional gain -->
  364. <Ki>0.0</Ki> <!-- integral gain -->
  365. <u_min>-16.67</u_min> <!-- minimum output clamp -->
  366. <u_max>8.33</u_max> <!-- maximum output clamp -->
  367. </config>
  368. </pi-simple-controller>
  369. <!-- Stage #2 drives the elevator-trim to achieve the desired climb rate. -->
  370. <pid-controller>
  371. <name>AGL Hold (Altimeter based) Stage 2</name>
  372. <debug>false</debug>
  373. <enable>
  374. <prop>/autopilot/locks/altitude</prop>
  375. <value>agl-hold</value>
  376. </enable>
  377. <input>
  378. <prop>/velocities/vertical-speed-fps</prop>
  379. </input>
  380. <reference>
  381. <prop>/autopilot/internal/target-climb-rate-fps</prop>
  382. </reference>
  383. <output>
  384. <prop>/controls/engines/engine[0]/throttle</prop>
  385. </output>
  386. <config>
  387. <Kp>-1.0</Kp> <!-- proportional gain -->
  388. <beta>1.0</beta> <!-- input value weighing factor -->
  389. <alpha>0.1</alpha> <!-- low pass filter weighing factor -->
  390. <gamma>0.0</gamma> <!-- input value weighing factor for -->
  391. <!-- unfiltered derivative error -->
  392. <Ti>5.0</Ti> <!-- integrator time -->
  393. <Td>0.00001</Td> <!-- derivator time -->
  394. <u_min>-20.0</u_min> <!-- minimum output clamp -->
  395. <u_max>20.0</u_max> <!-- maximum output clamp -->
  396. </config>
  397. </pid-controller>
  398. <!-- Glideslope hold. -->
  399. <!-- Stage #2 drives the elevator-trim to achieve the desired climb rate. -->
  400. <pid-controller>
  401. <name>Glideslop Hold</name>
  402. <debug>false</debug>
  403. <enable>
  404. <prop>/autopilot/locks/altitude</prop>
  405. <value>gs1-hold</value>
  406. </enable>
  407. <input>
  408. <prop>/velocities/vertical-speed-fps</prop>
  409. </input>
  410. <reference>
  411. <prop>/instrumentation/nav[0]/gs-rate-of-climb</prop>
  412. </reference>
  413. <output>
  414. <prop>/controls/engines/engine[0]/throttle</prop>
  415. </output>
  416. <config>
  417. <Kp>-1.0</Kp> <!-- proportional gain -->
  418. <beta>1.0</beta> <!-- input value weighing factor -->
  419. <alpha>0.1</alpha> <!-- low pass filter weighing factor -->
  420. <gamma>0.0</gamma> <!-- input value weighing factor for -->
  421. <!-- unfiltered derivative error -->
  422. <Ti>5.0</Ti> <!-- integrator time -->
  423. <Td>0.00001</Td> <!-- derivator time -->
  424. <u_min>-20.0</u_min> <!-- minimum output clamp -->
  425. <u_max>20.0</u_max> <!-- maximum output clamp -->
  426. </config>
  427. </pid-controller>
  428. <!-- vertical speed hold -->
  429. <pid-controller>
  430. <name>Vertical Speed Hold</name>
  431. <debug>false</debug>
  432. <enable>
  433. <prop>/autopilot/locks/altitude</prop>
  434. <value>vertical-speed-hold</value>
  435. </enable>
  436. <input>
  437. <prop>/velocities/vertical-speed-fps</prop>
  438. </input>
  439. <reference>
  440. <prop>/autopilot/settings/vertical-speed-fpm</prop>
  441. <scale>0.01667</scale>
  442. </reference>
  443. <output>
  444. <prop>/controls/engines/engine[0]/throttle</prop>
  445. </output>
  446. <config>
  447. <Kp>-0.1</Kp> <!-- proportional gain -->
  448. <beta>0.1</beta> <!-- input value weighing factor -->
  449. <alpha>0.15</alpha> <!-- low pass filter weighing factor -->
  450. <gamma>0.1</gamma> <!-- input value weighing factor for -->
  451. <!-- unfiltered derivative error -->
  452. <Ti>12.0</Ti> <!-- integrator time -->
  453. <Td>0.000001</Td> <!-- derivator time -->
  454. <u_min>-5.0</u_min> <!-- minimum output clamp -->
  455. <u_max>5.0</u_max> <!-- maximum output clamp -->
  456. </config>
  457. </pid-controller>
  458. <!-- =============================================================== -->
  459. <!-- Velocity Modes -->
  460. <!-- =============================================================== -->
  461. </PropertyList>