---
# System prepended metadata

title: Untitled

---

**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
