Motion control for a single-motor robot with an undulatory locomotion system

6
Abstract— Single-motor locomotion systems are of interest for low-cost, small robots. In this paper, one such system is presented. The vehicle has three wheels of which only one is connected to the motor. This one can switch between two positions so the vehicle can turn to either one. As a result, it follows an undulating trajectory. An empirical motion control algorithm is also presented. The corresponding program should be embedded in the locomotion system so to make it operative. A prototype has been successfully built to validate both the locomotion system and its control. I. INTRODUCTION O create scale models of robotic swarms or to simply play with a singular toy we were interested in building a prototype of a low-cost, small-size robot. The literature on mini-robots reports a myriad of them. Most of such robots are used either for entertainment or education purposes. However, they are also useful to build scale prototypes of robot systems. Whatever the case, mini-robots are required to be small- size, obviously, and to be inexpensive. It is known that the (digital) electronic part is continuously shrinking both in size and price. Conversely, the electro-mechanical parts do not benefit that much from scale economy, thus contributing negatively to either cutting cost or reducing size. Among these parts is the locomotion subsystem. In short, a mini-robot must use a locomotion mechanism that enables both goals and, besides, it is easy to control. As for the size and cost, single-motor robots are preferable to those with multiple motors. On the other side, locomotion control simplicity favors the wheeled systems with respect to the biologically inspired ones [3]. Furthermore, it is preferable to use a nonholonomic system [2]. Therefore, the target mini-robot is one such that its locomotion system is nonholomic, with wheels, and a single motor. Unfortunately, there are very few robots that use locomotion systems with the above-mentioned features. Remarkably, there is the roller racer [1], to which our proposal is similar to some extent. Though there have been recent works to better control its motion [9], the complexity of the control remains high. The goal of our work is then, to build a working prototype of a mini-robot with an embedded motion control that relieves onboard control from motion details. We have designed a new locomotion system that retains the desired characteristics about size, cost, and simplicity. The system is based on a common tricycle (see Fig. 1) in which the front wheel has two orientations, while the other two are fixed. To go from one to another position, the front wheel must spin in one or the opposite direction until it reaches a mechanical limit. Having these two predetermined orientations, the front wheel causes the whole tricycle to turn to either direction. By switching the spinning direction of the driving wheel, the vehicle describes a sinusoidal waveform. As it somehow waddles its way to the destination point, we named it waddlebot. The rest of the paper is organized as follows. Next section describes the mechanical and geometrical design of our new locomotion mechanism. The resulting motion model is outlined in Section III. A simple control algorithm is presented in Section IV. In the same section, the simulator of the system with the control algorithm and the prototype are presented. Last section concludes by highlighting the contributions of this work and introducing the challenges that it has open. Fig. 1. Schematic view of the tricycle. II. MECHANICAL DESIGN AND GEOMETRICAL MODEL A. Mechanical Structure The structure of the robot lies on three wheels as in an ordinary tricycle. The rear wheels are free, whilst the front one is attached to the driving motor. The front wheel and the motor are joined to the rest of the structure by a steering shaft, as illustrated in Fig. 2. In standard configurations, the turning of the steering shaft is driven by another motor, which enables the Motion Control for a Single-Motor Robot with an Undulatory Locomotion System Lluís Ribas * , Jordi Mujal ** , Miquel Izquierdo ** and Eloi Ramon ** * Microelectronics and Electronic Systems Dept., Univ. Autònoma de Barcelona, Spain ** Hardware-Software Prototypes and Solutions Lab., Univ. Autònoma de Barcelona, Spain T 3URFHHGLQJV RI WKH WK 0HGLWHUUDQHDQ &RQIHUHQFH RQ &RQWURO $XWRPDWLRQ -XO\ $WKHQV *UHHFH 7

Transcript of Motion control for a single-motor robot with an undulatory locomotion system

Abstract— Single-motor locomotion systems are of interest for low-cost, small robots. In this paper, one such system is presented. The vehicle has three wheels of which only one is connected to the motor. This one can switch between two positions so the vehicle can turn to either one. As a result, it follows an undulating trajectory. An empirical motion control algorithm is also presented. The corresponding program should be embedded in the locomotion system so to make it operative. A prototype has been successfully built to validate both the locomotion system and its control.

I. INTRODUCTION O create scale models of robotic swarms or to simply play with a singular toy we were interested in building

a prototype of a low-cost, small-size robot. The literature on mini-robots reports a myriad of them.

Most of such robots are used either for entertainment or education purposes. However, they are also useful to build scale prototypes of robot systems.

Whatever the case, mini-robots are required to be small-size, obviously, and to be inexpensive. It is known that the (digital) electronic part is continuously shrinking both in size and price. Conversely, the electro-mechanical parts do not benefit that much from scale economy, thus contributing negatively to either cutting cost or reducing size. Among these parts is the locomotion subsystem.

In short, a mini-robot must use a locomotion mechanism that enables both goals and, besides, it is easy to control. As for the size and cost, single-motor robots are preferable to those with multiple motors.

On the other side, locomotion control simplicity favors the wheeled systems with respect to the biologically inspired ones [3]. Furthermore, it is preferable to use a nonholonomic system [2].

Therefore, the target mini-robot is one such that its locomotion system is nonholomic, with wheels, and a single motor. Unfortunately, there are very few robots that use locomotion systems with the above-mentioned features.

Remarkably, there is the roller racer [1], to which our proposal is similar to some extent. Though there have been recent works to better control its motion [9], the complexity of the control remains high.

The goal of our work is then, to build a working prototype of a mini-robot with an embedded motion control that relieves onboard control from motion details.

We have designed a new locomotion system that retains the desired characteristics about size, cost, and simplicity. The system is based on a common tricycle (see Fig. 1) in which the front wheel has two orientations, while the other two are fixed. To go from one to another position, the front wheel must spin in one or the opposite direction until it reaches a mechanical limit.

Having these two predetermined orientations, the front wheel causes the whole tricycle to turn to either direction. By switching the spinning direction of the driving wheel, the vehicle describes a sinusoidal waveform. As it somehow waddles its way to the destination point, we named it waddlebot.

The rest of the paper is organized as follows. Next section describes the mechanical and geometrical design of our new locomotion mechanism. The resulting motion model is outlined in Section III. A simple control algorithm is presented in Section IV. In the same section, the simulator of the system with the control algorithm and the prototype are presented. Last section concludes by highlighting the contributions of this work and introducing the challenges that it has open.

Fig. 1. Schematic view of the tricycle.

II. MECHANICAL DESIGN AND GEOMETRICAL MODEL

A. Mechanical Structure The structure of the robot lies on three wheels as in an

ordinary tricycle. The rear wheels are free, whilst the front one is attached to the driving motor. The front wheel and the motor are joined to the rest of the structure by a steering shaft, as illustrated in Fig. 2.

In standard configurations, the turning of the steering shaft is driven by another motor, which enables the

Motion Control for a Single-Motor Robot with an Undulatory Locomotion System

Lluís Ribas*, Jordi Mujal**, Miquel Izquierdo** and Eloi Ramon**

* Microelectronics and Electronic Systems Dept., Univ. Autònoma de Barcelona, Spain

** Hardware-Software Prototypes and Solutions Lab., Univ. Autònoma de Barcelona, Spain

T

Proceedings of the 15th Mediterranean Conference onControl & Automation, July 27 - 29, 2007, Athens - Greece

T30-036

steering control of the device. The novelty in our design is to leave the shaft free. In fact, it can only turn from one to another mechanical limit freely.

Note that this shaft is not in the same plane than the wheel, which means that a torque is created on the shaft when the wheel is spinning. The result of it is that the block of the motor and the wheel turns around the shaft while the rest of the structure remains still.

For our purposes, the steering shaft must be located further forward than the wheel. (On the other opposite case, the resulting motion would be backwards.) Under these conditions, when the motor is turning, the wheel (and the motor) turns around the steering shaft until it reaches the mechanical limit. Then, the motor-wheel block stops its individual turning around the shaft to begin driving the whole structure.

This steering system allows the device to take two different forward movement directions. Both possible steering angles depend on the position of the mechanical limits and on the distance d between steering shaft and wheel (Fig. 3). The choice of one direction or other is done by the direction of the motor spin. Note that there is an amount of time wasted to change from one direction to another. This direction switching time is the time spent by the motor-wheel block to cover the distance between the mechanical stops.

The distance d between the shaft and the wheel determines this time: the closer, the faster. However, the closer, the less torque on the shaft. Hence, there is a bound beyond which the wheel cannot turn around the shaft. Besides, as this distance affects the torque on the shaft, it determines the behavior of the tricycle on different surfaces (roughness, irregularities, slopes, et cetera).

Fig. 2. Lateral and front view of the mechanical parts of the waddlebot.

B. Geometrical Model A fitted geometrical model of the former mechanical

parts is essential to further modeling of the movement of the system and, subsequently, to derive a suitable controlling algorithm.

The geometry is constrained by the mechanical structure, which might cause the robot turning over one of

the rear wheels when it moves in one of the both available directions. Hence, geometry must be set accordingly.

Switching periodically the direction of the motor spin makes the robot to move in a fictitious crawl-like fashion over the rear wheels (which we had called waddling). In doing so, the center of the rear shaft (taken as the reference of the robot) describes a sinusoidal trajectory.

To achieve this type of motion the distance among all wheels and the angle of the steering wheel with respect to the perpendicular to the axis of the rear wheels must be chosen to place the instantaneous center of rotation (ICR) on the rear wheels as is shown in Fig. 3.

The ICR lies on the intersection between the line that follows the drive wheel’s shaft and the line from the rear wheels shaft. If it is placed over the rear wheels, they will be still during the movement of the structure, i.e. the desired effect to achieve the sinusoidal trajectories required to reach any point of the plane.

For the sake of simplicity, distances between each pair of wheels are all equal to R. With this layout, at each gait (i.e. a full period of the sinusoidal wave) both wheels in motion are moving on the same circumference. (Note that R also determines the radius of each gait during the motion.)

Distance d between steering shaft and driving wheel has to be set in accordance with the environment where the robot operates, as it affects torque and speed.

Fig. 3. Geometry of the waddlebot, with ICR located alternatively on

the rear wheels (C1 and C2).

III. BASIC MOTION In this section we shall outline the fundamental

mathematical model of the motion of the waddlebot. (In this work, we focused on the viability of the prototype, thus we opted for a heuristic “open-loop” control to avoid a throughout analytical model that shall be developed in the short future.)

mechanicalstops

driving wheel

steering shaft

motor

Proceedings of the 15th Mediterranean Conference onControl & Automation, July 27 - 29, 2007, Athens - Greece

T30-036

A. Forward Motion A periodical signal modulating the angular velocity of

the motor such as a sinus or a square function is translated into a wave-motion of the robot (Fig. 4.a), turning over the rear wheels consecutively.

In figure 4.b there is a representation of the three gaits required to complete a full wavelength (λ) movement.

The amplitude of the run wave and its wavelength are related to the geometrical design of the tricycle, specifically to parameter R. Furthermore, they are not independent, the bigger amplitude the larger wavelength (Figs. 4.c and 4.d). The amplitude is governed by the period of the signal modulating the motor angular velocity, so the relationship between wavelength and period gives the control of the motion. The free run time of the front wheel must be taken in account to get the function T(λ). The maximum possible amplitude of the motion is R/2, which restricts λ values to a range from 0 to a maximum of 2R.

The final equation for the motor angular velocity ω to control the forward motion is:

))()(( λϕλωω +⋅⋅= tfA o (1) where f(t) is a periodical function. The amplitude A determines the speed of the motion, the frequency ωo(λ) depends on the required λ, and φ(λ) = T(λ)/4. The latter equality must be satisfied to obtain a forward motion around a straight line from the origin, provided that the driving and steering wheel is placed in the center of the free run at the beginning of the motion. It is very important for the control of the movement to know the final position of the wheel inside the free-run section at the end of a trajectory. This knowledge allows to properly controlling the next one.

If the value of φ is different from T/4 the motion becomes more complex and there is a deviation from the straight path, represented by angle θ = 0.

The particular case of φ = 0 results in deviation θ = α/2, as illustrated in Fig. 5. In this figure, α is the angle of the arc that the rear wheel describes with respect to the other at each gait, and is related to the λ of the motion. Consequently, deviation θ has a bijective correspondence to wavelength λ.

The problem of controlling the deviation is even harder to solve for arbitrary values of φ because θ is not constant on the wavelength. Furthermore, any trajectory which implies some deviation requires making corrections at the end of the motion so to leave the reference point of the robot (i.e. the center of rear axis) on the straight line from the origin to the final points, i.e. to leave the robot aligned to the trajectory line.

A simpler approach has been taken in our work. Instead of bringing directly the robot from one point to another by controlling both distance and deviation, we decided to

divide the problem into two: first make the robot turn to the appropriate direction and, last, make it go forward to its goal. (The approach of controlling the path by controlling the phase of the signal in some cases has been left as a future option.)

Focusing on the second stage of the motion, i.e. following a straight line (θ = 0), it is noticeable that its main drawbacks are related to efficiency in terms of actual distance covered and, consequently, of power consumption. Obviously, ω affects power consumption ([4], [5]), too. Moreover, it depends on the amplitude of the sinusoidal wave in k, which favors the use of motions with low amplitude.

Fig. 4. Waving motion of the waddlebot: a) Representation of the

wave-motion, b) the three gaits to complete one wavelength, c) and d) show the consequence of the dependence between amplitude and wave-length. The amplitude of the motion determines its wave-length.

Fig. 5. The deviation θ of the motion when φ = 0 depends on the

wavelength λ.

B. Turning Motion The robot is able to turn over one rear wheel any desired

degree. The problem is that it cannot rotate in-place like other systems such as differential drive or synchro drive [2]. This fact involves more control resources to reach a given position because of the joining path of two points is not so evident.

As previously stated, there are a lot of possible ways to reach a desired position and, by modulating the phase, a

a) b) c) d)

θ = α /2

θ = α /2

α α

Proceedings of the 15th Mediterranean Conference onControl & Automation, July 27 - 29, 2007, Athens - Greece

T30-036

few to get to the goal with a suitable orientation for the robot. However, they are out of the scope of this work.

We have adopted a simple solution by firstly placing it over the straight line (aligned as well) between the origin and the target, and then go forward to the point. So we consider the basic turning motion as the necessary gaits to place the robot on the joining line as close as possible to the origin. The simplest way to achieve it is by two gaits placing the robot a distance h from the origin as it is shown in the second and third pictures of Fig. 6.

The goal is first to make a step in order to place one rear wheel on the exact point where the next gait of the other wheel places the robot on the joining line, and aligned, too. After the turning, distance r between origin and target must be recalculated after the turning.

The problem of this approach is that all points with r less than h cannot be reached with this motion. Distance h depends on θ. Its maximum value is reached for θ being approximately over 110º, and does not go beyond 1.4R.

This limitation usually does not apply because robots are relatively small compared to the operation area. In case they have to position with high accuracy on a given point, the constraint can be overcome by making a previous movement to a point far enough so that the final destination point is reachable.

The turning is the same for positive or negative angles, the only difference is which wheel begins the first step, but for the same modulus angle, the runs have the same distance.

Fig.6. A complete sequence to reach a given point: the turning motion

with its two gaits (intermediate waves), and the following straight line motion (rest of the wave in the rightmost picture). Distance h is shown.

IV. CONTROL ALGORITHM A control algorithm has been developed to guide the

robot to any position using the basic motions described before. It is in charge of setting appropriate control values for the motor so to drive the waddlebot to the destination point, given in polar coordinates (r, θ ). As introduced in the previous section, it is divided into two steps:

1) Angle correction. It moves the robot to deviate it θ

degrees from the straight course and recalculates r so to take into account the turning.

2) Forward movement. After the first step, the robot must go forward until the destination is reached. As it cannot go straight ahead, it calculates the sinusoidal wave that must follow to reach the end of segment (0, r), i.e. the wavelength and the number of cycles. Once they are calculated, the related control signal waveform of the motor is derived from equations that involve the geometry and features of the robot and the motor. The resulting waveform is a simple frequency modulated periodical wave that the microcontroller has to transmit to the motor. The result is a sinusoidal motion.

The control algorithm has been first developed on a

MATLAB so to be able to simulate the motion of an idealized waddlebot and to refine the corresponding code. Then, it was programmed to fit in a simple PIC microcontroller in order to test it in a real prototype.

A. Motion Simulator and Control The motion simulator was made with MATLAB. It is

based on a simple tricycle simulator [4] in which it is easy to simulate our locomotion system. The adaptation consists of restricting the steering angle to both permitted angles, limiting the angular velocity of the motor to the same directions, and setting the appropriate geometric parameters. The use of such an adapted simulator helped enormously to verify the control algorithm by providing us with trajectories, motor angular velocities and other graphical results. (Some of them are included in this paper.)

Development of the algorithm implies not only designing an appropriate program that satisfies all functional requirements but making the necessary refinements (i.e. code transformations) so to be implemented in the target processor. In our case, the functional verification version was developed in MATLAB, as well as further changes to minimize code size and adapt some instructions to the instruction set of the target microcontroller (in our case, a Microchip PIC18F4620).

As previously stated, the controlling algorithm has two stages, one for the turning, which takes parameter deviation θ from the axis of the forward sinusoidal wave, and another for the forward movement, that uses r.

