···55#show figure: set block(spacing: 2em)
66#let zebraw = (..args) => zebraw.zebraw(lang: false, background-color: luma(255).opacify(0%), ..args)
7788+// Utile: message marquant le début du dev de gz-unitree, 23 juin 2025
99+// https://matrix.to/#/!MmlaUevGqfiZYSHREv:laas.fr/$omjzydhckQuIVkcNBw0LTYVT7Td1C9UeLqbIisJAnFg?via=laas.fr
1010+811En se basant sur _unitree\_mujoco_, il a donc été possible de réaliser un bridge pour Gazebo.
9121013== Établissement du contact
···230233231234Ensuite, Gazebo démarre un nouveau pas de simulation. Avant de faire ce pas, il appelle la méthode `::PreUpdate` sur notre plugin, qui vient chercher la commande stockée dans le _buffer_ (1B), et applique cette commande sur le modèle du robot, animé par le simulateur.
232235236236+Pour appliquer la commande, on calcule la force effective que le moteur doit appliquer:
237237+238238+#grid(
239239+ columns: (2fr, 3fr),
240240+ $
241241+ tau = tau_"ff" + K_p Delta q + K_d Delta d q
242242+ $,
243243+ ```cpp
244244+ // Avec i l'indice du moteur
245245+ auto force = cmdbuf->tau_ff.at(i) +
246246+ cmdbuf->kp.at(i) * (cmdbuf->q_target.at(i) - lowstate.motor_state().at(i).q()) +
247247+ cmdbuf->kd.at(i) * (cmdbuf->dq_target.at(i) - lowstate.motor_state().at(i).dq());
248248+249249+ std::vector<double> torque = {force};
250250+ joint.SetForce(ecm, torque);
251251+ ```,
252252+)
253253+233254#architecture([Phase de réception des commandes], {
234255 edge(<policy>, (2, -1), (2, 0), "-->", label-pos: 10%)[(1A) publish]
235256 edge(<policy>, (2, -1), (2, 0), stroke: none, label-pos: 60%, label-side: left)[(1A) subscription]
···380401381402Ces désynchronisations pourraient expliquer les problèmes de performance recontrés (cf @perf)
382403383383-== Essai sur des politiques réelles
404404+== Vérification sur des politiques réelles
405405+406406+Après avoir testé le bridge sur les politiques d'examples fournies par Unitree, il a été testé sur une politique en cours de développement au sein de l'équipe de robotique du LAAS, Gepetto.
407407+408408+L'analyse de la vidéo (cf @video) montre que le bridge fonctionne: le comportement du robot est similaire à celui sur Isaac.
384409385410== Amélioration des performances <perf>
386411387387-== Enregistrement de vidéos
412412+Les premiers essais montrent un
413413+414414+== Enregistrement de vidéos <video>
388415389416=== Contrôle programmatique de l'enregistrement
390417