You are on page 1of 55

Implementation of a Skating

Motion on a Spider Robot


Bachelor Thesis
June 27, 2012

Supervised by:
Prof. Dr. Roland Y. Siegwart
Mark Hopflinger
Marco Hutter

Authors:
Max Engensperger
Tobias Peteler

Abstract
This paper covers the derivation of a skating motion on a position controlled
robot using passive wheels while sustaining ground contact.
The work is based on the robot ARAC which is an eight legged walking robot
developed within a focus project at the ETH Zurich. To allow skating locomotion, wheels were implemented on each leg.
The basic assumption of the approach to derive the skating motion is to predefine a velocity in the shoulder and then observe the wheels possible movements.
For the wheels no slip property was assumed, leading to a defined possible
moving direction. To design the trajectories the velocity of the skate in rolling
direction was controlled, yielding to a blurred trajectories shaped like contorted
ellipses.

Acknowledgment
We would like to thank Prof. Dr. Siegwart for offering the thesis and Mark
Hopflinger and Marco Hutter for consultation and supervision during this thesis.
Furthermore we thank all members of the Focus Project ARAC for supporting
us and giving us a solid framework to work with.

III

Contents
1 Introduction
1.1 Motivation . . .
1.2 Background . . .
1.3 Timetable . . . .
1.4 Report Structure

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

2 Concept Process
2.1 The ARAC Robot . . . . . . . . . . . . . . . . .
2.2 Concept Determination . . . . . . . . . . . . . .
2.3 Evaluation Process . . . . . . . . . . . . . . . . .
2.4 Approaches of other Projects . . . . . . . . . . .
2.4.1 Skating with Lifting the Skates . . . . . .
2.4.2 Skating with Sustaining Ground Contact
2.4.3 Selected Method of Skating . . . . . . . .
2.5 Basic Information on the Project . . . . . . . . .
2.5.1 Basic Assumptions . . . . . . . . . . . . .
2.5.2 Conventions . . . . . . . . . . . . . . . . .

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

1
1
1
1
2

.
.
.
.
.
.
.
.
.
.

3
3
4
6
7
7
7
8
8
8
9

3 Deriving of the Skating Motion


3.1 Principles of Passive Skates . . . .
3.1.1 Properties of Perfect Skates
3.1.2 Skating vs Walking . . . . .
3.2 Restrictive Factors . . . . . . . . .
3.2.1 Range of Motion . . . . . .
3.2.2 Range of Speed . . . . . . .
3.2.3 Skate Constraints . . . . . .
3.3 Deriving of the Trajectory . . . . .
3.3.1 The Equilibrium Line . . .
3.3.2 Factors of . . . . . . . . .
3.3.3 The Sector Approach . . .

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

11
11
11
12
13
13
13
13
13
14
15
16

4 Implementation of the Skating Motion


4.1 Program Structure . . . . . . . . .
4.2 Mechanical Design of the Skates .
4.2.1 Requirements . . . . . . . .
4.2.2 Components List . . . . . .
4.3 Integration on the Robot . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

18
18
20
20
20
21

IV

5 Results and Possible Further Development


5.1 Results of the Sector Approach . . . . . . .
5.1.1 Instruments for Analysis . . . . . . .
5.1.2 Influence of f actor . . . . . . . . . .
5.1.3 Influence of the Sector Factors . . .
5.1.4 Influence of vbody . . . . . . . . . . .
5.1.5 Evaluation of the Sector Approach .
5.2 Possible Further Development . . . . . . . .
5.2.1 Modification of the Approach . . . .
5.2.2 Enhancement of the Skating Motion
6 Conclusion

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

22
22
23
23
24
25
26
27
27
28
30

Appendix

35

A Time Table

36

B Evaluation

37

C Technical Drawing

38

D Parameter Values for Matlab Plots

39

E Matlab Code

40

VI

Abbreviations
ASL
CAD
DOF
ETHZ
ROM
ODE
XML
ZHAW

Autonomous Systems Lab


Computer Aided Design
Degree Of Freedom
Federal Institute of Technology Zurich
Range Of Motion
Open Dynamics Engine
Extensible Markup Language
Zurich University of Applied Science

Symbols

x, y, z

hip angle around z -axis


hip angle around x -axis
knee angle around x -axis
ankle angle around x -axis
initial angle of each skate around z -axis
coordinate system with z upwards and x in driving direction

VII

Introduction

1 Introduction
Walking robots have been for long a dynamic and fast developing field of mechatronics. This huge interest not only derives from the obvious fact that the usage
of legs resembles the way of movement of living animals, but also to its great
advantage while moving on a rough, unstructured surface. Due to the possibility to stand on single, well defined points a flexible operation area is achieved.
As a draw back, efficiency and speed are not the strongest qualities of walking
robots. When it comes to flat, even terrain, moving with wheels turns out to
be the faster, more reliable way of locomotion.

1.1 Motivation
To overcome the previously mentioned problematic a practical solution would
be to enable different ways of travelling for one robot, rolling and walking, to
adapted it to a changing environment in an easy way. In this bachelor thesis
this task is realized by implementing feet equipped with passive skates on a
walking robot, deriving a skating trajectory and do first steps into optimization
of this movement. One of the main reasons for this choice was that the robot
stays in the environment it is geared to. Therefore not the whole robot, but
only the feet had to be altered. For a detailed view on the selection process see
Chapter 2.3.

1.2 Background
This paper is based on the ARAC spider robot developed at the Autonomous
System Laboratory (ASL) of the Swiss Federal Institute of Technology Zurich
(ETHZ). It was built by a group of nine mechanical engineering students of
the ETHZ and two electrical engineering students of the Zurich University of
Applied Science (ZHAW) within a two term students project.
One of our tasks within the project was to design the standard feet of the
robot for walking on an even, flat surface. For our bachelor thesis we wanted
to develop more specialized feet to move on a different surface or to travel the
environment by another locomotion principle. Therefore we designed a flexible
plug connection to easily exchange the existing feet.

1.3 Timetable
Since there where only tree months and the work on the ARAC robot had to
be continued in parallel, an elaborated timetable had to be arranged. Starting
off with the rather loose idea of designing specialized feet, an rough concept

1.4 Report Structure

Introduction

had to be derived as soon as possible to have sufficient time for looking into
the existing research projects and for the elaboration. After gathering sufficient
background knowledge, the required software code had to be written and the
mechanical component had to be designed and manufactured to finally enable
the implementation on the ARAC robot. For detailed information see Appendix
A.

