Add Pipeline diagram

This commit is contained in:
yy-x570
2025-12-23 18:59:56 +08:00
parent 50126ec9aa
commit 00613f788c
6 changed files with 307 additions and 1 deletions

3
.gitignore vendored
View File

@@ -8,4 +8,5 @@ __pycache__/
# Logger # Logger
logs/ logs/
.aim/ .aim/
*.bkp

View File

@@ -63,6 +63,7 @@
| - | - | - | - | - | | - | - | - | - | - |
| 1 | `max_velocity` | 单一维度的最大线/角速度 | 每次执行一个方向的指令, 再急停 | 6 | | 1 | `max_velocity` | 单一维度的最大线/角速度 | 每次执行一个方向的指令, 再急停 | 6 |
| 2 | `diagonal_velocity` | 对角线速度变化 | 每次执行一对对角指令 | 8 | | 2 | `diagonal_velocity` | 对角线速度变化 | 每次执行一对对角指令 | 8 |
| 3 | `target_pos_velocity` | 比例差分控制到达目标位置 | 到达目标位置或超时 | 1 |
## 创建新任务 ## 创建新任务
评测任务注册在[`tasks/__init__.py`](./robogauge/tasks/__init__.py)中完成, 包含四个部分: 评测任务注册在[`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关节顺序** 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相同), 其他模型配置需保持一致 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)

View File

@@ -0,0 +1,132 @@
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/29.0.3 Chrome/140.0.7339.249 Electron/38.7.0 Safari/537.36" version="29.0.3">
<diagram name="第 1 页" id="8v6NF5F31sSyrdGHMDpO">
<mxGraphModel dx="1181" dy="691" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="C1xzxP5kP4-2OWV6bNVM-1" value="&lt;font face=&quot;Lucida Console&quot;&gt;&amp;nbsp;BasePipline&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;verticalAlign=top;" parent="1" vertex="1">
<mxGeometry x="30" y="45.5" width="780" height="180" as="geometry" />
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-6" value="" style="group" parent="1" vertex="1" connectable="0">
<mxGeometry x="40" y="80" width="50" height="70" as="geometry" />
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-3" value="&lt;div&gt;&lt;font face=&quot;Lucida Console&quot;&gt;sim&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;Lucida Console&quot;&gt;gauge&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;Lucida Console&quot;&gt;robot&lt;/font&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;" parent="C1xzxP5kP4-2OWV6bNVM-6" vertex="1">
<mxGeometry y="20" width="50" height="50" as="geometry" />
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-5" value="&lt;font face=&quot;Lucida Console&quot;&gt;init&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=none;fillColor=none;" parent="C1xzxP5kP4-2OWV6bNVM-6" vertex="1">
<mxGeometry width="50" height="20" as="geometry" />
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-8" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="C1xzxP5kP4-2OWV6bNVM-3" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="180" y="125" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-9" value="&lt;font face=&quot;Lucida Console&quot;&gt;sim.load&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="C1xzxP5kP4-2OWV6bNVM-8" vertex="1" connectable="0">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-4" y="-9" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-10" value="&lt;font face=&quot;Lucida Console&quot;&gt;run&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="C1xzxP5kP4-2OWV6bNVM-8" vertex="1" connectable="0">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-4" y="11" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-18" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;resizable=0;" parent="1" source="C1xzxP5kP4-2OWV6bNVM-11" target="C1xzxP5kP4-2OWV6bNVM-17" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-19" value="&lt;font face=&quot;Lucida Console&quot;&gt;robot.build_obs&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;fillColor=none;gradientColor=none;" parent="C1xzxP5kP4-2OWV6bNVM-18" vertex="1" connectable="0">
<mxGeometry x="-0.469" y="-1" relative="1" as="geometry">
<mxPoint x="24" y="-11" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-11" value="&lt;div&gt;&lt;font face=&quot;Lucida Console&quot;&gt;sim_data&lt;br&gt;goal_data&lt;/font&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="180" y="100" width="80" height="50" as="geometry" />
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-14" value="&lt;font face=&quot;Lucida Console&quot;&gt;sim.step&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="1" vertex="1" connectable="0">
<mxGeometry x="520" y="115" as="geometry" />
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-17" value="&lt;div&gt;&lt;font face=&quot;Lucida Console&quot;&gt;action&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;Lucida Console&quot;&gt;pd_gains&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;Lucida Console&quot;&gt;control_type&lt;/font&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="380" y="100" width="100" height="50" as="geometry" />
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-20" value="&lt;font face=&quot;Lucida Console&quot;&gt;robot.get_action&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;fillColor=none;gradientColor=none;" parent="1" vertex="1" connectable="0">
<mxGeometry x="317" y="135.5" as="geometry" />
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-22" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;resizable=0;" parent="1" target="C1xzxP5kP4-2OWV6bNVM-21" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="480" y="124.75" as="sourcePoint" />
<mxPoint x="600" y="124.75" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;resizable=0;" parent="1" source="C1xzxP5kP4-2OWV6bNVM-26" target="C1xzxP5kP4-2OWV6bNVM-11" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="DQq9_kveZUeOBhKwjd4h-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=none;endFill=0;" edge="1" parent="1" source="C1xzxP5kP4-2OWV6bNVM-21" target="DQq9_kveZUeOBhKwjd4h-1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-21" value="&lt;div&gt;&lt;font face=&quot;Lucida Console&quot;&gt;gauge.update_metrics&lt;/font&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="570" y="110" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-25" value="&lt;font face=&quot;Lucida Console&quot;&gt;no&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;fillColor=none;gradientColor=none;" parent="1" vertex="1" connectable="0">
<mxGeometry x="414" y="164" as="geometry">
<mxPoint x="3" y="6" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-29" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;resizable=0;" parent="1" source="C1xzxP5kP4-2OWV6bNVM-26" target="C1xzxP5kP4-2OWV6bNVM-11" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="540" y="200" />
<mxPoint x="220" y="200" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-31" value="&lt;font face=&quot;Lucida Console&quot;&gt;Yes&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;fillColor=none;gradientColor=none;" parent="C1xzxP5kP4-2OWV6bNVM-29" vertex="1" connectable="0">
<mxGeometry x="-0.2822" relative="1" as="geometry">
<mxPoint y="-1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-26" value="&lt;span style=&quot;font-family: &amp;quot;Lucida Console&amp;quot;; font-size: 11px; text-wrap-mode: nowrap; background-color: rgb(255, 255, 255);&quot;&gt;gauge.is_reset&lt;/span&gt;" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=none;" parent="1" vertex="1">
<mxGeometry x="490" y="162" width="100" height="20" as="geometry" />
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-32" value="&lt;font face=&quot;Lucida Console&quot;&gt;sim.reset&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;fillColor=none;gradientColor=none;" parent="1" vertex="1" connectable="0">
<mxGeometry x="340" y="190" as="geometry" />
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-33" value="&lt;font face=&quot;Lucida Console&quot;&gt;robot.reset&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;fillColor=none;gradientColor=none;" parent="1" vertex="1" connectable="0">
<mxGeometry x="340" y="210" as="geometry" />
</mxCell>
<mxCell id="DQq9_kveZUeOBhKwjd4h-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="DQq9_kveZUeOBhKwjd4h-1" target="C1xzxP5kP4-2OWV6bNVM-26">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="645" y="202" />
<mxPoint x="565" y="202" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="DQq9_kveZUeOBhKwjd4h-3" value="&lt;font face=&quot;Lucida Console&quot;&gt;No&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="DQq9_kveZUeOBhKwjd4h-2">
<mxGeometry x="0.1912" relative="1" as="geometry">
<mxPoint x="10" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="DQq9_kveZUeOBhKwjd4h-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="DQq9_kveZUeOBhKwjd4h-1" target="DQq9_kveZUeOBhKwjd4h-5">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="645" y="202" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="DQq9_kveZUeOBhKwjd4h-7" value="&lt;font face=&quot;Lucida Console&quot;&gt;Yes&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="DQq9_kveZUeOBhKwjd4h-6">
<mxGeometry x="0.1024" y="1" relative="1" as="geometry">
<mxPoint x="8" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="DQq9_kveZUeOBhKwjd4h-1" value="&lt;span style=&quot;font-family: &amp;quot;Lucida Console&amp;quot;; font-size: 11px; text-wrap-mode: nowrap; background-color: rgb(255, 255, 255);&quot;&gt;gauge.is_done&lt;/span&gt;" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=none;" vertex="1" parent="1">
<mxGeometry x="595" y="150" width="100" height="20" as="geometry" />
</mxCell>
<mxCell id="DQq9_kveZUeOBhKwjd4h-5" value="&lt;span style=&quot;font-family: &amp;quot;Lucida Console&amp;quot;; font-size: 11px; text-wrap-mode: nowrap; background-color: rgb(255, 255, 255);&quot;&gt;result.yaml&lt;/span&gt;" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=none;" vertex="1" parent="1">
<mxGeometry x="710" y="192" width="80" height="20" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -0,0 +1,158 @@
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/29.0.3 Chrome/140.0.7339.249 Electron/38.7.0 Safari/537.36" version="29.0.3">
<diagram name="第 1 页" id="8v6NF5F31sSyrdGHMDpO">
<mxGraphModel dx="984" dy="576" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="C1xzxP5kP4-2OWV6bNVM-1" value="&lt;font face=&quot;Lucida Console&quot;&gt;&amp;nbsp;LevelPipline&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;verticalAlign=top;" parent="1" vertex="1">
<mxGeometry x="30" y="20" width="790" height="205.5" as="geometry" />
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-32" value="&lt;font face=&quot;Lucida Console&quot;&gt;&amp;nbsp;MultiPipline&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;verticalAlign=top;dashed=1;" vertex="1" parent="1">
<mxGeometry x="310" y="30" width="320" height="155" as="geometry" />
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-6" value="" style="group" parent="1" vertex="1" connectable="0">
<mxGeometry x="40" y="80" width="50" height="70" as="geometry" />
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-3" value="&lt;div&gt;&lt;font face=&quot;Lucida Console&quot;&gt;level&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;Lucida Console&quot;&gt;type&lt;/font&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;" parent="C1xzxP5kP4-2OWV6bNVM-6" vertex="1">
<mxGeometry y="20" width="50" height="50" as="geometry" />
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-5" value="&lt;font face=&quot;Lucida Console&quot;&gt;init&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=none;fillColor=none;" parent="C1xzxP5kP4-2OWV6bNVM-6" vertex="1">
<mxGeometry width="50" height="20" as="geometry" />
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-18" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;resizable=0;" parent="1" source="C1xzxP5kP4-2OWV6bNVM-11" target="C1xzxP5kP4-2OWV6bNVM-17" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-5" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="C1xzxP5kP4-2OWV6bNVM-17" target="LAeri6nIJ74vq4yU8XOa-4">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="320" y="125" />
<mxPoint x="320" y="85" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="C1xzxP5kP4-2OWV6bNVM-17" target="LAeri6nIJ74vq4yU8XOa-6">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="C1xzxP5kP4-2OWV6bNVM-17" target="LAeri6nIJ74vq4yU8XOa-7">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="320" y="125" />
<mxPoint x="320" y="165" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-17" value="&lt;div&gt;&lt;font face=&quot;Lucida Console&quot;&gt;level&lt;/font&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="240" y="110" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-1" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="C1xzxP5kP4-2OWV6bNVM-3" target="C1xzxP5kP4-2OWV6bNVM-11">
<mxGeometry relative="1" as="geometry">
<mxPoint x="180" y="125" as="targetPoint" />
<mxPoint x="90" y="125" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-2" value="&lt;font face=&quot;Lucida Console&quot;&gt;run&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="LAeri6nIJ74vq4yU8XOa-1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-3" y="-10" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="C1xzxP5kP4-2OWV6bNVM-11" value="&lt;font face=&quot;Lucida Console&quot;&gt;binary&lt;/font&gt;&lt;div&gt;&lt;font face=&quot;Lucida Console&quot;&gt;search&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;Lucida Console&quot;&gt;(l, r)&lt;/font&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="130" y="100" width="80" height="50" as="geometry" />
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-11" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="LAeri6nIJ74vq4yU8XOa-4" target="LAeri6nIJ74vq4yU8XOa-10">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-4" value="&lt;div&gt;&lt;font face=&quot;Lucida Console&quot;&gt;seed_0&lt;/font&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="338" y="70" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="LAeri6nIJ74vq4yU8XOa-6" target="LAeri6nIJ74vq4yU8XOa-12">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-6" value="&lt;div&gt;&lt;font face=&quot;Lucida Console&quot;&gt;seed_1&lt;/font&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="338" y="110" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="LAeri6nIJ74vq4yU8XOa-7" target="LAeri6nIJ74vq4yU8XOa-13">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-7" value="&lt;div&gt;&lt;font face=&quot;Lucida Console&quot;&gt;seed_2&lt;/font&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="338" y="150" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-38" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="LAeri6nIJ74vq4yU8XOa-10" target="LAeri6nIJ74vq4yU8XOa-17">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="620" y="85" />
<mxPoint x="620" y="125" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-10" value="&lt;div&gt;&lt;font face=&quot;Lucida Console&quot;&gt;result_0.yaml&lt;/font&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=none;" vertex="1" parent="1">
<mxGeometry x="500" y="70" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-39" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="LAeri6nIJ74vq4yU8XOa-12" target="LAeri6nIJ74vq4yU8XOa-17">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-12" value="&lt;div&gt;&lt;font face=&quot;Lucida Console&quot;&gt;result_1.yaml&lt;/font&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=none;" vertex="1" parent="1">
<mxGeometry x="500" y="110" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-40" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="LAeri6nIJ74vq4yU8XOa-13" target="LAeri6nIJ74vq4yU8XOa-17">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="620" y="165" />
<mxPoint x="620" y="125" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-13" value="&lt;div&gt;&lt;font face=&quot;Lucida Console&quot;&gt;result_2.yaml&lt;/font&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=none;" vertex="1" parent="1">
<mxGeometry x="500" y="150" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-44" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=none;endFill=0;" edge="1" parent="1" source="LAeri6nIJ74vq4yU8XOa-17" target="LAeri6nIJ74vq4yU8XOa-24">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-17" value="&lt;div&gt;&lt;font face=&quot;Lucida Console&quot;&gt;aggregated&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;Lucida Console&quot;&gt;result.yaml&lt;/font&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=none;" vertex="1" parent="1">
<mxGeometry x="647" y="105" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-45" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="LAeri6nIJ74vq4yU8XOa-24" target="LAeri6nIJ74vq4yU8XOa-27">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="670" y="165" />
<mxPoint x="670" y="200" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-46" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="LAeri6nIJ74vq4yU8XOa-24" target="C1xzxP5kP4-2OWV6bNVM-11">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="670" y="165" />
<mxPoint x="670" y="200" />
<mxPoint x="170" y="200" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-47" value="&lt;font face=&quot;Lucida Console&quot;&gt;Yes&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="LAeri6nIJ74vq4yU8XOa-46">
<mxGeometry x="-0.1813" y="-2" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-24" value="&lt;font face=&quot;Lucida Console&quot;&gt;&lt;span style=&quot;font-size: 11px;&quot;&gt;l &amp;lt; r&lt;/span&gt;&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=none;fillColor=default;" vertex="1" parent="1">
<mxGeometry x="678.88" y="155" width="36.25" height="20" as="geometry" />
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-27" value="&lt;font face=&quot;Lucida Console&quot;&gt;level&lt;/font&gt;&lt;div&gt;&lt;font face=&quot;Lucida Console&quot;&gt;result.yaml&lt;/font&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=none;" vertex="1" parent="1">
<mxGeometry x="717.12" y="180" width="90" height="40" as="geometry" />
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-31" value="&lt;font face=&quot;Lucida Console&quot;&gt;No&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="1">
<mxGeometry x="697" y="200" as="geometry">
<mxPoint x="-4" y="-2" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-34" value="&lt;font face=&quot;Lucida Console&quot; style=&quot;font-size: 11px;&quot;&gt;BasePipeline&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=center;verticalAlign=middle;dashed=1;strokeColor=none;" vertex="1" parent="1">
<mxGeometry x="404.67" y="71" width="83.33" height="10" as="geometry" />
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-36" value="&lt;font face=&quot;Lucida Console&quot; style=&quot;font-size: 11px;&quot;&gt;BasePipeline&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=center;verticalAlign=middle;dashed=1;strokeColor=none;" vertex="1" parent="1">
<mxGeometry x="404.67" y="111" width="83.33" height="10" as="geometry" />
</mxCell>
<mxCell id="LAeri6nIJ74vq4yU8XOa-37" value="&lt;font face=&quot;Lucida Console&quot; style=&quot;font-size: 11px;&quot;&gt;BasePipeline&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=center;verticalAlign=middle;dashed=1;strokeColor=none;" vertex="1" parent="1">
<mxGeometry x="404.67" y="151" width="83.33" height="10" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB