You are on page 1of 107

# Movement of

robots and
introduction to
kinematics of robots

Kinematics: constraints on
getting around the environment
kinematics
The effect of a robots
geometry on its motion.
wheeled
platform
s

## from sort of simple

to sort of difficult

manipulator
modeling

## Effectors and Actuators

An effector is any device that affects the environment.
A robot's effector is under the control of the robot.
Effectors:
legs,
wheels,
arms,
fingers.

## The role of the controller is to get the effectors to produce

the desired effect on the environment,
this is based on the robot's task.

## Effectors and Actuators

An actuator is the actual mechanism that enables the
effector to execute an action.
Actuators typically include:
include

electric motors,
hydraulic cylinders,
pneumatic cylinders,
etc.

## The terms effector and actuator are often used

interchangeably to mean "whatever makes the robot take an
action."
This is not really proper use:
Actuators and effectors are not the same thing.
And we'll try to be more precise.

## Review: degrees of freedom

Most simple actuators control a single degree of freedom,
i.e., a single motion (e.g., up-down, left-right, in-out, etc.).

## A motor shaft controls one rotational degree of freedom, for example.

A sliding part on a plotter controls one translational degree of freedom.

## How many degrees of freedom (DOF) a robot has is very important in

determining how it can affect its world,
and therefore how well, if at all, it can accomplish its task.

We said many times before that sensors must be matched to the robot's
Similarly, effectors must be well matched to the robot's task also.

## When you design a robot your first task is decide the

number of DOF and the geometry.

DOF
In general, a free body in space as 6 DOF:
three for translation (x,y,z),
three for orientation/rotation (roll, pitch, and yaw).

## You need to know, for a given effector (and actuator/s):

how many DOF are available to the robot,
how many total DOF any given robot has.

## If there is an actuator for every DOF, then all of the DOF

are controllable.
Usually not all DOF are controllable, which makes robot
control harder.
To demonstrate, use a pen

## DOF and controllable DOFs

A car has 3 DOF:
position (x,y) and
orientation (theta).

## But only 2 DOF are controllable:

driving: through the gas pedal and the forward-reverse gear;
steering: through the steering wheel.

## Since there are more DOF than are controllable, there

are motions that cannot be done.
Example of such motions is moving sideways (that's
why parallel parking is hard).

## One Minute Test

How many
degrees of
freedom does
with your
forearm fixed in
position?
(Hint: Its not 6)

on next
slide

## Degrees of Freedom in Hand

Part
Wrist
Palm
Fingers
Thumb
Total

DoF Comment
2 1. Side-to-side
2. Up-down
1 1. Open-close a little
4*4 1.
2.
4 1.
2.
23

## 2 @ base (Up-down & side-to-side)

1 @ each of two joints
2 @ base (attached to wrist)
2 @ visible joints

Kinematics:

VL
VR

## We need to make a distinction between what an actuator does

(e.g., pushing the gas pedal) and what the robot does as a result
(moving forward).
A car can get to any 2D position but it may have to follow a very
complicated trajectory.
Parallel parking requires a discontinuous trajectory with respect
to the velocity.
It means that the car has to stop and go.

Definition of a
HOLONOMIC robot
When the number of controllable DOF is equal
to the total number of DOF on a robot, the robot
is called holonomic. (i.e. the hand built by
Uland Wong).

Holonomic

<= >

Non-Holonomic

<= >

## If the number of controllable DOF is smaller

than total DOF, the robot is non-holonomic.
If the number of controllable DOF is larger
than the total DOF, the robot is redundant.
(like a human hand, we did not build such
robot yet)
Redundant

<= >

## DOF for animals

A human arm has 7 DOF:
3 in the shoulder,
1 in the elbow,
3 in the wrist

## All of which can be controlled.

A free object in 3D space (e.g., the hand, the finger tip) can
have at most 6 DOF!
So there are redundant ways of putting the hand at a
particular position in 3D space.
This is the core of why robot manipulation is very hard!
One minute test!

SONY ROBOTS

## Pino, a 70-centimeter (2-foot)-tall and 4.5-kilogram (9-pound)

humanoid robot designed by Japan Science and Technology Corporation in
Tokyo which can walk on its legs and respond to stimulation through a sensor,
shakes hand with Malaysia's Prime Minister Mahathir Mohamad during the
opening of the Expo Science & Technology 2001 in Kuala Lumpur, Malaysia,
Monday, July 2, 2001. (AP Photo/Andy Wong)

