this repo has no description
0
fork

Configure Feed

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

Finish? etude biblio 1

+91 -5
+51
bib.yaml
··· 230 230 url: 231 231 value: https://docs.github.com/en/actions/concepts/runners/github-hosted-runners 232 232 date: 2025-09-04 233 + 234 + cmake: 235 + type: book 236 + title: The Architecture of Open Source Applications (Volume 1) CMake 237 + author: [Bill Hoffman, Kenneth Martin] 238 + url: 239 + date: 2025-09-04 240 + value: https://aosabook.org/en/v1/cmake.html 241 + 242 + nixos-impatient: 243 + type: article 244 + title: NixOS for the Impatient 245 + author: Fernando Borretti 246 + date: 2023-05-07 247 + url: 248 + date: 2025-09-04 249 + value: https://borretti.me/article/nixos-for-the-impatient 250 + 251 + sdk2-in-source-binaries: 252 + type: web 253 + title: unitreerobotics/unitree_sdk2, main branch, lib/x86_64 254 + publisher: Github 255 + url: 256 + date: 2025-09-04 257 + value: https://github.com/unitreerobotics/unitree_sdk2/tree/c8a71e281093593f4dcc7bceb3b3b529ff0e36b4/lib/x86_64 258 + 259 + gz-sim-overlay-update-msgs-issue: 260 + type: web 261 + title: "update gz-msgs · Issue #2 · muellerbernd/gazebo-sim-overlay" 262 + publisher: Github 263 + url: 264 + date: 2025-09-04 265 + value: https://github.com/muellerbernd/gazebo-sim-overlay/issues/2 266 + 267 + xvfb: 268 + type: article 269 + title: XVFB 270 + publisher: X.org 271 + author: David P. Wiggins, The Open Group, Inc. 272 + url: 273 + date: 2025-09-04 274 + value: https://www.x.org/archive/X11R7.7/doc/man/man1/Xvfb.1.xhtml 275 + 276 + unitree-mujoco: 277 + type: web 278 + title: Unitree mujoco 279 + publisher: Github 280 + author: Unitree Robotics 281 + url: 282 + date: 2025-09-04 283 + value: https://github.com/unitreerobotics/unitree_mujoco
+40 -5
biblio.typ
··· 1 1 #import "@preview/arkheion:0.1.0": arkheion, arkheion-appendices 2 2 3 - #let citneeded = super([[réf. nécéssaire]]) 4 - 5 3 #show: arkheion.with( 6 4 title: "Étude bibliographique I", 7 5 authors: ( 8 6 (name: "Gwenn Le Bihan", email: "gwenn.lebihan@etu.inp-n7.fr", affiliation: "ENSEEIHT"), 9 7 ), 10 8 date: "2 Septembre 2025", 11 - abstract: [Ce stage porte sur l'intégration de Nix et NixOS dans les processus de développement et de déploiement logiciel dans le domaine robotique au sein du LAAS. Nix, le _package manager_, et NixOS, l'OS, sont des technologies permettant une reproductibilité, une qualité importante dans le monde de la recherche] 9 + abstract: [ 10 + Ce stage porte sur l'intégration de Nix et NixOS dans les processus de développement et de déploiement logiciel dans le domaine robotique au sein du LAAS. Nix, le _package manager_, et NixOS, l'OS, sont des technologies permettant une reproductibilité, une qualité importante dans le monde de la recherche. 11 + 12 + J'ai été aussi amenée à travailler sur la création d'un _plugin_ pour Gazebo, un logiciel de simulation robotique, pour l'utiliser avec le _SDK_ d'un robot de Unitree. 13 + ] 12 14 ) 13 15 14 16 #outline( ··· 60 62 61 63 == Environnements de développement 62 64 63 - Cependant, ce qui fait un programme n'est pas seulement son code: surtout dans des langages plus anciens sans gestion de dépendance simple, les dépendances (bibliothèques) du programme, ainsi que l'environnement et les étapes de compilation de ce dernier, représentent également une partie considérable de la complexité du programme. 65 + Cependant, ce qui fait un programme n'est pas seulement son code: surtout dans des langages plus anciens sans gestion de dépendance simple, les dépendances (bibliothèques) du programme, ainsi que l'environnement et les étapes de compilation de ce dernier, représentent également une partie considérable de la complexité du programme (par exemple, en C++, on utilise un outil générant des fichiers de configuration pour un autre outil qui à son tour configure le compilateur de C++ @cmake) 64 66 65 67 C'est cette partie que Nix, le gestionnaire de paquet, permet d'encapsuler et de rendre reproductible. Dans ce modèle, la compilation (et de manière plus générale la construction, ou _build_) du projet est la fonction que l'on veut rendre pure. L'entrée est le code source, et le résultat de la fonction est un binaire, qui ne doit dépendre que du code source. 66 68 ··· 191 193 192 194 C'est un problème assez récurrent dans Linux de manière générale: d'un coup, le son ne marche plus, on passe ½h sur un forum à copier-coller des commandes dans un terminal, et le problème est réglé… jusqu'à ce qu'il survienne à nouveau après un redémarrage ou une réinstallation. 193 195 194 - Ici, NixOS assure que toute modification de la configuration d'un système est _déclarée_ (d'où l'adjectif "déclaratif") dans des fichiers de configurations, également écrit dans des fichiers `.nix`. 196 + Ici, NixOS assure que toute modification de la configuration d'un système est _déclarée_ (d'où l'adjectif "déclaratif") dans des fichiers de configurations, également écrit dans des fichiers `.nix` @nixos-impatient. 195 197 196 198 Ici encore, cela apporte un gain en terme de reproductibilité: l'état de configuration de l'OS sur lequel est déployé le programme du robot est, lui aussi, rendu reproductible. 197 199 200 + = Gazebo & Unitree 201 + 202 + == Contexte 203 + 204 + J'ai également été approchée pour travailler sur la création d'un _plugin_ pour Gazebo, un logiciel de simulation robotique @gazebo. 205 + 206 + Le but était de pouvoir utiliser ce logiciel de simulation open source avec un robot de la companie Unitree, le H1v2 @h1v2, un robot humanoïde tout-usage. 207 + 208 + == Une base de code partiellement open-source 209 + 210 + Une partie du code source de ce SDK n'est pas disponible, et n'est que distribué sous forme de binaires @sdk2-in-source-binaries. J'ai donc chercher à comprendre cette partie du code par ingénierie inverse, ce qui ne s'est pas avéré nécéssaire. 211 + 212 + Au final, en explorant le code source du plugin pour un autre logiciel de simulation, Mujoco @mujoco @unitree-mujoco, j'ai pu comprendre comment interfacer le SDK avec Gazebo. 213 + 214 + == `rt/lowstate`, `rt/lowcmd` 215 + 216 + Le SDK de Unitree fonctionne via des canaux DDS, une technologie de communication temps-réel bas niveau @dds. 217 + 218 + Deux de ces canaux donnent accès au contrôle (resp. à l'état) bas-niveau des moteurs (resp. capteurs) du robot: `rt/lowcmd` (resp. `rt/lowstate`). 219 + 220 + Grâce à l'étude des paquets transmis via Wireshark, j'ai pu débugger les communications entre mon plugin, _gz-unitree_, et le SDK. 221 + 222 + == Des tests end-to-end automatisés 223 + 224 + Je souhaitais permettre de tester le code sur simulateur de manière automatique: on push un commit modifiant une politique de contrôle du robot, et, automatiquement, en CI, un test sous simulateur est lancé. On reçoit un artéfact avec une vidéo filmant le test. 225 + 226 + Pour faire ceci, il a fallu rendre la fonctionnalité native à Gazebo d'enregistrement vidéo automatisable: elle ne l'est pas nativement, il a donc fallu que je duplique le code du module Gazebo correspondant, afin d'y rajouter de quoi contrôler l'entregistrement vidéo via des _topics_ Gazebo. 227 + 228 + Il y a aussi un challenge lié au fait que, en CI, il n'y a pas d'interface graphique, ce qui rend le lancement de l'interface graphique de Gazebo impossible. Il faut donc simuler une interface graphique avec _Xvfb_ @xvfb, un serveur X virtuel. 229 + 230 + == Packaging sous Nix 231 + 232 + Le packaging sous Nix de _gz-unitree_ est en cours, mais se heurte à quelques problèmes liés à l'état du packaging Nix de Gazebo lui-même: gazebo est packagé dans un _overlay_ tierce, _gazebo-sim-overlay_ @gazebo-sim-overlay, qui n'a pas mis à jour une des bibliothèques de Gaazebo depuis plus d'un an @gz-sim-overlay-update-msgs-issue 198 233 199 234 200 235