Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Embedded Robotics (Thomas Braunl, 2 ed, 2006)

.pdf
Скачиваний:
251
Добавлен:
12.08.2013
Размер:
5.37 Mб
Скачать

Synchro-Drive

times. This is especially important because this robot does not have two shaft encoders like a differential drive robot.

Infrared PSDs

The PSDs on this robot are not just applied to the front and sides in order to avoid obstacles. PSDs are also applied to the front and back at an angle of about 45°, to detect steep slopes that the robot can only descend/ascend at a very slow speed or not at all.

Piezo gyroscopes

Two gyroscopes are used to determine to robot’s roll and pitch orientation, while yaw is covered by the digital compass. Since the gyroscopes’ output is proportional to the rate of change, the data has to be integrated in order to determine the current orientation.

Digital inclinometers

Two inclinometers are used to support the two gyroscopes. The inclinometers used are fluid-based and return a value proportional to the robot’s orientation. Although the inclinometer data does not require integration, there are problems with time lag and oscillation. The current approach uses a combination of both gyroscopes and inclinometers with sensor fusion in software to obtain better results.

There are numerous application scenarios for tracked robots with local intelligence. A very important one is the use as a “rescue robot” in disaster areas. For example, the robot could still be remote controlled and transmit a video image and sensor data; however, it might automatically adapt the speed according to its on-board orientation sensors, or even refuse to execute a driving command when its local sensors detect a potentially dangerous situation like a steep decline, which could lead to the loss of the robot.

7.4 Synchro-Drive

Synchro-drive is an extension to the robot design with a single driven and steered wheel. Here, however, we have three wheels that are all driven and all being steered. The three wheels are rotated together so they always point in the same driving direction (see Figure 7.8). This can be accomplished, for example, by using a single motor and a chain for steering and a single motor for driving all three wheels. Therefore, overall a synchro-drive robot still has only two degrees of freedom.

A synchro-drive robot is almost a holonomous vehicle, in the sense that it can drive in any desired direction (for this reason it usually has a cylindrical body shape). However, the robot has to stop and realign its wheels when going from driving forward to driving sideways. Nor can it drive and rotate at the same time. Truly holonomous vehicles are introduced in Chapter 8.

An example task that demonstrates the advantages of a synchro-drive is “complete area coverage” of a robot in a given environment. The real-world equivalent of this task is cleaning floors or vacuuming.

103

7 Driving Robots

Figure 7.8: Xenia, University of Kaiserslautern, with schematic diagrams

A behavior-based approach has been developed to perform a goal-oriented complete area coverage task, which has the potential to be the basis for a commercial floor cleaning application. The algorithm was tested in simulation first and thereafter ported to the synchro-drive robot Xenia for validation in a real environment. An inexpensive and easy-to-use external laser positioning system was developed to provide absolute position information for the robot. This helps to eliminate any positioning errors due to local sensing, for example through dead reckoning. By using a simple occupancy-grid representation without any compression, the robot can “clean” a 10mu10m area using less than 1MB of RAM. Figure 7.9 depicts the result of a typical run (without initial wall-following) in an area of 3.3mu2.3m. The photo in Figure 7.9 was taken with an overhead camera, which explains the cushion distortion. For details see [Kamon, Rivlin 1997], [Kasper, Fricke, von Puttkamer 1999], [Peters et al. 2000], and [Univ. Kaiserslautern 2003].

Figure 7.9: Result of a cleaning run, map and photo

104

Ackermann Steering

7.5 Ackermann Steering

The standard drive and steering system of an automobile are two combined driven rear wheels and two combined steered front wheels. This is known as Ackermann steering and has a number of advantages and disadvantages when compared to differential drive:

+Driving straight is not a problem, since the rear wheels are driven via a common axis.

Vehicle cannot turn on the spot, but requires a certain minimum radius.

Rear driving wheels experience slippage in curves.

Obviously, a different driving interface is required for Ackermann steering. Linear velocity and angular velocity are completely decoupled since they are generated by independent motors. This makes control a lot easier, especially the problem of driving straight. The driving library contains two independent velocity/position controllers, one for the rear driving wheels and one for the front steering wheels. The steering wheels require a position controller, since they need to be set to a particular angle as opposed to the velocity controller of the driving wheels, in order to maintain a constant rotational speed. An additional sensor is required to indicate the zero steering position for the front wheels.