## 98 degrees (of freedom)

This is in any case simplified

Manipulation
In locomotion (mobile robot), the body of the robot
is moved to get to a particular position and
orientation.
In contrast - a manipulator moves itself
typically to get the end effector (e.g., the hand, the
finger, the fingertip)
to the desired 3D position and orientation.

## So imagine having to touch a specific point in 3D

space with the tip of your index finger;
that's what a typical manipulator has to do.

Issues in Manipulation
In addition: manipulators need to:
grasp objects,
move objects.
But those tasks are extensions of the basic reaching discussed
above.

## The challenge is to get there efficiently and safely.

Because the end effector is attached to the whole arm, we
have to worry about the whole arm:
the arm must move so that it does not try to violate its own joint
limits,
it must not hit itself or the rest of the robot, or any other obstacles
in the environment.

Manipulation - Teleoperation
Thus, doing autonomous manipulation is very
challenging.
Manipulation was first used in tele-operation,
where human operators would move artificial arms
to handle hazardous materials.
Complicated duplicates of human arms, with 7 DOF
were built.
It turned out that it was quite difficult for human
operators to learn how to tele-operate such arms

## Manipulation and Teleoperation: Human

Interface
One alternative today is to put the human arm
into an exo-skeleton, in order to make the
control more direct.
Using joy-sticks, for example, is much harder
for high DOF.
Exo-skeletons used in Hollywood Robotics

## Why is using joysticks so hard?

Because even as we saw with locomotion, there is typically
no direct and obvious link between:
what the effector needs to do in physical space
and what the actuator does to move it.

## In general, the correspondence between actuator motion

and the resulting effector motion is called kinematics.
In order to control a manipulator, we have to know its
kinematics:
1. what is attached to what,
2. how many joints there are,
3. how many DOF for each joint,
etc.

## Basic Problems for Manipulation

Kinematics
Given all the joint angles - where is the tip ?

Inverse Kinematics
Given a tip position - what are the possible joint angles ?

Dynamics
To accelerate the tip by a given amount how
much torque should a particular joint motor put
out ?

## Kinematics versus Inverse Kinematics

We can formalize all of this mathematically.
To get an equation which will tell us how to convert
from, say, angles in each of the joints, to the
Cartesian positions of the end effector/point is
called:
computing the manipulator kinematics

## The process of converting the Cartesian (x,y,z)

position into a set of joint angles for the arm (thetas)
is called:
inverse kinematics.

## Something for lovers of math and

programming! Publishable! LISP

Joints:
End Effector
2 DOFs
Robot Basis

Joints.

## These joints provide the DOF for an effector.

Joints.

Homogeneous Coordinates
Homogeneous coordinates: embed 3D
vectors into 4D by adding a 1
More generally, the transformation matrix T
has the form:

Rot. Matrix
Trans. Vector
T

## Perspect. Trans. Scaling Factor

a11 a12 a13 b1
a21 a22 a23 b2
a31 a32 a33 b3
c1 c2 c3

sf

It is presented in more
detail on the WWW!

## Terms for manipulation

End effector, tool
Accuracy vs. Repeatability
Workspace
Reachability
Manipulability
Redundancy
Configuration Space

Direct Kinematics
Where is my hand?

Direct Kinematics:
HERE!

Direct Kinematics
Position of tip in (x,y) coordinates

## Direct Kinematics Algorithm

1) Draw sketch
2) Number links. Base=0, Last link = n
3) Identify and number robot joints
4) Draw axis Zi for joint i
5) Determine joint length ai-1 between Zi-1 and Zi
6) Draw axis Xi-1
7) Determine joint twist i-1 measured around Xi-1
8) Determine the joint offset di
9) Determine joint angle i around Zi
10+11) Write link transformation and concatenate

## Kinematic Problems for

Manipulation
Reliably position the tip - go from one position to
another position
Dont hit anything, avoid obstacles
Make smooth motions
at reasonable speeds and
at reasonable accelerations

Adjust to changing conditions i.e. when something is picked up respond to the change
in weight

Inverse
Kinematics
How do I put my
hand here?

## Why is using inverse kinematics so hard?

