Układ łańcuchowy – pojęcie związane z robotami mobilnymi, oznacza sposób na przedstawienie zależności pomiędzy położeniem i orientacją robota w przestrzeni, a sygnałami sterującymi. Wzór na układ łańcuchowy używany jest m.in. w algorytmie sterowania sinusoidalnego.
Definicja
Układem łańcuchowym nazywa się układ równań różniczkowych w postaci:
![{\displaystyle {\frac {dx_{1}}{dt}}=u_{1}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/58b87ae3a9848fb30777162b32402d25d26c784e)
![{\displaystyle {\frac {dx_{2}}{dt}}=u_{2}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/035cc5095d9b5f0ba29f976c1af17e59a3d3a3c0)
![{\displaystyle {\frac {dx_{3}}{dt}}=x_{2}u_{1}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/29a01f083f309cf2f8a241d3370b14633e237c9c)
![{\displaystyle {\frac {dx_{4}}{dt}}=x_{3}u_{1}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2adbea546e39d6ee34eed25ffa95764e3ea1d9af)
- ...
![{\displaystyle {\frac {dx_{n}}{dt}}=x_{n-1}u_{1}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/e9f3dac47542a02e85ca71acd859634a3eab2781)
Układ taki ma
zmiennych i dwa sterowania, za pomocą których należy ustawić wszystkie zmienne na określonych pozycjach. Powyższe równania można także przedstawić jako układ bezdryfowy:
![{\displaystyle {\frac {dx}{dt}}=g(x)u,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/14e8bfd99b3f24ad33a09f3bf0ec643a43f7726b)
gdzie:
![{\displaystyle g_{2}(x)={\begin{bmatrix}0\\1\\0\\.\\.\\0\end{bmatrix}}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/460bd75f1801cf745222e581f264016e2fbe6109)
Przykład
Istnieje nieliniowy układ dynamiczny przedstawiony jako układ równań (*)
![{\displaystyle {\frac {dx}{dt}}=u_{1}\cos \theta }](https://wikimedia.org/api/rest_v1/media/math/render/svg/0e80104e20bd631a787a015110b87fa87e2ed329)
![{\displaystyle {\frac {dy}{dt}}=u_{1}\sin \theta }](https://wikimedia.org/api/rest_v1/media/math/render/svg/000cf0d6f096f89f4801fd1745666cfeb20bfb69)
![{\displaystyle {\frac {d\phi }{dt}}=u_{2}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/30b7b03038702e383528158d7abe49374e8cfa7d)
![{\displaystyle {\frac {d\theta }{dt}}=u_{1}\operatorname {tg} \phi .}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5b08f96b33f6bee9915337a70cddaf0e63c40195)
Na początku należy wyznaczyć przybliżenie liniowe funkcji
stosując wzór:
![{\displaystyle f(x)\approx f(x_{0})+{\frac {\partial f(x_{0})}{\partial x}}(x-x_{0}).}](https://wikimedia.org/api/rest_v1/media/math/render/svg/edd33fa23352453495311fc89b83e894487e79bb)
W ten sposób otrzymuje się:
![{\displaystyle \sin \theta =\theta ,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5e3cb0055f943aa462b146d46918146c488ec4e5)
![{\displaystyle \cos \theta =1,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/3764a50f5d1212f75c3078d4075462cf46de72df)
![{\displaystyle \operatorname {tg} \phi =\phi ,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5fef05d69e6d80971f2c865ad327604125d3920f)
a po podstawieniu do (*):
![{\displaystyle {\frac {dx}{dt}}=u_{1}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/386e08035e0051ad8180c7dd42d65abb0d9ed87b)
![{\displaystyle {\frac {dy}{dt}}=u_{1}\theta }](https://wikimedia.org/api/rest_v1/media/math/render/svg/1b8f6ce3fb812a3e507e6d8a3f83de8dbe1401ac)
![{\displaystyle {\frac {d\phi }{dt}}=u_{2}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/30b7b03038702e383528158d7abe49374e8cfa7d)
![{\displaystyle {\frac {d\theta }{dt}}=u_{1}\phi .}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5f69101c2041942bcb7aa742ecca3b9032556dcb)
Na podstawie otrzymanego układu równań tworzone są nowe zmienne
które po zróżniczkowaniu dadzą układ łańcuchowy.
![{\displaystyle x_{1}=x,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/289a6c19ef930540618d0b016774be7a8acfa1d6)
![{\displaystyle x_{2}=\phi ,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b5febd01936b2513a804acaf00bcf2df60df8a54)
![{\displaystyle x_{3}=\theta ,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4d9cc71b26071e3a08680c3a509b3c3d944e2286)
![{\displaystyle x_{4}=y,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/860e5e328ed4959968ef52751f3f67182e0d98dc)
![{\displaystyle {\frac {dx_{1}}{dt}}={\frac {dx}{dt}}=u_{1},}](https://wikimedia.org/api/rest_v1/media/math/render/svg/514a04b65c78882f598f0cda42417da028b82953)
![{\displaystyle {\frac {dx_{2}}{dt}}={\frac {d\phi }{dt}}=u_{2},}](https://wikimedia.org/api/rest_v1/media/math/render/svg/cee20f99f70be9b8fd42d0000fa771a729d5980b)
![{\displaystyle {\frac {dx_{3}}{dt}}={\frac {d\theta }{dt}}=\phi *u_{1}=x_{2}*u_{1},}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b015678d635084efe75f885c70e5ec0b5d5a847b)
![{\displaystyle {\frac {dx_{4}}{dt}}={\frac {dy}{dt}}=\theta *u_{1}=x_{3}*u_{1}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ddc197a4a66efc762666efefa2a16f2eb7f4a821)
W ten oto sposób otrzymany został układ łańcuchowy, którym można sterować (o ile jest sterowalny, patrz nawiasy Liego) za pomocą sygnałów wyznaczonych w algorytmie sterowania sinusoidalnego itp.