In this subsection we shall discuss about the implementation issues of the controlling algorithm following the discourse of the motion model. Hence, the description of the forward motion control comes before the turning motion explanation.

1) Forward movement. As the robot follows a sinusoidal

wave motion, it can reach its goal unaligned with the virtual line that links origin and destination points. (Recall that the robot alignment is defined in terms of the axis of the sinusoidal wave that follows when it moves forward.)

Proceedings of the 15th Mediterranean Conference onControl & Automation, July 27 - 29, 2007, Athens - Greece

T30-036

For the sake of simplifying the controlling algorithm, the robot must end its trajectory aligned. Therefore, the destination point must be at the end of some cycle. To do so, λ must be set to make the robot reach its goal in n complete cycles.

Once λ is calculated, the motor angular velocity has to be modulated during n cycles with equation (1).

To limit power consumption it has been shown that λ has to be relatively small, hence we set up a maximum value λ max = 0.6R, which is enough large for our experiments.

As suggested before, the actual program is further refined to minimize size and to enable its migration to simpler embedded processors. One such refinement is to use polynomial approximations to reduce the number and complexity of operations.

To compute T(λ) and φ(λ) in order to modulate the motor control signal, only three divisions and one lineal approximation are required:

),mod( maxλrn = (2) )1/( += nrλ (3)

11 baT +⋅= λ (4) 4/T=ϕ (5)

The MATLAB program is used to extract the

coefficients of approximation for each geometrical configuration of the tricycle. These coefficients are used in the simplified program implemented in the embedded processor. (Obviously, the particular geometry of a robot will not change, so they can be considered constant for the embedded software.)

In Fig. 7 the resulting trajectory for r=12cm with λ=4cm is shown. On top, it may be observed how the drawn sinusoidal wave takes exactly 3 cycles and, what it is more important, that the endpoint orientation is the same as the one at the beginning. At the bottom of the same figure, the trajectories x(t) and y(t) are plotted independently. Note that for the forward direction x(t), there are moments that the movement is stopped, which corresponds to the free-run transitions.

2) Angle correction. For the turning motion more

complex geometrical calculations are needed such as vector operations or intersection solution between circles and lines. Therefore, only the MATLAB high-level program finds angles α1 and α2 of both gaits to place the robot over the final position. Also, it calculates the duration of both motor signals (T1 and T2) to get the robot turning α1 and α2, and to control this motion.

After such a turning for correcting the angle, the program carries on with the forward movement by first computing distance h and recalculating the new r to the destination.

0 2 4 6 8 10 12 14-0.2

0

0.2

0.4

x

y

trajectory x-y

0 0.5 1 1.5 2 2.5 3 3.50

5

10

15

t

trajectories x(t) and y(t)

x(t)y(t)

Fig. 7. Simulated trajectories for r = 12cm with λ = 4cm. On top, the x–

y plot is depicted. At the bottom, trajectories x(t) and y(t) are plotted independently to better exhibit the behavior of the control algorithm.

There is a lower abstraction level version of this

program that contains some refinements regarding its implementation on simpler, embedded processors. These include a simple subtraction and three two degree polynomial approximations, as formulated in the following equations. As mentioned in section III, h is never greater than 1.4R.

33

231 cbaT +⋅+⋅= θθ (6)

442

42 cbaT +⋅+⋅= θθ (7)

552

5 cbah +⋅+⋅= θθ (8)

hrr −=+ (9) The turning motion for negative angles is the same than

for positive ones, but changing the wheel that begins the first gait. Therefore the approximations are only made for the 180º range and, eventually, signs of T1 and T2 are changed. (Note that h is independent of θ sign.)

Similarly to the forward movement part of the algorithm, the high-level MATLAB program is used to extract the polynomial coefficients for each tricycle configuration.

B. Prototype Implementation The refined, lower-level MATLAB program for the

control algorithm that includes the polynomial approximations was translated into C language and successfully run on a prototype with a PIC18F4620 [7].

The geometrical dimensions of the prototype waddlebot are R = 10cm and d = 0.7cm. The motor used is a Futaba servomotor controlled by a PWM signal from the MCU.

The motor control signal is a square function rather than a sinusoidal. The former enables a fast motion because it results in a larger rate of polarity changes. In addition it is simpler to implement.

Proceedings of the 15th Mediterranean Conference onControl & Automation, July 27 - 29, 2007, Athens - Greece

T30-036

However, a better approach would have been to output a trapezoidal function to the motor so sudden changes are avoided, thus better driving is achieved. For the sake of implementation simplicity, the system has been left with square-wave control signals though it might be changed in the near future.

