Skip to content

Commit bf690e7

Browse files
baggepinnenclaude
andcommitted
Give controllers their own icons instead of the robot icon
The controller subcomponents reused dyad://DyadBotComponents/PlanarDyadBot.svg, which depicts the plant rather than a controller. Add dedicated step-response icons under assets/ and point each controller at its own: - continuous controllers show a smooth step response - discrete controllers show a sampled staircase plus a clock glyph - the type is labelled (angle / cascade / cascade + ff); cascade icons show nested inner+outer loop responses and the +ff variants add a feed-forward arrow The top-level *DyadBot models keep the PlanarDyadBot icon. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FxiqD9h4podoj5e4tpLeGk
1 parent 85dcb8d commit bf690e7

9 files changed

Lines changed: 123 additions & 7 deletions

assets/AngleController.svg

Lines changed: 14 additions & 0 deletions
Loading

assets/CascadeController.svg

Lines changed: 16 additions & 0 deletions
Loading

assets/CascadeFFController.svg

Lines changed: 19 additions & 0 deletions
Loading

assets/DiscreteAngleController.svg

Lines changed: 24 additions & 0 deletions
Loading
Lines changed: 20 additions & 0 deletions
Loading
Lines changed: 23 additions & 0 deletions
Loading

dyad/cascade_ff.dyad

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ relations
7373
connect(torque_ff, angle_controller.u_ff) {^id20}
7474
connect(gain2.y, pos_controller.u_ff) {^id21}
7575
metadata {
76-
"Dyad": {"icons": {"default": "dyad://DyadBotComponents/PlanarDyadBot.svg"}},
76+
"Dyad": {"icons": {"default": "dyad://DyadBotComponents/CascadeFFController.svg"}},
7777
"_links": {
7878
"angle_measurement": {
7979
"Dyad": {
@@ -198,7 +198,7 @@ relations
198198
connect(gain.y, zoh.u) {^id31}
199199
connect(zoh.y, torque) {^id32}
200200
metadata {
201-
"Dyad": {"icons": {"default": "dyad://DyadBotComponents/PlanarDyadBot.svg"}},
201+
"Dyad": {"icons": {"default": "dyad://DyadBotComponents/DiscreteCascadeFFController.svg"}},
202202
"_links": {
203203
"angle_measurement": {
204204
"Dyad": {"placement": {"diagram": {"x1": 320, "y1": 640, "x2": 420, "y2": 740}}}

dyad/closed_loop.dyad

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ relations
3434
connect(constant_ff.y, angle_controller.u_ff) {^id10}
3535
connect(ref.y, angle_controller.u_s) {^id11}
3636
metadata {
37-
"Dyad": {"icons": {"default": "dyad://DyadBotComponents/PlanarDyadBot.svg"}},
37+
"Dyad": {"icons": {"default": "dyad://DyadBotComponents/AngleController.svg"}},
3838
"_links": {
3939
"measurement": {
4040
"Dyad": {"placement": {"diagram": {"x1": -100, "y1": 450, "x2": 0, "y2": 550}}}
@@ -104,7 +104,7 @@ relations
104104
connect(angle_controller.y, zoh.u) {^id13}
105105
connect(zoh.y, gain.u) {^id14}
106106
metadata {
107-
"Dyad": {"icons": {"default": "dyad://DyadBotComponents/PlanarDyadBot.svg"}},
107+
"Dyad": {"icons": {"default": "dyad://DyadBotComponents/DiscreteAngleController.svg"}},
108108
"_links": {
109109
"measurement": {
110110
"Dyad": {"placement": {"diagram": {"x1": -100, "y1": 450, "x2": 0, "y2": 550}}}
@@ -358,7 +358,7 @@ relations
358358
connect(constant2.y, angle_controller.u_ff) {^id18}
359359
connect(pos_reference, pos_controller.u_s) {^id19}
360360
metadata {
361-
"Dyad": {"icons": {"default": "dyad://DyadBotComponents/PlanarDyadBot.svg"}},
361+
"Dyad": {"icons": {"default": "dyad://DyadBotComponents/CascadeController.svg"}},
362362
"_links": {
363363
"angle_measurement": {
364364
"Dyad": {"placement": {"diagram": {"x1": 320, "y1": 640, "x2": 420, "y2": 740}}}
@@ -481,7 +481,7 @@ relations
481481
connect(gain.y, zoh.u) {^id23}
482482
connect(zoh.y, torque) {^id24}
483483
metadata {
484-
"Dyad": {"icons": {"default": "dyad://DyadBotComponents/PlanarDyadBot.svg"}},
484+
"Dyad": {"icons": {"default": "dyad://DyadBotComponents/DiscreteCascadeController.svg"}},
485485
"_links": {
486486
"angle_measurement": {
487487
"Dyad": {"placement": {"diagram": {"x1": 320, "y1": 640, "x2": 420, "y2": 740}}}

generated/DiscreteAngleController_definition.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,9 @@ controller runs once per clock tick on a `PeriodicClock` with period `Ts`, and a
130130
push!(__eqs, connect(measurement, sampler.u))
131131
push!(__eqs, connect(sampler.y, angle_controller.u_m, clock.y))
132132
push!(__eqs, connect(ref.y, angle_controller.u_s))
133+
push!(__eqs, connect(gain.y, torque))
133134
push!(__eqs, connect(angle_controller.y, zoh.u))
134135
push!(__eqs, connect(zoh.y, gain.u))
135-
push!(__eqs, connect(gain.y, torque))
136136

137137
# Return completely constructed System
138138
return System(__eqs, t, __vars, __params; systems=__systems, initial_conditions=__initial_conditions, guesses=__guesses, name, initialization_eqs=__initialization_eqs, bindings=__bindings, assertions=__assertions)

0 commit comments

Comments
 (0)