Reconnect wrapper v1 complete
This commit is contained in:
@@ -29,8 +29,19 @@ class AircraftLandingModel(pyactr.ACTRModel):
|
|||||||
brakeDREF = "sim/cockpit2/controls/parking_brake_ratio"
|
brakeDREF = "sim/cockpit2/controls/parking_brake_ratio"
|
||||||
wheelSpeedDREF = "sim/flightmodel2/gear/tire_rotation_speed_rad_sec"
|
wheelSpeedDREF = "sim/flightmodel2/gear/tire_rotation_speed_rad_sec"
|
||||||
wheelWeightDREF = "sim/flightmodel/parts/tire_vrt_def_veh"
|
wheelWeightDREF = "sim/flightmodel/parts/tire_vrt_def_veh"
|
||||||
self.sources = [airspeedDREF,rollDREF,magneticHeadingDREF,verticalSpeedDREF,altitudeAGLDREF,pitchDREF,brakeDREF,wheelSpeedDREF,wheelWeightDREF]
|
# self.sources = [airspeedDREF,rollDREF,magneticHeadingDREF,verticalSpeedDREF,altitudeAGLDREF,pitchDREF,brakeDREF,wheelSpeedDREF,wheelWeightDREF]
|
||||||
|
|
||||||
|
self.sources = {
|
||||||
|
"airspeed" : airspeedDREF,
|
||||||
|
"roll" : rollDREF,
|
||||||
|
"heading" : magneticHeadingDREF,
|
||||||
|
"verticalSpeed" : verticalSpeedDREF,
|
||||||
|
"altitude": altitudeAGLDREF,
|
||||||
|
"pitch" : pitchDREF,
|
||||||
|
"brake": brakeDREF,
|
||||||
|
"wheelSpeed": wheelSpeedDREF,
|
||||||
|
"wheelWeight": wheelWeightDREF
|
||||||
|
}
|
||||||
"""
|
"""
|
||||||
Initial Initialization of destination Variables and loading into destinations array
|
Initial Initialization of destination Variables and loading into destinations array
|
||||||
"""
|
"""
|
||||||
@@ -54,8 +65,19 @@ class AircraftLandingModel(pyactr.ACTRModel):
|
|||||||
self.brakes = brake[0]
|
self.brakes = brake[0]
|
||||||
self.wheelSpeed = wheelS[0]
|
self.wheelSpeed = wheelS[0]
|
||||||
self.wheelWeight = wheelW[0]
|
self.wheelWeight = wheelW[0]
|
||||||
self.destinations = [self.airspeed,self.roll,self.heading,self.descent_rate,self.altitude,self.pitch,self.brakes,self.wheelSpeed,self.wheelWeight]
|
# self.destinations = [self.airspeed,self.roll,self.heading,self.descent_rate,self.altitude,self.pitch,self.brakes,self.wheelSpeed,self.wheelWeight]
|
||||||
|
|
||||||
|
self.destinations = {
|
||||||
|
"airspeed" : self.airspeed,
|
||||||
|
"roll" : self.roll,
|
||||||
|
"heading" : self.heading,
|
||||||
|
"verticalSpeed" : self.descent_rate,
|
||||||
|
"altitude": self.altitude,
|
||||||
|
"pitch" : self.pitch,
|
||||||
|
"brake": self.brakes,
|
||||||
|
"wheelSpeed": self.wheelSpeed,
|
||||||
|
"wheelWeight": self.wheelWeight
|
||||||
|
}
|
||||||
"""
|
"""
|
||||||
Initial Initialization of target Values
|
Initial Initialization of target Values
|
||||||
"""
|
"""
|
||||||
@@ -105,18 +127,26 @@ class AircraftLandingModel(pyactr.ACTRModel):
|
|||||||
# while(idx < len(self.sources) - 1):
|
# while(idx < len(self.sources) - 1):
|
||||||
# self.variableAtlas[0] = [self.sources[idx],self.destinations[idx],self.targets[idx]]
|
# self.variableAtlas[0] = [self.sources[idx],self.destinations[idx],self.targets[idx]]
|
||||||
# idx += 1
|
# idx += 1
|
||||||
|
def reassignClient(self,newClient):
|
||||||
|
self.client = newClient
|
||||||
|
|
||||||
def getAndLoadDREFS(self):
|
def getAndLoadDREFS(self):
|
||||||
results = self.client.getDREFs(self.sources)
|
results = self.client.getDREFs(self.sources.values())
|
||||||
idx = 0
|
idx = 0
|
||||||
while(idx < len(results) - 2):
|
for key in self.sources:
|
||||||
self.destinations[idx] = results[idx][0]
|
self.destinations[key] = results[idx]
|
||||||
if(idx == 1):
|
idx+=1
|
||||||
print("getDrefs: " + str(results[idx][0]))
|
print("getDrefs: " + str(results[1][0]))
|
||||||
print("current destination: " + str(self.destinations[idx]))
|
print("current destination: " + str(self.destinations["airspeed"]))
|
||||||
print("current main Airspeed: " + str(self.airspeed))
|
print("current main Airspeed: " + str(self.airspeed))
|
||||||
idx += 1
|
|
||||||
|
# while(idx < len(results) - 2):
|
||||||
|
# self.destinations[idx] = results[idx][0]
|
||||||
|
# if(idx == 1):
|
||||||
|
# print("getDrefs: " + str(results[idx][0]))
|
||||||
|
# print("current destination: " + str(self.destinations[idx]))
|
||||||
|
# print("current main Airspeed: " + str(self.airspeed))
|
||||||
|
# idx += 1
|
||||||
|
|
||||||
|
|
||||||
def printControls(self,calculated,errors,yokePull,yokeSteer,rudder,throttle):
|
def printControls(self,calculated,errors,yokePull,yokeSteer,rudder,throttle):
|
||||||
@@ -129,7 +159,7 @@ class AircraftLandingModel(pyactr.ACTRModel):
|
|||||||
# print("*Parameter,Target,Current,Throttle: " + "Descent Rate, " + str(self.target_descent_rate) + "," + str(self.descent_rate)+ "," + str(throttle))
|
# print("*Parameter,Target,Current,Throttle: " + "Descent Rate, " + str(self.target_descent_rate) + "," + str(self.descent_rate)+ "," + str(throttle))
|
||||||
parameter = ["Airspeed","Roll","Heading","Descent Rate","Altitude","Flare: Pitch", "Brakes: Wheel Speed", "Brakes: Wheel Weight"]
|
parameter = ["Airspeed","Roll","Heading","Descent Rate","Altitude","Flare: Pitch", "Brakes: Wheel Speed", "Brakes: Wheel Weight"]
|
||||||
target = [str(round(self.target_airspeed)),str(round(self.target_roll)),str(round(self.target_heading,3)),str(round(self.target_descent_rate,3)),str(round(self.altitude,3)),str(round(self.target_pitch,3)),0, 0]
|
target = [str(round(self.target_airspeed)),str(round(self.target_roll)),str(round(self.target_heading,3)),str(round(self.target_descent_rate,3)),str(round(self.altitude,3)),str(round(self.target_pitch,3)),0, 0]
|
||||||
current = [str(round(self.airspeed,3)),str(round(self.roll,3)),str(round(self.heading,3)),str(round(self.descent_rate,3)),str(round(self.altitude,3)),str(round(self.pitch,3)),str(round(self.wheelSpeed,3)),str(round(self.wheelWeight,3))]
|
current = [str(round(self.destinations["airspeed"],3)),str(round(self.roll,3)),str(round(self.heading,3)),str(round(self.descent_rate,3)),str(round(self.altitude,3)),str(round(self.pitch,3)),str(round(self.wheelSpeed,3)),str(round(self.wheelWeight,3))]
|
||||||
controlVal = [str(round(yokePull,3)),str(round(yokeSteer,3)),str(round(rudder,3)),str(round(throttle,3)),str(round(self.altitude,3)),str(self.flare),str(round(self.brakes,3)),str(round(self.brakes,3))]
|
controlVal = [str(round(yokePull,3)),str(round(yokeSteer,3)),str(round(rudder,3)),str(round(throttle,3)),str(round(self.altitude,3)),str(self.flare),str(round(self.brakes,3)),str(round(self.brakes,3))]
|
||||||
|
|
||||||
header_row = "{:<20} {:<20} {:<20} {:>10}"
|
header_row = "{:<20} {:<20} {:<20} {:>10}"
|
||||||
@@ -307,7 +337,7 @@ class AircraftLandingModel(pyactr.ACTRModel):
|
|||||||
self.Ki = 0.01 ## Increase Control Authority to compensate for decreasing airspeed
|
self.Ki = 0.01 ## Increase Control Authority to compensate for decreasing airspeed
|
||||||
print("Altitude < 500; Flare Set True")
|
print("Altitude < 500; Flare Set True")
|
||||||
|
|
||||||
if(self.wheelWeight > 0.01 and self.wheelSpeed > 1 and self.airspeed < 1 and self.brakes == 1):
|
if(self.wheelWeight > 0.01 and self.wheelSpeed > 1 and self.destinations["airspeed"] < 1 and self.brakes == 1):
|
||||||
self.inProgress = False
|
self.inProgress = False
|
||||||
|
|
||||||
def simulationStatus(self):
|
def simulationStatus(self):
|
||||||
|
|||||||
@@ -9,140 +9,196 @@ def runExperiment(title):
|
|||||||
|
|
||||||
print("Model Test: Xplane setting up connection")
|
print("Model Test: Xplane setting up connection")
|
||||||
print("Setting up simulation")
|
print("Setting up simulation")
|
||||||
with xpc.XPlaneConnect() as client:
|
startTime = 0
|
||||||
# Verify connection
|
endTime = 0
|
||||||
|
difference = endTime - startTime
|
||||||
|
while(difference < 10):
|
||||||
|
print("Time Elapsed: -----> " + str(difference))
|
||||||
try:
|
try:
|
||||||
# If X-Plane does not respond to the request, a timeout error
|
with xpc.XPlaneConnect() as client:
|
||||||
# will beff raised.
|
# Verify connection
|
||||||
client.getDREF("sim/test/test_float")
|
# try:
|
||||||
|
# If X-Plane does not respond to the request, a timeout error
|
||||||
|
# will beff raised.
|
||||||
|
client.getDREF("sim/test/test_float")
|
||||||
|
# except:
|
||||||
|
# print("Error establishing connection to X-Plane.")
|
||||||
|
# print("Exiting...")
|
||||||
|
# return
|
||||||
|
cogModel = AircraftLandingModel(client)
|
||||||
|
# # Set position of the player aircraft
|
||||||
|
# print("Setting position")
|
||||||
|
# # Lat Lon Alt Pitch Roll Yaw Gear
|
||||||
|
# posi = [37.524, -122.06899, 2500, 0, 0, 0, 1]
|
||||||
|
# client.sendPOSI(posi)
|
||||||
|
|
||||||
|
# # Set position of a non-player aircraft
|
||||||
|
# print("Setting NPC position")
|
||||||
|
# # Lat Lon Alt Pitch Roll Yaw Gear
|
||||||
|
# posi = [37.52465, -122.06899, 2500, 0, 20, 0, 1]
|
||||||
|
# client.sendPOSI(posi, 1)
|
||||||
|
|
||||||
|
# # Set angle of attack, velocity, and orientation using the DATA command
|
||||||
|
# print("Setting orientation")
|
||||||
|
# data = [\
|
||||||
|
# [18, 0, -998, 0, -998, -998, -998, -998, -998],\
|
||||||
|
# [ 3, 130, 130, 130, 130, -998, -998, -998, -998],\
|
||||||
|
# [16, 0, 0, 0, -998, -998, -998, -998, -998]\
|
||||||
|
# ]
|
||||||
|
# client.sendDATA(data)
|
||||||
|
|
||||||
|
# client.pauseSim(True)
|
||||||
|
# # Set position of the player aircraft
|
||||||
|
# print("Setting Experiment Position: Denver Airport Runway")
|
||||||
|
# # Lat Lon Alt Pitch Roll Yaw Gear
|
||||||
|
# posi = [39.945, -104.70, 2500, 0, 0, 0, 1] #3NM Approach for Denver Intl Runway 16R (16,000 feet)
|
||||||
|
# client.sendPOSI(posi)
|
||||||
|
# quat = (1.0,0.0,0.0,173.0)
|
||||||
|
# quatDref = "sim/flightmodel/position/q"
|
||||||
|
# client.sendDREF(quatDref,quat)
|
||||||
|
# speed = (1.0,0.0,0.0,173.0)
|
||||||
|
# client.sendDREF("sim/flightmodel/position/indicated_airspeed",speed)
|
||||||
|
# client.pauseSim(False)
|
||||||
|
|
||||||
|
|
||||||
|
# # Set angle of attack, velocity, and orientation using the DATA command
|
||||||
|
# print("Setting orientation")
|
||||||
|
# data = [\
|
||||||
|
# [18, 0, -998, 0, -998, -998, -998, -998, -998],\
|
||||||
|
# [ 3, 130, 130, 130, 130, -998, -998, -998, -998],\
|
||||||
|
# [16, 0, 0, 0, -998, -998, -998, -998, -998]\
|
||||||
|
# ]
|
||||||
|
# client.sendDATA(data)
|
||||||
|
|
||||||
|
groundLevel = 5434
|
||||||
|
offset = 4000
|
||||||
|
altitudeFEET = groundLevel + offset
|
||||||
|
altitudeMETERS = altitudeFEET/3.281
|
||||||
|
altitude = altitudeMETERS
|
||||||
|
"""
|
||||||
|
Set orientation and Position
|
||||||
|
1 - Time
|
||||||
|
3- Speeds: [3, V-indicated, 3, 2, 2, -998, VindMPH, V trueMPHas, vtrue MPHgs],\
|
||||||
|
16 - Angular Velocities
|
||||||
|
17 - PitchRoll and Headings: [17, Pitch, Roll, Heading True, -998, -998, -998, -998, -998],\
|
||||||
|
18 - Angle of Attack
|
||||||
|
20 - Latitude and Longitude
|
||||||
|
"""
|
||||||
|
location1 = [20, groundLevel + 3000, 39.96239, -104.69713, -998, -998, -998, -998, -998]
|
||||||
|
testLocation = [20, -998, 27.20579, -80.08621, altitude, -998, -998, -998, -998] # 27.20579°N/80.08621°W
|
||||||
|
|
||||||
|
kias = -998
|
||||||
|
keas = -998
|
||||||
|
ktas = -998
|
||||||
|
ktgs = -998
|
||||||
|
mph = -998
|
||||||
|
mphas = 80
|
||||||
|
mphgs = 80
|
||||||
|
|
||||||
|
print("Setting orientation for test")
|
||||||
|
# client.sendDREF("sim/operation/override/override_planepath",1)
|
||||||
|
# client.pauseSim(True)
|
||||||
|
|
||||||
|
# client.sendDREF("sim/flightmodel/position/local_y",2000)
|
||||||
|
# client.sendDREFs(["sim/flightmodel/position/P","sim/flightmodel/position/Q","sim/flightmodel/position/R"],[0,0,0])
|
||||||
|
# client.sendDREF("sim/flightmodel/position/q",[0.3, 0, 0, 0.6])
|
||||||
|
|
||||||
|
# data = [\
|
||||||
|
# [3, -998, -998, -998, -998, -998, -998, mphas, mphgs],\
|
||||||
|
# [16, 0, 0, 0, -998, -998, -998, -998, -998],\
|
||||||
|
# [17, 0, 0, 0, -998, -998, -998, -998, -998],\
|
||||||
|
# [18, -998, -998, -998, -998, -998, -998, -998, -998],\
|
||||||
|
# [19, -998, -998, -998, -998, -998, -998, -998, -998],\
|
||||||
|
# testLocation\
|
||||||
|
# ]
|
||||||
|
# client.sendDATA(data)
|
||||||
|
# client.sendDREF("sim/operation/override/override_planepath",0)
|
||||||
|
|
||||||
|
client.pauseSim(False)
|
||||||
|
|
||||||
|
# 39.96239°N/104.69713°W
|
||||||
|
runModel = True
|
||||||
|
# Set control surfaces and throttle of the player aircraft using sendCTRL
|
||||||
|
print("Setting controls")
|
||||||
|
ctrl = [0.0, 0.0, 0.0, 0.0]
|
||||||
|
client.sendCTRL(ctrl)
|
||||||
|
# Pitch, Roll, Rudder, Throttle
|
||||||
|
# Pause the sim
|
||||||
|
# client.pauseSim(False)
|
||||||
|
count = 0
|
||||||
|
innercount = 0
|
||||||
|
clockStart = time.time()
|
||||||
|
#Doing stuff In between Test SECOND INCREMENTS
|
||||||
|
retry = 0
|
||||||
|
while(cogModel.simulationStatus() and runModel and retry < 50):
|
||||||
|
clockStart = time.time() #START TIMER
|
||||||
|
# client.pauseSim(True) # Pause Simulator
|
||||||
|
#Run Model
|
||||||
|
cogModel.update_aircraft_state()
|
||||||
|
cogModel.update_controls_simultaneously()
|
||||||
|
client.pauseSim(False) #Unpause Simulator
|
||||||
|
clockEnd = time.time() # STOP TIMER
|
||||||
|
count+=1
|
||||||
|
# print("Clock Time: " + str(clockEnd - clockStart)) ## LOG TIME TAKEN
|
||||||
|
sleep(0.05) # LET Simulator Run 50 Milliseconds
|
||||||
|
|
||||||
|
##EXCEPTION TEST BED
|
||||||
|
# try:
|
||||||
|
# clockStart = time.time() #START TIMER
|
||||||
|
# # client.pauseSim(True) # Pause Simulator
|
||||||
|
# #Run Model
|
||||||
|
# cogModel.update_aircraft_state()
|
||||||
|
# cogModel.update_controls_simultaneously()
|
||||||
|
# client.pauseSim(False) #Unpause Simulator
|
||||||
|
# clockEnd = time.time() # STOP TIMER
|
||||||
|
# count+=1
|
||||||
|
# # print("Clock Time: " + str(clockEnd - clockStart)) ## LOG TIME TAKEN
|
||||||
|
# sleep(0.05) # LET Simulator Run 50 Milliseconds
|
||||||
|
# except TimeoutError as e:
|
||||||
|
# clockStart = time.time()
|
||||||
|
# difference = 0
|
||||||
|
# print("Outer exception retry: " + str(retry))
|
||||||
|
# while(difference<10):
|
||||||
|
# print("Top of while loop")
|
||||||
|
# try:
|
||||||
|
# print("Top of TRY")
|
||||||
|
# with xpc.XPlaneConnect() as client:
|
||||||
|
# print("Top of reassign")
|
||||||
|
# cogModel.reassignClient(client)
|
||||||
|
# print("Bottom of reassign")
|
||||||
|
# ##Test the connection
|
||||||
|
# print("TOP: Testing connection")
|
||||||
|
# cogModel.client.getDREF("sim/test/test_float") ##EXCEPTION OCCURING HERE
|
||||||
|
# print("CONNECTION SUCCESFUL!!!!!!")
|
||||||
|
# print("TRY BLOCK, go back to start: " + str(retry))
|
||||||
|
# except:
|
||||||
|
# print("Top of EXCEPT")
|
||||||
|
# print("EXCEPT BLOCK, go back to start: " + str(retry))
|
||||||
|
# clockEnd = time.time() # STOP TIMER
|
||||||
|
# difference = clockEnd - clockStart
|
||||||
|
# retry+=1
|
||||||
|
# print("Time Elapsed: -----> " + str(difference))
|
||||||
|
|
||||||
|
# ##Do Nothing, go back to start of difference loop
|
||||||
|
# else:
|
||||||
|
# print("Breaking out of Timeout exception loop")
|
||||||
|
# break
|
||||||
|
startTime = time.time()
|
||||||
except:
|
except:
|
||||||
print("Error establishing connection to X-Plane.")
|
print("except detected")
|
||||||
print("Exiting...")
|
endTime = time.time()
|
||||||
return
|
difference = endTime - startTime
|
||||||
cogModel = AircraftLandingModel(client)
|
continue
|
||||||
# # Set position of the player aircraft
|
|
||||||
# print("Setting position")
|
|
||||||
# # Lat Lon Alt Pitch Roll Yaw Gear
|
|
||||||
# posi = [37.524, -122.06899, 2500, 0, 0, 0, 1]
|
|
||||||
# client.sendPOSI(posi)
|
|
||||||
|
|
||||||
# # Set position of a non-player aircraft
|
|
||||||
# print("Setting NPC position")
|
|
||||||
# # Lat Lon Alt Pitch Roll Yaw Gear
|
|
||||||
# posi = [37.52465, -122.06899, 2500, 0, 20, 0, 1]
|
|
||||||
# client.sendPOSI(posi, 1)
|
|
||||||
|
|
||||||
# # Set angle of attack, velocity, and orientation using the DATA command
|
|
||||||
# print("Setting orientation")
|
|
||||||
# data = [\
|
|
||||||
# [18, 0, -998, 0, -998, -998, -998, -998, -998],\
|
|
||||||
# [ 3, 130, 130, 130, 130, -998, -998, -998, -998],\
|
|
||||||
# [16, 0, 0, 0, -998, -998, -998, -998, -998]\
|
|
||||||
# ]
|
|
||||||
# client.sendDATA(data)
|
|
||||||
|
|
||||||
# client.pauseSim(True)
|
|
||||||
# # Set position of the player aircraft
|
|
||||||
# print("Setting Experiment Position: Denver Airport Runway")
|
|
||||||
# # Lat Lon Alt Pitch Roll Yaw Gear
|
|
||||||
# posi = [39.945, -104.70, 2500, 0, 0, 0, 1] #3NM Approach for Denver Intl Runway 16R (16,000 feet)
|
|
||||||
# client.sendPOSI(posi)
|
|
||||||
# quat = (1.0,0.0,0.0,173.0)
|
|
||||||
# quatDref = "sim/flightmodel/position/q"
|
|
||||||
# client.sendDREF(quatDref,quat)
|
|
||||||
# speed = (1.0,0.0,0.0,173.0)
|
|
||||||
# client.sendDREF("sim/flightmodel/position/indicated_airspeed",speed)
|
|
||||||
# client.pauseSim(False)
|
|
||||||
|
|
||||||
|
|
||||||
# # Set angle of attack, velocity, and orientation using the DATA command
|
print("Model has finished running")
|
||||||
# print("Setting orientation")
|
#Copy data.txt to the cloudddddd using python magic and accurate filepaths
|
||||||
# data = [\
|
now = datetime.datetime
|
||||||
# [18, 0, -998, 0, -998, -998, -998, -998, -998],\
|
shutil.copy("/Users/flyingtopher/X-Plane 11/Data.txt", "/Users/flyingtopher/Desktop/Test Destination/" + title + "_" + str(now.now()) + "_" + ".txt")
|
||||||
# [ 3, 130, 130, 130, 130, -998, -998, -998, -998],\
|
|
||||||
# [16, 0, 0, 0, -998, -998, -998, -998, -998]\
|
|
||||||
# ]
|
|
||||||
# client.sendDATA(data)
|
|
||||||
|
|
||||||
groundLevel = 5434
|
input("Press any key to exit...")
|
||||||
offset = 4000
|
## Copy Data.txt to the repository file for analysis
|
||||||
altitudeFEET = groundLevel + offset
|
##Reset the sim with the keyboard shortcut (wrapper around model that waits for reconnection)
|
||||||
altitudeMETERS = altitudeFEET/3.281
|
|
||||||
altitude = altitudeMETERS
|
|
||||||
"""
|
|
||||||
Set orientation and Position
|
|
||||||
1 - Time
|
|
||||||
3- Speeds: [3, V-indicated, 3, 2, 2, -998, VindMPH, V trueMPHas, vtrue MPHgs],\
|
|
||||||
16 - Angular Velocities
|
|
||||||
17 - PitchRoll and Headings: [17, Pitch, Roll, Heading True, -998, -998, -998, -998, -998],\
|
|
||||||
18 - Angle of Attack
|
|
||||||
20 - Latitude and Longitude
|
|
||||||
"""
|
|
||||||
location1 = [20, groundLevel + 3000, 39.96239, -104.69713, -998, -998, -998, -998, -998]
|
|
||||||
testLocation = [20, -998, 27.20579, -80.08621, altitude, -998, -998, -998, -998] # 27.20579°N/80.08621°W
|
|
||||||
|
|
||||||
kias = -998
|
|
||||||
keas = -998
|
|
||||||
ktas = -998
|
|
||||||
ktgs = -998
|
|
||||||
mph = -998
|
|
||||||
mphas = 80
|
|
||||||
mphgs = 80
|
|
||||||
|
|
||||||
print("Setting orientation for test")
|
|
||||||
# client.sendDREF("sim/operation/override/override_planepath",1)
|
|
||||||
# client.pauseSim(True)
|
|
||||||
|
|
||||||
# client.sendDREF("sim/flightmodel/position/local_y",2000)
|
|
||||||
# client.sendDREFs(["sim/flightmodel/position/P","sim/flightmodel/position/Q","sim/flightmodel/position/R"],[0,0,0])
|
|
||||||
# client.sendDREF("sim/flightmodel/position/q",[0.3, 0, 0, 0.6])
|
|
||||||
|
|
||||||
# data = [\
|
|
||||||
# [3, -998, -998, -998, -998, -998, -998, mphas, mphgs],\
|
|
||||||
# [16, 0, 0, 0, -998, -998, -998, -998, -998],\
|
|
||||||
# [17, 0, 0, 0, -998, -998, -998, -998, -998],\
|
|
||||||
# [18, -998, -998, -998, -998, -998, -998, -998, -998],\
|
|
||||||
# [19, -998, -998, -998, -998, -998, -998, -998, -998],\
|
|
||||||
# testLocation\
|
|
||||||
# ]
|
|
||||||
# client.sendDATA(data)
|
|
||||||
# client.sendDREF("sim/operation/override/override_planepath",0)
|
|
||||||
|
|
||||||
client.pauseSim(False)
|
|
||||||
|
|
||||||
# 39.96239°N/104.69713°W
|
|
||||||
runModel = True
|
|
||||||
# Set control surfaces and throttle of the player aircraft using sendCTRL
|
|
||||||
print("Setting controls")
|
|
||||||
ctrl = [0.0, 0.0, 0.0, 0.0]
|
|
||||||
client.sendCTRL(ctrl)
|
|
||||||
# Pitch, Roll, Rudder, Throttle
|
|
||||||
# Pause the sim
|
|
||||||
# client.pauseSim(False)
|
|
||||||
count = 0
|
|
||||||
innercount = 0
|
|
||||||
clockStart = time.time()
|
|
||||||
#Doing stuff In between Test SECOND INCREMENTS
|
|
||||||
while(cogModel.simulationStatus() and runModel):
|
|
||||||
clockStart = time.time() #START TIMER
|
|
||||||
# client.pauseSim(True) # Pause Simulator
|
|
||||||
#Run Model
|
|
||||||
cogModel.update_aircraft_state()
|
|
||||||
cogModel.update_controls_simultaneously()
|
|
||||||
client.pauseSim(False) #Unpause Simulator
|
|
||||||
clockEnd = time.time() # STOP TIMER
|
|
||||||
count+=1
|
|
||||||
# print("Clock Time: " + str(clockEnd - clockStart)) ## LOG TIME TAKEN
|
|
||||||
sleep(0.05) # LET Simulator Run 50 Milliseconds
|
|
||||||
|
|
||||||
print("Model has finished running")
|
|
||||||
#Copy data.txt to the cloudddddd using python magic and accurate filepaths
|
|
||||||
now = datetime.datetime
|
|
||||||
shutil.copy("/Users/flyingtopher/X-Plane 11/Data.txt", "/Users/flyingtopher/Desktop/Test Destination/" + title + "_" + str(now.now()) + "_" + ".txt")
|
|
||||||
|
|
||||||
input("Press any key to exit...")
|
|
||||||
## Copy Data.txt to the repository file for analysis
|
|
||||||
##Reset the sim with the keyboard shortcut (wrapper around model that waits for reconnection)
|
|
||||||
|
|
||||||
def ex():
|
def ex():
|
||||||
##Store Experiment Battery
|
##Store Experiment Battery
|
||||||
@@ -152,7 +208,7 @@ def ex():
|
|||||||
##wind conditions, pilot conditions
|
##wind conditions, pilot conditions
|
||||||
title = input("Please Enter Experiment Set Title, leave blank for trial runs")
|
title = input("Please Enter Experiment Set Title, leave blank for trial runs")
|
||||||
count = 0
|
count = 0
|
||||||
while(count<2):
|
while(count<1):
|
||||||
runExperiment(title)
|
runExperiment(title)
|
||||||
count+=1
|
count+=1
|
||||||
print("Experiment Battery Complete")
|
print("Experiment Battery Complete")
|
||||||
|
|||||||
Reference in New Issue
Block a user