this repo has no description
0
fork

Configure Feed

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

Continue rapport

+119 -9
+2 -3
rapport/gz-unitree.typ
··· 55 55 56 56 #let img = image("./wireshark-trace.png") 57 57 // https://forum.typst.app/t/how-to-blend-a-color-with-an-image-and-make-the-image-transparent/1677/5 58 - #let overlayed-img = contents => layout(bounds => { 58 + #let overlayed-img = (contents, img) => layout(bounds => { 59 59 let size = measure(img, ..bounds) 60 60 img 61 61 place(top + left, block(..size, contents)) ··· 63 63 64 64 #figure( 65 65 caption: [Trace de paquets RTPS sur _Wireshark_], 66 - overlayed-img[ 66 + overlayed-img([ 67 67 #diagram(spacing: (4.54pt, 2.75pt), { 68 68 node((0, 0))[] 69 69 let annotations-x = 80 ··· 1073 1073 trimmed-image("./cicd-commits.png", trim: (right: 65%)), 1074 1074 ), 1075 1075 ) 1076 -
slides/main.pdf

This is a binary file and will not be displayed.

+117 -6
slides/main.typ
··· 1 1 #import "../rapport/utils.typ": dontbreak, todo 2 2 #import "../rapport/context.typ": argmax, cL, definitions_paths_set, exp 3 + #import "../rapport/gz-unitree.typ": overlayed-img 3 4 #import "@preview/touying:0.6.1": * 4 5 #import themes.simple: * 5 6 ··· 218 219 219 220 #centered[ 220 221 221 - $ 222 - Pi' = & cases( 223 - argmax_(pi) cL_r (pi, Pi), 224 - "s.c. distance"(Pi', Pi) < delta 225 - ) 226 - $ 222 + $ 223 + Pi' = & cases( 224 + argmax_(pi) cL_r (pi, Pi), 225 + "s.c. distance"(Pi', Pi) < delta 226 + ) 227 + $ 228 + 229 + ] 230 + 231 + == Mise à jour de $Pi$: distance entre politiques 232 + 233 + #centered[ 234 + $ 235 + "distance"(Pi', Pi) & := max_(s in S) D_"KL" (Q_Pi' (s, dot) || Q_Pi (s, dot)) \ 236 + D_"KL" (P || P') & := sum_(x in cal(X)) P(x) log P(x) / (P'(x)) 237 + $ 238 + ] 239 + 240 + 241 + #title-slide[ 242 + == Le _SDK_#super[1] d'Unitree 243 + #super[1]Software Development Kit 244 + ] 245 + 246 + == DDS 247 + 248 + #overlayed-img[ 249 + #diagram(spacing: (4.54pt, 2.75pt), { 250 + node((0, 0))[] 251 + let annotations-x = 80 252 + let annotate = (y-start, y-end, label) => edge( 253 + (annotations-x, y-start), 254 + "|-|", 255 + (annotations-x, y-end), 256 + label-fill: white, 257 + label-side: left, 258 + label, 259 + ) 227 260 261 + annotate(3, 20)[Attente] 262 + annotate(20, 60)[Initialisation] 263 + annotate(60, 100)[Échange `rt/` \ `lowstate` $arrows.lr$ `lowcmd`] 264 + }) 265 + ] 266 + 267 + == Le SDK d'Unitree 268 + 269 + #centered[ 270 + #diagram(( 271 + node((0, 0), $Pi$), 272 + node((1, 0), "SDK"), 273 + node((2, 0), "robot"), 274 + edge((0, 0), (0, 0), "<-", bend: 130deg, loop-angle: 180deg)[], 275 + edge((2.25, 0), (2.25, 0), "->", bend: -130deg, loop-angle: -180deg)[], 276 + edge((0, 0), (1, 0), "->", shift: 7pt)[ordres], 277 + edge((0, 0), (1, 0), "<-", shift: -7pt, label-side: right)[état], 278 + edge((1, 0), (2, 0), "-->", shift: 7pt)[ordres], 279 + edge((1, 0), (2, 0), "<--", shift: -7pt, label-side: right)[état], 280 + )) 281 + 282 + #diagram(( 283 + edge((0, 0), (1, 0), "-->"), 284 + node((1.40, 0))[Message DDS], 285 + )) 286 + ] 287 + 288 + 289 + == Le SDK d'Unitree 290 + 291 + #centered[ 292 + #diagram({ 293 + node((0, 0), $Pi$) 294 + node((1, 0), "SDK") 295 + node((2, 0))[*Bridge*] 296 + node((3, 0), "Simulateur") 297 + 298 + edge((0, 0), (0, 0), "<-", bend: 130deg, loop-angle: 180deg)[] 299 + edge((3.25, 0), (3.25, 0), "->", bend: -130deg, loop-angle: -180deg)[] 300 + 301 + for i in range(0, 3) { 302 + let dash = if i == 1 { "--" } else { "-" } 303 + edge((i, 0), (i + 1, 0), dash + ">", shift: 7pt)[ordres] 304 + edge((i, 0), (i + 1, 0), "<" + dash, shift: -7pt, label-side: right)[état] 305 + } 306 + 307 + edge((0, 1), (2, 1), "|-|", label-side: right)[API du SDK] 308 + edge((2, 1), (3, 1), "|-|", label-side: right)[API du simulateur] 309 + }) 310 + ] 311 + 312 + 313 + == `unitree_mujoco` 314 + 315 + #centered(scale(70%, reflow: true, diagram({ 316 + node(name: <sdk>, (0, 0))[SDK] 317 + node(enclose: ((1, 1), (-1, 1)), stroke: blue, inset: 10pt, snap: false, text(fill: blue)[Canaux \ DDS]) 318 + node(name: <lowcmd>, (1, 1))[`rt/lowcmd`] 319 + node(name: <lowstate>, (-1, 1))[`rt/lowstate`] 320 + node(name: <bridge>, enclose: ((1, 2), (-1, 2)), stroke: black, inset: 10pt)[Bridge] 321 + node(name: <mujoco>, (0, 3))[Mujoco] 322 + 323 + 324 + edge(<sdk>, <lowcmd>, "->", bend: 30deg)[pub] 325 + edge(<lowcmd>, (1, 2), "-->", bend: 20deg)[via sub] 326 + edge((1, 2), <mujoco>, "->", bend: 20deg, `data->ctrl[i] = ...`) 327 + 328 + edge(<sdk>, <lowstate>, "<--", bend: -30deg)[via sub] 329 + edge(<lowstate>, (-1, 2), "<-", bend: -20deg)[pub] 330 + edge((-1, 2), <mujoco>, "<-", bend: -20deg, `... = data->sensordata[i]`) 331 + 332 + edge(<mujoco>, <mujoco>, "->", bend: 130deg, loop-angle: -90deg, `mj_step(model, data)`) 333 + }))) 334 + 335 + 336 + #title-slide[ 337 + == Développement de _gz-unitree_ 338 + Un bridge pour Gazebo 228 339 ]