Inverse kinematics is computationally intense.
functions are nonlinear and complex , especially for higher dimensions than 2

Difficult to visualize

## And the problem is even harder if the manipulator (the arm)

is redundant.
Manipulation involves:
trajectory planning (over time)
inverse kinematics
inverse dynamics
dealing with redundancy

## Direct versus Inverse

Kinematics
Direct Kinematics
x = L1*cos(t1) + L2*cos(t1+t2)
y = L1* sin(t1) + L2*sin(t1+t2)
Given the joint angles t1 and t2 we can compute the position of the tip
(x,y)

Inverse Kinematics
Given x and y we can compute t1 and t2
t2 = acos[(x^2 + y^2 - L1^2 - L2^2)/(2*L1*L2)]
This gives us two values for t2, now one can compute the two
corresponding values of t1.
See next slide

Inverse Kinematics

## One of many problems:

There may be multiple solutions
Elbow down - Elbow up

A Dynamic Simulator
= kinematics + force modeling

Building blocks
of
masses
springs
muscles
www.sodaconstructor.com

Wheeled Robots

~ 1.5 cm to a side
temperature sensor & two motors
travels 1 inch in 3 seconds
untethered !!

Pocketbot

Khepera

linear vision
gripper

Cricket
Accessorize!

video

Kinematics of
Differential
drive

## Kinematics of Differential drive

Differential Drive is the most
common kinematic choice
All of the miniature robots
Pioneer, Rug warrior

## - difference in wheels speeds

determines its turning angle

## Questions (forward kinematics)

Given the wheels velocities or positions,
what is the robots velocity/position ?

VL
VR

## Are there any inherent system constraints?

1) Specify system measurements
2) Determine the point (the radius)
around
which the robot is
turning.
3) Determine the speed at which the
robot is
turning to obtain the
robot velocity.

## Kinematics of Differential drive

1) Specify system measurements
- consider possible coordinate
systems

VL
2d

VR

## Kinematics of Differential drive

1) Specify system measurements
- consider possible coordinate
systems
2) Determine the point (the radius)
around which the robot is turning.

VL
2d

VR

y

VL
2d

## 1) Specify system measurements

- consider possible coordinate
systems
2) Determine the point (the radius)
around which the robot is turning.
- to minimize wheel slippage, this
point (the ICC) must lie at the
intersection of the wheels axles
- each wheel must be traveling at
the same angular velocity

VR
ICC instantaneous center of
curvature

## (assume a wheel radius of 1)

= angular velocity

y

VL
2d

VR

## 1) Specify system measurements

- consider possible coordinate
systems
2) Determine the point (the radius)
around which the robot is turning.
- to minimize wheel slippage, this
point (the ICC) must lie at the
intersection of the wheels axles
- each wheel must be traveling at
the same angular velocity around
the ICC

curvature

y

VL

x
2d

## 1) Specify system measurements

- consider possible coordinate
systems
2) Determine the point (the radius)
around which the robot is turning.
- each wheel must be traveling at
the same angular velocity around
the ICC
3) Determine the robots speed
around the ICC and its linear velocity

VR
ICC

R+d) = VL
R-d) = VR

y

VL

x
2d

VR

ICC

## 1) Specify system measurements

- consider possible coordinate
systems
2) Determine the point (the radius)
around which the robot is turning.
- each wheel must be traveling at
the same angular velocity around
the ICC
3) Determine the robots speed
around the ICC and then linear
velocity

ICC

R+d) = VL

R-d) = VR

## robots turning radius

Thus,

= ( VR - VL ) / 2d
R = 2d ( VR + VL ) / ( VR - VL )

y

VL

x
2d

VR

## 1) Specify system measurements

- consider possible coordinate
systems
2) Determine the point (the radius)
around which the robot is turning.
- each wheel must be traveling at
the same angular velocity around
the ICC
3) Determine the robots speed
around the ICC and then linear
velocity

ICC

R+d) = VL

R-d) = VR

## robots turning radius

Thus,

= ( VR - VL ) / 2d
R = 2d ( VR + VL ) / ( VR - VL )

## So, the robots velocity is

V = R = ( VR + VL ) / 2

## Kinematics of Differential drive

4) Integrate to obtain position

Vx = V(t) cos((t))

(t)

V(t)

Vy = V(t) sin((t))

(t)

VL

x
2d

VR

ICC

Vx

