4
$\begingroup$

Consider a 3-wheeled, omnidirectional robot (also called a kiwi drive). To see what this looks like see this YouTube video. We can control the motor speeds using a microcontroller.

Task: We have to translate it at a given speed $V$, along a given angle $\theta$:

enter image description here

The wheels are omni wheels. They have rollers along the perimeter, so they can move perpendicular to the plane too:

enter image description here

Now, the correct approach is to break the required velocity vector into components along the plane of the wheel(s) and perpendicular to them, for each wheel. We then control the motors to move at these speeds (we control only the velocity along the plane of the wheels, i.e the "rim" velocity), and this does the job.

enter image description here

Basically, if each wheel has a velocity $V\cos(x)$ along its plane (i.e the rim velocity), and $V\sin(x)$ perpendicular to the plane(i.e the roller velocity),then the wheel will have a resultant velocity of $V$, at an angle $x$ from the axis in the plane of the wheel. $x$ is different for all the wheels, and the values $\theta$, $60+\theta$,$60-\theta$ ensure that the resultant velocity of each wheel is $V$, at an angle $\theta$ from the x axis. (Shown in red in the diagram above). This ensures that the bot translates with $V$ at angle $\theta$.

The only issue I have with this approach is that we are only controlling the rim velocities, and not the roller velocities. We can only give the speeds $V\cos(x)$ to each motor, but apparently this is all we need. How are we ensuring that the roller velocities adjust appropriately ($V\sin(x)$) to give the required velocity vector for each wheel, and hence for the bot?

This might have something to do with no-slip , but I don't know how to start analyzing this at all. I still think we aren't doing enough to ensure the velocity vector is correct...

$\endgroup$

1 Answer 1

1
$\begingroup$

enter image description here

the components of the velocities are

$$\mathbf v_1=v_1\,\begin{bmatrix} 1 \\ 0 \\ \end{bmatrix}\\ \mathbf v_2=v_2\,\begin{bmatrix} -\sin(\alpha) \\ \cos(\alpha) \\ \end{bmatrix}\\ \mathbf v_3=v_3\,\begin{bmatrix} \sin(\alpha) \\ \cos(\alpha) \\ \end{bmatrix}\\ \mathbf v_s=\mathbf v_1+\mathbf v_2+\mathbf v_3$$ with $$v_i=\omega_i\,r\quad \alpha=\frac \pi6$$

$$\mathbf v_s=\left[ \begin {array}{c} \omega_{{1}}r-\omega_{{2}}r\sin \left( \alpha \right) +\omega_{{3}}r\sin \left( \alpha \right) \\ \omega_{{2}}r\cos \left( \alpha \right) +\omega_{ {3}}r\cos \left( \alpha \right) \end {array} \right] $$

to reach the velocity magnitude V and the angle $~\theta~$ you have 3 angular velocities $~\omega_i~$ but only 2 equations

$$V=\sqrt{v_{sx}^2+v_{sy}^2}\\ \tan(\theta)=\frac{v_{sy}}{v_{sx}}$$

you can add this equation (no rotations at the CM )

$$\omega_1+\omega_2+\omega_3=0$$

to obtain unique solution

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.