**Queste informazioni sono prese da:** https://stable-baselines3.readthedocs.io/en/master/guide/rl_zoo.html 1. Clonare il repo di zoo dove si vuole : `git clone --recursive`(solo se si vogliono gli env di esempio lanciabili) https://github.com/DLR-RM/rl-baselines3-zoo 1. Andare nella cartella: `cd rl-baselines3-zoo/` 1. Attivare conda nel proprio env e installare: `pip install -r requirements.txt` **Le prossime info sono prese da:** https://www.gymlibrary.ml/content/environment_creation/?highlight=register sezione (Creating Environment Instances) Ovviamente bisognerà risolvere tutti gli import 1. andare nella cartella dove si tiene l'env e registrarlo su gym come da esempio nostro nel file \_\_init\_\_.py : ``` from gym.envs.registration import register import logging import os from ruamel.yaml import YAML cfg = YAML().load( open( os.environ["FLIGHTMARE_PATH"] + "/flightpy/configs/vision/config.yaml", "r" ) ) try: register( id='compass_env-v0', entry_point='flightmare.flightpy.flightrl.rpg_baselines.torch.envs.vec_env_wrapper:FlightEnvVec', max_episode_steps=300, kwargs=dict(env_cfg=cfg,name="train",mode="depth"), ) except Exception as e: logging.error(traceback.format_exc()) ``` 1. Importare il modulo che contiene la classe dell'env nel file `/repo/utils/import_envs.py`: ``` try: import flightmare.flightpy.flightrl.rpg_baselines.torch.envs.vec_env_wrapper except Exception as e: logging.error(traceback.format_exc()) compass_env = None ``` nel nostro caso 2. creare una configurazione con lo stesso nome dell'ID(`compass_env-v0`) nel file `/hyperparams/ppo.yaml` nel repo con una cosa simile a: ``` compass_env-v0: policy: "MultiInputPolicy" normalize: True gamma: 0.99 ent_coef: 0.002 vf_coef: 0.75 max_grad_norm: 0.5 clip_range: 0.25 learning_rate: 0.001 gae_lambda: 0.9 use_sde: False target_kl: None n_epochs: 10 batch_size: 100 n_steps: 200 n_timesteps: 10000000 policy_kwargs: "dict( features_extractor_class=CompassModel, features_extractor_kwargs=dict(mode='depth', pretrained_encoder_path='/home/cam/Desktop/compass/Modello/new-checkpoint.pth.tar', feature_size=295), activation_fn=nn.ReLU, net_arch=[(295), dict(pi=([295,147]), vf=([295,147]))], log_std_init=-0.5, normalize_images=False, )" ``` **NOTA**: LA CLASSE COMPASS MODEL... COME CAZZO LA SI IMPORTA DALLO YAML?? DOPO UN PO' CI SIAMO ARRESI ABBIAMO IMPORTATO COMPASS NEL FILE `repo/utils/exp_manager.py` (~~lo senti il profumo??~~):+1: :+1: :+1: :+1: :+1: :+1: 5. A questo punto in linea teorica dovresti riuscire a lanciare il tutto. con un comando simile a: `python3 train.py --algo ppo --env compass_env-v0 --vec-env dummy(alternativa da vagliare, spacca le feature di compass subproc) --n-eval-envs 1` **NOTA**: A noi non funziona correttamente ma ci parte, abbiamo dovuto cambiare il metodo di lancio del'env **NOTA**: Attenzione al fatto che devono essere lanciati almeno due env, quindi il modo brutto che abbiamo utilizzato è randomizzare le porte così funziona **NOTA**: Attenzione a non assegnare due volte gli stessi parametri, yaml o vec env **NOTA**: Ricordarsi che è possibile passare parametri da linea di comando