Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // START
- CLEARSCREEN.
- PRINT "Unmanned Autonomous Aerial Vehicle Flight Program". WAIT 2.
- PRINT " ". WAIT 1.
- BRAKES ON. PRINT "BRAKES ON.".
- SAS OFF. PRINT "SAS OFF.". WAIT 2.
- PRINT " ". WAIT 1.
- PRINT "========== Setting up Flight Plan ==========". WAIT 1.
- SET myVEL to 250. PRINT "Speed set to: " + myVEL.
- SET myALT to 3500. PRINT "Altitude set to: " + myALT.
- SET myASC to 30. PRINT "Ascend angle set to: " + myASC.
- SET myDIS to 15000.
- SET myBEARING to SHIP:BEARING.
- IF myBEARING < 0 {
- SET myHEADING to abs(SHIP:BEARING).
- } ELSE {
- SET myHEADING to (360 - SHIP:BEARING).
- }.
- PRINT "Current course: " + myHEADING.
- SET myHOME to SHIP:GEOPOSITION. PRINT "Home Location Set.".
- PRINT " ".
- PRINT " ". WAIT 2.
- // SETTING WAYPOINTS
- PRINT "========== Setting up Waypoint 1 ==========". WAIT 1.
- SET myWP1HEADING to 350.
- IF myWP1HEADING > 0 AND myWP1HEADING < 180 {SET myWP1BEARING to ((-1) * myWP1HEADING).}.
- IF myWP1HEADING < 360 AND myWP1HEADING > 180 {SET myWP1BEARING to (360 - myWP1HEADING).}.
- IF myWP1HEADING = 0 {SET myWP1BEARING to 0.}.
- IF myWP1HEADING = 180 {SET myWP1BEARING to 180.}.
- SET myWP1DIS to 15000.
- SET myWP1ALT to 3000.
- SET myWP1VEL to 400.
- PRINT " ". WAIT 2.
- PRINT "========== Setting up Waypoint 2 ==========". WAIT 1.
- SET myWP2HEADING to 160.
- IF myWP2HEADING > 0 AND myWP2HEADING < 180 {SET myWP2BEARING to ((-1) * myWP2HEADING).}.
- IF myWP2HEADING < 360 AND myWP2HEADING > 180 {SET myWP2BEARING to (360 - myWP2HEADING).}.
- IF myWP2HEADING = 0 {SET myWP2BEARING to 0.}.
- IF myWP2HEADING = 180 {SET myWP2BEARING to 180.}.
- SET myWP2DIS to 50000.
- SET myWP2ALT to 2000.
- SET myWP2VEL to 300.
- PRINT " ".
- PRINT " ". WAIT 2.
- // PREFLIGHT CHECKS
- PRINT "========== Engine Start ==========". WAIT 1.
- LOCK THROTTLE TO 0. WAIT 1.
- STAGE. WAIT 1.
- PRINT "========== Engine spooling up ==========". WAIT 1.
- LOCK THROTTLE TO 1.
- WAIT 10.
- PRINT "========== Engine spooled up ==========". WAIT 1.
- PRINT "========== Preflight checks completed ==========". WAIT 1.
- PRINT "======== Good ends, good highs, good lows ========". WAIT 5.
- // TAKE OFF
- CLEARSCREEN.
- PRINT "Unmanned Autonomous Aerial Vehicle Flight Program".
- PRINT " ".
- BRAKES OFF. PRINT "Rolling.".
- WAIT UNTIL SURFACESPEED > 80.
- LOCK STEERING TO HEADING(myHEADING,15).
- PRINT "Nose up.".
- WAIT UNTIL ALT:RADAR > 3.
- TOGGLE GEAR. WAIT 1.
- PRINT "Airborne!".
- PRINT "Gear up.".
- LOCK STEERING TO HEADING(myHEADING,myASC). WAIT 1.
- PRINT "Climbing to " + myALT.
- PRINT " ".
- UNTIL ALTITUDE > (myALT - 100) {
- IF (myALT - ALTITUDE) < 1000 {
- LOCK STEERING TO HEADING(myHEADING,(myASC - 0.5*(myASC * ( ALTITUDE / myALT )))).
- } ELSE {
- LOCK STEERING TO HEADING(myHEADING,myASC).
- }.
- IF SURFACESPEED > myVEL {
- BRAKES ON.
- LOCK THROTTLE TO (0.3 - 0.05*(SURFACESPEED - myVEL)).
- } ELSE {
- BRAKES OFF.
- LOCK THROTTLE TO (0.3 + 0.05*(myVEL - SURFACESPEED)).
- }.
- WAIT 0.1.
- }.
- PRINT "Leveling off at " + myALT.
- PRINT "Speed " + myVEL.
- PRINT "For " + myDIS.
- UNTIL myHOME:distance > myDIS {
- IF SURFACESPEED > myVEL {
- BRAKES ON.
- LOCK THROTTLE TO (0.3 - 0.05*(SURFACESPEED - myVEL)).
- } ELSE {
- BRAKES OFF.
- LOCK THROTTLE TO (0.3 + 0.05*(myVEL - SURFACESPEED)).
- }.
- IF ALTITUDE > myALT {
- IF (-0.1*(ALTITUDE - myALT)) < -45 {SET myDESC to -45.} ELSE {SET myDESC to (-0.1*(ALTITUDE - myALT)).}.
- LOCK STEERING TO HEADING(myHEADING,myDESC).
- } ELSE {
- LOCK STEERING TO HEADING(myHEADING,0.1*(myALT - ALTITUDE)).
- }.
- WAIT 0.1.
- }.
- UNLOCK STEERING.
- SAS ON.
- SET myWP1spot to SHIP:GEOPOSITION.
- SET myROLL to 0.
- PRINT " ".
- // WAYPOINT 1
- CLEARSCREEN.
- PRINT "Unmanned Autonomous Aerial Vehicle Flight Program".
- PRINT " ".
- PRINT "Enroute to waypoint 1.". WAIT 1.
- SET myBEARING to SHIP:BEARING.
- IF myWP1BEARING = 0 {
- IF myBEARING < myWP1BEARING {SET myROLL to -0.1. SET myBANK to "left".}.
- IF myBEARING > myWP1BEARING {SET myROLL to 0.1. SET myBANK to "right".}.
- } ELSE {
- IF myWP1BEARING = 180 {
- IF (myBEARING < 0) AND abs(myBEARING) < myWP1BEARING {SET myROLL to -0.1. SET myBANK to "left".}.
- IF (myBEARING > 0) AND abs(myBEARING) < myWP1BEARING {SET myROLL to 0.1. SET myBANK to "right".}.
- } ELSE {
- IF myBEARING > 0 AND myBEARING < 180 {
- IF myWP1BEARING > 0 {
- IF myBEARING < myWP1BEARING {SET myROLL to -0.1. SET myBANK to "left".}.
- IF myBEARING > myWP1BEARING {SET myROLL to 0.1. SET myBANK to "right".}.
- } ELSE {
- IF abs(myBEARING - 180) < abs(myWP1BEARING) {SET myROLL to -0.1. SET myBANK to "left".}.
- IF abs(myBEARING - 180) > abs(myWP1BEARING) {SET myROLL to 0.1. SET myBANK to "right".}.
- }.
- } ELSE {
- IF myWP1BEARING < 0 {
- IF myBEARING < myWP1BEARING {SET myROLL to -0.1. SET myBANK to "left".}.
- IF myBEARING > myWP1BEARING {SET myROLL to 0.1. SET myBANK to "right".}.
- } ELSE {
- IF abs(myBEARING + 180) > abs(myWP1BEARING) {SET myROLL to -0.1. SET myBANK to "left".}.
- IF abs(myBEARING + 180) < abs(myWP1BEARING) {SET myROLL to 0.1. SET myBANK to "right".}.
- }.
- }.
- }.
- }.
- PRINT "Banking " + mybank. WAIT 1.
- PRINT "Waypont 1 heading " + myWP1HEADING. WAIT 1.
- PRINT "Distance " + myWP1DIS.
- PRINT "Altitude " + myWP1ALT.
- PRINT "Speed " + myWP1VEL.
- SAS OFF.
- SET SHIP:CONTROL:ROLL TO myROLL.
- SET now to time:seconds.
- WAIT until time:seconds > now + 3.
- SET SHIP:CONTROL:ROLL TO 0.0.
- SET SHIP:CONTROL:PITCH TO 0.5.
- SET myBEARING to SHIP:BEARING.
- UNTIL abs(myBEARING - myWP1BEARING) < 0.5 {
- SET myBEARING to SHIP:BEARING.
- WAIT 0.001.
- }.
- SET SHIP:CONTROL:PITCH TO 0.0.
- SET SHIP:CONTROL:ROLL TO (-1 * myROLL).
- SET now to time:seconds.
- WAIT until time:seconds > now + 3.
- SET SHIP:CONTROL:ROLL TO 0.0.
- UNTIL myWP1spot:distance > myWP1DIS {
- IF SURFACESPEED > myWP1VEL {
- BRAKES ON.
- LOCK THROTTLE TO (0.3 - 0.05*(SURFACESPEED - myWP1VEL)).
- } ELSE {
- BRAKES OFF.
- LOCK THROTTLE TO (0.3 + 0.05*(myWP1VEL - SURFACESPEED)).
- }.
- IF ALTITUDE > myWP1ALT {
- IF (-0.1*(ALTITUDE - myWP1ALT)) < -45 {SET myDESC to -45.} ELSE {SET myDESC to (-0.1*(ALTITUDE - myWP1ALT)).}.
- LOCK STEERING TO HEADING(myWP1HEADING,myDESC).
- } ELSE {
- LOCK STEERING TO HEADING(myWP1HEADING,0.1*(myWP1ALT - ALTITUDE)).
- }.
- WAIT 0.1.
- }.
- UNLOCK STEERING.
- SAS ON.
- SET myWP2spot to SHIP:GEOPOSITION.
- SET myROLL to 0.
- PRINT " ".
- // WAYPOINT 2
- CLEARSCREEN.
- PRINT "Unmanned Autonomous Aerial Vehicle Flight Program".
- PRINT " ".
- PRINT "Enroute to waypoint 2.". WAIT 1.
- SET myBEARING to SHIP:BEARING.
- IF myWP2BEARING = 0 {
- IF myBEARING < myWP2BEARING {SET myROLL to -0.1. SET myBANK to "left".}.
- IF myBEARING > myWP2BEARING {SET myROLL to 0.1. SET myBANK to "right".}.
- } ELSE {
- IF myWP2BEARING = 180 {
- IF (myBEARING < 0) AND abs(myBEARING) < myWP2BEARING {SET myROLL to -0.1. SET myBANK to "left".}.
- IF (myBEARING > 0) AND abs(myBEARING) < myWP2BEARING {SET myROLL to 0.1. SET myBANK to "right".}.
- } ELSE {
- IF myBEARING > 0 AND myBEARING < 180 {
- IF myWP2BEARING > 0 {
- IF myBEARING < myWP2BEARING {SET myROLL to -0.1. SET myBANK to "left".}.
- IF myBEARING > myWP2BEARING {SET myROLL to 0.1. SET myBANK to "right".}.
- } ELSE {
- IF abs(myBEARING - 180) < abs(myWP2BEARING) {SET myROLL to -0.1. SET myBANK to "left".}.
- IF abs(myBEARING - 180) > abs(myWP2BEARING) {SET myROLL to 0.1. SET myBANK to "right".}.
- }.
- } ELSE {
- IF myWP2BEARING < 0 {
- IF myBEARING < myWP2BEARING {SET myROLL to -0.1. SET myBANK to "left".}.
- IF myBEARING > myWP2BEARING {SET myROLL to 0.1. SET myBANK to "right".}.
- } ELSE {
- IF abs(myBEARING + 180) > abs(myWP2BEARING) {SET myROLL to -0.1. SET myBANK to "left".}.
- IF abs(myBEARING + 180) < abs(myWP2BEARING) {SET myROLL to 0.1. SET myBANK to "right".}.
- }.
- }.
- }.
- }.
- PRINT "Banking " + mybank. WAIT 1.
- PRINT "Waypont 2 heading " + myWP2HEADING.
- PRINT "Distance " + myWP2DIS.
- PRINT "Altitude " + myWP2ALT.
- PRINT "Speed " + myWP2VEL.
- SAS OFF.
- SET SHIP:CONTROL:ROLL TO myROLL.
- SET now to time:seconds.
- WAIT until time:seconds > now + 3.
- SET SHIP:CONTROL:ROLL TO 0.0.
- SET SHIP:CONTROL:PITCH TO 0.5.
- SET myBEARING to SHIP:BEARING.
- UNTIL abs(myBEARING - myWP2BEARING) < 0.5 {
- SET myBEARING to SHIP:BEARING.
- WAIT 0.001.
- }.
- SET SHIP:CONTROL:PITCH TO 0.0.
- SET SHIP:CONTROL:ROLL TO (-1 * myROLL).
- SET now to time:seconds.
- WAIT until time:seconds > now + 3.
- SET SHIP:CONTROL:ROLL TO 0.0.
- UNTIL myWP2spot:distance > myWP2DIS {
- IF SURFACESPEED > myWP2VEL {
- BRAKES ON.
- LOCK THROTTLE TO (0.3 - 0.05*(SURFACESPEED - myWP2VEL)).
- } ELSE {
- BRAKES OFF.
- LOCK THROTTLE TO (0.3 + 0.05*(myWP2VEL - SURFACESPEED)).
- }.
- IF ALTITUDE > myWP2ALT {
- IF (-0.1*(ALTITUDE - myWP2ALT)) < -45 {SET myDESC to -45.} ELSE {SET myDESC to (-0.1*(ALTITUDE - myWP2ALT)).}.
- LOCK STEERING TO HEADING(myWP2HEADING,myDESC).
- } ELSE {
- LOCK STEERING TO HEADING(myWP2HEADING,0.1*(myWP2ALT - ALTITUDE)).
- }.
- WAIT 0.1.
- }.
- UNLOCK STEERING.
- SAS ON.
- SET myWP3spot to SHIP:GEOPOSITION.
- SET myROLL to 0.
- PRINT " ".
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement