
Embedded Robotics (Thomas Braunl, 2 ed, 2006)
.pdf
8 Omni-Directional Robots
Figure 8.2: Mecanum wheel designs with rollers at 90°
There are a number of different Mecanum wheel variations; Figure 8.1 shows two of our designs. Each wheel’s surface is covered with a number of free rolling cylinders. It is important to stress that the wheel hub is driven by a motor, but the rollers on the wheel surface are not. These are held in place by ball-bearings and can freely rotate about their axis. While the wheels in Figure 8.1 have the rollers at +/– 45° and there is a left-hand and a right-hand version of this wheel type, there are also Mecanum wheels with rollers set at 90° (Figure 8.2), and these do not require left-hand/right-hand versions.
A Mecanum-based robot can be constructed with either three or four independently driven Mecanum wheels. Vehicle designs with three Mecanum wheels require wheels with rollers set at 90° to the wheel axis, while the design we are following here is based on four Mecanum wheels and requires the rollers to be at an angle of 45° to the wheel axis. For the construction of a robot with four Mecanum wheels, two left-handed wheels (rollers at +45° to the wheel axis) and two right-handed wheels (rollers at –45° to the wheel axis) are required (see Figure 8.3).
L R
R L
Figure 8.3: 3-wheel and 4-wheel omni-directional vehicles
114

Omni-Directional Drive
left-hand wheel |
right-hand wheel |
seen from below |
seen from below |
Figure 8.4: Mecanum principle, vector decomposition
Although the rollers are freely rotating, this does not mean the robot is spinning its wheels and not moving. This would only be the case if the rollers were placed parallel to the wheel axis. However, our Mecanum wheels have the rollers placed at an angle (45° in Figure 8.1). Looking at an individual wheel (Figure 8.4, view from the bottom through a “glass floor”), the force generated by the wheel rotation acts on the ground through the one roller that has ground contact. At this roller, the force can be split in a vector parallel to the roller axis and a vector perpendicular to the roller axis. The force perpendicular to the roller axis will result in a small roller rotation, while the force parallel to the roller axis will exert a force on the wheel and thereby on the vehicle.
Since Mecanum wheels do not appear individually, but e.g. in a four wheel assembly, the resulting wheel forces at 45° from each wheel have to be combined to determine the overall vehicle motion. If the two wheels shown in Figure 8.4 are the robot’s front wheels and both are rotated forward, then each of the two resulting 45° force vectors can be split into a forward and a sideways force. The two forward forces add up, while the two sideways forces (one to the left and one to the right) cancel each other out.
8.2 Omni-Directional Drive
Figure 8.5, left, shows the situation for the full robot with four independently driven Mecanum wheels. In the same situation as before, i.e. all four wheels being driven forward, we now have four vectors pointing forward that are added up and four vectors pointing sideways, two to the left and two to the right, that cancel each other out. Therefore, although the vehicle’s chassis is subjected to additional perpendicular forces, the vehicle will simply drive straight forward.
In Figure 8.5, right, assume wheels 1 and 4 are driven backward, and wheels 2 and 4 are driven forward. In this case, all forward/backward veloci-
115

8 Omni-Directional Robots
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
4 |
3 |
|
4 |
|
||||
|
||||
|
Figure 8.5: Mecanum principle, driving forward and sliding sideways; dark wheels rotate forward, bright wheels backward (seen from below)
ties cancel each other out, but the four vector components to the left add up and let the vehicle slide to the left.
The third case is shown in Figure 8.6. No vector decomposition is necessary in this case to reveal the overall vehicle motion. It can be clearly seen that the robot motion will be a clockwise rotation about its center.
1 |
2 |
3 |
4 |
Figure 8.6: Mecanum principle, turning clockwise (seen from below)
116