Figure 7.10 shows the “Four Stooges” robot soccer team from The University of Auckland, which competed in the RoboCup Robot Soccer Worldcup. Each robot has a model car base and is equipped with an EyeBot controller and a digital camera as its only sensor.

Figure 7.10: The Four Stooges, University of Auckland

Model cars Arguably, the cheapest way of building a mobile robot is to use a model car. We retain the chassis, motors, and servos, add a number of sensors, and replace the remote control receiver with an EyeBot controller. This gives us a

105

7 Driving Robots

Model car with servo and speed controller

Model car with integrated electronics

ready-to-drive mobile robot in about an hour, as for the example in Figure 7.10.

The driving motor and steering servo of the model car are now directly connected to the controller and not to the receiver. However, we could retain the receiver and connect it to additional EyeBot inputs. This would allow us to transmit “high-level commands” to our controller from the car’s remote control.

Connecting a model car to an EyeBot is easy. Higher-quality model cars usually have proper servos for steering and either a servo or an electronic power controller for speed. Such a speed controller has the same connector and can be accessed exactly like a servo. Instead of plugging the steering servo and speed controller into the remote control unit, we plug them into two servo outputs on the EyeBot. That is all – the new autonomous vehicle is ready to go.

Driving control for steering and speed is achieved by using the command SERVOSet. One servo channel is used for setting the driving speed (–100 .. +100, fast backward .. stop .. fast forward), and one servo channel is used for setting the steering angle (–100 .. +100, full left .. straight .. full right).

The situation is a bit more complex for small, cheap model cars. These sometimes do not have proper servos, but for cost reasons contain a single electronic box that comprises receiver and motor controller in a single unit. This is still not a problem, since the EyeBot controller has two motor drivers already built in. We just connect the motors directly to the EyeBot DC motor drivers and read the steering sensor (usually a potentiometer) through an analog input. We can then program the software equivalent of a servo by having the EyeBot in the control loop for the steering motor.

Figure 7.11 shows the wiring details. The driving motor has two wires, which need to be connected to the pins Motor+ and Motor– of the “Motor A” connector of the EyeBot. The steering motor has five wires, two for the motor and three for the position feedback. The two motor wires need to be connected to Motor+ and Motor– of the EyeBot's “Motor B” connector. The connectors of the feedback potentiometer need to be connected to VCC (5V) and Ground on the analog connector, while the slider of the potentiometer is connected to a free analog input pin. Note that some servos are only rated for 4.8V, while others are rated for 6.0V. This has to be observed, otherwise severe motor damage may be the consequence.

Driving such a model car is a bit more complex than in the servo case. We can use the library routine MOTORDrive for setting the linear speed of the driving motors. However, we need to implement a simple PID or bang-bang controller for the steering motor, using the analog input from the potentiometer as feedback, as described in Chapter 4.

The coding of the timing interrupt routine for a simple bang-bang controller is shown in Program 7.1. Routine IRQSteer needs to be attached to the timer interrupt and called 100 times per second in the background. This routine allows accurate setting of the steering angle between the values –100 and +100. However, most cheap model cars cannot position the steering that accurately, probably because of substandard potentiometers. In this case, a much

106

Drive Kinematics

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Drive

 

 

 

Steer

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ Motor MotA

– Motor MotA

+ Motor MotB

– Motor MotB

V

2 input Analog

Ground

CC

Figure 7.11: Model car connection diagram with pin numbers

reduced steering setting with only five or three values (left, straight, right) is sufficient.

Program 7.1: Model car steering control

1#include "eyebot.h"

2#define STEER_CHANNEL 2

3MotorHandle MSteer;

4int steer_angle; /* set by application program */

6void IRQSteer()

7{ int steer_current,ad_current;

8ad_current=OSGetAD(STEER_CHANNEL);

9steer_current=(ad_current-400)/3-100;

10if (steer_angle-steer_current > 10)

11

MOTORDrive(MSteer,

75);

12

else if (steer_angle-steer_current < -10)

13

MOTORDrive(MSteer, -75);

14

else MOTORDrive(MSteer,

0);

15}

7.6Drive Kinematics

In order to obtain the vehicle’s current trajectory, we need to constantly monitor both shaft encoders (for example for a vehicle with differential drive). Figure 7.12 shows the distance traveled by a robot with differential drive.

We know:

r

wheel radius

d

distance between driven wheels

ticks_per_rev number of encoder ticks for one full wheel revolution

ticksL

number of ticks during measurement in left encoder

ticksR

number of ticks during measurement in right encoder

107

7 Driving Robots

First we determine the values of sL and sR in meters, which are the distances traveled by the left and right wheel, respectively. Dividing the measured ticks by the number of ticks per revolution gives us the number of wheel revolutions. Multiplying this by the wheel circumference gives the traveled distance in meters:

sL = 2S·r · ticksL / ticks_per_rev sR = 2S·r · ticksR / ticks_per_rev

d

L

c

M

Figure 7.12: Trajectory calculation for differential drive

So we already know the distance the vehicle has traveled, i.e.:

s = (sL + sR) / 2

This formula works for a robot driving forward, backward, or turning on the spot. We still need to know the vehicle’s rotation M over the distance traveled. Assuming the vehicle follows a circular segment, we can define sL and sR as the traveled part of a full circle (M in radians) multiplied by each wheel’s turning radius. If the turning radius of the vehicle’s center is c, then during a left turn the turning radius of the right wheel is c + d/2, while the turning radius of the left wheel is c – d/2. Both circles have the same center.

sR = M · (c + d/2) sL = M · (c – d/2)

Subtracting both equations eliminates c:

sR – sL = M · d

And finally solving for M: M = (sR – sL) / d

Using wheel velocities vL,R instead of driving distances sL,R and using T· L R as wheel rotations per second with radius r for left and right wheel, we get:

108

Drive Kinematics

Kinematics differential drive

vR = 2Sr · T· R vL = 2Sr · T· L

The formula specifying the velocities of a differential drive vehicle can now be expressed as a matrix. This is called the forward kinematics:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

 

 

 

 

 

v

 

--

--

 

T· L

 

2Sr

2

2

 

Z

1

1

 

·

 

 

 

 

 

 

 

 

 

--

--

 

TR

 

 

 

 

 

 

 

 

 

 

 

d

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

where:

v is the vehicle’s linear speed (equals ds/dt or s· ),

Z is the vehicle’s rotational speed (equals dM e dt or M· ), T· L R are the individual wheel speeds in revolutions per second, r is the wheel radius,

d is the distance between the two wheels.

Inverse The inverse kinematics is derived from the previous formula, solving for kinematics the individual wheel speeds. It tells us the required wheel speeds for a desired vehicle motion (linear and rotational speed). We can find the inverse kinemat-

ics by inverting the 2u2 matrix of the forward kinematics:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d

 

 

 

 

T·

1

1

 

--

 

 

v

 

L

--------

 

2

 

 

·

 

2Sr

 

d

 

Z

TR

 

1

--

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

Kinematics Ackermann drive

If we consider the motion in a vehicle with Ackermann steering, then its front wheel motion is identical with the vehicle’s forward motion s in the direction of the wheels. It is also easy to see (Figure 7.13) that the vehicle’s overall forward and downward motion (resulting in its rotation) is given by:

forward = s · cos D down = s · sin D

forward

e

M

down

D

 

D

s

 

 

 

Figure 7.13: Motion of vehicle with Ackermann steering

109

7 Driving Robots

If e denotes the distance between front and back wheels, then the overall vehicle rotation angle is M = down / e since the front wheels follow the arc of a circle when turning.

The calculation for the traveled distance and angle of a vehicle with Ackermann drive vehicle is shown in Figure 7.14, with:

D

steering angle,

e

distance between front and back wheels,

sfront

distance driven, measured at front wheels,

·

driving wheel speed in revolutions per second,

T

s

total driven distance along arc,

Mtotal vehicle rotation angle

D

e

c

M

Figure 7.14: Trajectory calculation for Ackermann steering

