this repo has no description
0
fork

Configure Feed

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

Continue rapport

+48 -10
+14
bib.yaml
··· 824 824 date: '2025-10-22' 825 825 value: https://wiki.wireshark.org/Protocols/rtps 826 826 827 + h1-rt-lowstate: 828 + type: web 829 + title: rt/lowState topic Descirption - 宇树科技 文档中心 830 + url: 831 + date: '2025-10-23' 832 + value: https://support.unitree.com/home/en/H1_developer/H1-2_Basic_Services_Interface#heading-4 833 + 834 + h1-rt-lowcmd: 835 + type: web 836 + title: rt/lowCmd topic Description - 宇树科技 文档中心 837 + url: 838 + date: '2025-10-23' 839 + value: https://support.unitree.com/home/en/H1_developer/H1-2_Basic_Services_Interface#heading-1 840 +
+34 -10
rapport/gz-unitree.typ
··· 1 1 #import "@preview/zebraw:0.5.5" 2 2 #import "@preview/fletcher:0.5.8": diagram, node, edge 3 3 #import "@preview/cetz:0.4.2" 4 - #import "./utils.typ": dontbreak 4 + #import "./utils.typ": dontbreak, todo 5 5 #show figure: set block(spacing: 2em) 6 6 #let zebraw = (..args) => zebraw.zebraw(lang: false, background-color: luma(255).opacify(0%), ..args) 7 7 ··· 92 92 ~UnitreePlugin() override; 93 93 public: 94 94 void PreUpdate(const gz::sim::UpdateInfo &_info, 95 - gz::sim::EntityComponentManager &_ecm) override; 95 + gz::sim::EntityComponentManager &ecm) override; 96 96 }; 97 97 } 98 98 ``` ··· 236 236 Pour appliquer la commande, on calcule la force effective que le moteur doit appliquer: 237 237 238 238 #grid( 239 - columns: (2fr, 3fr), 240 - $ 241 - tau = tau_"ff" + K_p Delta q + K_d Delta d q 242 - $, 239 + columns: 2, 240 + gutter: 1em, 241 + [ 242 + #math.equation(block: true, numbering: none, $ 243 + tau = 244 + underbracket(K_p Delta q, "proportional") + 245 + underbracket(tau_"ff", "integrative") + 246 + underbracket(K_d Delta dot(q), "derivative") 247 + $) 248 + 249 + Avec 250 + 251 + / $tau$: pour _torque_, la force à donner au moteur 252 + / $tau_"ff"$: le $tau$ "feed-forward", #todo[I de PID ou pas?] 253 + / $Delta q$: écart d'angle de rotation du moteur entre la consigne et l'état actuel 254 + / $Delta dot(q)$: écart de vitesse (instantanée) de rotation du moteur entre la consigne et l'état actuel 255 + / $K_p$, $K_d$: coefficients modulant la prépondérance de $Delta dot(q)$ et $Delta dot(q)$ 256 + ], 257 + text(size: 0.9em, 243 258 ```cpp 244 259 // Avec i l'indice du moteur 245 - auto force = cmdbuf->tau_ff.at(i) + 246 - cmdbuf->kp.at(i) * (cmdbuf->q_target.at(i) - lowstate.motor_state().at(i).q()) + 247 - cmdbuf->kd.at(i) * (cmdbuf->dq_target.at(i) - lowstate.motor_state().at(i).dq()); 260 + auto force = 261 + cmdbuf->tau_ff.at(i) + 262 + cmdbuf->kp.at(i) * ( 263 + cmdbuf->q_target.at(i) - 264 + lowstate.motor_state().at(i).q() 265 + ) + 266 + cmdbuf->kd.at(i) * ( 267 + cmdbuf->dq_target.at(i) - 268 + lowstate.motor_state().at(i).dq() 269 + ); 248 270 249 271 std::vector<double> torque = {force}; 250 272 joint.SetForce(ecm, torque); 251 - ```, 273 + ```), 274 + "", 275 + align(center)[Implémentation] 252 276 ) 253 277 254 278 #architecture([Phase de réception des commandes], {