Kinematics
The following list shows the basic motions, driving forward, driving sideways, and turning on the spot, with their corresponding wheel directions (see Figure 8.7).
|
|
|
• |
Driving forward: |
|
|
|
|
|
|
|
|
|
|
all four wheels forward |
||||||||||||||
|
|
|
• |
Driving backward: |
|
|
|
|
|
|
|
|
|
|
all four wheels backward |
||||||||||||||
|
|
|
• |
Sliding left: |
|
|
|
|
|
|
|
|
|
|
1, 4: backward; |
2, 3: forward |
|||||||||||||
|
|
|
• |
Sliding right: |
|
|
|
|
|
|
|
|
|
|
1, 4: forward; |
|
2. 3: backward |
||||||||||||
|
|
|
• Turning clockwise on the spot: |
|
|
|
1, 3: forward; |
|
2, 4: backward |
||||||||||||||||||||
|
|
|
• |
Turning counter-clockwise: |
|
|
|
1, 3: backward; |
2, 4: forward |
||||||||||||||||||||
1 |
|
|
|
|
|
|
|
|
2 |
1 |
|
|
|
|
|
|
|
|
2 |
1 |
|
|
|
|
|
|
2 |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
3 |
|
|
|
|
|
|
|
4 |
3 |
|
|
|
|
|
|
4 |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Figure 8.7: Kinematics of omni-directional robot
So far, we have only considered a Mecanum wheel spinning at full speed forward or backward. However, by varying the individual wheel speeds and by adding linear interpolations of basic movements, we can achieve driving directions along any vector in the 2D plane.
8.3 Kinematics
Forward The forward kinematics is a matrix formula that specifies which direction the kinematics robot will drive in (linear velocity vx along the robot’s center axis, vy perpendicular to it) and what its rotational velocity Z will be for given individual wheel speeds T· FL , .., T· BR and wheels distances d (left/right) and e (front/
back):
|
|
|
|
|
|
|
|
|
1 |
|
1 |
|
|
1 |
|
1 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
T· |
|
||||||||||
|
|
|
|
|
|
|
|
|
-- |
|
-- |
|
|
-- |
|
-- |
|
|
|
|||||||
|
|
vx |
|
|
|
|
4 |
|
4 |
|
|
4 |
|
4 |
|
|
|
FL |
|
|||||||
|
|
|
|
|
|
1 |
|
1 |
|
|
1 |
|
1 |
|
|
· |
|
|
||||||||
|
|
|
|
|
2Sr |
|
|
|
|
|
|
|
|
|
TFR |
|
||||||||||
|
|
vy |
|
|
|
|
|
-- |
|
-- |
|
|
-- |
|
|
|
-- |
|
· |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
4 |
|
4 |
|
|
4 |
|
4 |
|
|
|
|
|||||||||
|
|
|
Z |
|
|
|
|
1 |
|
1 |
|
|
1 |
|
1 |
|
|
TBL |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
T· |
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
------------------- |
------------------- |
|
------------------- |
------------------- |
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
||||||||||||||||||
with: |
|
2 |
d e |
2 |
d e |
2 |
d e |
2 |
d e |
|
|
BR |
|
|
||||||||||||
|
|
|
|
|||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
T· |
FL , etc. four individual wheel speeds in revolutions per second, |
|||||||||||||||||||||||||
r |
|
|
|
|
wheel radius, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
d |
|
|
|
|
distance between left and right wheel pairs, |
|
|
|
|
|
117

