You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For a dynamic system $\dot{x}(t) = f(x(t)) + u(t-\tau)$, one may want to estimate the unknown input delay $\tau$. Currently, opty does not support timeshift symbols and hence can't explicitly estimate this delay (See csu-hmc#224).
Method
A potential way to enable opty to find the desired $\tau$ directly is outlined as follows (credits to @moorepants)
Substitute $u(t-\tau) = u'(t)$ and consider $u'(t)$ an unknown trajectory and $\tau$ an unknown free parameter.
Consider $u(t)$ a known trajectory.
Create instance constraints $c_i(u'[i], \tau) = u'[i] - u[i-\frac{\tau}{\Delta t}]$ for all collocation nodes enforcing that.
Calculating the constrain Jacobian
The timeshift constraints have to be added to the constraint jacobian. For the constraints $c_i$ as defined above, the Jacobian is
Motivation
For a dynamic system$\dot{x}(t) = f(x(t)) + u(t-\tau)$ , one may want to estimate the unknown input delay $\tau$ . Currently, opty does not support timeshift symbols and hence can't explicitly estimate this delay (See csu-hmc#224).
Method
A potential way to enable opty to find the desired$\tau$ directly is outlined as follows (credits to @moorepants)
Calculating the constrain Jacobian
The timeshift constraints have to be added to the constraint jacobian. For the constraints$c_i$ as defined above, the Jacobian is
for midpoint integration:
$G_i = [\frac{\partial c_i}{\partial u[i]}, \frac{\partial c_i}{\partial \tau}] = [1, \frac{u'[i-\frac{\tau}{\Delta t}+1] - u'[i-\frac{\tau}{\Delta t}-1]}{2\Delta t} \cdot \frac{1}{\Delta t}]$
for backwards euler integration:
$G_i = [\frac{\partial c_i}{\partial u[i]}, \frac{\partial c_i}{\partial \tau}] = [1, \frac{u'[i-\frac{\tau}{\Delta t}] - u'[i-\frac{\tau}{\Delta t}-1]}{\Delta t} \cdot \frac{1}{\Delta t}]$
Status
Development is ongoing in branch input-time-shifts. The current code does not run without exceptions and the added functions are untested.
The text was updated successfully, but these errors were encountered: