JuliaControl / JuliaControl/RobustAndOptimalControl.jl

Named systems with delays

Open
#116 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Julia
Stars
67
Forks
10
Avg merge
1h 21m
Merged PRs (30d)
3

Description

I use delayed systems quite a bit and I love the functionality of named systems when plotting. I was wondering what your thoughts were on creating a named delayed system type (continuous)?

Take the following example of how I currently use named systems with delays:

using ControlSystems, RobustAndOptimalControl

# create named state space plant
P = ss([1 0; 0 -1], [0; 1], [1 0], 0)
P_named = named_ss(P, x=[:pos, :vel], u=[:force], y=[:pos])

# create delayed system (input is delayed)
D = c2d(delay(0.1), 0.05)
D_named = named_ss(D, y=:force, u=:force_cmd)
P_delayed = c2d(P_named, 0.05) * D_named


NamedStateSpace{Discrete{Float64}, Float64}
A = 
 1.051271096376024  0.0                 0.0                  0.0
 0.0                0.9512294245007141  0.04877057549928599  0.0
 0.0                0.0                 0.0                  1.0
 0.0                0.0                 0.0                  0.0
B = 
 0.0
 0.0
 0.0
 1.0
C = 
 1.0  0.0  0.0  0.0
D = 
 0.0

Sample Time: 0.05 (seconds)
Discrete-time state-space model
With state  names: pos vel x1 x2
     input  names: force_cmd
     output names: pos

Ideally, however, because I normally leave systems in continuous form, it would be great if this worked:

P_delayed = P_named * delay(0.1)

I'm not an expert of how delays are internally handle so if I'm missing something obvious please let me know!

Thanks

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the existing named_ss and delay entry points, along with how continuous systems are represented and composed. Define what named delayed-system behavior should be supported for the shown P_named * delay(0.1) case, then add coverage demonstrating that the resulting system preserves the expected names and continuous-time behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
julia
Domain
backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.