Jens Desmet, Jarne Liagre Realtime Trajectory Control of a Snakeboard Robot Academic year 2015-2016 Faculty of Engineering and Architecture Chair: Prof. dr. ir. Jan Melkebeek Department of Electrical Energy, Systems and Automation Master of Science in Electromechanical Engineering Master's dissertation submitted in order to obtain the academic degree of Counsellors: Dr. ir. Cosmin Copot (Universiteit Antwerpen), Dr. Stijn Derammelaere Supervisor: Prof. dr. ir. Robain De Keyser
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Jens Desmet, Jarne Liagre
Realtime Trajectory Control of a Snakeboard Robot
Academic year 2015-2016Faculty of Engineering and ArchitectureChair: Prof. dr. ir. Jan MelkebeekDepartment of Electrical Energy, Systems and Automation
Master of Science in Electromechanical EngineeringMaster's dissertation submitted in order to obtain the academic degree of
Counsellors: Dr. ir. Cosmin Copot (Universiteit Antwerpen), Dr. Stijn DerammelaereSupervisor: Prof. dr. ir. Robain De Keyser
PREFACE ii
Preface
The influence of autonomous robots on today’s world can not be underestimated.
With applications like self driving cars, automated drones for package delivery and
many more on the horizon, the importance of robotics will only increase in the
future. This master dissertation was chosen to get familiar with the problems of
designing autonomous systems, and to further expand our interests in this field.
This dissertation was especially interesting because no previous attempts have
been made to control a snakeboard robot in real time. It showed us that although
the equations behind a system can be highly nonlinear, it can still be controlled
with relatively simple and intuitive techniques. We hope that our approach will
inspire other researchers working on comparable systems.
We would also like to use this preface to express our gratitude to our counsellors:
Dr. ir. Cosmin Copot and Dr. Stijn Derammelaere. Also the entire department
DySC, under the supervision of Prof. dr. ir. Robain De Keyser, receives our
gratitude. Throughout the year, they organized multiple brainstorm sessions to
analyse our progress and to give the necessary feedback.
Jens Desmet, Jarne Liagre
June 2016
PERMISSION FOR USAGE iii
Permission for usage
“The author gives permission to make this master dissertation available for con-
sultation and to copy parts of this master dissertation for personal use.
In the case of any other use, the limitations of the copyright have to be respected,
in particular with regard to the obligation to state expressly the source when
quoting results from this master dissertation”
Jens Desmet, Jarne Liagre
Ghent, June 2016
Realtime Trajectory Control
of a Snakeboard Robotby
Jens Desmet, Jarne Liagre
Master’s dissertation submitted in order to obtain the academic degree of
Master of Science in Electromechanical Engineering
Academic Year 2015–2016
Supervisor: Prof. Dr. Ir. R. De Keyser
Counsellors: Dr. Ir. C. Copot, Dr. S. Derammelaere
Faculty of Engineering and Architecture
Universiteit Gent
Department of Electrical Energy, Systems and Automation
Chair: Prof. Dr. Ir. J. Melkebeek
Summary
The goal of this thesis is to deign and implement trajectory control of a snakeboardrobot. Based on a mathematical model, an intuitive control method is explained.To reduce the needed actuation, several measures are discussed. These include thechoice of a new controlled variable, and the optimization of the followed path.
Realtime Trajectory Control of a Snakeboard RobotJens Desmet, Jarne Liagre
Supervisor: Prof. dr. ir. Robain De Keyser
Counsellors: Dr. ir. Cosmin Copot, Dr. Stijn Derammelaere
Abstract—The goal of this article is to design and implement trajectorycontrol on a snakeboard robot. Based on a mathematical model, an intuitivecontrol method is explained. To reduce the needed actuation, several mea-sures are discussed. These include the choice of a new controlled variableand the optimization of the followed path.
THE control of a snakeboard is an interesting problem be-cause of its unique way of generating motion. As with most
robots, the travelling direction is chosen by controlling the an-gle of the wheels. The special thing about this robot is that themotion itself is generated by accelerating a rotor in alternatingdirections. Because of this, it is not possible to follow a straightline. Instead a snake-like path is followed, which explains thename of the robot.
An example of a path is shown in Figure 1. The base pathis shown in blue. Since this path is too straight for the robot tofollow in an efficient manner, a path needs to be planned aroundthis curve. An example of this modified path is shown in red.The goal of this article is to describe a control method that isable to follow the red trajectory. For the control aspect of thisarticle, we will assume that this trajectory is given in advance.We will also shortly look at a few possible adjustments that canbe made to improve this trajectory.
Fig. 1. Example trajectory for the snakeboard robot
In Section II some insight is given in how the motion is gen-erated by creating a mathematical model. A control method tofollow a predetermined trajectory is presented in Section III.Some methods to improve the path of the robot are discussedin Section IV. Finally, some results of this implemented controlmethod are shown in Section V.
II. MATHEMATICAL MODEL
A schematic representation of the robot is given in Figure 2.The rotor, with inertia Jr, has an angle δ with respect to theframe of the robot. The wheel platforms have an inertia Jp andare at angles φf and φb with respect to the frame. To simplify theproblem, the choice φf = −φb is made. The frame of the robothas an inertia of J and makes an angle θ with the x-axis. Thecenter of mass has as coordinates (x, y) and the total mass of theboard is noted as m. Finally, L represents the length from thecenter of mass to the center of rotation of the wheel platforms.
Fig. 2. Definition of the parameters of the snakeboard robot
The manipulated variables of the snakeboard are the wheelangle φ and the rotor acceleration δ. The angle of the wheelsdetermine an instantaneous center of rotation [1]. This is shownin Figure 3. Note that the speed of the center of mass, V, istangent to this circle. From this relationship, it follows that thepath that the robot follows is fully determined by the behaviourof the wheel angle over time. The influence of the rotor can beexplained with a torque balance around the center of rotation:
Jr δ = −mV
c− JT cV − JT cV (1)
The total inertia of the robot is noted as JT = J + Jr + 2Jp.The instantaneous speed of the robot is represented by V . Fi-nally, curvature is noted as c = 1/R. The left side of the equa-tion represents the torque generated by accelerating the rotor.The right hand side represents the torque needed to acceleratethe mass and rotate the inertia of the robot. This differentialequation forms the basis of controlling the speed of the robot. Itshows that the speed V of the robot can be manipulated by therotor acceleration δ.
III. CONTROL METHOD
The proposed control strategy consists of two parts. First, thewheel angle is controlled as a function of the travelled distance.This ensures that the desired path is followed, independent of thespeed of the robot. Second, the rotor acceleration is controlledsuch that the speed of the robot reaches its desired value.
Fig. 3. The wheels of the snakeboard determine an instantaneous center ofrotation
A. Position control
A path can be represented by a distance coordinate d and thecurvature of the trajectory at this distance c(d). This idea isrepresented in Figure 4, where R(d) = 1
c(d) .
Fig. 4. Representation of a path as a radius R as a function of the distance d
From the geometry of the snakeboard, this can be translated toa wheel angle φ as a function of the distance travelled by usingequation (2). By applying this wheel angle, the correct path isfollowed.
tanφ(d) = c(d)L (2)
The travelled distance d of the center of mass can be recon-structed with the use of encoders on the wheels. Because ofdifferent reasons (slip, wheel alignment, ...) a small error in ab-solute position will accumulate over time. For short trajectoriesof several meters, this error is acceptable.
B. Speed control
If the curvature of the path changes, the speed will alsochange, even if there is no rotor acceleration. This is becausepart of the kinetic energy of the robot is in the rotation of therobot itself. Therefore, it is inefficient to control the robot to aconstant speed. To reduce the needed control effort, the speed iscompensated by a factor which takes this rotational energy intoaccount. The equivalent speed is defined from the followingequation, based on part of the kinetic energy:
1
2mV 2
eq =1
2mV 2 +
1
2JT θ
2 (3)
By using the relation θ(t) = V (t)c(t), the final result is asfollows:
Veq(t) =
√1 +
JT c(t)2
mV (t) (4)
From the torque balance of (1), we see that the speed of therobot can be controlled by accelerating the rotor. Therefore, a
PID-controller is applied to control the equivalent speed of therobot. The control strategy is represented in Figure 5. Becauseof the dependence of the torque balance on the sign of c(t), itis necessary to multiply the output of the PID-controller withsign(c(t)). The information of c(t) is known by measuring d(t),as explained in Section III-A.
Fig. 5. Block diagram of the full control scheme
Finally, some adjustments are made to make some small im-provements to the control. The problem with the current controlstrategy is that the rotor speed tends to drift towards its mini-mum or maximum. This happens because of asymmetry in thepath, or due to random variations of friction and floor gradient.When the rotor speed constraints are reached, no control of thespeed can be performed and thus a large error occurs. To com-pensate for this we make use of the fact that when the wheelsare almost straight, rotor acceleration has little influence on thespeed of the robot. Therefore, the path is split into three sectionsdepending on the wheel angle φ:• |φ| > φ1: Controlling the speed is the most efficient in thisinterval. Therefore the main control of the speed is performedhere.• φ1 > |φ| > φ0: Rotor acceleration has less effect on thespeed of the robot. To limit the total needed rotor speed range,no control is performed in this interval.• φ0 > |φ|: Rotor actuation has very little influence on thespeed of the robot. The rotor can now be accelerated towardsthe middle of its speed range without disturbing the speed of therobot too much.
IV. PATH IMPROVEMENTS
Compared to the sinusoidal path of Figure 1, some improve-ments can be made. One possibility is to optimize the path forefficiency. For this, use can be made of the fact that rotor actu-ation is more efficient at large wheel angles. The optimal pathspends as much time as possible at large wheel angles. Themaximum wheel angle is limited by two factors. First, the robotcan tip over more easily at large wheel angles. Second, for awheel angle of 90 degrees, the robot spins in place. No net for-ward movement will result. Taking this into account, the sinu-soidal variations around the path can be replaced by the shapeof Figure 6. This path consists of circular parts at a small radius,connected with a fast transition region. This transition region isnecessary to allow for a continuous change in wheel angle.
Both sinusoidal variations and the optimal variations pre-sented above have the property that very little time is spent at
Fig. 6. The optimal variations path exist of circle arcs at a small radius, followedby fast transitions
almost straight wheel angles. Although this is good for con-trolling the robot in an efficient way, this sometimes does notallow for enough time to keep the rotor speed around the mid-dle of its speed range. If the rotor speed has drifted away toofar, one can add one period with the shape of Figure 7. Thethree control regions are shown in different colors. This is asinusoidal shape that is adjusted by adding straight sections toit. These sections are added at the points where the wheels arestraight when traversing a standard sinusoidal path. This keepsthe wheel angle continuous over the whole path.
Fig. 7. Path variations optimized to compensate rotor speed
This kind of variation should only be used if the rotor speedalmost reaches its extremes. Because of the long straight sec-tions, the robot speed cannot be controlled for a fairly long time.This results in larger errors in the speed control. The conclusionof this section is that path planning is very important for a robustcontrol of the snakeboard.
V. RESULTS
In this section, some results are presented that are gatheredfrom experiments on a real snakeboard robot. The followed pathconsists of a straight line, with the variations of Figure 6 aroundit. The results of this experiment are shown in Figure 8. Thefirst plot shows the actual speed of the robot. For clarity, thedifferent control regions (depending on the wheel angle φ) aredrawn in different colors. The resulting speed variations dueto change in rotational energy are visible as sharp peaks. Thesecond plot displays the equivalent speed, which is controlled to
a setpoint of 0.27m/s. Here the effect of the conversion factorbecomes very clear. Without this factor, the rotor would have tocompensate the sharp peaks in the speed.
Fig. 8. Top: Real speed of the center of mass of the robot; Bottom: Equivalentspeed (Reference: black dashes line)
The needed rotor acceleration and the resulting rotor speedcan be seen in Figure 9. Because of the choice of path, thereare barely any moments where the wheels are almost straight.The regions where the control is not applied are thus very small.The result of this is that the rotor speed drifts away from themiddle of its speed range. As mentioned before, the path can beadjusted to allow for more time to compensate this drift.
The same test was also performed on a path with a sinusoidalshape, with the same maximal wheel angle. The needed rotoracceleration for this path is about 15−20% higher, which clearlyproves the effect of optimizing the path.
VI. CONCLUSION
The snakeboard can be controlled effectively in a very in-tuitive way. The needed rotor acceleration can be reduced bychoosing a new controlled variable. Because of the inefficientway of propulsion of a snakeboard, optimization of the path isnecessary. A balance has to be made between different factorslike efficiency of rotor acceleration (maximal time at a small ra-dius) and avoiding drift in the rotor speed (more time at a big ra-dius). This balance is not only limited to the choice of the pathbut also in the choice of φ0 and φ1, where higher values willlead to a higher disturbance in the equivalent speed. The biggestchallenge in future research holds the planning of a good pathfor the robot.
REFERENCES
[1] Tony Dear, Scott David Kelly, Matthew Travers, Howie Choset SnakeboardMotion Planning with Viscous Friction and Skidding, IEEE InternationalConference on Robotics and Automation (ICRA), Washington, May 26-30,2015
To simplify the notation, time derivatives are noted with the dot notation (δ, δ).
The use of vectors will be made clear by using a bold font.
Symbol Unit Detailed description
c m−1 Curvature of a curve at a certain point
d m Distance travelled along a curve
Ec J Controlled part of the kinetic energy of the robot
Frr N Rolling resistance force
g m/s2 Gravitational acceleration constant
J kgm2 Inertia of the mainframe of the robot (frame, batteries, ...)
Jp kgm2 Inertia of a wheel platform (+ wheels)
Jr kgm2 Inertia of the rotor
JT kgm2 Total inertia of the robot (J + 2Jp + Jr)
KE J Kinetic energy
L m Distance between center of mass of the robot and the middle
of a wheel platform
L1 m Distance between the middle of a wheel platform and a wheel
itself
m kg Total mass of the robot
R m Radius of a curve at a certain point
V m/s Speed of the center of mass of the robot
LIST OF SYMBOLS xii
Vref m/s Reference speed (input of control)
Veq m/s Equivalent speed: speed the robot would have if all energy is
in the translation
x m x-coordinate of the center of mass of the robot
y m y-coordinate of the center of mass of the robot
δ rad Angle of the rotor
φf rad Angle of the front wheels with respect to the main body of
the robot
φb rad Angle of the back wheels with respect to the main body of the
robot
φ rad Wheel angle notation if φf = φb = φ
φ0 rad If φ < φ0, the rotor accelerates to the middle of its speed
range
φ1 rad For φ0 < φ < φ1, the rotor acceleration is zero
θ rad Orientation of the robot
INTRODUCTION 1
Chapter 1
Introduction
The snakeboard is a toy that was invented in 1989. It is closely related to the
more popular skateboard. A picture of a real snakeboard is shown in Figure 1.1.
Instead of touching the ground to propel, the rider has to rotate his upper body,
while choosing the wanted direction by turning his feet. Because of the nature of
the propulsion, it is not possible to accelerate in a straight line. Instead, the rider
has to move in a snake shaped trajectory. This is where the name snakeboard
originates from.
This unconventional way of propulsion makes it an interesting problem from a
control point of view.
Figure 1.1: A real snakeboard.
INTRODUCTION 2
The goal of this dissertation is to perform trajectory control on a snakeboard robot.
An example of a trajectory is shown in Figure 1.2. The goal of the robot is to
go from point A to point B while moving around the blue path. Since the robot
can not move very efficiently along a path that is almost straight, the original
path needs to be modified. The simplest modification that can be made is by
superposing a sinusoidal path on top of the original path. The result is shown in
red. As the focus of this master dissertation is on controlling the snakeboard, we
will assume that the path is given.
Figure 1.2: Example path from point A to point B (Blue: normal path, Red:
Modified path to allow the snakeboard to move efficiently).
The robot that will be used to perform the experiments can be seen in Figure 1.3.
The upper body of the rider is simulated by a rotor inertia that is controlled by a
motor. Also, the position of both wheels can be controlled by stepper motors.
1.1 State of art 3
Figure 1.3: The robot used in this dissertation for testing the control strategy.
In Chapter 2, a mathematical model is discussed in an intuitive way. Next, based
on this model a simulation is implemented in Matlab and verified with findings
from Literature. This is done in Chapter 3. Before discussing the control part
in Chapter 5, some more details on the used hardware setup are discussed in
Chapter 4. More details on some practical aspects of the implementation are
given in Chapter 6. Apart from the control aspects, attention is also paid to
reducing the needed amount of rotor acceleration. This is partly done by taking
another controlled variable instead of the speed of the robot. Also, a basic theory
is developed to generate a more efficient trajectory. The results of these findings
are shown in Chapter 7. To finish, Chapter 8 discusses some future developments
for the snakeboard and how the current system could be improved upon.
1.1 State of art
In this section, a brief summary will be given of the current state of art of the
snakeboard. Early research was mainly focused on building a mathematical model
[1]. This was done based on the Lagrangian. In that paper, also research is
done on different gaits. A gait is when the controlled variables are controlled by
a cyclic input signal, which results in a net motion of the robot. For sinusoidal
inputs, there are three basic gaits. One has as result a displacement in the forward
1.1 State of art 4
direction, another one creates a displacement in the sideways direction, and the
last one creates a net rotation as effect. Extensive simulations of these gaits with
different parameters can be found in [2]. These gaits are also simulated in Chapter
3 to verify the used simulation model. In [3] and [4], further research was done on
finding more robust gaits using simple harmonic input functions which result in
stable and/or moving limit cycles.
The model from [1] was later improved on by [5]. This model is used for the simula-
tions in this dissertation, and will be discussed further in Chapter 2. These models
make use of Cartesian coordinates. Because of the nature of the snakeboard, it is
more intuitive to work with curvature of the path as a variable. This model was
developed in [6]. From this model, it becomes clear that the desired curvature of
the path at a certain point fully determines the needed wheel angle at this point.
Explicit solutions exist for both wheel angle and rotor acceleration. To improve
the existing model, the influence of viscous friction and skidding was researched in
[7]. Again, simulations are performed where the inputs are generated by explicit
solutions.
These last papers generate an explicit solution starting from a given path. The
optimal construction of such a path is a missing link in literature. Instead, the
available path planning methods are base on a concatenation of primitive path
segments. Each new segment requires a specific initial configuration of the robot.
In order to change between these configuration the snakeboard has to come to rest.
In [8], this method is developed using only circular segments as path primitives.
A more elaborated attempt can be found in [9] where more path primitives are
taken into account.
In [3] and [8] a picture can be found of a comparable snakeboard robot as the
one used in this dissertation. However no practical result were published. We
assume that their practical research was stopped because the complex theoretical
problem becomes even harder when practical constraints and external influences
are included. From this we conclude that a full trajectory control on a real robot
in real time has never been implemented before. And that the results presented
in this work are the basis of a new aspect in the analysis of the snakeboard.
MATHEMATICAL MODEL 5
Chapter 2
Mathematical model
Both for simulation and control, a mathematical model is needed. In this chapter,
a model found in literature is presented. This model is made more intuitive by
explaining the physical meaning of the observed equations. Finally, this model is
expanded to include friction.
2.1 Definition
A model is defined based on the schematic representation of Figure 2.1. The
position of the snakeboard is fully determined by three coordinates: x = (x, y, θ).
Here (x, y) are the coordinates of the center of mass. The angle θ is the angle that
the board makes with the x-axis.
The inputs to the model are u = (φf , φb, δ). Here φf and φb are the angles of the
front respectively back wheel platforms. The angle of the rotor with respect to
the robot is noted as δ. The total mass of the robot is denoted as m. The inertia
of the rotor is Jr, that of the wheel platforms is Jp and finally the inertia of the
robot frame is J . The only dimension of importance for the dynamics is L, the
distance between the center of mass and the center of the wheel platform.
2.2 Intuitive explanation 6
Figure 2.1: Schematic representation of the snakeboard.
2.2 Intuitive explanation
The goal of this section is to give some insight into the physics behind the snake-
board. In literature, complex mathematical methods are used to come to the
equations of the snakeboard. However, an intuitive explanation for these equa-
tions is missing. We will start from a model found in literature, and explain how
this model arises from the physics behind the snakeboard. The model used for
this is derived in [5]. The results are as follows:
x = V cos θ − V sinψ2 sin θ
cosψ1 + cosψ2
y = V sin θ − V sinψ2 cos θ
cosψ1 + cosψ2
θ =V sinψ1
L(cosψ1 + cosψ2)
V =
−(d1δ+d2ψ2) sinψ1
cosψ1+cosψ2− (k
2ψ1 sinψ1 cosψ1+ψ2 sinψ2 cosψ2
(cosψ1+cosψ2)2+ ψ1 sinψ1+ψ2 sinψ2
(cosψ1+cosψ2)3(sin2 ψ2 + k2 sin2 ψ1))V
1 + sin2 ψ2+k2 sin2 ψ1
(cosψ1+cosψ2)2
(2.1)
With:ψ1 = φf − φb, ψ2 = φf + φb
d1 =JrmL
, d2 =JpmL
, k2 =J + Jr + 2Jp
mL2
(2.2)
The state V in the above equations does not (in the general case) represent the
2.2 Intuitive explanation 7
physical velocity of the center of the snakeboard. Instead it is what’s called a
pseudo velocity. More information on this pseudo velocity can be found in [5].
To simplify this model, we choose φf = −φb = φ. This implies that both wheels
turn the same amount, but in opposite directions. This new angle will further be
noted as φ. Because of this assumption, the model simplifies significantly:
x = V cos θ
y = V sin θ
θ =V sinψ1
L(cosψ1 + 1)
V =
−d1δ sinψ1
cosψ1+1− (k
2ψ1 sinψ1 cosψ1
(cosψ1+1)2+ ψ1 sinψ1
(cosψ1+1)3k2 sin2 ψ1)V
1 + k2 sin2 ψ1
(cosψ1+1)2
(2.3)
Where now ψ1 = 2φ.
Now the parameter V represents the actual speed of the center of mass of the
snakeboard. This speed is always tangential to the turning circle. The equations
for x and y represent a particle moving with a velocity V in the direction of θ.
To make the other two equations more intuitive, the kinematics of the snakeboard
need to be studied. On the assumption that no slip occurs, the radius of the
followed path is a direct function of the wheel angle φ.
This can be seen in Figure 2.2. The turning circle is constructed by drawing lines
perpendicular to both sets of wheels. The intersection of these two lines determines
the center of rotation. Because of the symmetry of the problem, the middle of the
robot also turns around this center of rotation. The radius of the followed curve
is the distance between the center of rotation and the middle of the robot.
More exactly, the relation between radius and wheel angle is given by the following
geometric relation:
L = R tanφ (2.4)
2.2 Intuitive explanation 8
Figure 2.2: Radius is controlled by the wheel angles.
From the tangent half-angle formula it follows:
tanφ =sinψ1
1 + cosψ1
(2.5)
If this is substituted together with the relation V = θ · R into (2.4), the equation
for θ in (2.3) is found.
The last equation to be explained is the equation of V . For this, a torque balance
is made around the center of rotation. This point is chosen because the force on
the wheels delivers no torque around this point. This is of course only true if
friction is neglected. The only remaining terms in the torque balance are terms
due to (angular) acceleration. This gives the following result:
Jrδ = −mV
c− JT cV − JT cV (2.6)
Here c represents the curvature: c = 1/R. JT is short for the total inertia: JT =
J + Jr + 2Jp.
This equation is also found in literature, for example in [7] (for the case mL2 = JT ).
Although complex mathematical methods were used to derive this equation, it can
also be derived in a short and intuitive way. The different terms in the equation
arise as follows:
� Jrδ: This is the torque that is needed to give the rotor a certain acceleration.
2.3 Rolling Resistance 9
Due to Newton’s third law, this torque is also exerted on the snakeboard,
but in the opposite direction.
� m Vc: The force needed to accelerate the total mass equals mV . As V is
parallel to V , this force is perpendicular to its lever arm. This lever arm
has as length R = 1c. Therefore, this term represents the torque needed to
accelerate the center of mass around the center of rotation.
� JT cV + JT cV : The torque needed to accelerate a rotational inertia JT with
angle θ is equal to:
T =d
dt(JT θ) =
d
dt(JTV c) = JT V c+ JTV c (2.7)
Thus Equation (2.6) arises quite naturally. With the use of (2.4) and some trigono-
metric relations, this equation can be reformed into the equation of V in (2.3). This
information should give the reader a much more intuitive look into the physics be-
hind the snakeboard.
2.3 Rolling Resistance
The model discussed above can be extended by accounting for the rolling resis-
tance. This rolling resistance is primarily caused by the deformation of the wheels
when rolling over a flat rigid surface. The deformation is mainly determined by
the material properties of the wheel and the load on the wheel. In rest, the radial
deformation forces are symmetric as shown in Figure 2.3.a. The resulting reaction
force is a vertical component which counteracts the wheel load.
However, the radial deformation of the wheel exhibits hysteresis effects in motion.
Inward radial deformation requires more energy than outward radial deformation.
This shifts the center of pressure towards the direction of rolling, Figure 2.3.b. The
resulting reaction force still has a vertical component opposing the wheel load but
now due to the eccentricity it also creates a torque which counteracts the wheel
motion. The horizontal component of the reaction force is a shear force which
ensures that the wheel rolls without slipping [10].
2.3 Rolling Resistance 10
Figure 2.3: Shift of reaction force during free rolling.
The resistance torque generated by the reaction force can also be represented as a
force which acts on the wheel axes, Figure 2.3.c. This relation leads to a commonly
used expression for the rolling resistance.
W · e = Frr ·R⇔Frr =
e
R·W = Crr ·W
(2.8)
With Crr the rolling resistance coefficient. Note that this rolling resistance is
independent of the speed.
This type of resistance stays constant over a large velocity range. At very high
speeds, the deformation continues to exist outside of the contact area. At this
point, the independence of rolling resistance and speed is lost [11]. In the scope of
this dissertation no such velocities will be reached.
Figure 2.4: Friction on wheels resulting in net torque.
2.3 Rolling Resistance 11
The next step is to integrate this rolling resistance into the model. From Figure
2.4 the extra torque component around the center of rotation can be derived. Note
that all wheels carry one fourth of the weight of the board. This leads to an equal
rolling resistance force on all wheels. The total resistance torque around the center
of rotation can be expressed as follows:
Trr = Crr ·m · g ·R
cosφ(2.9)
Where g is the gravitational constant. With the use of (2.4), Equation (2.6) can
be extended to:
Jrδ = −mV
c− JT cV − JT cV − Crr ·m · g ·
l
sinφ(2.10)
PARAMETER IDENTIFICATION AND MODEL SIMULATION 12
Chapter 3
Parameter identification and
model simulation
In this chapter the kinematics of the snakeboard are analysed through simulation.
This should give the reader a more intuitive understanding of the behaviour of
the snakeboard. The used inputs to the model are inputs discussed in literature.
This allows us to verify the correctness of the simulation. Some missing parameter
values will first be determined before simulation is possible. These are the rolling
resistance and the inertia of the robot.
3.1 Identification of rolling resistance
The main parameter to be determined is the rolling resistance coefficient. As this
coefficient is influenced by many factors there exists no accurate formula which
defines it. In practice this coefficient is best determined by experiment. In the
performed experiments, the board is given an initial velocity on a straight trajec-
tory and then it is allowed to roll freely. Fitting a first order curve to this part
of the speed profile over time gives the deceleration due to rolling resistance. The
results of such experiment are shown in Figure 3.1.
Using Newton’s second law of motion, the force needed to decelerate the mass of
the snakeboard is easily determined. Writing this force as a function of the weight
3.2 Estimation of total inertia 13
of the board, W = mg, reveals the rolling resistance coefficient.
V (t) = a · t+ V (0) (3.1)
Frr = m · a = Crr ·W (3.2)
To obtain a higher accuracy the results are averaged over a few experiments. The
identified rolling resistance coefficient is Crr = 0.005.
From Figure 3.1, one can see that the experiments were always conducted in both
direction over the same path. This allows to correct for any errors which result
from the slope of the floor.
Figure 3.1: Blue: results of a friction test; Red: Linear regression performed on
the data.
3.2 Estimation of total inertia
Both for simulation and control, the total inertia of the robot around its center of
mass is needed. This is hard to measure accurately without specialised equipment.
The used method is based on the conservation of kinetic energy and will only result
in a rough estimation. The experiment starts by giving the robot an initial velocity
on a straight trajectory. As explained above, the robot will now decelerate due to
rolling resistance. After a short distance, a fast transition to a circular trajectory
3.2 Estimation of total inertia 14
is performed. During this transition, kinetic energy will be transformed from
translational to rotational energy. From this velocity drop it is possible to estimate
the inertia of the robot, accounting for the additional dissipation of energy due to
the rolling resistance. External influences on the velocity profile such as the slope
of the floor are neglected. These will be compensated for by performing multiple
experiments and taking the average result. An example of a typical velocity profile
is shown in Figure 3.2. The first part of the figure is when the robot is still driving
in a straight line. The part where the velocity profile is steep, is the transition
from a straight line to a circle. The final part is when the robot is driving in
a circle. The green line, Vexpected, is the expected velocity if the transition to a
circular path is not made and only rolling resistance is taken into account. In that
case, no kinetic energy would be present in the rotation.
Figure 3.2: Velocity profile during the inertia test.
The difference between V and Vexpected is energy used for the rotation. By taking
an energy balance, the total inertia can be calculated:
1
2mV 2
expected =1
2mV 2 +
1
2JT θ
2 (3.3)
By using the relation V = θR, the only unknown in this equation is JT . The
estimated value for JT is 1.6 kgm2. In the symbols used in the mathematical
model, this inertia is equal to JT = J + 2Jp +Jr. J is the inertia of the main body
3.3 Simulation of basic gaits 15
of the robot, Jp is the inertia of one wheel platform and its wheels, and Jr is the
rotor inertia.
The rotor inertia can be calculated easily by drawing the rotor in a CAD program.
After selecting the right material, the result is 0.049 kgm2 per rotor disk. Since
four rotor disks are used, this gives Jr = 0.196 kgm2.
For both simulation and control, only JT and Jr are needed. There is no need to
determine J and Jp separately.
3.3 Simulation of basic gaits
Simulations can now be performed based on the mathematical model derived in
Chapter 2. To verify the correctness of the simulation code, results from literature
will be simulated. From nature and other comparable systems we learn that mo-
tion is often created by applying cyclic inputs. Examples of this are the motions
performed when cycling, running, ... This idea was also used in literature to iden-
tify gaits which generate motion in different directions, [1], [3], [4] and [5]. The
inputs u = (φf , φb, δ) are simple harmonic functions of time:
t 7→ u = (af sin (ωf t), ab sin (ωbt), aδ sin (ωδt)) (3.4)
Again we will assume that φf = −φb. This is implemented by setting ab = −afand ωb = ωf . From [1] we know that for each variable in the configuration space
x = (x, y, θ) a gait is found which creates net motion in that direction. Note that
some more profound gaits can be found by adding a phase difference βδ to the
input signal of the rotor, [3] and [4].
The following simulations are all started at zero velocity and with the center of
mass in the origin. The orientation of the main frame of the board is chosen along
the x-axis, θ = 0. The parameter values used in the simulation match those of the
real robot. A summary is given in Table 3.1.
3.3 Simulation of basic gaits 16
Table 3.1: Parameters used to perform simulations.
Parameter Value Description
m 24 kg Total mass of snakeboard
JT 1.6 kgm2 Total inertia of snakeboard
Jr 0.197 kgm2 Inertia of the rotor
L 0.358m Distance between center of mass and center of
wheel platforms
Note that for now the influence of the rolling resistance is neglected. This allows
us to compare the obtained results with the results from [1] and [5].
The first gait that is found is called the ”drive” gait. This gait has the same
frequency in al three input variables (ωf = ωb = ωδ) and creates net motion in the
x-direction. Figure 3.3 shows a simulation for a timespan of 20 s with the following
input variables.
t 7→ u = (0.5 sin (πt),−0.5 sin (πt), 1.5 sin (πt)) (3.5)
Note that different regions of the rotor acceleration are plotted in different colors.
Also stars are used to indicate the points where the wheels are straight. At these
points, the wheel angle switches signs. This enhances the information which can
be extracted from the figures.
The observed behaviour can be explained with the torque balance of Equation
(2.6). The used rotor input of this gait results in a rotor acceleration which changes
sign every half period. If the sign of the curvature would be fixed, the system would
accelerate over the first half of the period and decelerate over the second half of
the period. Instead the wheel angle changes sign at the same moment the rotor
acceleration changes sign. This means that although the rotor decelerates, the
system keeps accelerating as the sign of the curvature in the torque equation has
also changed.
In this configuration the mean speed of the board keeps increasing. This also means
that the speed with which the path is followed increases. And thus the change
3.3 Simulation of basic gaits 17
Figure 3.3: The ”drive” gait.
in orientation θ over every half period will also increase. When θ changes more
than π over this half period, the gradient with which the x-axis is crossed becomes
negative, Figure 3.4. In some parts of the trajectory, the x-displacement will now
decrease. With even higher speeds, the contribution of these parts with a negative
x-displacement will become larger than the ones with a positive x-displacement.
This means that although the mean speed keeps increasing, the travelled distance
along the x-axis seems to decrease again. On the left side of Figure 3.5, the x-
coordinate is shown as a function of time for a long simulation. Here we clearly
see that after a while, the robot indeed changes directions. On the right side of
the picture a close-up is shown over the same time interval as the path presented
in Figure 3.4.
From the above, one can conclude that this gait has little practical relevance in
this form. A controller is needed to reach a stable movement in the x-direction.
3.3 Simulation of basic gaits 18
Figure 3.4: The ”drive” gait starting to change direction after 50s.
Figure 3.5: Left: Net x-displacement as a function of time time; Right: Close-up
over same time frame as path depicted in Figure 3.4.
The next gait creates net displacement in the θ direction and is called the ”rotate”
gait. This gait is created by applying an input to the rotor with double the
3.3 Simulation of basic gaits 19
frequency of the wheel platforms. Figure 3.6 shows a simulation of this gait for
10s with the input values of (3.6).
t 7→ u = (sin (πt),− sin (πt), 3 sin (2πt)) (3.6)
Figure 3.6: The ”rotate” gait.
The observed results can again be explained with the torque balance. In the first
half period of the wheel angle, the curvature has a positive sign. As the period of
the rotor input is now half that of the wheel angle, the system will both accelerate
and decelerate over this half wheel period. As these both happen over the same
mean curvature the system returns to rest every time the wheels are straight. In
the second half of the wheel period something similar happens but now the sign
of the curvature is the opposite. Increasing the amplitudes will increase the net
rotation over time.
The last gait that is examined creates net motion in the y-direction and is called
the ”parking” gait in literature. This gait is created by applying an input to
the rotor with a frequency that is 50 % higher than the frequency of the wheel
platforms: 3ωf = 3ωb = 2ωδ. The used input for this simulation is as follows:
t 7→ u = (0.5 sin (2πt),−0.5 sin (2πt), 3 sin (3πt)) (3.7)
3.3 Simulation of basic gaits 20
Figure 3.7 shows the results for a simulation of 10s. The results can again be
explained with the torque balance of the system. Note that the system will also be
at rest every time the wheels are straight. However if we look at two succeeding
wheel periods, we see that the sign of the rotor acceleration is opposite. The
net result of this gait is a steady displacement in the y-direction. Increasing the
amplitude of the rotor increases the energy in the system leading to a larger steady
mean velocity in the y-direction.
Figure 3.7: The ”parking” gait.
The resulting outputs from the simulations match these found in [1] and [5]. From
this we can conclude that our simulation has the correct behaviour. Although
analysing these gaits improves the insight into the kinematics of this system, they
have little practical relevance. To reach a controlled movement, more advanced
methods are needed. Therefore a general control method will be developed in the
rest of this dissertation.
HARDWARE 21
Chapter 4
Hardware
In this chapter, all the changes compared to the original setup will be discussed.
For the mechanical construction of the original robot, we refer to [12].
4.1 Arduino Mega Microcontroller
Because of the complexity of this dissertation, an Arduino Mega controller was
chosen. This board has 128 KB of program memory, 8 KB of SRAM and runs at a
clock speed of 16 MHz. It also has 54 I/O pins, supports PWM and has 6 external
interrupts. The main advantage of this board is the ease of use with the Arduino
software. A complete table with all of the connections to the Arduino is shown in
Appendix C.
4.2 Stepper motors
The angle of the wheels is controlled by stepper motors. These motors have a
holding torque of 2.5 Nm at a rated current of 4 A. The torque at non-zero speeds
was measured and is shown in Figure 4.1. To do one revolution, 200 full steps are
needed. This means that a full step is 1.8°. Because of the relatively low torque
of the stepper motors, the robot can only be used on a relatively smooth surface.
4.3 DC motor 22
Both for stability and positional accuracy of the robot it is important that no steps
are missed, because the stepper motors have no feedback.
Figure 4.1: Maximal torque as a function of rotational speed.
The stepper motor driver is the AMIS-30421 [13]. The used boards are shown in
Figure 4.2. Steps are taken by applying a pulse to the NXT pin. The direction
is chosen by changing the logic level of the DIR pin. Multiple settings can be
configured via the SPI interface. The most important settings are the current
level and the option to use up to 1/64 microstepping. For accurate control, 1/16
microstepping is used in this dissertation. A full rotation is thus equal to 3200
microsteps. Unlike the Arduino microcontroller, this driver works at 3.3 V. The
logic level conversion from 5 V to 3.3 V is done with optocouplers. Because the
bandwidth of these optocouplers is lower than the lowest frequency available for
SPI on the Arduino, it is necessary to emulate SPI in software. This allows the
speed to be as low as necessary. For the NXT and DIR pins, the low bandwidth
of the optocouplers forms no problem as the stepping speed is slow enough.
4.3 DC motor
In the original setup, a stepper motor was used to drive the rotor. This gave the
robot a limited torque and speed range. In some places, the slope of the floor was
too high to obtain a forward motion, even with optimal actuation. Therefore, it
was decided to replace this motor with a more powerful one. The motor model
In practical systems, this path can not be followed because the wheel angle is not
continuous. Therefore, instead of instantaneously switching from one half circle
to the next, a more gradual transition is needed. A more realistic situation is to
use a constant angular acceleration φ until φ reaches zero, and then use a constant
deceleration until φ reaches its other extreme value. An example of this behaviour
in time is represented in Figure 5.7. The switch between two circle halves is made
in one second. This transition time is a parameter of the path, which depends on
5.5 Optimal path 37
the torque of the motors, the speed of the robot and the wanted minimal radius
of the path.
Figure 5.7: Left: Optimal wheel angle profile; Right: Angular velocity of the
stepper motors.
The ignal of Figure 5.7 can not be applied directly to the robot. If the equivalent
speed of the robot is not exactly constant, just applying a time signal will lead to
large deviations from the expected trajectory. Therefore, this time signal first has
to be translated into a fixed path. This path can then be followed independent
of the equivalent speed of the robot. Only if the equivalent speed is perfectly
constant at the design value, the signals of Figure 5.7 will be observed.
As introduced in Section 5.3, the equivalent speed is constant if the following
relation holds:
V (t) =Vref√
1 + Jc(t)2
m
(5.11)
As the signal φ(t) is chosen by design, c(t) can be calculated using equation (2.4).
Then the above equation leads to V (t). The path can now be reconstructed using
the following equations:
5.5 Optimal path 38
θ(t) = θ0 +
∫ t
0
V (t)c(t) dt
x(t) = x0 +
∫ t
0
V (t) cos θ(t) dt
y(t) = y0 +
∫ t
0
V (t) sin θ(t) dt
(5.12)
(x0, y0, θ0) represent the coordinates of the robot at t = 0. The result of this
calculation for a reference velocity Vref = 0.3 m/s, with the time signals of Figure
5.7, is presented in Figure 5.8. For clarity, the circular parts and the transition
regions are drawn in different colors.
Figure 5.8: Left: Optimal wheel angle as a function of travelled distance; Right:
Optimal path with continuous curvature.
It is clear that the transition between two circular regions is much more smooth
now. To summarise this section we note that the optimal path has three design
parameters. The first parameter is the minimal radius of the path. This is limited
mainly by the stability of the robot and by centrifugal forces. The second parame-
ter is the time in which the transition between circular parts occurs. This is limited
by the torque that can be delivered by the motors controlling the wheel angles.
This transition time can be decreased by minimizing the inertia of the wheels and
the wheel base with respect to the rotation center (Jp). The last design parameter
5.6 Equivalent speed control 39
is the time spent in the circular region. If this time is too long, more than half of
a circle is travelled. An example of such path is shown in Figure 5.9. Although
the control towards a constant Veq is very efficient, a lot of distance is travelled for
a limited movement in the x-direction.
Figure 5.9: Path followed if the circular part spans more than half of a circle
5.6 Equivalent speed control
5.6.1 Control loop
The control of the equivalent speed is based on a PID controller. In the torque
balance of Equation (2.6), the curvature c(t) appears in every term on the right
side. This means that if the sign of c(t) switches, the effect of rotor acceleration
will also switch signs. Therefore, δ is not only determined by a PID controller,
but also by the sign of c(t). The final control loop is represented in Figure 5.10.
As mentioned before, to know the value of c(t), feedback of the travelled distance
d is used. For completeness, also the control of the wheel angle φ(t) is added to
this diagram.
5.6 Equivalent speed control 40
Figure 5.10: Block diagram of the full control loop.
Note that to be able to let Vref change discontinuously (step inputs), the D-action
of the controller is only performed on Veq instead of the error.
5.6.2 Rotor speed compensation
In some cases, the rotor speed changes are not purely periodical but have a trend.
An example of this is when using a path that follows a large circle. In Figure 5.11,
the results of such simulation are shown. The used path is:
x(T ) = (2 + 0.08 cos (24T )) cosT − 2.08
y(T ) = (2 + 0.08 cos (24T )) sinT(5.13)
Where x and y are the coordinates of the robot in meters, and T ∈ R.
5.6 Equivalent speed control 41
Figure 5.11: Left: A snakeboard path around a large circle; Right: Simulated rotor
speed profile.
The rotor speed will converge to its maximum. Although it will not stay at its
maximum, each time the maximum rotor speed is reached, the robot speed can not
be controlled. This will lead to large disturbances for the instantaneous velocity
of the robot. This behaviour is not limited to special trajectories. Even when the
robot follows a straight snake trajectory, this problem often occurs. This is due to
random variations like the slope of the floor.
To solve this problem, remember that rotor actuation is less efficient at small wheel
angles. If the wheels are straight enough (φ < φ0), the rotor is accelerated towards
the middle of its speed range. Although this will have some influence on the speed
of the robot, with the right choice of φ0 the disturbance will be limited. If the
rotor speed reaches its constraints the disturbance will be much bigger.
To further reduce the needed rotor speed range, no rotor acceleration is performed
in the interval φ0 < φ < φ1. Again this is because of the lower efficiency of
rotor actuation at smaller wheel angles. For high wheel angles (φ > φ1), the
normal control is applied. An example trajectory, with the three regions shown in
different colors is shown in Figure 5.12.
5.6 Equivalent speed control 42
Figure 5.12: Example of the different control regions along a path (φ0 = 9°, φ1 =
22.5°).
To determine good values for φ0 and φ1, we look at the influence of the wheel
angle on dEc
dtfor different rotor accelerations. This can be used as a measure of
efficiency. The different lines on the graph of Figure 5.13 represent different values
of rotor acceleration. The maximal angle used for φ is 58 °. This angle, together
with the selected values of φ0 and φ1 are visualised with black dashed lines.
To sustain motion, typical values of 2.8 rad/s2 are needed for the rotor acceleration.
Therefore, point (a) is taken as a reference. The wheel angle φ1 below which no
control is applied, is chosen such that the efficiency is about one third of the value
in (a). This is noted as point (b). When φ < φ0, the maximal acceleration is
used to return to the middle of the rotor speed range. A value of 11.2 rad/s2 is
used for this maximal acceleration. This is to limit the torque on the coupling,
as discussed in Section 4.3. This value is represented by the cyan curve on Figure
5.13. To have a large enough time span to accelerate the rotor, φ0 can’t be chosen
low enough to reach the same level as (b). Therefore, a compromise is made and
φ0 is chosen such that the influence of working at (c) is about half that of working
in (a). Although the effect on dEc
dtis not negligible, because of the short time span
in this region, the total disturbance will be small. The final values for φ0 and φ1
are 9 ° and 22.5 ° respectively.
5.6 Equivalent speed control 43
Figure 5.13: Influence of wheel angle and rotor acceleration on dEc
dtfor Veq =
0.27 m/s.
Another interesting fact that can be noted from this figure is that for small wheel
angles there is a region where dEc
dtstays fixed at zero. This is because the torque
generated by the rotor is too small to overcome friction.
5.6.3 Tuning of the PID-controller
To tune the PID-controller, system identification is performed on the system. The
input of this identification is the (wanted) rotor acceleration, the output is the
velocity of the robot. From Section 2.2, it can be seen that the gain of this
transfer function will depend on the wheel angle.
The observed behaviour represents a second order transfer function with two real
poles. This can be explained as follows:
� From the torque balance without friction (Equation (2.6)), the relation be-
tween rotor torque and velocity of the robot should be an integrator. Since
the torque caused by friction is a constant value independent of the velocity,
this can not be represented by a transfer function. In an identification, we
5.6 Equivalent speed control 44
will estimate this behaviour as a first order transfer function. The expected
time constant is in the order of seconds.
� If the rotor acceleration is controlled, this is the same as controlling the motor
torque. The relation between torque setpoint and actual output torque also
has some dynamics. These dynamics are caused by the electrical transient
of the DC-motor. The torque output of such motor is proportional to the
current. Due to inductance and resistance, the current needs a finite time to
settle to a new value. Typical time constants for this size of motor are only
a few milliseconds. Therefore, these dynamics can be neglected.
� The motor driver of the rotor has the option to include damping on the input
signal. The coupling between motor and rotor is based on friction. If the
motor torque becomes too high, the coupling will slip and damage will occur.
Since the input to the motor driver is the wanted motor velocity, any discon-
tinuity in this signal will lead to a very large torque on the motor. Possible
causes of such discontinuity are: resetting the microcontroller, overflows or
other bugs in the code. To limit the chance of damage of such events, a small
amount of damping was added. The time constant of this damping is of the
order of a few hundred milliseconds. This cannot be neglected.
The proposed theoretical transfer function, for a certain wheel angle, has the
following form:
G(s) =Kp
(1 + sτ1)(1 + sτ2)(5.14)
An identification of the system is performed on the dataset of Figure 5.14 (left).
This data was gathered by fixing the wheels to an angle of φ = 53 °, and applying
the shown input to the rotor. Verification is done on a new dataset, with the
results shown on Figure 5.14 (right). For clarity a scaled version of the input
was added to both plots. The method used to perform this identification is the
prediction error method. The resulting parameters, for the chosen wheel angle,
are: Kp = 0.09, τ1 = 2.8, τ2 = 0.4.
5.6 Equivalent speed control 45
Figure 5.14: Left: Dataset used for identification; Right: Verification on another
dataset.
Although the gain of the system changes with the wheel angle, the PID-controller
is tuned at a well chosen angle of φ = 53 °. To motivate this choice, first of all note
that no control is performed for wheel angles less than 22.5 °. The upper limit of
the wheel angle is about 60 °. To have an efficient path, the wheel angle is high
most of the time, so most of the time is spent close to the wheel angle of 53 °. If
the PID-controller is tuned at too low of a wheel angle, the controller will be too
aggressive when the wheel angle is high. Taking all these arguments into account,
φ = 53 ° is a robust choice for all practical trajectories.
A PID-controller is composed of two zeros z1 and z2, and an integrator. By choos-
ing the two zeros at the location of the poles of the identified transfer function,
these will theoretically cancel out. The resulting dynamics should in theory repre-
sent those of an integrator. The degree of freedom that remains is the gain K. This
gain is tuned by hand to eliminate overshoot while keeping a fast settling time. By
collecting terms, the different constants of the PID-controller are calculated from
the following equality:
C(s) = P +I
s+Ds = K
(s− z1)(s− z2)s
(5.15)
The final controller design has the following parameters: P = 84, I = 26, D = 32.
5.6 Equivalent speed control 46
As mentioned in Section 4.3, we want to limit the maximal torque produced by the
rotor. This is done by limiting the rotor acceleration to a maximum of 11.2 rad/s2.
Because of differentiation, the noise on the speed measurements gets amplified
a lot. To reduce the influence of this noise, a low pass filter is applied on the
differentiation. This low pass filter has the following format:
Yk = αXk + (1− α)Yk−1 (5.16)
Where Yk and Xk represent the filter output and input respectively at sample time
k. A value of α = 0.2 was chosen. The time constant of this filter is around 250ms,
which is much faster than the dominant time constant of the system. The effect
of this filter on the derivative of the error is seen in Figure 5.15. The left figure
represents the output for a sinusoidal trajectory. The right figure is the output for
the optimal trajectory.
Figure 5.15: Left: Effect of filter for sinusoidal trajectory; Right: Effect of filter
for optimal trajectory.
5.6.4 Rotor control frequency
Based on the performed identification, the time constant for the input damping is
about 400 ms. As will be discussed in Section 6.4, the speed is only calculated once
every 50 ms. In that respect, it makes no sense to control the rotor acceleration at
a rate faster than 20 Hz.
PRACTICAL REALISATION 47
Chapter 6
Practical realisation
This chapter mainly focusses on some practical aspects of the implementation on
the real robot. The discussed subjects are not necessary to understand the used
control method, but provide some background information on how some concepts
were implemented in practice.
6.1 Feedback
To have an accurate control of the system, position feedback is wanted. Several
options are discussed below.
� Camera feedback
The main advantage of camera feedback is that its accuracy can be relatively
high. Problems arise for tracking in bigger spaces. This can be solved by
creating a camera system that moves in the room.
� Radio systems
Most radio systems have a very limited accuracy (GPS: 10m, Wifi/Blue-
tooth: 1-5m). Systems exist with an accuracy down to 10 cm [21]. With
some additional filtering it is possible to use this form of feedback. It was
chosen not to use this because of the high cost of the hardware.
� Encoder feedback
With the use of encoders, it is possible to calculate the trajectory of the
6.1 Feedback 48
robot. As this method is not an absolute feedback, there will be some drift
in the estimation of the position. This method is the most practical solution
to realize in the timespan of this dissertation, and therefore this will be the
used method.
There are basically three mechanisms that can create an error in the position
estimation of the robot:
� Slip
When the centrifugal force on the wheels becomes too large, it is possible
that the robot would slip. Since this force is proportional to V 2, and the
speed of the robot is very low, slip is not an issue.
� Drift angle
In addition to slip, there is also a phenomenon called drift angle. Because
of centrifugal forces on the wheels, there will be an angle difference between
the followed direction and the direction of the wheels. This is caused by
elasticity of the wheels. This kind of effect mainly has an influence for
vehicles with a high mass and elastic tyres, for instance like a car. The
wheels of the snakeboard are very stiff compared to the normal forces they
will experience. Therefore, this effect is negligible.
� Wheel misalignment
The wheels can be misaligned from the wanted direction. Because the stepper
motors have no absolute feedback, it is important to create a known reference
position for the wheels. This allows for very accurate knowledge of the
wheel angle. The used method to calibrate the stepper motor position is
discussed in Section 6.2. It is also important that the stepper motors don’t
miss steps, because this cannot be detected. Therefore a smooth floor is
preferred. Lastly, because of random variations in friction/elevation of the
floor, the direction of the wheel will show some variations with respect to
the wanted direction. Due to the random nature of these variations, it can
be assumed that the net effect will be limited.
6.2 Wheel calibration 49
6.2 Wheel calibration
In order to follow a trajectory accurately, the most important thing is to calibrate
the wheel position. Even a small error in wheel angle can lead to a large error in
the long term. There are two possible effects that lead to an error:
� φf = φb 6= 0: This means that the robot travels in a straight line, but there
is an error in the direction travelled with respect to the direction indicated
by the main frame of the board. The error is linear and can be quantified
as:
E =d
tanφf(6.1)
� φf 6= φb: Instead of travelling along a straight line, the robot now follows a
circle. The error now rises in a nonlinear way with the distance travelled.
In Figure 6.1, the result of these errors is shown. The ideal trajectory has a wheel
misalignment of 0° and follows the y-axis. Note that after a travelled distance of
10 meters the magnitude of the second type of error is more than 10 times larger.
Therefore, this error is the most important, and the focus will be on limiting this
effect.
Figure 6.1: Left: Trajectory error with equal offset on the wheels; Right: Trajec-
tory error with a different offset on the wheels.
6.2 Wheel calibration 50
To calibrate the wheels to the straight position, two things are needed:
� Fixed reference position: With stepper motors and relative encoders, it is im-
possible to know at which position the wheels are when the power is switched
on. Therefore there has to be a fixed reference position.
� Position of this reference: Once the wheels are at this reference position, it is
important to know how far this position deviates from the straight position
of the wheels (φ = 0).
6.2.1 Fixed reference
To create a reference position, an end stop was installed on the robot (Section
4.6). To use this end stop as a reference, the wheel base has to collide perfectly
with this end stop. The problem with this approach is that the collision with the
end stop can’t be detected. This is because the resolution of the encoders is less
than the distance travelled by moving the stepper motors over one microstep.
To solve this problem, first some theory about stepper motors is needed. A
schematic representation of a stepper motor is given in Figure 6.2 [22]. When
a certain phase is activated, this generates a magnetic field which wants to align
the rotor with this phase. To increase the accuracy of a stepper motor, microstep-
ping can be used. For example when both phases A and B are activated at the
same time, the magnetic field will be in the middle of these two phases. By chang-
ing the relative amplitude of the currents in phases A and B, the magnetic field
can be at any position in between.
When the wheel base collides with the end stop, the rotor can not move any further.
If the magnetic field moves further away from the rotor, the torque will first rise.
This will happen until there is one full step difference between the preference
position of the rotor and the rotor position itself (Figure 6.3). From this point
on, the aligning torque on the rotor will drop and reach zero when the difference
is equal to two steps. If the magnetic field moves further away than two steps,
the torque becomes negative. The rotor movement is now unstable and moves
in the other direction until a new equilibrium position is reached. This backlash
6.2 Wheel calibration 51
Figure 6.2: Working principle of a stepper motor.
that occurs has a magnitude of multiple microsteps, and is detectable with the
encoders. Also, the size of this backlash is always of the same magnitude, and
thus the new equilibrium position after backlashing is a fixed position.
Figure 6.3: Normalized torque of a stepper motor as a function of the angular
deviation (in steps) from the preference position.
The method to reach this fixed reference position is summarized as follows. First
6.2 Wheel calibration 52
the stepper motor moves quickly until no wheel movement is detected for multiple
microsteps (collision has occurred). In the next phase, the steps are taken at a
much slower rate. This is because when this backlash occurs, there is a finite
settling time, so the movement is not detected instantaneously. Any steps taken
between the onset of the backlash and the actual detection of this backlash will
result in a deviation from the fixed reference.
6.2.2 Angle to straighten wheels
After determining the reference position, the wheels can be placed approximately
straight in a visual way (while keeping track of the needed amount of microsteps).
If both wheels have the same angle, an error of the first type (Figure 6.1) will
occur. This error can not be detected by encoders because all four wheels will
travel the same distance. What can be detected is an angle difference between
front and back wheels. This will lead to different readings on the left and the right
encoder. Using this information, the wheels can be put into the same orientation.
When this is achieved, only the first type of error will remain. As was discussed
earlier, this error is less important.
In what’s next, the assumption is made that the front wheels are perfectly straight.
When the back wheels are not perfectly straight, the axes of the wheels will travel
in a circle with radius Rf and Rb respectively. This is shown in Figure 6.4. The
distance between the wheels of the same wheel platform measures 2L1 = 340 mm.
This means that the back wheels will travel in a curve with radius r1 = (Rb −170) mm and r2 = (Rb + 170) mm respectively. After an entire circle is travelled,
the difference in travelled distance between both of the back wheels is equal to:
∆D = 2π(r2 − r1)= 4πL1
(6.2)
After an arbitrary distance, the encoder on the outer wheel will have registered
a greater amount of encoder pulses than the inner wheel: N2 > N1. Ni denotes
the amount of encoder pulses on encoder i. Since the amount of encoder pulses
counted by an encoder is proportional to the distance travelled by the wheel:
6.2 Wheel calibration 53
N2 −N1
N1
=2π(r2 − r1)
2πr1
⇒ Rb =L1(N1 +N2)
N2 −N1
(6.3)
Now we can use some basic trigonometry to determine φb, which is a measure of
the misalignment:
φb = sin−1 2L
Rb
(6.4)
The total length of the snakeboard, 2L, is a fixed distance which measures 720 mm.
The stepper motor does not allow to correct φb exactly. Only discrete steps of1.8◦
16= 0.1125◦ can be taken. The amount of steps that best matches φb can be
found by:
N = round
[φb
0.1125
](6.5)
Figure 6.4: Calibration parameters.
Since N1 and N2 are integer numbers, the accuracy of this method is limited for
short distances. The next step in this calibration procedure is to calculate how
much distance has to be travelled to detect a misalignment of 1 microstep. For this
misalignment, the travelled path has a radius of Rb = 2Lsinφb
= 720mmsin 0.1125◦
= 366.7 m.
6.3 Distance calculation 54
The optical encoders have a resolution of 0.69 mm. As was stated before, the
difference in travelled distance for both wheels will be 4πL1 after one full circle.
After travelling a distance d, this difference is equal to:
∆D =d
2πRb
· 4πL1 (6.6)
For ∆D to be equal to the encoder resolution of 0.69 mm, a distance of d = 0.75 m
needs to be travelled. If both encoders read the same value after a distance of
more than 75 cm, the calibration is accurate up to 1 microstep.
6.3 Distance calculation
For the chosen control method, an accurate feedback of the distance travelled by
the center of mass is necessary. The first step is to determine how many encoders
should be used, and where they should be placed. The easiest solution would be to
add a fifth wheel to the robot, under the center of mass, and thus directly measure
the distance travelled. To limit the amount of mechanical changes to the robot,
this option is not chosen.
Because we control the angle of the wheel platforms (φ), and thus know its value,
in theory it is possible to work with one encoder on one of the wheels. The velocity
relation can then be derived from Figure 6.5:
V2 = V + θ ×L+ (φ+ θ)×L1 (6.7)
Figure 6.5: Kinematic encoder model of the snakeboard.
6.3 Distance calculation 55
Note that θ and φ are vectors along the z-axis (rotation vectors). L is the vector
pointing from the center of mass to the rotation axis of the wheel platform. L1 is
the vector pointing from this axis to the center point of the wheel. For an accurate
measurement of V , the number of parameters in this equation should be as low as
possible. One of the main concerns is that the magnitude of L1 is hard to reliably
measure, and may even change over time. This is because we do not know which
part of the wheel will be in contact with the ground (Figure 6.6).
Figure 6.6: Variation of contact point with the ground.
The influence of this effect can be minimized by using an encoder on both front
wheels. From the geometry of the problem (Figure 6.5), it is known that Vf makes
an angle φ with respect to V . Assuming symmetry, Vf = V1+V22
. This gives the
following result:
V =V1 + V2
2cosφ (6.8)
The only assumptions made in this equation are that φ is perfectly known, and
that both wheels behave in a symmetrical way around the rotation center of the
wheel platform. There is no need to know L1 exactly, as long as both wheels have
the same behaviour.
Extra information that would be gathered by working with four encoders is rel-
atively limited. Consider for example a situation where there is an equal offset
on both wheel angles. The robot will follow a straight line and all encoders will
read the same distance. But the direction of this straight line is not the expected
direction. There is no way to detect this kind of phenomenon, so even with four
encoders the accuracy still depends mainly on the knowledge of φ.
6.3 Distance calculation 56
Now that the speed of the center of mass is known, the distance travelled can be
calculated. This distance will be noted as d. It is calculated as follows:
d =
∫ t
t0
V dt =
∫ t
t0
V1 + V22
cosφ dt (6.9)
The calculation of a cosine alone already takes about 100µs on the used micro-
controller. Because of this limitation, recalculating the distance travelled on every
encoder pulse is not practical. Instead, calculation is split into multiple intervals.
The distance travelled after interval k is equal to:
dk+1 ≈ dk +D1 +D2
2cosφavg (6.10)
Where D1 and D2 are the distances travelled in the current interval by wheels 1
and 2 respectively. This approximation is only valid if cosφ does not change a lot
in the span of one interval. In Figure 6.7, the error of this approach is estimated.
This depends on the current angle φ and on the amount of microsteps the wheels
moved during the calculation interval. To have a worst case error of below 1.0%, a
maximum of 6 microsteps can be taken in one interval. For an average trajectory,
the maximum stepping speed is about 1100 microsteps per second. Therefore, the
distance should be calculated atleast about 200 times per second. Depending on
the wanted accuracy, this number can be chosen higher or lower.
Figure 6.7: Error made by estimating φavg as φ as a function of the current wheel
angle and the amount of microsteps taken in the calculation interval.
6.4 Velocity calculation 57
6.4 Velocity calculation
The velocity can be estimated from the distance measurements discussed above:
V = d2−d1t2−t1 , where di and ti represent the distance and time of two measurement
points. Due to the discrete nature of the encoders, there will always be some un-
certainty on the velocity. For a bigger time difference t2 − t1, the influence of this
discretization in distance will be less. On the other side, because of the longer av-
eraging time, high frequency variations in the speed will be filtered out. Therefore,
a good balance between discretization error and averaging time is needed.
The error is the largest when the average velocity of the wheels is the lowest (less
encoder pulses to average over the measurement interval). Therefore, the first step
is to check where this worst case scenario arises. Assuming that the robot starts
with a velocity V0 in the straight part of the trajectory, the speed of the wheels
will change depending on the current angle on the wheels. Because part of the
kinetic energy goes into the rotation, the speed of the center of mass will drop,
and so does the wheel velocity. A second effect is that because of the angle of the
wheels, the wheels will have to spin faster to reach a certain velocity at the center
of mass. The net effect of these two phenomena is summarized in the following
equation:
Vf = V01√
1 + J tanφ2
ml2cosφ
(6.11)
In this equation, Vf is the average wheel velocity that is reached at a certain wheel
angle φ, if no kinetic energy was lost during the rotation. The factor√
1 + J tanφ2
ml2
describes the effect of part of the kinetic energy going into the rotation (Section
5.3). The factor cosφ comes from (6.8) and converts the velocity of the center of
mass to the average wheel velocity. Equation (6.11) can be rewritten as:
Vf = V01√
cosφ2 + Jml2
sinφ2
(6.12)
Since the factor Jml2
is smaller than one, the velocity of the wheels will always be
faster when turning. From this it follows that the worst case scenario occurs when
6.4 Velocity calculation 58
following a straight line. On a straight line, φ is zero, and thus from Equation
(6.10):
dk+1 = dk +D1 +D2
2(6.13)
Where Di is equal to the amount of encoder pulses measured by encoder i mul-
tiplied by the encoder resolution. If the distance travelled in a certain interval is
not exactly a multiple of the encoder resolution, measurements of the velocity can
vary, even if the velocity is constant. For example if both encoders read on average
100.1 pulses per second, each encoder has a 10% chance of reading 101 pulses after
a second. In the worst case scenario, both encoders will read an extra pulse. The
effective amount of pulses measured in one second can vary between 100 and 102.
This means that the peak to peak error, for a constant speed, is equal to:
EPTP =2
n· 100 (6.14)
Where n is the total amount of encoder pulses of both encoders in a time interval
t2− t1. EPTP represents the peak to peak error, as a percentage of the velocity. To
reach a peak to peak error of 5%, the minimum number of encoder pulses needed
per time interval is 40. At a velocity of 27 cm/s, the needed sampling frequency is
about 20 Hz. This gives an accuracy of V = 27±0.675 cm/s. The accuracy will be
better when the robot is not following a straight line. When the robot is turning,
the speed of the wheels is higher, and thus n is higher. This leads to a lower peak
to peak error.
RESULTS 59
Chapter 7
Results
In this chapter the results of the implemented controller are analysed. This is done
by performing experiments on the practical setup discussed in Chapter 4. To avoid
running into constraints of rotor speed, symmetrical trajectories around a straight
line are used for most experiments. Because of the lack of absolute feedback, the
focus of this chapter is on verifying the performance of the speed controller. Also
the influence of changing the sinusoidal variations around the straight line will
be examined. To finish, the results on the real robot are compared with results
gathered from a simulation.
7.1 Controller performance
This section discusses the performance of the designed PID-controller versus a P
and PI-controller that were tuned by hand. This will be done for the sinusoidal
trajectory y = 0.08(cos (2.4πx) − 1), shown in Figure 7.1. The robot starts from
zero speed with a setpoint of Veq = 0.27 m/s. After 30 seconds the setpoint is
changed to zero. The used parameters for the controller are shown in Table 7.1.
7.1 Controller performance 60
Figure 7.1: Followed path for comparison of controllers.
Table 7.1: Used parameters for the controllers.
Controller P I D
P 140
PI 98 20
PID 84 26 32
The results for a simple P-controller are shown in Figure 7.2. The first graph
represents the actual speed of the robot, while the second graph represents the
equivalent speed as discussed in Section 5.3. The black dashed line represents the
setpoint. The different regions discussed in Section 5.6.2 are drawn in different
colors. Because of friction, there will be a steady state error. This means that the
average equivalent speed will always be below the setpoint. To solve this problem,
a PI-controller is used.
7.1 Controller performance 61
Figure 7.2: Top: Real speed of the robot; Bottom: Equivalent speed (P-controller).
In Figure 7.3, the results with the PI-controller are presented. We see that the
average value of Veq is equal to the setpoint. The influence of disturbances is still
rather large. This is improved upon by our final PID-controller.
Figure 7.3: Top: Real speed of the robot; Bottom: Equivalent speed (PI-
controller).
Although the chosen PID-controller has a higher settling time (Figure 7.4), the
error on Veq has improved a lot. The reason for this higher settling time is that the
controller is designed such that it not only works for sinusoidal variations around
a trajectory, but also for other trajectories like the optimal trajectory discussed in
Section 5.5.
7.1 Controller performance 62
Figure 7.4: Top: Real speed of the robot; Bottom: Equivalent speed (PID-
controller).
At the end of the trajectory, the last two controllers seem to perform worse when
trying to reach Veq = 0. This can be explained by looking at the input to the
system, shown in Figures 7.5 to 7.7. For both the PI and PID-controller, the rotor
velocity hits its upper limit before Veq reaches zero. At this point, the rotor is
unable to decelerate the robot. The robot is now only slowed down by rolling
resistance.
Also note that due to the relatively high speed of the robot, the rotor speed
compensation (cyan) only has a limited effect. Better examples will be discussed in
Section 7.3. This underlines the importance of planning a good path and choosing
High-Torque DC Motor Driver w/t PWM Interface [RMCS-230X]
Key Features Smooth and quiet operation at all speeds
Zero-Backlash DC Servo Motor Performance
Input supply voltage from 12VDc to 50VDC
Selectable Gain Multiplier
Selectable Error Limit
Pots for tuning of Speed, Back Emf and Dampness.
LED indication for power and error states
Description Thank you for purchasing RMCS-2302 50V 20A drive/controller. The Speed and Direction of the DC motor
are controlled by PWM and DIRECTION digital interface.
Technical Specifications Specification Min Max Units Comments
Supply Voltage 12 50 Volts DC Between +Ve and GND Current 0.5 20 Amps Current Limit Pot DIR voltages 0 5 Volts DC Between + and – input pins Ambient Temp. 0 70 Celsius Humidity 0 95% Non condensing PWM Frequency 1 20 kHz
High-Torque DC Motor Driver w/t PWM Interface [RMCS-230X]
Power and Motor Terminal Assignments Terminal No. Terminal Name Description
Terminal 1 GND Power Ground or Power –Ve Terminal 2 +V Power +Ve (12VDC to 50VDC Max wrt. GND) Terminal 3 Motor 1 DC motor connection 1 Terminal 4 Motor 2 DC motor connection 2
INPUT Terminal Assignments Terminal No. Terminal Name Description
Terminal 1 PWM+ PWM signal input Terminal 2 PWM- GND Terminal 3 DIR+ 0/5V input for altering DIR Terminal 4 DIR- GND
Potentiometer settings (From left of board)
Pot No. Pot Name Description
Pot 1 Proportional Gain Proportionally increase or decrease the speed gain Pot 2 Integral Gain To compensate for load using back EMF setting Pot 3 Differential Gain To reduce or increase the dampness of the PWM and direction input
Power Supply Selection A high-torque DC motor requires high current during startup and during high load or irregular load
conditions. The general rule of thumb to make sure your power supply is adequate for a DC motor is to
make sure it can supply the maximum current required by the motor during stall condition. It is also good
practice to have sufficient low –ESR decoupling capacitors on the output of the supply before you connect
it to a DC motor drive. This is to make sure that the motor driver does not reset or suffer from variations
in speed due to an insufficient or unregulated supply.
ENCODER DRAWINGS 86
Appendix B
Encoder drawings
ENCODER DRAWINGS 87
CONNECTION TABLE 88
Appendix C
Connection table
Table C.1: Connection table for the Arduino Mega controller
Pin Function Description
2 E0CHA Encoder 0 Channel A output
3 E1CHA Encoder 1 Channel A output
4 E0CHB Encoder 0 Channel B output
5 E1CHB Encoder 1 Channel B output
7 PWMDC PWM input for DC motor driver
8 DIRDC Direction input for DC motor driver
11 CE CE pin of the nRF24L01+ module
12 CS NRF Chip select of the nRF24L01+ module
16 E2CHB Encoder 2 Channel B output
18 E2CHA Encoder 2 Channel A output
28 NXT2 Next step input for stepper motor driver 2
30 DIR2 Direction choice for stepper motor driver 2
32 SS2 Slave select for stepper motor driver 2
35 NXT3 Next step input for stepper motor driver 3
36 DIR3 Direction choice for stepper motor driver 3
38 SS3 Slave select for motor stepper driver 3
40 SoftMISO Master In Slave Out for both stepper motor drivers
42 SoftMOSI Master Out Slave In for both stepper motor drivers
44 SoftCLK SPI Clock for both stepper motor drivers
51 MOSI Master Out Slave In for the nRF24L01+ module
50 MISO Master In Slave Out for the nRF24L01+ module
52 SCK SPI Clock for the nRF24L01+ module
USER MANUAL 89
Appendix D
User manual
This section will give a brief summary of how to get started with the snakeboard
robot. The robot is powered by two 12V batteries in series which can be switched
on and off with a physical switch on the robot. These power both the motor drivers
and the Arduino Mega controller. When the power is turned on, the program on
the Arduino starts running automatically.
Before continuing, make sure that the correct software is installed. The software
needed to open the Arduino files and to upload them to the Arduino Mega 2560
controller can be downloaded for free from the official website of Arduino. The
extra libraries that need to be installed can be found on the attached disc which is
glued on the final page of this dissertation. To upload programs from the computer
to the Arduino microcontroller a USB A/B cable is needed.
Aside from the Arduino software, the main part of the other files on the attached
disc are Matlab files. Only functions which are included in the standard installation
are used.
The Arduino program to follow a certain trajectory is called Thesis FullProgram.ino.
The trajectory is represented by a combination of two arrays. One contains the
travelled distance along the path, the other the respective wheel angle at that
distance. In order to speed up some of the calculations, the cosine of the wheel
angle and the conversion factor of Equation (5.8) are added as a third and a fourth
array. A few paths are already available in the program. The wanted path can be
USER MANUAL 90
uncommented before compiling.
Extra trajectories can be added with the use of the Matlab script called: Gen-
erateTrajectory.m. This program converts a parametric expression of the path to
the four arrays explained above and saves them to a text file called path.txt. This
file also includes the declaration of the arrays such that its content can simply
be copied into the Arduino program Thesis FullProgram.ino. An example of how
to generate special trajectories without a parametric representation is found in
OptimalPath.m.
To be able to receive data via the wireless connection, a second Arduino board
is needed. The program that needs to be uploaded to this board is named Re-
ceiver.ino. This board has to be connected to the receiving computer, with the
serial monitor open. As soon as the robot starts sending data, this data will be
printed into the console. An example output is given in Figure D.1.
Figure D.1: Example output of the serial monitor
The output format is as follows:
<Time (ms)> <integral of error on Veq> <encoder 0 count> <encoder 1 count>
<DC motor acceleration (rpm/7.5ms)> <DC motor speed (rpm)> <φ (microsteps)>
USER MANUAL 91
<V (m/s)> <Veq/V >
This data can be saved to a text file and loaded with the Matlab script plotFeed-
back.m to make clear visual graphs.
BIBLIOGRAPHY 92
Bibliography
[1] Jim Ostrowski et al., Nonholonomic Mechanics and Locomotion: The Snake-
board Example, Jim Ostrowski et al., IEEE, 1994.
[2] Jonathan Jamieson, Dynamics and Simulation of a Snakeboard’s Motion, Uni-
versity of Strathclyde Glasgow, 2012.
[3] A. R. Asnafi - M. Mahzoon, Some flower-like gaits in the snakeboards locomo-
tion, Springer Science+Business Media, 2006.
[4] A. Asnafi and M. Mahzoon, Some New Robust Pseudo Forward and Rotation
Gaits for the Snakeboard, Sharif University of Technology, Scientia Iranica, Vol.
15, No. 5, pp 644-651, October 2008.
[5] A.S. Kuleshov, Further Development of the Mathematical Model of a Snake-
board, Lomonosov Moscow State University, 2007.
[6] Tony Dear et al, Snakeboard motion planning with local trajectory information,
California, 2013.
[7] Tony Dear et al, Snakeboard Motion Planning with Viscous Friction and Skid-
ding, IEEE, 2015.
[8] Stefano Iannitti et al, Minimum Control-Switch Motions for the Snakeboard: A
Case Study in Kinematically Controllable Underactuated Systems, IEEE, 2004.
[9] Francesco Bullo and Andrew D. Lewis, Kinematic controllability and motion
planning for the snakeboard, IEEE, 2002.
[10] Bharat Mohan Redrouthu et al, Tyre modelling for rolling resistance (Mas-
ter’s thesis), Chalmers University Of Technology 2014.
BIBLIOGRAPHY 93
[11] Sebastian Verhelst, Autotechniek - 2.4.1 Rolweerstand , University Of Ghent,
2014-2015.
[12] Simon Houwen, Ontwerp en realisatie van een snakeboard-robot (Master’s the-
sis), Howest, 2010-2011.
[13] AMIS 30421 Micro-Stepping Stepper Motor Bridge Controller, http://www.
onsemi.com/pub_link/Collateral/AMIS-30421-D.PDF.
[14] Setting PWM frequency on the Arduino, http://playground.arduino.cc/