1.4 Report Structure


The report starts with covering the concept phase in which several possible
solutions for specialized feet are discussed and evaluated, leading to the decision to implement passive skates on the robot. After having a short look on
the existing projects dealing with the same topic, the basic assumptions and
conventions for the thesis are presented.
In the Chapter 3 Deriving of the Skating Motion the theory behind passive
skating with perfect skates is developed step by step from basics like the properties of perfect skates to the detailed decisions leading to the approach, which
was used to derive a skating trajectory.
The next Chapter 4 Implementation of the Skating Movement both the design of
the mechanical device and the development of the software code are explained.
Subsequently the results of the selected approach are discussed before the report is finished off with a short outlook, how the thesis could be developed in
further projects.

Concept Process

2 Concept Process
Skating was not the only potential concept that was considered for the thesis.
To judge the feasibility of each one, the initial position of the bachelor project
had to be defined. Subsequently the most promising concepts were evaluated,
leading to the decision to continue on the skating movement. Studies on papers
about existing projects gave inspiration and fundamental information to start
with the enhancement of the selected concept.

2.1 The ARAC Robot


To decide which concept is realizable, the characteristics of ARAC have to be
pointed out in view of the target of the thesis.
Since the idea of ARAC is to resemble the appearance of a spider, the robot is
equipped with eight long, thin legs fixed to a comparatively small body. In the
initial stance the robot has a diameter of about 600 mm. Each leg offers three
degrees of freedom and consists of three segments, of which the two last ones
are coupled by a cable pull. That way a great range of motion is enabled for the
legs, giving the opportunity to implement movements distinct to the existing
trajectories for walking.
Another important fact is that the motors controlling the first segment of the
legs are supported by parallel springs for gravity compensation, making the
robot geared for walking on the ground.
As a mechanical interface, a magnetic plug connection between the third segment and the foot could be used which means that without additional support
the mounting could not withstand a high drag force. Moreover a connection for
the integration of a sensor into the foot was available.
As an available software package, a motion simulation of the robot implemented
in MatODE (see Section 4.1) and a number of Matlab functions (see Section
4.1) could be taken from the focus project.

2.2 Concept Determination

Concept Process

2.2 Concept Determination


Several concepts for feet giving the robot the opportunity to reach new environments or studying new locomotion concepts were in mind. After reconsidering
the potential of different approaches their number could be reduced to the following promising options (see Figure 2.1).

Figure 2.1: Possible Concepts: (from left to right) climbing on a grid, brachiation on a girder,
walking on water and skating

Climbing on a Grid
This concept stays closest to the idea of ARAC to imitate a spider by enabling
the robot to move on a defined grid-like structure e.g. a concrete reinforcement.
Moreover it should be possible to change from walking on the floor to climbing
on the grid, which means that both environments could be traveled without
changing the feet would be necessary.
One possible design can be seen in Figure 2.2 which uses a hook made of glass
fiber. The main challenge would have been to detect the grid and the transition
from the floor to the grid.

Figure 2.2: Concept for a foot for climbing on a grid

Concept Process

2.2 Concept Determination

Brachiation on a Girder
The basic idea of this concept is to enable the robot to brachiate on a girder:
The robot is able to move its legs above its body such as in Figure 2.1, which
is additionally a position, in which the parallel springs almost generating no
torque in the joint. And since the robot only needs the parallel springs for
support when standing , in this concept the robot could move from a standing
position to a hanging position on a girder and then brachiate on it (see Figure
2.3). Like at climbing on a grid challenging topics would have been determining
the position and direction of the girder as well as defining the transition between
walking and brachiation.

(a) Concept for a foot for brachiation on a


girder

(b) A Spider brachiating on a stick1

Figure 2.3: Pictures for concept Brachiation on a girder

http://olegvolk.livejournal.com/657970.html

2.3 Evaluation Process

Concept Process

Walking on Water
For walking on water two different concepts were in mind:
The first would be imitating a water strider (see Figure 2.4 (a)2 ). To create
sufficient buoyancy styrofoam feet could be developed, while for actuation small
aligned panels could be mounted on the rear side of the feet. The focus would
have lied on controlling stability and maybe even float on wavy water. In
addition, the movement of a water strider could be imitated.
The second concept would be imitating a duck (see Figure 2.4 (b)3 ) and design passive feet that would open fan-shaped when moving backwards with the
feet and close when going forward to reduce resistance leading to a complex
mechanical design with regarding fluid dynamics. To create sufficient buoyancy
a polystyrene float could be placed under the body.

(a) Picture of a water strider (gerridae)


which was used as an inspiration for
walking on water

(b) Feet of a duck while


swimming: Left foot closed,
right one open

Figure 2.4

Skating
In this concept the robot travels a flat, unstructured surface by skating. Each
leg should be equipped with passive wheels on the feet. By moving the feet
in specific way thrust is induced. Designing the specialized feet and deriving a
possible trajectory are the emphases of this approach. The goal would be to
move faster on the floor than with legged locomotion.

2.3 Evaluation Process


The evaluation is shown in Appendix B. The concepts with highest rating in
each category are circled. Skating gave a great opportunity in developing a
trajectory analytically and therefore lead to theoretical work. Additionally, the
robot stays in the environment it is geared to, but still gets a new ability. So
it was decided to develop the skating motion for its feasibility and scientific
content.
2
3

http://commons.wikimedia.org/wiki/File:Water-strider-1.jpg
http://riskeverythingfearnothing.tumblr.com/post/3108659084/be-like-a-duck-calm-onthe-surface-but-always

Concept Process

2.4 Approaches of other Projects

2.4 Approaches of other Projects


There are basically conceptually different approaches with which passive wheels
can be used for acceleration. Those are explained in the following section.

2.4.1 Skating with Lifting the Skates


This motion is based on the movement a human skater does by lifting the legs
at the end of the movement and moving it to the front again. The advantage is
especially for a human, that it can dislocate its mass center and therefore get
more acceleration. Projects using this kind of motion can be found in Figure
2.5.

Figure 2.5: Projects using skating with lifting of skates: Human Skating Robot from Tokyo
Electron Tohoku Ltd., Tokyo (left), Skating Robot from GRASP Lab., Pennsylvania University (right)4

2.4.2 Skating with Sustaining Ground Contact


During this movement, all the feet stay on the floor. By making circle-like
motions, acceleration can be achieved. The advantage is that static stability is
guaranteed.
The Roller-Walker
The roller-walker5 (see Figure 2.6) which was developed at the Dept. of MechanoAerosp. Eng. at Tokyo Institute of Technology uses this kind of movement. It