The experience with the real prototype concerned us about the importance of the weight distribution. If the center of gravity is located too forward, it makes free-run movement of the wheel difficult. Conversely, if it is located much too backward, the driving wheel slides. Hence, an optimum place should be found for the best performance.

The prototype has also been tested on non-flat surfaces. It has proved okay for uphill slopes but, unfortunately, it does not perform very well downhill. Note that the slope changes the center of gravity and, especially downhill, the driving force has to compensate the extra force that the very robot applies onto the front wheel.

Fig. 8. Prototype of the waddlebot with PIC18F4620 microcontroller.

V. CONCLUSIONS AND FUTURE WORK This work is a first step towards the idea of providing

researchers and practitioners (especially ourselves) with a low-cost, small-size robot. The waddlebot assumes that power is not a big issue and that most embedded processors have enough computing capability to include the controlling system of the robot so that it can be offered together with it. Therefore, robot users are relieved of motion control details and must only be concerned about destinations, and the particularities of this kind of motion in the robot’s environment and its repercussions. (Besides, this creates a framework in which to experiment with sinusoidal path planning for people who have in mind future works on more complex wave-based motions, as modular snake-like robots [8].)

The novelty of the proposed robot lies in its peculiar tricycle configuration, with the front wheel working both as a driving and as a steering wheel. In fact, it can take two different directions depending on the direction of the motor spin. The switching between the two is done by simply changing the spin of the motor. (A patent on the vehicle and its motion has been applied for.)

A tricycle simulator in MATLAB has been used to verify the controlling algorithm and a successive refinement with approximations made it possible to obtain

a program simple enough to be run on a simple processor such a microcontroller. The higher abstraction level program in MATLAB is used to compute the necessary coefficients for a particular waddlebot configuration so that they can be used in the control program.

A real prototype was built out of Meccano pieces, a Futaba servomotor and a prototyping PCB with PIC18F4620.

In the short term, a full analytical model of the motion is to be developed, with some empirical parameters that make it feasible to embed the control algorithm in the robot’s microcontroller. We are also looking into the possibility of make a chain of waddlebots and get a coordinated motion.

Fig. 9. Image of waddlebot after having reached several successive

destination points. The plotted drawing reflects the tail movement, which is proportional to the one of the driving wheel.

ACKNOWLEDGEMENT This work has been supported by the Spanish Ministerio de Educación y Ciencia under grant reference TEC2005-08066-C02-02 (acronym: COCOABOTS: ME TOO).

REFERENCES [1] P.S. Krishnapasad, and D. P. Tsakiris, Oscillations, se(2)-snakes and

motion control: a astudy of the roller racer. Technical Report 98_4. Inst. Syst. Research & Dept. Elect. Eng. of Univ. Maryland (USA), and INRIA, Sophia-Antipolis (FR). July, 1998.

[2] K. Goris, Autonomous Mobile Robot Mechanical Design, chapters 2–3, Thesis,Vrije Universiteit Brussel, Belgium , 2004-05.

[3] J. Demers, The one motor walker, 2000–2002. [Available online: http://robomaniac.solarbotics.net/tutorial/one/index.html]

[4] F. Haas, C. Rosito Jung, and F. J. Heinen, Robotics and Education: The Robotic Foklift Project, Journal on educational resources in computing. Univ. do Vale do Rio dos Santos, 2004.

[5] J.L. Jones, A.M. Flynn, and B.A. Seiger. Mobile robots. AK Peters, Ltd, 1999.

[6] Jizhong Xiao. Motors and Control (lecture). Department of Electrical Engineering,City College of New York. [Available online: http://www.ee.ccny.cuny.edu/www/web/jxiao/motor.ppt]

[7] PIC 18F4620 Datasheet (2006, April). Microchip Co. [Available online: ww1.microchip.com/downloads/en/DeviceDoc/39626b.pdf]

[8] K.J. Dowling. Limbless Locomotion: Learning to Crawl with a Snake Robot. The Robotics Institute, Carnegie Mellon University.1997. [Available online: www.solarbotics.net/library/pdflib/pdf/limbless_locomotion.pdf]

[9] P. Cheng, E. Frazzoli, V. Kumar. Motion Planning for the Roller Racer with a Sticking/Slipping Switching Model. ICRA 2006.

Proceedings of the 15th Mediterranean Conference onControl & Automation, July 27 - 29, 2007, Athens - Greece

T30-036