robotgradient / iflow

MIT License
18 stars 5 forks source link

How to interpret the results #1

Open wangyixu14 opened 2 years ago

wangyixu14 commented 2 years ago

Hi,

Thanks for this awesome work! I am writing to ask how should I interpret the results. My understanding is this work is going to learn an explicit SDE for the system dynamics. Where should I find the learned SDE after I run the example?

For instance, I am playing with _python example/trainiros.py. I notice in the code, there is variable lsd denoting the dynamics with parameters _rdes, _Vr, A(these three are constant), and _logvar. How should I write the final dx = f(x)dt + g(x) dB after the learning?

Looking forward to your reply! Thanks, Yixuan

robotgradient commented 2 years ago

The class LinearLimitCycle builds a Limit Cycle SDE. The dynamics are generated in a latent space in the polar coordinates (r,theta) and transformed back to the Cartesian coordinates through the transform function. To define the dynamics, the dynamics for the radial part dr = f(r)dt + g(r)dB are a simple linear attractor to _rdes, so *f(r) = -self.v_r(r - self.r_des) . The dynamics for the angular part is an SDE with constant velocity for the deterministic part, f(theta) = -self.w**.

The stochastic part remains fix in the polar coordinates, with g(x) = 1 for both cases. Remind that when transforming the SDE from polar coordinates to cartesian coordinates g(x) might change. You have an example of transformed dynamics in the paper.

Let me know if it is clear.