Advertisement
Guest User

kOS

a guest
Dec 21st, 2014
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.85 KB | None | 0 0
  1. // START
  2. CLEARSCREEN.
  3. PRINT "Unmanned Autonomous Aerial Vehicle Flight Program". WAIT 2.
  4. PRINT " ". WAIT 1.
  5. BRAKES ON. PRINT "BRAKES ON.".
  6. SAS OFF. PRINT "SAS OFF.". WAIT 2.
  7. PRINT " ". WAIT 1.
  8. PRINT "========== Setting up Flight Plan ==========". WAIT 1.
  9. SET myVEL to 250. PRINT "Speed set to: " + myVEL.
  10. SET myALT to 3500. PRINT "Altitude set to: " + myALT.
  11. SET myASC to 30. PRINT "Ascend angle set to: " + myASC.
  12. SET myDIS to 15000.
  13. SET myBEARING to SHIP:BEARING.
  14. IF myBEARING < 0 {
  15. SET myHEADING to abs(SHIP:BEARING).
  16. } ELSE {
  17. SET myHEADING to (360 - SHIP:BEARING).
  18. }.
  19. PRINT "Current course: " + myHEADING.
  20. SET myHOME to SHIP:GEOPOSITION. PRINT "Home Location Set.".
  21. PRINT " ".
  22. PRINT " ". WAIT 2.
  23. // SETTING WAYPOINTS
  24. PRINT "========== Setting up Waypoint 1 ==========". WAIT 1.
  25. SET myWP1HEADING to 350.
  26. IF myWP1HEADING > 0 AND myWP1HEADING < 180 {SET myWP1BEARING to ((-1) * myWP1HEADING).}.
  27. IF myWP1HEADING < 360 AND myWP1HEADING > 180 {SET myWP1BEARING to (360 - myWP1HEADING).}.
  28. IF myWP1HEADING = 0 {SET myWP1BEARING to 0.}.
  29. IF myWP1HEADING = 180 {SET myWP1BEARING to 180.}.
  30. SET myWP1DIS to 15000.
  31. SET myWP1ALT to 3000.
  32. SET myWP1VEL to 400.
  33. PRINT " ". WAIT 2.
  34. PRINT "========== Setting up Waypoint 2 ==========". WAIT 1.
  35. SET myWP2HEADING to 160.
  36. IF myWP2HEADING > 0 AND myWP2HEADING < 180 {SET myWP2BEARING to ((-1) * myWP2HEADING).}.
  37. IF myWP2HEADING < 360 AND myWP2HEADING > 180 {SET myWP2BEARING to (360 - myWP2HEADING).}.
  38. IF myWP2HEADING = 0 {SET myWP2BEARING to 0.}.
  39. IF myWP2HEADING = 180 {SET myWP2BEARING to 180.}.
  40. SET myWP2DIS to 50000.
  41. SET myWP2ALT to 2000.
  42. SET myWP2VEL to 300.
  43. PRINT " ".
  44. PRINT " ". WAIT 2.
  45. // PREFLIGHT CHECKS
  46. PRINT "========== Engine Start ==========". WAIT 1.
  47. LOCK THROTTLE TO 0. WAIT 1.
  48. STAGE. WAIT 1.
  49. PRINT "========== Engine spooling up ==========". WAIT 1.
  50. LOCK THROTTLE TO 1.
  51. WAIT 10.
  52. PRINT "========== Engine spooled up ==========". WAIT 1.
  53. PRINT "========== Preflight checks completed ==========". WAIT 1.
  54. PRINT "======== Good ends, good highs, good lows ========". WAIT 5.
  55.  
  56.  
  57.  
  58.  
  59. // TAKE OFF
  60. CLEARSCREEN.
  61. PRINT "Unmanned Autonomous Aerial Vehicle Flight Program".
  62. PRINT " ".
  63. BRAKES OFF. PRINT "Rolling.".
  64. WAIT UNTIL SURFACESPEED > 80.
  65. LOCK STEERING TO HEADING(myHEADING,15).
  66. PRINT "Nose up.".
  67. WAIT UNTIL ALT:RADAR > 3.
  68. TOGGLE GEAR. WAIT 1.
  69. PRINT "Airborne!".
  70. PRINT "Gear up.".
  71. LOCK STEERING TO HEADING(myHEADING,myASC). WAIT 1.
  72. PRINT "Climbing to " + myALT.
  73. PRINT " ".
  74. UNTIL ALTITUDE > (myALT - 100) {
  75. IF (myALT - ALTITUDE) < 1000 {
  76. LOCK STEERING TO HEADING(myHEADING,(myASC - 0.5*(myASC * ( ALTITUDE / myALT )))).
  77. } ELSE {
  78. LOCK STEERING TO HEADING(myHEADING,myASC).
  79. }.
  80. IF SURFACESPEED > myVEL {
  81. BRAKES ON.
  82. LOCK THROTTLE TO (0.3 - 0.05*(SURFACESPEED - myVEL)).
  83. } ELSE {
  84. BRAKES OFF.
  85. LOCK THROTTLE TO (0.3 + 0.05*(myVEL - SURFACESPEED)).
  86. }.
  87. WAIT 0.1.
  88. }.
  89. PRINT "Leveling off at " + myALT.
  90. PRINT "Speed " + myVEL.
  91. PRINT "For " + myDIS.
  92. UNTIL myHOME:distance > myDIS {
  93. IF SURFACESPEED > myVEL {
  94. BRAKES ON.
  95. LOCK THROTTLE TO (0.3 - 0.05*(SURFACESPEED - myVEL)).
  96. } ELSE {
  97. BRAKES OFF.
  98. LOCK THROTTLE TO (0.3 + 0.05*(myVEL - SURFACESPEED)).
  99. }.
  100. IF ALTITUDE > myALT {
  101. IF (-0.1*(ALTITUDE - myALT)) < -45 {SET myDESC to -45.} ELSE {SET myDESC to (-0.1*(ALTITUDE - myALT)).}.
  102. LOCK STEERING TO HEADING(myHEADING,myDESC).
  103. } ELSE {
  104. LOCK STEERING TO HEADING(myHEADING,0.1*(myALT - ALTITUDE)).
  105. }.
  106. WAIT 0.1.
  107. }.
  108. UNLOCK STEERING.
  109. SAS ON.
  110. SET myWP1spot to SHIP:GEOPOSITION.
  111. SET myROLL to 0.
  112. PRINT " ".
  113.  
  114.  
  115.  
  116.  
  117. // WAYPOINT 1
  118. CLEARSCREEN.
  119. PRINT "Unmanned Autonomous Aerial Vehicle Flight Program".
  120. PRINT " ".
  121. PRINT "Enroute to waypoint 1.". WAIT 1.
  122. SET myBEARING to SHIP:BEARING.
  123. IF myWP1BEARING = 0 {
  124. IF myBEARING < myWP1BEARING {SET myROLL to -0.1. SET myBANK to "left".}.
  125. IF myBEARING > myWP1BEARING {SET myROLL to 0.1. SET myBANK to "right".}.
  126. } ELSE {
  127. IF myWP1BEARING = 180 {
  128. IF (myBEARING < 0) AND abs(myBEARING) < myWP1BEARING {SET myROLL to -0.1. SET myBANK to "left".}.
  129. IF (myBEARING > 0) AND abs(myBEARING) < myWP1BEARING {SET myROLL to 0.1. SET myBANK to "right".}.
  130. } ELSE {
  131. IF myBEARING > 0 AND myBEARING < 180 {
  132. IF myWP1BEARING > 0 {
  133. IF myBEARING < myWP1BEARING {SET myROLL to -0.1. SET myBANK to "left".}.
  134. IF myBEARING > myWP1BEARING {SET myROLL to 0.1. SET myBANK to "right".}.
  135. } ELSE {
  136. IF abs(myBEARING - 180) < abs(myWP1BEARING) {SET myROLL to -0.1. SET myBANK to "left".}.
  137. IF abs(myBEARING - 180) > abs(myWP1BEARING) {SET myROLL to 0.1. SET myBANK to "right".}.
  138. }.
  139. } ELSE {
  140. IF myWP1BEARING < 0 {
  141. IF myBEARING < myWP1BEARING {SET myROLL to -0.1. SET myBANK to "left".}.
  142. IF myBEARING > myWP1BEARING {SET myROLL to 0.1. SET myBANK to "right".}.
  143. } ELSE {
  144. IF abs(myBEARING + 180) > abs(myWP1BEARING) {SET myROLL to -0.1. SET myBANK to "left".}.
  145. IF abs(myBEARING + 180) < abs(myWP1BEARING) {SET myROLL to 0.1. SET myBANK to "right".}.
  146. }.
  147. }.
  148. }.
  149. }.
  150. PRINT "Banking " + mybank. WAIT 1.
  151. PRINT "Waypont 1 heading " + myWP1HEADING. WAIT 1.
  152. PRINT "Distance " + myWP1DIS.
  153. PRINT "Altitude " + myWP1ALT.
  154. PRINT "Speed " + myWP1VEL.
  155. SAS OFF.
  156. SET SHIP:CONTROL:ROLL TO myROLL.
  157. SET now to time:seconds.
  158. WAIT until time:seconds > now + 3.
  159. SET SHIP:CONTROL:ROLL TO 0.0.
  160. SET SHIP:CONTROL:PITCH TO 0.5.
  161. SET myBEARING to SHIP:BEARING.
  162. UNTIL abs(myBEARING - myWP1BEARING) < 0.5 {
  163. SET myBEARING to SHIP:BEARING.
  164. WAIT 0.001.
  165. }.
  166. SET SHIP:CONTROL:PITCH TO 0.0.
  167. SET SHIP:CONTROL:ROLL TO (-1 * myROLL).
  168. SET now to time:seconds.
  169. WAIT until time:seconds > now + 3.
  170. SET SHIP:CONTROL:ROLL TO 0.0.
  171. UNTIL myWP1spot:distance > myWP1DIS {
  172. IF SURFACESPEED > myWP1VEL {
  173. BRAKES ON.
  174. LOCK THROTTLE TO (0.3 - 0.05*(SURFACESPEED - myWP1VEL)).
  175. } ELSE {
  176. BRAKES OFF.
  177. LOCK THROTTLE TO (0.3 + 0.05*(myWP1VEL - SURFACESPEED)).
  178. }.
  179. IF ALTITUDE > myWP1ALT {
  180. IF (-0.1*(ALTITUDE - myWP1ALT)) < -45 {SET myDESC to -45.} ELSE {SET myDESC to (-0.1*(ALTITUDE - myWP1ALT)).}.
  181. LOCK STEERING TO HEADING(myWP1HEADING,myDESC).
  182. } ELSE {
  183. LOCK STEERING TO HEADING(myWP1HEADING,0.1*(myWP1ALT - ALTITUDE)).
  184. }.
  185. WAIT 0.1.
  186. }.
  187. UNLOCK STEERING.
  188. SAS ON.
  189. SET myWP2spot to SHIP:GEOPOSITION.
  190. SET myROLL to 0.
  191. PRINT " ".
  192.  
  193.  
  194.  
  195.  
  196. // WAYPOINT 2
  197. CLEARSCREEN.
  198. PRINT "Unmanned Autonomous Aerial Vehicle Flight Program".
  199. PRINT " ".
  200. PRINT "Enroute to waypoint 2.". WAIT 1.
  201. SET myBEARING to SHIP:BEARING.
  202. IF myWP2BEARING = 0 {
  203. IF myBEARING < myWP2BEARING {SET myROLL to -0.1. SET myBANK to "left".}.
  204. IF myBEARING > myWP2BEARING {SET myROLL to 0.1. SET myBANK to "right".}.
  205. } ELSE {
  206. IF myWP2BEARING = 180 {
  207. IF (myBEARING < 0) AND abs(myBEARING) < myWP2BEARING {SET myROLL to -0.1. SET myBANK to "left".}.
  208. IF (myBEARING > 0) AND abs(myBEARING) < myWP2BEARING {SET myROLL to 0.1. SET myBANK to "right".}.
  209. } ELSE {
  210. IF myBEARING > 0 AND myBEARING < 180 {
  211. IF myWP2BEARING > 0 {
  212. IF myBEARING < myWP2BEARING {SET myROLL to -0.1. SET myBANK to "left".}.
  213. IF myBEARING > myWP2BEARING {SET myROLL to 0.1. SET myBANK to "right".}.
  214. } ELSE {
  215. IF abs(myBEARING - 180) < abs(myWP2BEARING) {SET myROLL to -0.1. SET myBANK to "left".}.
  216. IF abs(myBEARING - 180) > abs(myWP2BEARING) {SET myROLL to 0.1. SET myBANK to "right".}.
  217. }.
  218. } ELSE {
  219. IF myWP2BEARING < 0 {
  220. IF myBEARING < myWP2BEARING {SET myROLL to -0.1. SET myBANK to "left".}.
  221. IF myBEARING > myWP2BEARING {SET myROLL to 0.1. SET myBANK to "right".}.
  222. } ELSE {
  223. IF abs(myBEARING + 180) > abs(myWP2BEARING) {SET myROLL to -0.1. SET myBANK to "left".}.
  224. IF abs(myBEARING + 180) < abs(myWP2BEARING) {SET myROLL to 0.1. SET myBANK to "right".}.
  225. }.
  226. }.
  227. }.
  228. }.
  229. PRINT "Banking " + mybank. WAIT 1.
  230. PRINT "Waypont 2 heading " + myWP2HEADING.
  231. PRINT "Distance " + myWP2DIS.
  232. PRINT "Altitude " + myWP2ALT.
  233. PRINT "Speed " + myWP2VEL.
  234. SAS OFF.
  235. SET SHIP:CONTROL:ROLL TO myROLL.
  236. SET now to time:seconds.
  237. WAIT until time:seconds > now + 3.
  238. SET SHIP:CONTROL:ROLL TO 0.0.
  239. SET SHIP:CONTROL:PITCH TO 0.5.
  240. SET myBEARING to SHIP:BEARING.
  241. UNTIL abs(myBEARING - myWP2BEARING) < 0.5 {
  242. SET myBEARING to SHIP:BEARING.
  243. WAIT 0.001.
  244. }.
  245. SET SHIP:CONTROL:PITCH TO 0.0.
  246. SET SHIP:CONTROL:ROLL TO (-1 * myROLL).
  247. SET now to time:seconds.
  248. WAIT until time:seconds > now + 3.
  249. SET SHIP:CONTROL:ROLL TO 0.0.
  250. UNTIL myWP2spot:distance > myWP2DIS {
  251. IF SURFACESPEED > myWP2VEL {
  252. BRAKES ON.
  253. LOCK THROTTLE TO (0.3 - 0.05*(SURFACESPEED - myWP2VEL)).
  254. } ELSE {
  255. BRAKES OFF.
  256. LOCK THROTTLE TO (0.3 + 0.05*(myWP2VEL - SURFACESPEED)).
  257. }.
  258. IF ALTITUDE > myWP2ALT {
  259. IF (-0.1*(ALTITUDE - myWP2ALT)) < -45 {SET myDESC to -45.} ELSE {SET myDESC to (-0.1*(ALTITUDE - myWP2ALT)).}.
  260. LOCK STEERING TO HEADING(myWP2HEADING,myDESC).
  261. } ELSE {
  262. LOCK STEERING TO HEADING(myWP2HEADING,0.1*(myWP2ALT - ALTITUDE)).
  263. }.
  264. WAIT 0.1.
  265. }.
  266. UNLOCK STEERING.
  267. SAS ON.
  268. SET myWP3spot to SHIP:GEOPOSITION.
  269. SET myROLL to 0.
  270. PRINT " ".
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement