this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Continue rapport

+46 -2
+1 -1
pages_count
··· 1 - 45 1 + 46
+45 -1
rapport/gz-unitree.typ
··· 872 872 873 873 Cependant, l'enregistrement vidéo n'est pas nativement contrôlable par du code. L'idée était en effet de faire automatiquement tourner une simulation à chaque changement de la politique RL, et d'obtenir la vidéo du résultat, pour en observer l'évolution. 874 874 875 - Il a donc fallu développer un autre plugin, héritant de `gz::gui::Plugin` cette fois-ci. Ce plugin écoute des messages sur un topic Gazebo, `/video`, et permet de démarrer et arrêter l'enregistrement, tout en indiquant le chemin vers le fichier mp4 de sortie. 875 + Il a donc fallu développer un autre plugin, héritant de `gz::gui::Plugin` cette fois-ci. Ce plugin écoute des messages sur des topics Gazebo, `/gui/record_video/...`, et permet de démarrer et arrêter l'enregistrement, tout en indiquant le chemin vers le fichier mp4 de sortie. 876 + 877 + Au final, un script complet permettant de démarrer une simulation et l'enregistrer en MP4 ressemble à ceci 878 + 879 + ```bash 880 + # Envoyer un message Gazebo avec un argument de type String et une valeur de retour de type Booléen 881 + send_to_gz() { 882 + gz service -s $1 --reqtype gz.msgs.StringMsg --reptype gz.msgs.Boolean --req "data: \"$2\"" 883 + } 884 + 885 + # Lancement en arrière plan 886 + gz sim robot.sdf & sim_pid=$! 887 + # On attends que la simulation soit prête 888 + sleep 30 889 + 890 + # Lancement de l'enregistrement 891 + send_to_gz /gui/record_video/start mp4 892 + 893 + # Lancement de la politique RL 894 + uv run policy.py & policy_pid=$! 895 + # On décide de la durée maximale de la vidéo (si la politique ne s'arrête pas d'elle même) 896 + sleep 120 897 + kill $policy_pid 898 + 899 + # Arrêt de l'enregistrement 900 + send_to_gz /gui/record_video/stop file:///tmp/result.mp4 901 + 902 + # Arrêt du simulateur 903 + kill $sim_pid 904 + 905 + # La vidéo est disponible à /tmp/result.mp4 906 + ``` 876 907 877 908 == Mise en CI/CD 878 909 ··· 916 947 Une fois cette image disponible, on peut l'utiliser dans un workflow Github: 917 948 918 949 #zebraw( 950 + numbering: false, 919 951 highlight-lines: (6, 7), 920 952 ```yaml 921 953 ... ··· 931 963 ... 932 964 ``` 933 965 ) 966 + 967 + Et lancer la simulation et l'enregistrement vidéo. 968 + 969 + Pour récupérer le fichier vidéo final, on peut utiliser la notion d'_artifacts_ de Github Actions: 970 + 971 + ```yaml 972 + - name: Save video as artifact 973 + uses: actions/upload-artifact@v4 974 + with: 975 + name: gz-unitree-video 976 + path: /tmp/result.mp4 977 + ``` 934 978 935 979 ==== Émuler un serveur graphique <simulate-x>