4
5

See Bibliography [4] and [5]


See Bibliography [1],[2] and [3]

2.5 Basic Information on the Project

Concept Process

is a hybrid walking robot with four legs that can change its walking feet into
passive wheels and therefore skate.

Figure 2.6: The Roller-Walker from Dept.of Mechano-Aerosp.Eng., Tokyo Institute of Technology6

2.4.3 Selected Method of Skating


It was decided to further pursuit this way of movement for a couple of reasons:
First of all with eight legs on the floor a very stable system is attained.
Furthermore, lifting the legs would lead to a dislocation of the robots center of
mass. That means dynamic calculations have to be applied leading to a more
complex problem.
Aside from that, feet equipped with skating rolls turned out to be quite heavy.
When lifted up, high torques in the joints would be generated. That way the
motors could be overloaded.

2.5 Basic Information on the Project


After deciding that skating with sustaining ground contact should be pursued,
a framework for determining the skating motion was created by defining the
basic assumptions and the convention of the project.

2.5.1 Basic Assumptions


The basic idea of this project is to derive a two-dimensional skating trajectory

for a given velocity of the robot, called


v body . To simplify this task the wheels
should be assumed as perfect skates (see Section 3.1.1 for explanation).
For all the following considerations, skating into one defined direction, the driving direction, is assumed. Moreover only one pair of legs, L2 and R2, is used
6

http://www.techlemming.com/2007/09/04/roller-walker-a-robot-that-skates-or-walksdepending-on-the-situation/

Concept Process

2.5 Basic Information on the Project

for actuation. The theoretical concept was derived by observing the behavior
of L2. For driving the trajectory of L2 was applied on R2 mirror-wise to the
x-axis(see Figure 3.4).

Yet, the obtained theory remains valid for realizations with different
v body or
pairs of legs in use and can easily be adapted for a more flexible application.
The servomotors integrated in the robot work on a frequency of 400 Hz. Therefore, stepwise calculations on 50 Hz are carried out to compute the position of
the skate which is a trade-off between calculation power and accuracy.

2.5.2 Conventions
For defining the coordinate system of the body and the angles within the legs,
the same declaration as in the focus project was chosen. See Figure 2.8 for
the conventions on the body coordinates and Figure 2.7 for the declaration of
angels of the leg.
Since only skating in x-direction is assumed, this direction is in the following
referred to as the driving direction.

Figure 2.7: Angles describing the leg of the robot: The -angle describes the turning,
the -angle the lifting angle of the leg. The -angle and the -angle are
coupled and describe the angles in the knee and ankle

The initial position of the skates is based on the initial stance of the robot
defined within the focus project. If this position is engaged, all wheels have
to be parallel to the driving direction. To accomplish this, all skates had to
be turned by a specific angle , which equals the value of in initial position.
Furthermore in this stance the two directions for describing the movement of
the skates, the rolling- and the axial direction, are defined (see Figure 2.8).

2.5 Basic Information on the Project

Concept Process

Figure 2.8: Robot in inital stance with implemeted skates: Declaration of the legs with
body coordinates and driving direction (red arrow) are indicated

Figure 2.9: Conventions for Leg L2 with the angles = (t) and = (t = 0) =
const.. The driving direction (red arrow) and conventions for the skateare
indicated: axial direction(green arrow) and rolling direction (purple arrow)

10

Deriving of the Skating Motion

3 Deriving of the Skating Motion


The determination of the skating trajectory was started with some very basic
mechanical considerations to work out the particular behavior and rules this
motion follows.
Afterwards, the system limitations of the robot like the range of motion and
the range of speed of the skates were taken in account.
Knowing the limiting factors of the system and having the basic concepts in
mind, first possible trajectories have been designed.

3.1 Principles of Passive Skates


3.1.1 Properties of Perfect Skates
For the sake of simplicity in this paper only perfect skating should be considered.
By demanding infinite friction between the floor and the roll and a frictionless
mounting of the skate roll a one-directional no slip condition is generated: While
the wheel can move freely, without frictional resistance in rolling direction it
is completely locked in direction of the wheel axis, leading to zero slippage
perpendicular to the rolling direction (compare Figure 3.1):


cos() (t)
v = l(t)
l(t) cos

+ vbody cos
+ (t)
2


= 0 (3.1)

Figure 3.1: No slip condition for a skate

To reinforce the reliability of this assumption an elaborated selection of the


components for the mechanical device had to be accomplished (see Chapter 4.2
for details).

11

3.1 Principles of Passive Skates

Deriving of the Skating Motion

3.1.2 Skating vs Walking


Keeping in mind the properties of perfect skates, a fundamental discrepancy
from the physics of skating compared to walking arises:
While walking with perfect feet, the foot has to stay at one defined point as
long as it is on the floor to avoid slippage. If now a given constant velocity of
the main body in driving direction is introduced, a foot with ground contact
has to be moved exactly the same way back in body coordinates as the shoulder
is moving forward in world coordinates (see Figure 3.2 a)). This yields that one
defined target point has to be attained.
If one now introduces the same setting to a foot equipped with perfect skates,
a given velocity in the shoulder does not lead to one single target point, but to
a whole line of potential solutions (see Figure 3.2 b)).

Figure 3.2: Comparison of a walking to a skating movement with a given vbody (red
arrow):
a) Walking: To avoid slippage the foot has to move exactly contrary to
vbody (orange arrow) relative to the body
b) Skating: To compensate vbody the wheel can move to any position
on the rolling direction (green line) with the most direct solution is the
vperpendicular (yellow arrow)

This is a direct consequence of the properties of perfect skates covered previously. For such an ideal device, all points which are an element of the rolling
direction, are equivalently reachable. Hence, only fraction of the movement in
axial direction has to be carried out, while the distance in rolling direction can
be chosen arbitrarily. The shortest distance the skate has to cover is attained,
if its movement in rolling direction is chosen to be zero, as it can be seen high
lighted in Figure 3.2 b). This so called perpendicular velocity
v perpendicular
will later on be important for describing the skating trajectory.

12

Deriving of the Skating Motion

3.2 Restrictive Factors

3.2 Restrictive Factors


Until now, attention was only paid to an ideal case, which strongly simplifies
the reality. Since the thesis is based on a real robot, the restrictive factors of
the system itself and of its interaction with a test environment had to be taken
into account.

3.2.1 Range of Motion


