fix del comportamento della simulazione in editing che non si fermava senza spline
This commit is contained in:
parent
e62b584981
commit
717d6b63de
@ -1,101 +1,100 @@
|
||||
x_nm,y_nm
|
||||
0.17452406437283513,9.998476951563912
|
||||
0.2859422147817867,10.279638104623308
|
||||
0.4421393353133215,10.609933583832394
|
||||
0.636432547474389,10.985187585712282
|
||||
0.8621389727719386,11.401224306784082
|
||||
1.1125757327129193,11.853867943568899
|
||||
1.3810599488042814,12.338942692587844
|
||||
1.6609087425529734,12.852272750362022
|
||||
1.9454392354659444,13.389682313412546
|
||||
2.227968549050145,13.946995578260525
|
||||
2.5018138048125236,14.520036741427065
|
||||
2.7602921242600305,15.104629999433275
|
||||
2.996720628899614,15.696599548800267
|
||||
3.2044164402382243,16.291769586049142
|
||||
3.3766966797828104,16.885964307701016
|
||||
3.5068784690403216,17.475007910277
|
||||
3.588278929517707,18.054724590298196
|
||||
3.6142151827219164,18.620938544285714
|
||||
3.578004350159902,19.169473968760666
|
||||
3.472963553338606,19.696155060244156
|
||||
3.4729635533386065,19.69615506024416
|
||||
3.272762644392875,20.217383756990923
|
||||
2.964843068011936,20.750866222507394
|
||||
2.5631793345343286,21.294382991192247
|
||||
2.081745954298589,21.845714597444157
|
||||
1.5345174376432555,22.402641575661793
|
||||
0.9354682949068648,22.962944460243826
|
||||
0.2985730364279542,23.52440378558893
|
||||
-0.36219382745493856,24.084800086095772
|
||||
-1.032857786403277,24.641913896163032
|
||||
-1.699444330078522,25.193525750189377
|
||||
-2.347978948142139,25.737416182573483
|
||||
-2.964487130255587,26.271365727714013
|
||||
-3.5349943660803307,26.793154920009652
|
||||
-4.045526145277833,27.30056429385906
|
||||
-4.482107957509558,27.79137438366092
|
||||
-4.830765292436963,28.263365723813894
|
||||
-5.077523639721516,28.714318848716662
|
||||
-5.208408489024677,29.14201429276789
|
||||
-5.2094453300079095,29.544232590366253
|
||||
-5.2094453300079095,29.544232590366242
|
||||
-5.087215806911271,29.93160758132983
|
||||
-4.8634013589893685,30.31504050771131
|
||||
-4.54667716842549,30.69271300726126
|
||||
-4.145718417402923,31.062806717730222
|
||||
-3.6692002881049564,31.42350327686877
|
||||
-3.1257979627148766,31.772984322427458
|
||||
-2.5241866234159707,32.10943149215684
|
||||
-1.873041452391528,32.43102642380748
|
||||
-1.1810376318248348,32.735950755129934
|
||||
-0.4568503438991798,33.02238612387475
|
||||
0.29084522920215017,33.28851416779252
|
||||
1.0533739052958677,33.53251652463377
|
||||
1.822060502198683,33.75257483214907
|
||||
2.5882298377273103,33.94687072808898
|
||||
3.343206729698462,34.113585850204075
|
||||
4.078315995928851,34.25090183624488
|
||||
4.784882454235189,34.35700032396197
|
||||
5.454230922434187,34.430062951105924
|
||||
6.077686218342558,34.46827135542727
|
||||
6.077686218342562,34.468271355427284
|
||||
6.6950615437258465,34.47971290071672
|
||||
7.3476044195818755,34.472832854810775
|
||||
8.028791142575807,34.44634971152879
|
||||
8.732098009372796,34.3989819646901
|
||||
9.451001316637997,34.32944810811404
|
||||
10.178977361036566,34.23646663561996
|
||||
10.909502439233654,34.11875604102719
|
||||
11.636052847894423,33.97503481815507
|
||||
12.352104883684024,33.80402146082294
|
||||
13.051134843267612,33.60443446285013
|
||||
13.726619023310347,33.37499231805599
|
||||
14.372033720477376,33.114413520259845
|
||||
14.98085523143386,32.82141656328105
|
||||
15.546559852844958,32.49471994093893
|
||||
16.062623881375814,32.13304214705283
|
||||
16.522523613691593,31.735101675442085
|
||||
16.919735346457447,31.29961701992603
|
||||
17.247735376338525,30.825306674324008
|
||||
17.499999999999996,30.310889132455358
|
||||
17.499999999999996,30.310889132455355
|
||||
17.667951456825268,29.722378176057024
|
||||
17.752649951768674,29.034858901953363
|
||||
17.76202872985173,28.26065677659477
|
||||
17.704021036095945,27.412097266431687
|
||||
17.586560115522854,26.501505837914515
|
||||
17.417579213153953,25.541207957493693
|
||||
17.205011574010783,24.54352909161962
|
||||
16.956790443114837,23.52079470674273
|
||||
16.68084906548765,22.485330269313444
|
||||
16.385120686150735,21.449461245782175
|
||||
16.0775385501256,20.425513102599343
|
||||
15.766035902433776,19.42581130621538
|
||||
15.45854598809677,18.462681323080695
|
||||
15.1630020521361,17.5484486196457
|
||||
14.88733733957329,16.69543866236083
|
||||
14.639485095429851,15.9159769176765
|
||||
14.427378564727302,15.222388852043133
|
||||
14.258950992487165,14.626999931911136
|
||||
14.142135623730947,14.142135623730947
|
||||
1.7364817766693033,9.84807753012208
|
||||
1.8196915585801245,9.997286852043835
|
||||
1.909698355298528,10.164705993254746
|
||||
2.006314644389864,10.349354914685591
|
||||
2.1093529034194827,10.550253577267155
|
||||
2.218625609952734,10.766421941930222
|
||||
2.3339452415549684,10.99687996960557
|
||||
2.4551242757915364,11.240647621223985
|
||||
2.581975190227787,11.496744857716246
|
||||
2.714310462429072,11.764191640013136
|
||||
2.851942569960741,12.04200792904544
|
||||
2.9946839903881437,12.329213685743936
|
||||
3.14234720127663,12.624828871039403
|
||||
3.2947446801915516,12.927873445862636
|
||||
3.4516889046982575,13.237367371144403
|
||||
3.612992352362098,13.552330607815493
|
||||
3.7784675007484245,13.871783116806688
|
||||
3.947926827422586,14.19474485904877
|
||||
4.121182809949932,14.520235795472518
|
||||
4.298047925895815,14.847275887008719
|
||||
4.478334652825583,15.17488509458815
|
||||
4.661855468304586,15.502083379141595
|
||||
4.848422849898178,15.827890701599843
|
||||
5.037849275171705,16.151327022893664
|
||||
5.2299472216905185,16.471412303953848
|
||||
5.424529167019969,16.787166505711173
|
||||
5.621407588725407,17.09760958909643
|
||||
5.8203949643721815,17.401761515040384
|
||||
6.021303771525644,17.698642244473834
|
||||
6.223946487751144,17.987271738327554
|
||||
6.4281355906140325,18.26666995753233
|
||||
6.6336835576796584,18.535856863018942
|
||||
6.840402866513372,18.79385241571817
|
||||
6.840402866513374,18.79385241571817
|
||||
7.064412663195302,19.043619595904882
|
||||
7.319986102939524,19.28896147814137
|
||||
7.604166677012322,19.530158164789555
|
||||
7.913997876679983,19.767489758211376
|
||||
8.246523193208787,20.001236360768743
|
||||
8.598786117865023,20.231678074823588
|
||||
8.96783014191497,20.459095002737843
|
||||
9.350698756624908,20.683767246873423
|
||||
9.744435453261131,20.90597490959226
|
||||
10.146083723089918,21.12599809325628
|
||||
10.552687057377549,21.3441169002274
|
||||
10.961288947390312,21.560611432867567
|
||||
11.368932884394491,21.775761793538678
|
||||
11.772662359656369,21.989848084602684
|
||||
12.169520864442228,22.203150408421493
|
||||
12.556551890018351,22.41594886735704
|
||||
12.930798927651024,22.62852356377125
|
||||
13.289305468606532,22.84115460002604
|
||||
13.629115004151155,23.054122078483353
|
||||
13.947271025551181,23.267706101505095
|
||||
14.24081702407289,23.482186771453204
|
||||
14.506796490982568,23.6978441906896
|
||||
14.742252917546494,23.91495846157622
|
||||
14.944229795030958,24.133809686474972
|
||||
15.109770614702246,24.354677967747794
|
||||
15.23591886782663,24.57784340775661
|
||||
15.319718045670406,24.80358610886334
|
||||
15.358211639499848,25.032186173429917
|
||||
15.348443140581244,25.26392370381826
|
||||
15.28745604018088,25.499078802390304
|
||||
15.172293829565035,25.737931571507964
|
||||
15.0,25.980762113533167
|
||||
14.999999999999998,25.98076211353316
|
||||
14.76007873005941,26.230939963143115
|
||||
14.447076186168827,26.491050501357915
|
||||
14.065598841372388,26.760197600053854
|
||||
13.62025316871424,27.037485131107207
|
||||
13.11564564123853,27.322016966394273
|
||||
12.556382731989396,27.612896977791323
|
||||
11.947070914010986,27.909229037174644
|
||||
11.292316660347446,28.210117016420522
|
||||
10.596726444042913,28.514664787405238
|
||||
9.86490673814154,28.82197622200508
|
||||
9.101464015687464,29.13115519209633
|
||||
8.311004749724834,29.441305569555276
|
||||
7.498135413297791,29.751531226258194
|
||||
6.66746247945048,30.060936034081376
|
||||
5.823592421227048,30.368623864901103
|
||||
4.971131711671633,30.67369859059366
|
||||
4.114686823828384,30.97526408303533
|
||||
3.2588642307414455,31.272424214102394
|
||||
2.4082704054549575,31.564282855671145
|
||||
1.5675118210130687,31.84994387961786
|
||||
0.7411949504599216,32.12851115781883
|
||||
-0.06607373316034426,32.39908856215034
|
||||
-0.8496877568035757,32.660779964488654
|
||||
-1.6050406474256338,32.91268923671007
|
||||
-2.3275259319823753,33.15392025069089
|
||||
-3.0125371374296517,33.38357687830738
|
||||
-3.6554677907233284,33.600762991435815
|
||||
-4.2517114188192515,33.80458246195249
|
||||
-4.796661548673278,33.99413916173369
|
||||
-5.285711707241269,34.1685369626557
|
||||
-5.714255421479081,34.326879736594805
|
||||
-6.077686218342556,34.46827135542728
|
||||
|
||||
|
@ -114,7 +114,7 @@
|
||||
"target_azimuth_deg": 45.0
|
||||
}
|
||||
],
|
||||
"use_spline": false
|
||||
"use_spline": true
|
||||
},
|
||||
{
|
||||
"target_id": 1,
|
||||
@ -150,7 +150,7 @@
|
||||
"target_azimuth_deg": -10.0
|
||||
}
|
||||
],
|
||||
"use_spline": false
|
||||
"use_spline": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@ -245,6 +245,9 @@ class Target:
|
||||
self._sim_time_s += delta_time_s
|
||||
self._time_in_waypoint_s += delta_time_s
|
||||
if self._current_waypoint_index == -1:
|
||||
# Traiettoria terminata: disattiva target
|
||||
self.active = False
|
||||
self.current_velocity_fps = 0.0
|
||||
return
|
||||
wp = self.trajectory[self._current_waypoint_index]
|
||||
duration = wp._calculated_duration_s if wp._calculated_duration_s is not None else wp.duration_s or 0.0
|
||||
@ -256,6 +259,9 @@ class Target:
|
||||
self.current_altitude_ft = wp.target_altitude_ft or self.current_altitude_ft
|
||||
self._activate_next_waypoint()
|
||||
if self._current_waypoint_index == -1:
|
||||
# Traiettoria terminata: disattiva target
|
||||
self.active = False
|
||||
self.current_velocity_fps = 0.0
|
||||
return
|
||||
wp = self.trajectory[self._current_waypoint_index] # Get new active waypoint
|
||||
duration = wp._calculated_duration_s if wp._calculated_duration_s is not None else wp.duration_s or 0.0
|
||||
|
||||
@ -79,6 +79,17 @@ class SimulationEngine(threading.Thread):
|
||||
self.scenario.update_state(simulated_delta_time)
|
||||
updated_targets = self.scenario.get_all_targets()
|
||||
|
||||
# --- Check for simulation end ---
|
||||
if hasattr(self.scenario, 'is_finished') and self.scenario.is_finished():
|
||||
self.logger.info("Simulation finished: auto-stopping thread.")
|
||||
self._stop_event.set()
|
||||
if self.update_queue:
|
||||
try:
|
||||
self.update_queue.put_nowait('SIMULATION_FINISHED')
|
||||
except Exception:
|
||||
pass
|
||||
break
|
||||
|
||||
# --- Communication Step (conditional) ---
|
||||
if self.communicator and self.communicator.is_open:
|
||||
if current_time - self._last_update_time >= self.update_interval_s:
|
||||
|
||||
@ -145,7 +145,7 @@ class MainView(tk.Tk):
|
||||
|
||||
ttk.Label(engine_frame, text="Speed:").pack(side=tk.LEFT, padx=(10, 2), pady=5)
|
||||
self.time_multiplier_var = tk.StringVar(value="1x")
|
||||
self.multiplier_combo = ttk.Combobox(engine_frame, textvariable=self.time_multiplier_var, values=["1x", "2x", "4x", "10x"], state="readonly", width=4)
|
||||
self.multiplier_combo = ttk.Combobox(engine_frame, textvariable=self.time_multiplier_var, values=["1x", "2x", "4x", "10x", "20x"], state="readonly", width=4)
|
||||
self.multiplier_combo.pack(side=tk.LEFT, padx=(0, 5), pady=5)
|
||||
self.multiplier_combo.bind("<<ComboboxSelected>>", self._on_time_multiplier_changed)
|
||||
|
||||
@ -336,12 +336,13 @@ class MainView(tk.Tk):
|
||||
def _process_gui_queue(self):
|
||||
try:
|
||||
while not self.gui_update_queue.empty():
|
||||
updated_targets: List[Target] = self.gui_update_queue.get_nowait()
|
||||
self._update_all_views(updated_targets)
|
||||
# Stop simulation and update buttons if all targets are inactive
|
||||
if self.is_simulation_running.get():
|
||||
if all(not t.active for t in self.scenario.get_all_targets()):
|
||||
update = self.gui_update_queue.get_nowait()
|
||||
if update == 'SIMULATION_FINISHED':
|
||||
self.logger.info("Simulazione terminata: aggiorno pulsanti per nuovo avvio.")
|
||||
self._on_stop_simulation()
|
||||
else:
|
||||
updated_targets: List[Target] = update
|
||||
self._update_all_views(updated_targets)
|
||||
finally:
|
||||
if self.is_simulation_running.get():
|
||||
self.after(GUI_QUEUE_POLL_INTERVAL_MS, self._process_gui_queue)
|
||||
|
||||
@ -96,7 +96,7 @@ class TrajectoryEditorWindow(tk.Toplevel):
|
||||
# ...existing code...
|
||||
ttk.Label(preview_controls, text="Speed:").pack(side=tk.LEFT, padx=(10, 2), pady=5)
|
||||
self.time_multiplier_var = tk.StringVar(value="1x")
|
||||
self.multiplier_combo = ttk.Combobox(preview_controls, textvariable=self.time_multiplier_var, values=["1x", "2x", "4x", "10x"], state="readonly", width=4)
|
||||
self.multiplier_combo = ttk.Combobox(preview_controls, textvariable=self.time_multiplier_var, values=["1x", "2x", "4x", "10x", "20x"], state="readonly", width=4)
|
||||
self.multiplier_combo.pack(side=tk.LEFT, padx=(0, 5), pady=5)
|
||||
self.multiplier_combo.bind("<<ComboboxSelected>>", self._on_time_multiplier_changed)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user