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