The trigonometric relationship between the vehicle’s steering angle and overall movement is:

s = sfront

M = sfront · sin D / e

Expressing this relationship as velocities, we get:

vforward = vmotor = 2Sr T·

Z = vmotor · sin D / e

Therefore, the kinematics formula becomes relatively simple:

 

 

 

2Sr T·

 

 

1

 

 

v

 

 

sinD

Z

 

 

-----------

 

 

 

 

 

 

e

 

 

 

 

 

Note that this formula changes if the vehicle is rear-wheel driven and the wheel velocity is measured there. In this case the sin function has to be replaced by the tan function.

110

References

7.7 References

ARKIN, R. Behavior-Based Robotics, MIT Press, Cambridge MA, 1998

ASADA, M., RoboCup-98: Robot Soccer World Cup II, Proceedings of the Second RoboCup Workshop, Paris, 1998

BORENSTEIN, J., EVERETT, H., FENG, L. Navigating Mobile Robots: Sensors and Techniques, AK Peters, Wellesley MA, 1998

CHO, H., LEE, J.-J. (Eds.) Proceedings of the 2002 FIRA World Congress, Seoul, Korea, May 2002

INROSOFT, http://inrosoft.com, 2006

JONES, J., FLYNN, A., SEIGER, B. Mobile Robots - From Inspiration to Implementation, 2nd Ed., AK Peters, Wellesley MA, 1999

KAMON, I., RIVLIN, E. Sensory-Based Motion Planning with Global Proofs, IEEE Transactions on Robotics and Automation, vol. 13, no. 6, Dec. 1997, pp. 814-822 (9)

KASPER, M. FRICKE, G. VON PUTTKAMER, E. A Behavior-Based Architecture for Teaching More than Reactive Behaviors to Mobile Robots, 3rd European Workshop on Advanced Mobile Robots, EUROBOT ‘99, Zürich, Switzerland, September 1999, IEEE Press, pp. 203-210 (8)

MCKERROW, P., Introduction to Robotics, Addison-Wesley, Reading MA, 1991

PETERS, F., KASPER, M., ESSLING, M., VON PUTTKAMER, E. Flächendeckendes

Explorieren und Navigieren in a priori unbekannter Umgebung mit low-cost Robotern, 16. Fachgespräch Autonome Mobile Systeme AMS 2000, Karlsruhe, Germany, Nov. 2000

PUTTKAMER, E. VON. Autonome Mobile Roboter, Lecture notes, Univ. Kaiserslautern, Fachbereich Informatik, 2000

RÜCKERT, U., SITTE, J., WITKOWSKI, U. (Eds.) Autonomous Minirobots for Research and Edutainment – AMiRE2001, Proceedings of the 5th International Heinz Nixdorf Symposium, HNI-Verlagsschriftenreihe, no. 97, Univ. Paderborn, Oct. 2001

UNIV. KAISERSLAUTERN, http://ag-vp-www.informatik.uni-kl.de/ Research.English.html, 2003

111

OMNI-DIRECTIONAL 8

ROBOTS

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. . ll the robots introduced in Chapter 7, with the exception of syncro-

Adrive vehicles, have the same deficiency: they cannot drive in all possible directions. For this reason, these robots are called “nonholonomic”. In contrast, a “holonomic” or omni-directional robot is capable of driving in any direction. Most non-holonomic robots cannot drive in a direction perpendicular to their driven wheels. For example, a differential drive robot can drive forward/backward, in a curve, or turn on the spot, but it cannot drive sideways. The omni-directional robots introduced in this chapter, howev-

er, are capable of driving in any direction in a 2D plane.

8.1 Mecanum Wheels

The marvel behind the omni-directional drive design presented in this chapter are Mecanum wheels. This wheel design has been developed and patented by the Swedish company Mecanum AB with Bengt Ilon in 1973 [Jonsson 1987], so it has been around for quite a while. Further details on Mecanum wheels and omni-directional drives can be found in [Carlisle 1983], [Agullo, Cardona, Vivancos 1987], and [Dickerson, Lapin 1991].

Figure 8.1: Mecanum wheel designs with rollers at 45°

113113