ICC

R(t)

## robots turning radius

with
= ( VR - VL ) / 2d
R = 2d ( VR + VL ) / ( VR - VL )

## What has to happen to change the

ICC ?

V = R = ( VR + VL ) / 2

## Kinematics of Differential drive

4) Integrate to obtain position

Vx = V(t) cos((t))

(t)

Vy = V(t) sin((t))
Thus,

VL

x(t) =

x
2d

y(t) =
(t) =

VR

V(t) cos((t)) dt
V(t) sin((t)) dt
(t) dt

ICC

R(t)

## robots turning radius

with
= ( VR - VL ) / 2d
R = 2d ( VR + VL ) / ( VR - VL )
V = R = ( VR + VL ) / 2

## Kinematics of Differential drive

Velocity Components

Vx = V(t) cos((t))

speed

Vy = V(t) sin((t))

(t)
Thus,
VL

x
2d

(t) =

VR

(t) dt

ICC

Kinematics

R(t)

## robots turning radius

with
= ( VR - VL ) / 2d
R = 2d ( VR + VL ) / ( VR - VL )

## What has to happen to change the

ICC ?

V = R = ( VR + VL ) / 2

Kinematics of
Synchro
drive

ICC at

## wheels rotate in tandem and remain parallel

all of the wheels are driven at the same speed

Vrobot = Vwheels
robot = wheels

velocity

x
Vwheels

(t) = (t) dt

position

## wheels rotate in tandem and remain parallel

all of the wheels are driven at the same speed

## Question (forward kinematics)

Given the wheels velocities or positions,
what is the robots velocity/position ?
Are there any inherent system constraints?
1) Choose a robot coordinate system
2) Determine the point (the radius)
around
which the robot is
turning.
3) Determine the speed at which the
robot is
turning to obtain the
robot velocity.
4) Integrate to find position.

Lego Synchro

## this light sensor follows the direction of

the wheels, but the RCX is stationary
also, four bump sensors and two motor
encoders are included

## more difficult to build.

Inverse Kinematics
Key question:
y

## Given a desired position or

velocity, what can we do to
achieve it?

VL (t)
VR(t)
starting position

final position

Inverse Kinematics
Key question:
y

## Given a desired position or

velocity, what can we do to
achieve it?

VL (t)
VR(t)
starting position

final position

Inverse Kinematics
Key question:
y

## Given a desired position or

velocity, what can we do to
achieve it?

VL (t)
VR(t)
starting position

final position

Inverse Kinematics
Key question:
y

## Given a desired position or

velocity, what can we do to
achieve it?

## Need to solve these equations:

x = V(t) cos((t)) dt
y = V(t) sin((t)) dt

VL (t)

= (t) dt
= ( VR - VL ) / 2d
V = R = ( VR + VL ) / 2

VR(t)
starting position

final position

## There are lots of solutions...

Inverse Kinematics
Key question:

## Given a desired position or

velocity, what can we do to
achieve it?

## Finding some solution is not

hard, but finding the best
solution is very difficult...
x

VL (t)
VR(t)
starting position

final position

quickest time
most energy
efficient
smoothest velocity
profiles
VL (t)
VL (t)

## It all depends on who gets to define best...

Inverse Kinematics
Usual approach: decompose the problem and control
only a few DOF at a time
Differential Drive

VL (t)
VR(t)
starting position

final position

Inverse Kinematics
Usual approach: decompose the problem and control
only a few DOF at a time
Differential Drive
(1) turn so that the wheels are
parallel to the line between the
original and final position of the
robot-Vorigin.
(t) = V (t) = V

VL (t)
VR(t)
starting position

final position

max

Inverse Kinematics
Usual approach: decompose the problem and control
only a few DOF at a time
Differential Drive
(1) turn so that the wheels are
parallel to the line between the
original and final position of the
robot-Vorigin.
(t) = V (t) = V

## VL (t) = VR (t) = Vmax

VR(t)
starting position

max

## (2) drive straight until the robots

origin coincides with the
destination

VL (t)

final position

Inverse Kinematics
Usual approach: decompose the problem and control
only a few DOF at a time
Differential Drive
(1) turn so that the wheels are
parallel to the line between the
original and final position of the
robot-Vorigin.
(t) = V (t) = V

## VL (t) = VR (t) = Vmax

VR(t)
starting position

max

## (2) drive straight until the robots

origin coincides with the
destination

VL (t)

final position

## (3) rotate again in order to

achieve the desired final
orientation

VL (t)
VR (t)

## Inverse Kinematics of Synchro Drive

Usual approach: decompose the problem and control
only a few DOF at a time
Synchro Drive

## (1) turn so that the wheels are

parallel to the line between the
original and final position of the
robot origin.
(t) =

V(t)

max

## (2) drive straight until the robots

origin coincides with the
destination

V(t) = Vmax

(t)
final position
starting position

## (3) rotate again in order to

achieve the desired final
orientation

(t) = max

## Other wheeled robots

tricycle drive
Ackerman drive
Doubly-steered bicycle

## one more -- that roaming desk

one more -- that roaming tatami mat
(holonomic) & the XR4000

## Kinematics of Tricycle drive

back wheels tag along...

Mecos tricycle-drive

## front wheel is powered and steerable

Four-wheel
Steering
The kinematic challenges of parallel parking:
wheels have limited turning angles

VFL

no in-place rotation
VFR

VBL
VBR

## small space for parking and maneuvers

Ackerman Steering
L

## Similar to a tricycle-drive robot

VFL

VFR

g
VBL

d
VBR

x
r

IC
C

g
+d
tan(R)

g
sin(R)

VFR

determines

Ackerman Steering
L

VFL

VFR

g
VBL

g
+d
tan(R)

g
sin(R)

VFR

determines

## The other wheel velocities are now

fixed!

g
sin(L)

d
VBR

VFL

L = tan-1(g / (r + d))

x
r

(r - d) =

VBR

(r + d) =

VBL

IC
C

## The Big Rigs

Applications

2 controlled angles

## Parking two trailers

nonholonomicity
All of the robots mentioned share an important
(if frustrating) property: they are

nonholonomic .
- makes it difficult to navigate between two arbitrary points
- need to resort to techniques like parallel parking

nonholonomicity

## All of the robots mentioned share an important

(if frustrating) property: they are nonholonomic.
- makes it difficult to navigate between two arbitrary points
- need to resort to techniques like parallel parking

## By definition, a robot is nonholonomic if it can not move to

change its pose instantaneously in all available directions.
i.e., the robots differential motion is constrained.
Synchro Drive
two DOF are freely
controllable; the
third is
inaccessible

Holonomic Robots
Navigation is simplified considerably if a robot can move
instantaneously in any direction, i.e., is holonomic.

Omniwheels

Mecanum wheels

## if it can be done at all ...

Holonomic Robots

Killoughs Platform
synchro drive with offsets
from the axis of rotation

Holonomic hype
Holonomic
Hype

## The PeopleBot is a highly holonomic

platform, able to navigate in the
tightest of spaces

Holonomic Hype

## Sage -- a museum tour guide

Robot Manipulators
Is this robot holonomic ?

A robot holonomic if it
can move instantaneously in any direction.

Robot Manipulators
Is this robot holonomic ?
No - it cant move at all
Yes - its end effector (a point) can translate
instantaneously in the x or y directions
Maybe - actually, in some cases the
end effector is constrained...

Robot
Manipulators
Robot
Manipulators
Is this robot holonomic ?
No - it cant move at all
Yes - its end effector (a point) can translate
instantaneously in the x or y directions
Maybe - actually, in some cases the
end effector is constrained...

## Holonomic or not, the kinematics are vital to using a robot limb...

Joint
Angles

Kinematics

Useful

Robot Manipulators
Forward kinematics -- finding Cartesian coordinates from joint angles
start by finding the position relationships, then velocity

Inverse Kinematics
Inverse kinematics -- finding joint angles from Cartesian coordinates

Types of Manipulators
Basic distinction: what kinds of joints extend from base to end.

RR or 2R

PR arm

## All manipulators can be represented as

chains of P (prismatic) and R (rotational)
joints.

Prismatic Joints
Ninja

Ambler

tomato
harvester

Challenges
1. Modeling many degrees of freedom
2. No closed-form solution guaranteed for the inverse
kinematics.
3. Trajectory generation under nonholonomic constraints
4. Navigating with obstacles
obstacle
go
al

Challenges
Multiple solutions (or no solutions) for a task.

Challenges
Multiple solutions (or no solutions) for a task.

