Purely for the sake of discussion, let's assume we have a birds-eye view of a 2-wheel base. Let's further assume that this base is currently pointing "north," but we wish it to travel some distance "east." We could illustrate this as shown below (these images omit the one or two castors used to balance the base):
As we see, first have to rotate the robot until it's pointing in the direction we wish to go (we'll call this action "rotation"), after which we can move it as far as we wish (we'll call this action "translation"). Now consider the 3-wheel base we introduced on the previous page. By varying the amount of rotation on the three wheels, we can simply make this base go in any direction we please. On the other hand, we may well decide that our 3-wheel base has a "front" (indicated by the arrows in the images below). One reason for this might be that we have a particular sensor -- like the Pixy machine vision sensor -- that is mounted with a specific orientation.
Now, working with a 3-wheel base, let's once again assume that our base starts off pointing "north," but we wish it to travel some distance "east." Of course, we could do the same thing we did with our 2-wheel base, which is to first perform the rotation and to then perform the translation -- that is, to keep these actions completely separate. Alternatively, by carefully controlling and varying the speed of each of our three wheels, we can perform the rotation and the translation simultaneously as illustrated below:
As we see, there are two ways in which we could approach this. The first is to arrange things such that the rotation is times to end with the translation. The second, which I think I prefer, is to make the rotation happen -- and get the base pointing in the right direction -- as quickly as possible and to then continue with the translation.
Of course, when I say "as quickly as possible," this needs to be qualified a little. If the base rotates or accelerates too quickly, all sorts of unfortunate things might occur. What we want to do is to ramp up to the full rotational and translational speeds at the beginning and then ramp down again at the end. This topic, along with more esoteric concepts like Genetic Algorithms, will be the subject of my next blog. Until then, do you have any questions or comments?