Thank you Cory,
I will review the video over the weekend.
Here is a breakdown of the "time cost" and the issues I encountered for installation (including tracebacks and depreciation errors - although most can be ignored and are just to "share the experience" - and why although it's probably smooth once you have it running, it's a fairly steep cliff for someone just starting. At this point I still remain hopeful that pylot would be able to help me pid tune models, but I think I would be better off editing the xflr5 code to enable me to "evolve" airfoils (although I suspect machupX would be a good choice if I couldn't do that).
The last trial / traceback (at the bottom) I never managed to get past and get pylot running:
1: 15mins: I found pylot initially as I was actually looking for software I could use to simulate a model for pid tuning - since xflr5 provides an excellent analysis of a static wing I had no need or desire for this. My 5min initial review suggested pylot might be suitable and obviously much faster to run than something like flightgear so I spent a bit more time reviewing other information - although I was left feeling normal process with new software is just to "try it and see" - and from experience this would normally be very efficient. [so I'm not sure if you can count this in the 45mins]. I didn't look at any videos at this point as I have historically found I can learn more about software by just installing and trying (this was probably my first mistake).
2: 5-10mins: installing anaconda (there were an extra 10 mins on top of that which I'm not counting on top of that as my previous installation was old and said Spyder needed an upgrade but this then failed and I had to uninstall and reinstall from scratch) - I would accept many researchers would have it installed however if you wanted it to be used widely this isn't necessarily the case.
3: 20mins: I tried to install Pylot first this flagged depreciation issues (I think about ABC module installation), I then went back to the repo to see if it was a live project (as if not being regularly update would have automatically meant I would have had to fix this and would probably have eliminated it from my contention). I then spent a few minutes figuring out the directory structure and where the actual example files were. Having tried and failed to get these to run I went back to the documentation and realised Machup was a dependency and went through the same loop then realised that aerofoil was a dependency (I now know that's written at the top of the installation page, but I had skipped to the "installation" section) - it would have probably only been 2 mins to install all 3 had I realised the correct order, but ended up costing me in total about 10mins to just get all the dependencies installed to be able to run Pylot (which was my goal).
Much of the time cost was related to not being familar with the required command line inputs, and having to go through the extended python traceback to identify the issue (eg 10 lines just to say I'm in the wrong directory)
So my wasted time / frustration came from some of this (and yes in retrospect the documentation does say to load the "input" file, but I was assuming I need to run a .py file as it was after all Python
eg this was one attempt:
>> python -m machupX ./examples/Swarm/swarm_example.py
failed
>> python -m machupX "./examples/Swarm/swarm_example.py"
failed
>> cd .\examples\Swarm\
>> python -m machupX ".\swarm_example.py"
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\ProgramData\Anaconda3\lib\runpy.py", line 87, in _run_code
exec(code, run_globals)
File "C:\ProgramData\Anaconda3\lib\site-packages\machupX\__main__.py", line 96, in <module>
raise IOError("Please specify a .json input file (got {0}).".format(input_filename))
OSError: Please specify a .json input file (got .\swarm_example.py).
>> python -m machupX "swarming_drone.json"
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\ProgramData\Anaconda3\lib\runpy.py", line 87, in _run_code
exec(code, run_globals)
File "C:\ProgramData\Anaconda3\lib\site-packages\machupX\__main__.py", line 99, in <module>
_run_prescribed_analyses(input_filename)
File "C:\ProgramData\Anaconda3\lib\site-packages\machupX\__main__.py", line 36, in _run_prescribed_analyses
for key, params in input_dict["run"].items():
KeyError: 'run'
>> python -m machupX ".\swarm_input.json"
Finally got there, but all I see is 4 low poly planes, so spend some time looking in the interface to figure out how to display the analytic outpus (at which point I would admit I realised I was going to have to learn the json file structure before I could even start so gave up and went back to pylot)...
>> cd C:\Users\dgm55\source\repos\Pylot\examples\LiftingLineModel
>> python -m pylot joystick_trimmed_input.json
>> python -m pylot .\joystick_state_input.json
This then slowly goes through various loading screens before freezing at "Loading aircraft"
After watching it for a minute or two so I eventually look at the powershell and find the following traceback
Unable to load numpy_formathandler accelerator from OpenGL_accelerate
C:\ProgramData\Anaconda3\lib\site-packages\pylot\graphics.py:55: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.
return np.array([[1.,0.,0.,0.],
pygame 2.0.1 (SDL 2.0.14, Python 3.8.8)
Process Process-2:
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\multiprocessing\process.py", line 315, in _bootstrap
self.run()
File "C:\ProgramData\Anaconda3\lib\multiprocessing\process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\pylot\physics.py", line 33, in run_physics
aircraft = load_aircraft(input_dict, units, quit_flag, view_flag, pause_flag, data_flag, enable_interface)
File "C:\ProgramData\Anaconda3\lib\site-packages\pylot\physics.py", line 138, in load_aircraft
with open(aircraft_file, 'r') as aircraft_file_handle:
FileNotFoundError: [Errno 2] No such file or directory: 'examples/LiftingLineModel/flying_wing.json'
This apparently crashes powershell so I can't close the pygame window or even ctrl-c and close the terminal to abort it ...
So I try again... With fundamentally the same output but it stops responding at "Loading terrain" (and this time I can at least ctrl-c)
Then I try:
python -m pylot .\examples\LiftingLineModel\joystick_state_input.json
again it freezes but this time I know not to wait and find:
...
File "C:\Users\dgm55\source\repos\Pylot\pylot\controllers.py", line 230, in __init__
raise RuntimeError("Couldn't find any joysticks!")
RuntimeError: Couldn't find any joysticks!
After tracking down a PS2 joystick and crawling around under my desk I find that all 9 USB ports are occupied so I remove the least critical and rerun
This time I actually get a helpful "Crashed!" message
Unable to load numpy_formathandler accelerator from OpenGL_accelerate
C:\Users\dgm55\source\repos\Pylot\pylot\graphics.py:55: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.
return np.array([[1.,0.,0.,0.],
pygame 2.0.1 (SDL 2.0.14, Python 3.8.8)
Generating 3D model from MachUpX...
FreeCAD modules not found. Reverting to Cessna model...
pygame 2.0.1 (SDL 2.0.14, Python 3.8.8)
C:\ProgramData\Anaconda3\lib\site-packages\scipy\interpolate\interpolate.py:623: RuntimeWarning: invalid value encountered in true_divide
slope = (y_hi - y_lo) / (x_hi - x_lo)[:, None]
So I totally gave up and wrote my original post