I have designed a certain controller for a group of holonomic agents (I was assuming that they were holonomic and that they were able to move in the 3D space)
Now I want to use the same controller to control a group of non-holonomic agents (unicycle-like robots) which are just capable to move on the plane. Their model is
$\begin{split} v_x = v\cdot \cos{\theta}\\ v_y = v\cdot \sin{\theta}\\ \dot{\theta}=\omega \\ \end{split}$
Where $v_x,v_y,\dot{\theta}$ are respectively the linear velocities along $x,y$ and the angular velocity around $z$.
$v,\omega$ are the only control inputs I have. Respectively linear and angular velocity.
How would you conceptually do it ?
I implemented the previous controller in MATLAB/SIMULINK
Thanks.
You can extend you state, such that the relative degree from each input to each output becomes the same. This can be done as follows,
$$ v_x = v \cos\theta, $$
$$ v_y = v \sin\theta, $$
$$ \dot{v} = a, $$
$$ \dot{\theta} = \omega. $$
So,
$$ \dot{v}_x = a \cos\theta - v\, \omega \sin\theta, $$
$$ \dot{v}_y = a \sin\theta + v\, \omega \cos\theta, $$
or
$$ \begin{bmatrix} \dot{v}_x \\ \dot{v}_y \end{bmatrix} = \begin{bmatrix} \cos\theta & -v\sin\theta \\ \sin\theta & v\cos\theta \end{bmatrix} \begin{bmatrix} a \\ \omega \end{bmatrix}. $$
As long as $v\neq0$ then this matrix is invertible and you can linearize and decouple this system using,
$$ \begin{bmatrix} a \\ \omega \end{bmatrix} = \begin{bmatrix} \cos\theta & -v\sin\theta \\ \sin\theta & v\cos\theta \end{bmatrix}^{-1} \begin{bmatrix} u_x \\ u_y \end{bmatrix}, $$
$$ \begin{bmatrix} \dot{v}_x \\ \dot{v}_y \end{bmatrix} = \begin{bmatrix} u_x \\ u_y \end{bmatrix}. $$