Opportunities
Direct kinematic/ inverse kinematic
modeling - is the basis for
control of the vast majority of industrial
robots.
Accurate (inverse) kinematic models are
required in order to create believable
character animations

## how would these

things bike?

Configuration Space
To get from place A to place B, we need a
standardized notion of place :
Configuration Space is a space representing robot pose.
The dimensionality of C.S. is equal to the robots degrees of freedom.

Examples:
The Nomad robot (discounting orientation) has a planar
configuration space representing the (x,y) coordinates of the robots
center.
The Nomad robot including orientation
The 2R manipulator depicted earlier ...

topological
properties

To be discussed:
Impinging on robots space:

## Getting from point A to point B

robot navigation via path planning
full-knowledge techniques
insect-inspired algorithms

Perspective
If your robot doesnt do what you want ...

## you can always change what youre looking for.

Dynamics
of a one link arm

## This differential equation can be solved to figure out

what acceleration results from a particular given torque.

Control Techniques
P, PD, PID

We will illustrate

## simple, easy to implement

Impedance control
force and position

## Advanced control techniques

robust,
sliding mode,
nonlinear etc.,
neural network based,
fuzzy logic based
etc.

## PD Control of a One-Link Arm

PD Control of a One-Link
Arm

solution

## Research Issues in Manipulators

Manipulators are well studied
Lots of hard problems (weve barely
scratched the surface)
Modern techniques involve trying to use:
some of the kinematics
some of the dynamics of manipulators
sophisticated control theory
some learning

Planning
1 very little
freedom

c1

c2

c1

c2

## Manipulation - Challenge for

roboticists!
This is a challenging area of robotics.
We will cover it briefly in several lectures next quarter

## Manipulators are effectors.

Joints connect parts of manipulators.
The most common joint types are:
rotary (rotation around a fixed axis)
prismatic (linear movement)

## These joints provide the DOF for an effector, so they are

planned carefully - kicking a ball in hexapod soccer?

## More Challenges for roboticists!

Robot manipulators can have one or more of each of
those joints.
Now recall that any free body has 6 DOF;
that means in order to get the robot's end effector to an
arbitrary position and orientation,
the robot requires a minimum of 6 joints.

## As it turns out, the human arm (not counting the

hand!) has 7 DOF.
That is sufficient for reaching any point with the hand,
It is also redundant, meaning that there are multiple ways
in which any point can be reached.

## More Challenges for roboticists!

This is good news and bad news;
the fact that there are multiple solutions means that there is a
larger space to search through to find the best solution.

## Now consider end effectors.

They can be:
simple pointers (i.e., a stick),
simple 2D grippers,
screwdrivers for attaching tools (like welding guns, sprayer, etc.),
or can be as complex as the human hand,
hand with variable numbers
of fingers and joints in the fingers.

## Reaching and Grasping

Food for thought: how many DOF are there in the
human hand?
Problems like reaching and grasping in manipulation
constitute entire subareas of robotics and AI.
Issues include:
finding grasp-points (centers of gravity - COG, friction, etc.);
force/strength of grasp;
compliance (e.g., in sliding, maintaining contact with a surface);
dynamic tasks (e.g., juggling, catching).

Other types of manipulation researched:
carefully controlling force, as in grasping fragile objects
and maintaining contact with a surface (so-called
compliant motion).

## Dynamic manipulation tasks:

juggling,
throwing,
catching, etc.,
are already being demonstrated on robot arms.

Problems to solve.
1. Draw kinematics models of various animals and calculate
the total DOFs.
2. Give examples (drawings) of holonomic, non-holonomic
and redundant mobile robots that you can build using
standard components that you can find in the lab.
3. Compare the kinematics of differential drive, the synchro
drive and the four wheel steering.
4. Give examples (drawings) of holonomic, non-holonomic
and redundant robot arms that you can build using standard
components that you can find in the lab.

Next Time(s)
Inverse kinematics: what we would really like to know ...

## Getting from point A to point B

robot navigation via path planning
full-knowledge techniques and insect-inspired algorithms

Sources

## Prof. Maja Mataric

Dr. Fred Martin
Bryce Tucker and former PSU students
A. Ferworn,
Prof. Gaurav Sukhatme, USC Robotics Research Laboratory
Paul Hannah

## Reuven Granot, Technion

Dodds, Harvey Mudd College