8 Omni-Directional Robots
e |
distance between front and back wheel pairs, |
vx |
vehicle velocity in forward direction, |
vy |
vehicle velocity in sideways direction, |
Zvehicle rotational velocity.
Inverse The inverse kinematics is a matrix formula that specifies the required indi- kinematics vidual wheel speeds for given desired linear and angular velocity (vx, vy, Z) and can be derived by inverting the matrix of the forward kinematics [Viboon-
chaicheep, Shimada, Kosaka 2003].
|
T· FL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
1 |
|
d e e 2 |
|
|
|
|
|||
|
|
|
|
|
|
|
vx |
||||||||
|
|
|
|
|
|
|
|||||||||
T· FR |
1 |
|
1 |
1 |
d e e 2 |
|
|||||||||
|
vy |
||||||||||||||
|
|
|
-------- |
|
|
|
|
|
|
|
|
||||
T· BL |
2Sr |
1 |
1 |
|
d e e 2 |
|
|
Z |
|||||||
|
|
|
|||||||||||||
T· BR |
|
|
|
1 |
|
1 |
d e e 2 |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8.4 Omni-Directional Robot Design
We have so far developed three different Mecanum-based omni-directional robots, the demonstrator models Omni-1 (Figure 8.8, left), Omni-2 (Figure 8.8, right), and the full size robot Omni-3 (Figure 8.9).
The first design, Omni-1, has the motor/wheel assembly tightly attached to the robot’s chassis. Its Mecanum wheel design has rims that only leave a few millimeters clearance for the rollers. As a consequence, the robot can drive very well on hard surfaces, but it loses its omni-directional capabilities on softer surfaces like carpet. Here, the wheels will sink in a bit and the robot will then drive on the wheel rims, losing its capability to drive sideways.
Figure 8.8: Omni-1 and Omni-2
118

Driving Program
The deficiencies of Omni-1 led to the development of Omni-2. This robot first of all has individual cantilever wheel suspensions with shock absorbers. This helps to navigate rougher terrain, since it will keep all wheels on the ground. Secondly, the robot has a completely rimless Mecanum wheel design, which avoids sinking in and allows omni-directional driving on softer surfaces.
Omni-3 uses a scaled-up version of the Mecanum wheels used for Omni-1 and has been constructed for a payload of 100kg. We used old wheelchair motors and an EyeBot controller with external power amplifiers as the onboard embedded system. The robot has been equipped with infrared sensors, wheel encoders and an emergency switch. Current projects with this robot include navigation and handling support systems for wheelchair-bound handicapped people.
Figure 8.9: Omni-3
8.5 Driving Program
Extending the
vZ interface
Operating the omni-directional robots obviously requires an extended driving interface. The vZ routines for differential drive or Ackermann-steering robots are not sufficient, since we also need to specify a vector for the driving direction in addition to a possible rotation direction. Also, for an omni-directional robot it is possible to drive along a vector and rotate at the same time, which has to be reflected by the software interface. The extended library routines are:
int OMNIDriveStraight(VWHandle handle, meter distance, meterPerSec v, radians direction);
int OMNIDriveTurn(VWHandle handle, meter delta1, radians direction, radians delta_phi, meterPerSec v, radPerSec w);
int OMNITurnSpot(VWHandle handele, radians delta_phi, radPerSec w);
119

8 Omni-Directional Robots
The code example in Program 8.1, however, does not use this high-level driving interface. Instead it shows as an example how to set individual wheel speeds to achieve the basic omni-directional driving actions: forward/backward, sideways, and turning on the spot.
Program 8.1: Omni-directional driving (excerpt)
1LCDPutString("Forward\n");
2MOTORDrive (motor_fl, 60);
3MOTORDrive (motor_fr, 60);
4MOTORDrive (motor_bl, 60);
5MOTORDrive (motor_br, 60);
6OSWait(300);
7LCDPutString("Reverse\n");
8MOTORDrive (motor_fl,-60);
9MOTORDrive (motor_fr,-60);
10MOTORDrive (motor_bl,-60);
11MOTORDrive (motor_br,-60);
12OSWait(300);
13LCDPutString("Slide-L\n");
14MOTORDrive (motor_fl,-60);
15MOTORDrive (motor_fr, 60);
16MOTORDrive (motor_bl, 60);
17MOTORDrive (motor_br,-60);
18OSWait(300);
19LCDPutString("Turn-Clock\n");
20MOTORDrive (motor_fl, 60);
21MOTORDrive (motor_fr,-60);
22MOTORDrive (motor_bl, 60);
23MOTORDrive (motor_br,-60);
24OSWait(300);
8.6References
AGULLO, J., CARDONA, S., VIVANCOS, J. Kinematics of vehicles with directional sliding wheels, Mechanical Machine Theory, vol. 22, 1987, pp. 295301 (7)
CARLISLE, B. An omni-directional mobile robot, in B. Rooks (Ed.): Developments in Robotics 1983, IFS Publications, North-Holland, Amsterdam, 1983, pp. 79-87 (9)
DICKERSON, S., LAPIN, B. Control of an omni-directional robotic vehicle with Mecanum wheels, Proceedings of the National Telesystems Conference 1991, NTC’91, vol. 1, 1991, pp. 323-328 (6)
JONSSON, S. New AGV with revolutionary movement, in R. Hollier (Ed.), Automated Guided Vehicle Systems, IFS Publications, Bedford, 1987, pp. 345-353 (9)
120