The range of motion (ROM) describes all positions the foot can be moved to.
It is derived from length of the leg elements and obtainable angles between the
segments. Furthermore, it had to be guaranteed that the wheels stay in contact
to the ground at all times. With the geometry of the skating device (see Figure
4.3) and a security factor to avoid the wheel suspension touching the ground
a minimal radius of 110 mm and a maximal radius of 410 mm was determined.
For these values are independent from the chosen angle, the range of motion
emerges as an annular area with the shoulder as a center(compare Figure 3.3).
The minimum and maximum angle are defined by the bulges of the body panel
and therefore diver from leg to leg. For the leg L2 and R2 which were chosen
to carry out the skating movement, the angle ranges from the minimum of
-94 to the maximum of 46 degrees.

3.2.2 Range of Speed


Not all positions of the ROM are accessible at any time. Outgoing from one
point within the ROM only a defined area is reachable within one calculation
step, due to the maximum speed of the servo motors is limited to 3.4 degrees
per step leading to 170 degrees per second.

3.2.3 Skate Constraints


Knowing the limits of the robot, further restrictions had to be made concerning
the interaction with the ground. To satisfy the case of ideal skating, the noslip-condition should not be violated at any time.
The considerations in Chapter 3.1.1 imply that the axial direction is blocked
for the skate and therefore a forced movement of the skate perpendicular to the
rolling direction has to be avoided. The closer the desired motion gets to the
axial direction, the more presumable the skate constrain will be violated. Hence,
the fraction of the movement perpendicular to the rolling direction should be
minimized.

3.3 Deriving of the Trajectory


With the fundamental information attained in the previous chapters, a closer
look could be taken on the physics of skating. To design a closed trajectory
instruments for controlling the moving direction of the skate have to be determined. This is done by utilize the properties of the so called equilibrium line
and by introducing the lambda factors.

13

3.3 Deriving of the Trajectory

Deriving of the Skating Motion

3.3.1 The Equilibrium Line


The equilibrium line describes the set of all positions in which the orientation
of the skate is parallel to the driving direction. This is the case if the current
angle has the same value as the angle of the leg.
These positions generate one defined line going through the center of the shoulder and the standard position of the foot (see Figure 3.3).

Figure 3.3: Display of the influence of the equilibrium line for different positions of the
skate: With vskate in rolling direction (purple), decomposition of vskate in
x- and y-coordinate (pink), ROM (green)and equilibrium line (red)

The great importance of this line can be explained by observing the behavior
of a skate positioned once exactly on the line and once on the left respective
the right of it with a constant velocity of the shoulder.
Starting with the first case: By placing the wheel on the equilibrium line, a
stable state is obtained. To maintain the velocity of the shoulder, the skate
can stay passively on this position (see Figure 3.3 a)). To avoid this deadlockposition, the skate has to be pushed artificially over the line. This is only
possible in x-direction, since the skate constraint blocks the y-direction.
If the skate is now placed on the left of the equilibrium line, a given velocity in
the shoulder requires a relative movement in positive y-direction such the skate
has to move along the rolling direction (see 3.3 b)). Respective, placed on the
right side, the skate has to carry out a motion in negative y-direction (see 3.3
c)). The movement in positive respective negative y-direction is depending on
the total angular deflection measured from the equilibrium line, the so called
deflection angle. The bigger the absolute value of this parameter becomes, the
stronger is the tendency to move in y-direction.
Based on the previous considerations to accomplish a closed movement, the
trajectory has to be positioned around the equilibrium line. A possible solution
is a circular shaped trajectory that has to be travelled clockwise on the left side
and anticlockwise on the right side of the robot (see Figure 3.4).

14

Deriving of the Skating Motion

3.3 Deriving of the Trajectory

Figure 3.4: Robot with schematic trajectories for L2 and R2: L2 has to travel clockwise,
while R2 travels anticlockwise

3.3.2 Factors of
So far, it was explained how to configure the moving direction of the skate in
y-direction by simply remaining left or right of the equilibrium line. Yet an
instrument for switching between these two sides had to be derived. For this
purpose, considerations from Chapter 3.1.2 were picked up.

Using the concept of


v perpendicular , the factor f avourite can be derived by

the following equation with


a representing a unit vector in rolling direction
(compare Figure 3.6 a)).

f avorite =
v shoulder
a

(3.2)

In this case, the skate observed in shoulder coordinates is only moving in axial direction (see Figure 3.5). In the next step an additional factor gain is
introduced to push the skate in the positive or negative rolling direction.

Figure 3.5: Matlab-plot with constant gain = 1:


From the starting position the skate (turquoise line) always travels in axial direction. Upwards on the left, downwards on the right side of the equilibrium
line

If gain = 1, no movement in rolling directions is attained (compare Figure 3.6


b)).
For gain < 1 respective gain > 1 an absolute movement in negative respective
positive rolling direction is obtained (compare Figure 3.6 e) - f)).

15

3.3 Deriving of the Trajectory

Deriving of the Skating Motion

v skate = f avorite gain


a

(3.3)

This behavior increases the further the value is departed from one. By adjusting the value of gain the switching between the two sides of the equilibrium
line can be controlled.
For gain times f avourite equals the current rapidity, the total covered distance
of the skate can be calculated by summing up this product for the number of
calculation steps.

Figure 3.6: Illustration of gain : b) gain = 1; c) and d) gain < 1; e) and f) gain > 1

3.3.3 The Sector Approach


Having created a solid framework for the skating motion, a trajectory that respects all restricting factors could be derived. The basic idea of the following
approach is to create a step-less, circle-like trajectory by continuously altering
gain for each simulation-step. A maximal respectively minimal value for gain
is introduced, which should be maintained until an intersection point of the
trajectory with the equilibrium line is reached. After crossing the equilibrium
line, the gain is decreased respectively increased stepwise till the minimal respective maximal gain is attained. The maximal value of gain is determined
by a predefined parameter f actor , while the minimal value equals the reciprocal
of this factor.

16

Deriving of the Skating Motion

3.3 Deriving of the Trajectory

