Timing Improvements
Automatic Location Setting
This commit is contained in:
cs-powell
2025-03-26 14:07:59 -04:00
parent 670376162a
commit 66d165f185
3 changed files with 50 additions and 74 deletions

View File

@@ -29,6 +29,10 @@ class AircraftLandingModel(pyactr.ACTRModel):
# )
self.client = client
# TODO: CHANGE TO GETDREFS, respect the runtime calculations.....didnt you learn your lesson on the algorithms midterm
# TODO: Change sendDref to send DREFS
# TODO: look for any rouge get/sendCTRL methods
airspeed = self.client.getDREF("sim/cockpit2/gauges/indicators/airspeed_kts_pilot")
roll = self.client.getDREF("sim/cockpit2/gauges/indicators/roll_AHARS_deg_pilot")
heading = self.client.getDREF("sim/cockpit2/gauges/indicators/heading_AHARS_deg_mag_pilot")
@@ -39,6 +43,7 @@ class AircraftLandingModel(pyactr.ACTRModel):
wheelS = self.client.getDREF("sim/flightmodel2/gear/tire_rotation_speed_rad_sec")
wheelW = self.client.getDREF("sim/flightmodel/parts/tire_vrt_def_veh")
@@ -243,7 +248,7 @@ class AircraftLandingModel(pyactr.ACTRModel):
#Switch Target for Pitch to Local Pitch Axis (ex. +10 Degrees nose up)
self.printControls(1,0,yoke_pull,yoke_steer,rudder,throttle)
# self.printControls(1,0,yoke_pull,yoke_steer,rudder,throttle) #PRINT CONTROLS
# Send all controls simultaneously to X-Plane
self.send_controls_to_xplane(yoke_pull, yoke_steer, rudder, throttle)
@@ -274,7 +279,7 @@ class AircraftLandingModel(pyactr.ACTRModel):
#Hit the Brakes
brakedref = "sim/cockpit2/controls/parking_brake_ratio"
brake = 1
self.client.sendDREF(brakedref,brake)
self.client.sendDREF(brakedref,brake)
self.client.sendCTRL([yoke_pull, yoke_steer, rudder, throttle, -998, -998]) # Control inputs: [yoke_pull, yoke_steer, rudder, throttle]
@@ -333,7 +338,9 @@ class AircraftLandingModel(pyactr.ACTRModel):
print("Hit the brakes")
# def logData(self):
# def rules(self):

View File

@@ -37,9 +37,9 @@ Disturbances & Disturbance Tests (Demonstrate the limitations of the model)
1. Get model as is to land at the "ideal" point
2. Graph Production from the simulation
1. Dump Raw Data during simulation
1. Dump Raw Data during simulation (achieved)
2. Second peice of code, looks at raw data, produces the graphs/or the numbers that get pasted into excel
3. Create fancy graphs (The punchline of the story)
3. Create fancy graphs (The punchline of the story)
--- Slide with graphs that can make consistent comparisons
--- Novice, Expert, etc. -- What if games can be overlayed on top of that

View File

@@ -1,9 +1,10 @@
import time
from time import sleep
import xpc
from cognitiveModel import AircraftLandingModel
def ex():
print("X-Plane Connect example script")
print("Setting up simulation")
with xpc.XPlaneConnect() as client:
@@ -17,7 +18,6 @@ def ex():
print("Error establishing connection to X-Plane.")
print("Exiting...")
return
cogModel = AircraftLandingModel(client)
# # Set position of the player aircraft
@@ -43,96 +43,65 @@ def ex():
# 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)
# 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
#ONE SECOND INCREMENTS
# while(count < 1000000 ):
# client.pauseSim(False)
# sleep(1.0)
# print("Pausing" + str(count))
# client.pauseSim(True)
# sleep(1.0)
# count+=1
#0.1 SECOND INCREMENTS
# while(count < 1000000 ):
# client.pauseSim(False)
# sleep(0.1)
# print("Pausing" + str(count))
# client.pauseSim(True)
# sleep(0.1)
# count+=1
#0.001 SECOND INCREMENTS
# while(count < 1000000 ):
# client.pauseSim(False)
# sleep(0.001)
# print("Pausing" + str(count))
# client.pauseSim(True)
# sleep(0.001)
# count+=1
#0.00001 SECOND INCREMENTS
# while(count < 1000000 ):
# client.pauseSim(False)
# sleep(0.00001)
# print("Pausing" + str(count))
# client.pauseSim(True)
# sleep(0.00001)
# count+=1
# sim/operation/override/override_timestep
clockStart = time.time()
#Doing stuff In between Test SECOND INCREMENTS
while(count < 1000000):
#50 Millisecond Timesteps
# sleep(0.05)
sleep(0.05)
clockStart = time.time()
client.pauseSim(False) #Unpause
# sleep(0.05) # Run 50 Milliseconds
# client.pauseSim(True) # Pause Simulator
client.pauseSim(True) # Pause Simulator
#Run Model (Send commands to simulator within this process)
####Insert Model Here, some assembly required#######
cogModel.update_aircraft_state()
cogModel.update_controls_simultaneously()
#Please work........no excuses now
#Repeat
# print("Advanced 50 Milliseconds: Step #" + str(count))
client.pauseSim(False) #Unpause
clockEnd = time.time()
count+=1
print("Clock Time: " + str(clockEnd - clockStart))
sleep(0.05) # Run 50 Milliseconds
##Would need to be logging data during the sleep time......but the code is "sleeping"....multithread?
#Repeat
# print("Pausing" + str(count))
# innercount = 0
# client.pauseSim(True)
# sleep(0.05) #Simulate 50 milliseconds
# sleep(0.01) #Simulate 50 milliseconds
# # while(innercount < 100000):
# # # print("Doing Stuff" + str(innercount)) # Simulates the model running and computing for 50 Milliseconds maybe?
# # innercount+=1
# # else:
# client.pauseSim(False)
# print("Exit Pause" + str(count))
# sleep(0.5)
# count+=1
#
print("End of Python client example")
#Copy data.txt to the cloudddddd using python magic and accurate filepaths
input("Press any key to exit...")
if __name__ == "__main__":