References
VIBOONCHAICHEEP, P., SHIMADA, A., KOSAKA,Y. Position rectification con-
trol for Mecanum wheeled omni-directional vehicles, 29th Annual Conference of the IEEE Industrial Electronics Society, IECON’03, vol. 1, Nov. 2003, pp. 854-859 (6)
121

B. . .ALANCING. . . . . . . . . . . . . . . .R. .OBOTS. . . . . . . . . . . . . . |
|
9 |
|
|
|
.. . . . . . . . |
|
Balancing robots have recently gained popularity with the introduction of the commercial Segway vehicle [Segway 2006]; however, many similar vehicles have been developed before. Most balancing robots
are based on the inverted pendulum principle and have either wheels or legs. They can be studied in their own right or as a precursor for biped walking robots (see Chapter 10), for example to experiment with individual sensors or actuators. Inverted pendulum models have been used as the basis of a number of bipedal walking strategies: [Caux, Mateo, Zapata 1998], [Kajita, Tani 1996], [Ogasawara, Kawaji 1999], and [Park, Kim 1998]. The dynamics can be constrained to two dimensions and the cost of producing an inverted pendulum robot is relatively low, since it has a minimal number of moving parts.
9.1 Simulation
A software simulation of a balancing robot is used as a tool for testing control strategies under known conditions of simulated sensor noise and accuracy. The model has been implemented as an ActiveX control, a software architecture that is designed to facilitate binary code reuse. Implementing the system model in this way means that we have a simple-to-use component providing a realtime visual representation of the system’s state (Figure 9.1).
The system model driving the simulation can cope with alternative robot structures. For example, the effects of changing the robot’s length or its weight structure by moving the position of the controller can be studied. These will impact on both the robot’s center of mass and its moment of inertia.
Software simulation can be used to investigate techniques for control systems that balance inverted pendulums. The first method investigated was an adaptive control system, based on a backpropagation neural network, which learns to balance the simulation with feedback limited to a single failure signal when the robot falls over. Disadvantages of this approach include the requirement for a large number of training cycles before satisfactory performance is obtained. Additionally, once the network has been trained, it is not possible to
123123

9 Balancing Robots
Figure 9.1: Simulation system
make quick manual changes to the operation of the controller. For these reasons, we selected a different control strategy for the physical robot.
An alternative approach is to use a simple PD control loop, of the form: u(k) = [W]·[X(k)]
where: |
|
u(k) |
Horizontal force applied by motors to the ground. |
X(k) |
k-th measurement of the system state. |
W |
Weight vector applied to measured robot state. |
Tuning of the control loop was performed manually, using the software simulation to observe the effect of modifying loop parameters. This approach quickly yielded a satisfactory solution in the software model, and was selected for implementation on the physical robot.
9.2 Inverted Pendulum Robot
Inverted pendulum
The physical balancing robot is an inverted pendulum with two independently driven motors, to allow for balancing, as well as driving straight and turning (Figure 9.2). Tilt sensors, inclinometers, accelerometers, gyroscopes, and digital cameras are used for experimenting with this robot and are discussed below.
•Gyroscope (Hitec GY-130)
This is a piezo-electric gyroscope designed for use in remote controlled vehicles, such as model helicopters. The gyroscope modifies a servo control signal by an amount proportional to its measure of angular velocity. Instead of using the gyro to control a servo, we read back the modified servo signal to obtain a measurement of angular velocity. An estimate of angular displacement is obtained by integrating the velocity signal over time.
124