In Section 3.3.1 it was shown that for a straight forward movement for L2 a
closed trajectory in clockwise direction is needed. From this consideration and
the properties of gain it can be followed that the maximum of gain has to be
reached at the intersection further away from the joint of the shoulder, while
the minimal value must be reached at the one closer to the joint.
The number of simulation steps, in which the changeover between the maxima
is performed, can be chosen for each side of the equilibrium line separately.
Since the two sides were referred to as sector I for the left side, and sector II
for the right side, the number of steps are called sector factor I for the left,
and sector factor II for the right side. From this declaration, the name of the
approach is derived. (see Figure 3.7).
These two parameters combined with f actor represent the design parameters
of the trajectory.
For stability reasons, an area symmetric to the equilibrium line separating the
two sectors was introduces, in which the current value of gain is maintained.
This way, the skate is pushed artificially over the equilibrium line, avoiding
the possibility of getting stuck on a dead lock position of the equilibrium. To
minimize the impact of this manipulation on the trajectory, only small values
for the angle spanning this surface between 1 to 5 degrees was used (see Figure
3.7.

Figure 3.7: Illustration of Sector I and II (light green) for the leg L2 separated by an
area (yellow) in which gain stays constant.

17

Implementation of the Skating Motion

4 Implementation of the Skating


Motion
4.1 Program Structure
The program is structured in the following way (see Figure 4.1). The trajectory
is determined in steps at 50 Hz to get a trade-off between usability and calculation power. In each step, the loop calculating the next step is run through.
First, the angle and radius of the position is calculated in the coordinates of
the shoulder. Then, f avourite is calculated (see Appendix E). By regarding the
position at the moment, the according gain is inserted by the dynamic gain
changer. This is why the angle and radius was calculated. Then to obtain the
new position the calculation from position to is reversed, but with f avourite
times gain instead.
After determining the trajectory, it gets inserted into the simulation environment MatODE.

Figure 4.1: Flowchart of the Matlab structure

18

Implementation of the Skating Motion

4.1 Program Structure

MatODE
The free software MatODE, already used in the focus project ARAC, emerged
to be a helpful tool for visualizing the obtained trajectories. By observation of
the behavior of the model of the robo,t errors or violation of constraints could
be detected.
MatODE is a Matlab Interface developed at TU Delft by Wouter Caarls to
the Open Dynamics Engine (ODE) by Russel Smith. It can be used for force
based simulations, but problems occurred at regulating the simulations intern
controllers for each motor. Therefore, the programmed values are not accurate
in terms of force calculations. For further explanation see the report of the
focus project1 .
To implement the skating rolls, the XML-file, which contains the spider for the
simulation, had to be modified. The skates are modeled as flat cylinders (see
Figure 4.2). The friction coefficient between the skates and the floor is set to
2, which is a trade-off between the real and ideal skating properties. The code
can be seen in the Appendix E.

Figure 4.2: MatODE visualization of the robot with implemented wheels

See Bibliography [6]

19

4.2 Mechanical Design of the Skates

Implementation of the Skating Motion

4.2 Mechanical Design of the Skates


4.2.1 Requirements
For the feet with integrated skating wheels, the following characteristics are
required: First of all, the feet have to be compatible with the plug connection
of the robot. Second, a skating roll with high friction has to be integrated.
Furthermore, the rolling direction has to be adjusted for each leg to have all
rolls directed forward in the standard position of the robot.

4.2.2 Components List


The foot consists of the following parts:
A connection part between the foot and the robot
A mounting part between the connection and the skating roll
An axis to bear the skating roll
A skating roll with integrated ball bearings
Connection to the Robot
The interface to the robot shank was realized in the same way as in the focus
project. A square aluminum bar is integrated into the top of the mounting
part. On the tip of the bar, as well as in the mounting hole of the foot, a small
magnet is glued to prevent the claw from falling out.
Mounting part
The mounting part consists of 3D plotted ABS, allowing fast production of
rather complex parts. It was designed in a CAD program and then printed on
a 3D printer. Because of the demanded adjusted mounting angle, each part has
a different angle at the connection to the aluminum bar. The technical drawing
can be seen in Appendix C.
Axis
The axis is made of aluminum and has a diameter of 6.35 mm which is 0.25
inches fitting on the skating roll. On the edges, there is a groove for integrating
safety rings so the axis wont fall out.
Skating Roll
The chosen skating roll is especially used for high friction on the floor of gyms.
It has a diameter of 47 mm and a weight of 58 grams. There are ball bearings
integrated.

20

Implementation of the Skating Motion

4.3 Integration on the Robot

Figure 4.3: Skating foot: Assembled (left), single components (right)

4.3 Integration on the Robot


Using Matlab, a trajectory for moving forward was generated. That code had
to be converted from Matlab to a file suitable for the program that is running
on the spider, which was already working for the focus project. In the end, the
spider would not be controllable by a user input, but would run the file and
therefore move for a certain time. For further explanation see the focus project
report2

Figure 4.4: ARAC robot with skating feet assembled


2

see Bibliography [6]

21

Results and Possible Further Development

5 Results and Possible Further


Development
After the required program structure was implemented in Matlab, the calculations for the sector approach could be run for different values for gain as well
as for different combination of sector factors. From the derived observations of
the computed output, a number of instructive deductions could be made.
The input values of the Matlab plots shown in this section can be found in
Appendix D.

5.1 Results of the Sector Approach


For particular selection of the actuating variables blurred trajectories could be
determined.
As it can be seen in Figure 5.1, the movement of the skate stabilizes on the same
area for different starting positions of the skate. The main difference between
the behavior of the skate for different starting positions is the duration till the
movement is leveled off at the stable area.

Figure 5.1: Matlab plot with different starting positions of the skate: After a certain level
up phase, the movement stabilizes on the same area

This conclusion is only valid as long as the starting point is close to the equilibrium line, since for remote staring points the motion turns out to be unstable.

22

Results and Possible Further Development 5.1 Results of the Sector Approach
The reason for this restriction is that for starting positions far away from the
equilibrium line the skate already have moved to far away from the stable area
when the equilibrium line is crossed. Therefore, the alteration of gain is not
strong enough to push it towards a stable condition.
Another important aspect of the solution obtained by the sector approach is
that not a single, strictly defined trajectory is gained, but the movement of the
skate is blurred over an area. This observation results from an oscillation of the
amplitude and center point of the circle-like trajectory. This is not a part of
the level off process, for the oscillation persists even for long simulation times.
Until the end of the project, no explanation for this behavior could be found.

5.1.1 Instruments for Analysis


To compare the different results of the calculations to each other, characteristic
values describing the trajectory had to be defined. For that reason, the dimension of the trajectory, the minimal and maximal radius, as well as the minimal
and maximal angular deflection from the equilibrium line were supervised.
Since the movement is blurred over a certain area, the average for each value
over a number of circles had to be taken. Therefore, first, the characteristic
values for each travelled circle were read out, and afterwards, the mean was
taken over a number of 30 circles. To filter the influence of the level off process
in the beginning of the movement, the first thirty circles were not included in
the average calculation.
Additionally, the standard deviation for the maxima of the radius was calculated to judge the stability of the trajectory.

5.1.2 Influence of f actor


While working with different f actor , the following observations could be made:
Efficient values of f actor lie between 1,2 and 1,8: Below, the influence
of gain is not strong enough to control the skate. For higher values,
gain too strongly engages with the skating motion (see Section 3.3.2 for
correlation between gain and f actor ).
While increasing f actor , the size of the trajectory decreases (see Figure
5.2).
Bringing to mind the theoretical considerations (see Section 3.3.2), this behavior
can be comprehended: The higher f actor is chosen, the higher respectively
smaller gets the maximal respective minimal value of gain . Considering Figure
3.6, a higher maxima for gain generate a greater overall movement of the skate
in shoulder coordinates, meaning that the skate is pushed faster back to the
equilibrium line.

23

5.1 Results of the Sector Approach Results and Possible Further Development

Figure 5.2: Matlab plots for different f actor : By increasing of F actor smaller trajectory are
gained.

5.1.3 Influence of the Sector Factors


Compared to f actor , the influence of the sector factors are not as intuitive. By
applying different combinations of factors these correlations could be derived:
To get a stable trajectory for leg L2 both sector factors had to be close to
each other, while the value for the second sector had to be smaller than
the one for the first sector (sector factor II between 0,65 and 0,93 of sector
factor I for stable results)
The closer sector factor II gets to sector factor I, the bigger but more
unstable gets the trajectory (see Figure 5.3)
For combinations with high values, the diameter of the trajectory increases (see Figure 5.4)
Like with f actor this behavior can be explained by the theoretical considerations. The bigger the factors are chosen, the more calculation steps are needed
to change gain from the minimal value to the maximal value or the other way
around. This means that the changeover is less rapid and the pushing process
back to the equilibrium line less firmly. Hence, the skate stays longer in one sector, meaning a longer distance in radial direction is traveled till the equilibrium
line is reached.

24

Results and Possible Further Development 5.1 Results of the Sector Approach

Figure 5.3: Matlab plots for different sector factor II: the size of the trajectory increases the
closer sector factor II gets to sector factor I

Figure 5.4: Matlab plots for different combinations of sector factors


with sector factor II = sector factor I * 0.9: Higher sector factor combinations
generate bigger trajectories

5.1.4 Influence of vbody


Concerning the influence of the predefined vbody the following behavior was
observable:
The higher vbody is forced, the greater gets the diameter of the trajectory
and the more the center of the trajectory moves away from the shoulder

25

5.1 Results of the Sector Approach Results and Possible Further Development
(see Figure 5.5). This can be explained using Figure 3.6: For a higher
vbody with the same gain , a higher overall vskate in shoulder coordinates
is generated, which means the skate has to travel further in the same
amount of time, leading to a greater trajectory.
It is possible to derive trajectories for high velocities (see 5.6), although
the trajectories become increasingly blurred for velocities over 0,15 m/s.
The reason for this behavior can be found within the stepwise calculation
process: For high velocities, the number of simulation steps per circle
decreases, leading to increasing discontinuities between the single steps
and hence to greater deviations from the actual trajectory.

Figure 5.5: Matlab plots for different vbody : The faster the shoulder is forced, the more the
leg has to move.

Figure 5.6: Matlab plots for high predefined vbody

5.1.5 Evaluation of the Sector Approach


On the one side the sector approach showed to be an interesting and instructive
procedure, for affirmation on several aspects of the theoretical like the behavior

26

Results and Possible Further Development 5.2 Possible Further Development


of gain could be obtained. On the other side there are severe disadvantages
speaking against this approach:
The derived trajectories are not strictly defined, making it impossible to
describe the outcome mathematically
The impact of the parameter used for designing the trajectory is not
intuitive, meaning that there is no identifiable strong relationship between
the input and the calculated trajectory
In most cases, the derived trajectory turned out to be rather small, which
means the available space of the ROM could rarely be fully exploited.
Only a defined area can be used as a starting position for the simulation.
If the skate is placed to far away from the equilibrium line, no stable
solution is obtained.

5.2 Possible Further Development


5.2.1 Modification of the Approach
To gain a reliable and useful control method, the problems mentioned in Section
5.1.5 have to be solved. For a further development there are two imaginable
kind of approaches to meet this challenges.
Approach using gain
Like in the sector approach in this approach gain is continued to be used as a
controlling instrument for the trajectory. In contrast to that, its value would
not oscillate between two predefined values, but should depend on the current
position of the skate.
One possibility could be to define the modification of gain as a function of the
distance to the shoulder. For the left side of the equilibrium line this means, that
the greater the radius of the skate gets, the stronger gain has to be increased
and other way around for the right side.
That way, the closer the skate gets to the boundaries of the ROM, the stronger it
is pushed to the other side of the equilibrium line, where the radius is decreasing
respective increasing again. This leads to a departing of the skate from the
limitations of the ROM.
Approach using contorted Ellipses
As can be seen in Figures 5.3, 5.4 and 5.2 the form of the trajectory is similar
to a contorted ellipse.
A possible approach would be to simply predefine a trajectory with such a shape
and observe the enforced movement of the body similar to the proceeding in the
project RollerWalker (see Section 2.4.2). With this approach, the shape of the
trajectory can be selected directly, giving the opportunity to take full advantage

27

5.2 Possible Further Development Results and Possible Further Development


of the available ROM. First steps into the development of this approach were
made. Starting with the parametric form in canonical position:
x(t) = a cos(t) + c

(5.1)

y(t) = b sin(t) + d

(5.2)

The parameters a and b define the shape and c and d the center point of the
ellipse. Additionally, a mapping relation is introduced to contort the ellipse:
x(t) = a cos(t) + c tan( b sin(t))

(5.3)

For a sophisticated selection of the parameters, a trajectory can be obtained,


that is feasible regarding the skating constraints (see Figure 5.7). The next
step would be to calculate the resulting vbody and enhance it by optimizing the
designing parameters.

Figure 5.7: Matlab plot of a predefined trajectory in shape of a contorted ellipses

5.2.2 Enhancement of the Skating Motion


Apart from altering the approach for deriving the skating trajectory, an enhancement of the skating motion by changing some aspects of the basic assumptions could also be considered for a further development on the topic of
passive skating.
Skating with two Pairs of Legs for Actuation
While working with MatODE simulation it could be observed, that the motion
of the skate is not accelerating the body for every position on the trajectory
in equal measure. When the skate is on the equilibrium line there is no actual power transmission for in this case the rolling direction equals the driving
direction. In contrast, the power transmission is maximal when the maximal
deflection from the equilibrium line is reached. In this position, gain equals
one and the skate is forced in axial direction. This generates a pulsating acceleration leading to a varying velocity.
Using two pairs of legs for actuation, the acceleration of the robot could be

28

Results and Possible Further Development 5.2 Possible Further Development


carried out more steady, leading to a less fluctuating velocity. By introducing a phase difference between the trajectories of the pairs at least one pair is
transferring power at any time (see Figure 5.8).

Figure 5.8: Skating with the usage of two pairs of legs (L2, R2, L3, R3) for actuation:
Trajectories separated into parts with great power transmission (dark green) and
small power transmission (light green)

Skating with a Distinct Driving Direction


For all consideration in this thesis one defined driving direction was used. Another interesting approach would be to analyze the shape and position of the

trajectory in a function of the magnitude and direction of a predefined


v body .
Recalling the line of thoughts in Section 3.3.1 it would be due that the equilibrium line and therefore the trajectory would be rotated by the same angle as

v body .

29

Conclusion

6 Conclusion
In this thesis, a skating motion with passive wheels under sustaining ground
contact is discussed. The basic idea was to predefine a velocity of the robot
and to analyze the resulting motion the skate is forced in. Since the wheels are
modeled as perfect skates, the possible movement is strongly restricted by the
constraint for perfect skates, which forbids movement in axial direction.
By theoretical considerations on this topic, the fundamental influence of the
position of the skate in the ROM on its possible movement direction could be
discovered. Especially the equilibrium line on which the skate is always pointing in the driving direction emerged to be of great importance.
Applying the properties of perfect skates, instruments for controlling the movement were obtained. Using these control factors circle-like trajectories could be
derived.
By evaluating the results of the calculations, some aspects of the theoretical
concept could be validated and possibilities for optimization could be found.
Altogether, the topic of passive skating seemed simple in the beginning, it
turned out to be an interesting and challenging type of locomotion. Since the
behavior of the skate was little intuitive, the major task of the thesis was to
develop a theoretical framework to understand the rules and principles this
motion follows. With more time at hand, an efficient and agile way of travel
could possibly have been developed.

30

Bibliography

Bibliography

Bibliography
[1] Study on Roller-Walker (Basic Characteristics and its Control), Shigeo
Hirose and Hiroki Takeuchi, Tokyo Institute of Technology, Department of
Mechano-Aerospace Engineering, 1996
[2] Study on Roller-Walker (System Integration and Basic Experiments), Gen
Endo and Shigeo Hirose, Toky Institute of Technology, 1999
[3] Study on Roller-Walker (Multi-mode Steering Control and Self-contained
Locomotion), Gen Endo and Shigeo Hirose, Dept. of Mechano-Aerospace
Eng., Tokyo Institute of Technology, 2000
[4] Design and Gait Control of a Rollerblading Robot, Sachin Chitta, Frederik
W. Heger, Vijay Kumar, GRASP Laboratory, University of Pennsylvania,
USA, 2004
[5] Development of a Human Type Legged Robot with Roller Skates, Ken
Itabashi and Masaaki Kumagai, Tohoku Gakuin University, 2010
[6] Final Report ARAC, Autonomous Systems Lab, ETH Zurich,2012

31

List of Figures

List of Figures

List of Figures
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9

Possible Concepts . . . . . .
Climbing Feet Concept . . .
Brachiation Concepts . . . .
Walking on Water Concept
Lifting Skates Projects . . .
Roller Walker . . . . . . . .
Overview Angles . . . . . .
Leg Numbering . . . . . . .
Leg Conventions . . . . . .

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

. 4
. 4
. 5
. 6
. 7
. 8
. 9
. 10
. 10

3.1
3.2
3.3
3.4
3.5
3.6
3.7

No Slip Condition . . . .
Walking vs Skating . . . .
Equilibrium Line . . . . .
Body with Trajectories . .
Result Lambda Constant
Result Lambda Factor . .
Sectors Illustration . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

11
12
14
15
15
16
17

4.1
4.2
4.3
4.4

Flowchart Matlab Structure . . .


MatODE Model of the Robot . .
Mechanical Design of the Skates
Robot with Skates . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

18
19
21
21

5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8

Results different Starting Positions


Result different Lambda Factors .
Result different Sector Factors II .
Result different Sector Factors . .
Result different velocities . . . . .
Result high Speeds . . . . . . . . .
Contorted Ellipse . . . . . . . . . .
Leg Actuation . . . . . . . . . . . .

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

22
24
25
25
26
26
28
29

.
.
.
.
.
.
.

A.1 Timeplan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
B.1 Evaluation of Concepts . . . . . . . . . . . . . . . . . . . . . . . . 37
C.1 Technical Drawing . . . . . . . . . . . . . . . . . . . . . . . . . . 38
D.1 Parameter Values for the Matlab Plots . . . . . . . . . . . . . . . 39

33

List of Figures

List of Figures

Appendix

35

Time Table

Time Table

A Time Table

Figure A.1: Timetable of the bachelor project: Tasks that could not implemented due
to time restrictions are indicated in light orange.

36

Evaluation

Evaluation

B Evaluation

Figure B.1: Evaluation of the most promising concepts. The circles show the winner
of each category.

37

Technical Drawing

Technical Drawing

C Technical Drawing

Figure C.1: Technical Drawing of the 3D Plotted Mounting Part between the skating
roll and the foot.

38

Parameter Values for Matlab Plots

Parameter Values for Matlab Plots

D Parameter Values for Matlab Plots

Figure D.1: Parameter values for the matlab plots.

39

Matlab Code

Matlab Code

E Matlab Code
Main
Run Trajectory
clc
clear all
run skatinganalysis % runs the trajectory determined in the thesis
% for the second leg
% additionally runs parameters

Control loop
n=-1;
q_desd=zeros(8,4);
time=1000;
position=parameter.standard_positions;
for k = 0:step:step*steps

% Simulation loop

t=k;
dt=parameter.dt;
n=n+1; %is zero for first calculation

Insert Trajectory

if n>0000

%possible wait time until the trajectory is tuned

data_position_real_2(1)=data_position_world_x(2,n)data_position_shoulder_x(2,n)+parameter.mechanics.shoulder(2,1);
data_position_real_2(2)=data_position_world_y(2,n)data_position_shoulder_y(2,n)+parameter.mechanics.shoulder(2,2);
position(2,1)=data_position_real_2(1);
% Insert the skating trajectories into leg L2 and R2 determined in
% papertrajectory or skatinganalysis
position(2,2)=data_position_real_2(2);
position(4+2,1)=data_position_real_2(1);

%leg 2

40

Matlab Code

Matlab Code

position(4+2,2)=-data_position_real_2(2);

position(1,3)=parameter.standard_positions(1,3)-0.05;
%Lift the front and rear legs for a bit to support the skating feet more
position(4,3)=parameter.standard_positions(4,3)-0.05;
position(5,3)=parameter.standard_positions(5,3)-0.05;
position(8,3)=parameter.standard_positions(8,3)-0.05;
end

Skating Analysis
Initial Conditions
clc
clear all
run parameters;
c=0.0;

%For displacement in the beginning (y-Axis)

q=0.1;
simtime=100;

%For displacement in the beginning (x-Axis)


%How long the simulation runs x/50 --> x Steps

step=1/parameter.frequency;
%Seconds how long a step takes
steps=simtime*50;
% x*50 --> x seconds of simulation
gamma=parameter.gamma;
%Initial Angle of Yaws
position=parameter.standard_positions;
%Old Position of the Leg in worldcoordi
shoulderposition_old=bodyposition(0,parameter);
%Old Position of the Shoulder in w
n=0;
position(2,:)=position(2,:)+[q c 0]; % So the start positions roll direction is not
% parallel to skating direction

Variables
lever=-1;
%switching variable when beeing on the left or the right side of equilibrium line
lambda_gain=0.9;
%fixed gain for lambda_favorite in between angle_neutral_l and angle_neutral_r
dynamic_gain=lambda_gain;
%=1/f for understanding
anglerangemin = -5/180*pi;
anglerangemax = 5/180*pi;
radiusrangemin = 0.2;
radiusrangemax = 0.6;
deflection_max = 40;

%angles away from the equilibrium line

41

Matlab Code

Matlab Code

deflection_min = -40;
gain_changer_max=2.105;
gain_changer_min=0.3;
lambda_gain_old = 1;
for t = 0:step:steps*step
n=n+1;
leg_number=2; % TODO: for leg_number=1:1:8
shoulderposition=bodyposition(t,parameter);
%Current Position of the Shoulder in Worldcoordinates
velocityshoulder=shoulderposition-shoulderposition_old;
%Speed of the Shoulder
position_real(leg_number,1:3)=position(leg_number,1:3)
-parameter.mechanics.shoulder(leg_number,1:3); %#ok<SAGROW>
%Calculates position of foot in shouldercoordinates
%Calculate angle of leg
if position_real(leg_number,2)>0
alpha=-atan(position_real(leg_number,1)./position_real(leg_number,2));
else
alpha=atan(position_real(leg_number,1)./position_real(leg_number,2));
end
%Calculate distance to shoulder
radius=sqrt(position_real(leg_number,1)^2+position_real(leg_number,2)^2);

Calculate Lambda
vx=velocityshoulder(leg_number,1);
vy=velocityshoulder(leg_number,2);
ax=cos(alpha+parameter.gamma(leg_number));
ay=sin(alpha+parameter.gamma(leg_number));
lambda_favourite=(vx*ax+vy*ay)/(ax*ax+ay*ay);
%Favourite Lambda for maximum force transfer
deflection=alpha-parameter.standard_alphas(leg_number);
%Angle between position and equilibrium line
%(if <0 on the right side/if >0 on the left side)

Calculate Dynamic Gain


%continuous change of gain
if deflection<anglerangemin
dynamic_gain=dynamic_gain+1/150*(gain_changer_min-dynamic_gain);

42

Matlab Code

Matlab Code

end
if deflection>anglerangemax
dynamic_gain=dynamic_gain+1/150*(gain_changer_max-dynamic_gain);
end
lambda_favourite=lambda_favourite*dynamic_gain;

Lambda Inverse
position(leg_number,1)=position(leg_number,1)-velocityshoulder(leg_number,1)
+lambda_favourite*cos(alpha+parameter.gamma(leg_number));
position(leg_number,2)=position(leg_number,2)-velocityshoulder(leg_number,2)
+lambda_favourite*sin(alpha+parameter.gamma(leg_number));

43

Matlab Code

Matlab Code

XML File for MatODE


Insert Skate L1
<body>
<name>wheelL1</name>
<mass>wheelmass</mass>
<IXX>(1/12)*wheelmass*(3*wheelradius^2+wheelwidth^2)</IXX>
<IYY>(1/12)*wheelmass*(3*wheelradius^2+wheelwidth^2)</IYY>
<IZZ>(1/2)*wheelmass*wheelradius^2</IZZ>
<anchor>
<name>wheeljoint</name>
<x>0</x>
<y>0</y>
<z>0</z>
</anchor>
<drawinfo>
<cylinder comment="wheelL1">
<color>
<r>1</r>
<g>0.8</g>
<b>0</b>
</color>
<radius>wheelradius</radius>
<length>wheelwidth</length>
<rotation>
<axis>
<x>0</x>
<y>1</y>
<z>0</z>
</axis>
<angle>initalphaL1</angle>
</rotation>
</cylinder>
</drawinfo>
</body>

44

Matlab Code

Matlab Code

Define Axis of the Skate L1


<joint>
<name>j_wheelL1</name>
<type>hinge</type>
<anchor1>
<bodyname>wheelL1</bodyname>
<anchorname>wheeljoint</anchorname>
</anchor1>
<anchor2>
<bodyname>link3L1</bodyname>
<anchorname>bottom</anchorname>
</anchor2>
<axisX>sin(initalphaL1)</axisX>
<axisY>0</axisY>
<axisZ>cos(-initalphaL1)</axisZ>
</joint>

Collision Geometry of the Skate L1


<geom>
<name>wheelL1</name>
<bodyname>wheelL1</bodyname>
<type>cylinder</type>
<material>rubber</material>
<radius>wheelradius</radius>
<length>wheelwidth</length>
<x>0</x>
<y>0</y>
<z>0</z>
<rotation>
<axis>
<x>0</x>
<y>1</y>
<z>0</z>
</axis>
<angle>initalphaL1</angle>
</rotation>

</geom>

45

You might also like