From 00613f788c911e5ac525138ca22a4b1a549b38e2 Mon Sep 17 00:00:00 2001 From: yy-x570 <993660140@qq.com> Date: Tue, 23 Dec 2025 18:59:56 +0800 Subject: [PATCH] Add Pipeline diagram --- .gitignore | 3 +- README.md | 15 +++ assets/robogauge_basepipeline.drawio | 132 +++++++++++++++++++++ assets/robogauge_basepipeline.png | Bin 0 -> 26315 bytes assets/robogauge_levelpipeline.drawio | 158 ++++++++++++++++++++++++++ assets/robogauge_levelpipeline.png | Bin 0 -> 29415 bytes 6 files changed, 307 insertions(+), 1 deletion(-) create mode 100644 assets/robogauge_basepipeline.drawio create mode 100644 assets/robogauge_basepipeline.png create mode 100644 assets/robogauge_levelpipeline.drawio create mode 100644 assets/robogauge_levelpipeline.png diff --git a/.gitignore b/.gitignore index e3bdbf8..43779f7 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,5 @@ __pycache__/ # Logger logs/ -.aim/ \ No newline at end of file +.aim/ +*.bkp \ No newline at end of file diff --git a/README.md b/README.md index f9861a0..757b820 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,7 @@ | - | - | - | - | - | | 1 | `max_velocity` | 单一维度的最大线/角速度 | 每次执行一个方向的指令, 再急停 | 6 | | 2 | `diagonal_velocity` | 对角线速度变化 | 每次执行一对对角指令 | 8 | +| 3 | `target_pos_velocity` | 比例差分控制到达目标位置 | 到达目标位置或超时 | 1 | ## 创建新任务 评测任务注册在[`tasks/__init__.py`](./robogauge/tasks/__init__.py)中完成, 包含四个部分: @@ -81,3 +82,17 @@ ### 导入新机器人/控制模型 1. 在Robot中创建新的机器人xml文件时, 需包含力矩控制`actuator`, 传感器`sensor - jointpos, jointvel, imu (framequat, gyro, accelerometer)`, 参考[`go2.xml`](resources/robots/go2/go2.xml), **注意: actuator的顺序需要和joint顺序一致, 该顺序称为mujoco关节顺序** 2. 控制模型相关位置位于[`RobotConfig.control`](robogauge/tasks/robots/base_robot_config.py)中, 不同仿真中关节顺序可能不同, 需保证`mj2model_dof_indices`从mujoco映射到模型训练的关节次序配置正确 (IsaacGym次序和Mujoco相同), 其他模型配置需保持一致 + +## 代码架构 +### Pipeline逻辑 + +[BasePipeline](./robogauge/tasks/pipeline/base_pipeline.py)用于管理仿真`sim`, 度量器(控制指令, 指标计算)`gauge`, 机器人运控模型`robot`三者的调度, 并包含异常处理, 域随机化, 观测噪声的添加. + +![robogauge_basepipeline](./assets/robogauge_basepipeline.png) + +[MultiPipeline](./robogauge/tasks/pipeline/multi_pipeline.py)用于多进程启动不同seed, 域随机化参数下的`BasePipeline`, 并合并结果文件. + +[LevelPipeline](./robogauge/tasks/pipeline/level_pipeline.py)对于当前的环境配置, 找到环境地形下模型能稳定通过(三个seed均通过)的最高地形难度. + +![robogauge_levelpipeline](./assets/robogauge_levelpipeline.png) + diff --git a/assets/robogauge_basepipeline.drawio b/assets/robogauge_basepipeline.drawio new file mode 100644 index 0000000..1282b5d --- /dev/null +++ b/assets/robogauge_basepipeline.drawio @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/robogauge_basepipeline.png b/assets/robogauge_basepipeline.png new file mode 100644 index 0000000000000000000000000000000000000000..4df3e13bf0bca145ef11a0618df7dd1c8aa577a5 GIT binary patch literal 26315 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 literal 0 HcmV?d00001 diff --git a/assets/robogauge_levelpipeline.drawio b/assets/robogauge_levelpipeline.drawio new file mode 100644 index 0000000..aa68c0b --- /dev/null +++ b/assets/robogauge_levelpipeline.drawio @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/robogauge_levelpipeline.png b/assets/robogauge_levelpipeline.png new file mode 100644 index 0000000000000000000000000000000000000000..d77c19bb8017871afbb82b7f153253fa7aac1931 GIT binary patch literal 29415 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�>d- zS%Y%@+G9qDdjv^+(|JTSqanv<{@<{I^$G;{nb;2AUdYT$N^Ls5U!5eQuj)tY#Bo%u z^;1me*IK6`O*DmFbSjy;i~I9?O9Wa2E3P!SUF55(p2b*w_Y+_p%s4K1V zoH|hhR!TygRtbOJ%Ef?-6ZzJ<6#I_3q6ydYi5lYY{t7i{>E~|%_p;o+&J|wdzC>00 zdsjyoP4MHlknwWDP)+9GcR*eQzc<(YJD+jkExSDk?1I4~@ttBIPp1Z+!DfS#Ixerc zt$s+9=6WOX-D5Usbu&sDu#;}Ul~dA5eW;>asZe8`u>4za`xh!)Mfo`Q;LkBedak>H zZ~JQCMYld7A>YGv(V!Is5J;nY!~JV=9?=$5i6Kd|vMBUn1#ZKe2hh2OOfXVuEG%%H zuHfXwzbbd53@36Y3yhi*6G`0me#orAi=8Aj#c&GF?z|3%PB=mGDOIO)ql{kGv;~#B zy5lJqf9|po!JAd=fzE>lFvBd*-WIUE*5FC`6oEZe7i2*o+v*^^5)1%-j@NF&lC`BC zL!ytMdmk_4d8prH^G8@5mGfV7v}R^|WQjly{Ne(LM$4L;oFIAR3D(W;e)j-{_=w4Jx`Dk*t-739x*TSa$M^Ql$$_WMGjLUm9Yt_k$k;0$6ad+&y_@w81U;tUrFpyUY8`MV&84(8-0H=aaukon?w5+bmllqX8PZYB0XE0gPG=N|KvcWAt{FPjv%gScBhWJg9)e?Rf^PinbdfcRuJO`cU1nnDt*wfpAErRCIzG(x z$u01RDHxu8FJl_?^menJ24h$kxZilk8B}0oKoOhoPet0J&mj4s-rFRinZ2wGl z!3LohU$W1ZTAMO)B6~mqY(;IlO=6DxB$(~jc(Hhx3}A?bV_a1FIq1~^cAE=9Y!66BY+{(0e_j*LR|64ab9m)S|N>@r61OoDSQh$6-u@-n(o!EfN}mNu(y z-`IDs1-bZn>Mh@DFxvPhpPkDQ_Vd9DfaBVrgnQw@*TOeo@J!%FE467JKHHsI9OL<) zY)(f9p2e88g(p5e|BxgU6e(>k@;)j4RyRc*e+22B8p`a>^IZT{L zV_z1j#%-I;bdZ&`a5o9A_5e#1Q0?!Lsu7`mxlz1Kh1>fzGa zChrO`3PHTjUYee|V~ogc9f^xy4_F_&>gZ;uuOwb&|65}zU#JP)(-gH`TQmbCgd9F= z@t%;a-gZYxH^y>D4c0x)n;D2+OQl7@a6PXQmmlYRFYM$qQi<<;M2zrukS6^y`UiYy zEDx-C04$>6Gk93@p!84Ma;r5{yY;}wjHFiW7?avdXQM@JxZ_D)fp3)8tx%)|>& zv^$@k_s0gJ=M|)H5h<(O=vRBt+J*4G;48qJ$4Uobbki!&?)xQ0*?BP>HaNDwhfW4P z*zga2iUDM!>IWYG64?I&h1XrdF(v*KGPGoegnlNl&m)kIc=<($3mIpCz-|S7jpJp` zFCe8teOJj(aMqWyyj-ce`=|@)Upg}8Sy`uP&-{_f7T!tDv>mCxPy=I zBuug}s9NMh5+=MeTxNDjK1O2#3~tR{@9|72smPF)C5q8w2vg`0>~_*dufV|*Ky$ja z?^5&bqtHL&AtG1!r>%;LNhU)~H!#O5&`KFr?GrVKn3D!t!8x~f25)j4feb$QH_i{2 zID4wcxGF=(gUwdRu;<3;QtsOZv3KjNv@0NUE&0(Lx%uz;&n*^xwc?TrjZI@TMk69h?pU^3G=!x_dVIj_?8rh-c?25Q-~yFzI$K zxJ{t8n+v8Oq%_hIh5j|LLD$Ea*tY`-L^I)_ySb5t zG}`FH4(%vgMqHe7E|>JY{j6`*l;7#SZzXBwby`Z0k`)b1F4_6Efmb<>m;3Wn!V1r< zr`tXY!Q_U*pG?S*2{&@TjT*kDOLFE?P{%LzTl9JvY0l`C3b}{L;IXKGnjm)Bgqx

8J9`0?H!Whz(>*6O5y+EMNpe9zx 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