Controller for Non-holonomic agents

122 Views Asked by At

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.

1

There are 1 best solutions below

6
On

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}. $$