TECHIN 517 - ROBOTICS LAB II
ROBOT NAVIGATION
WEEK 3 | WEDNESDAY | APR 13, 2022
ASSINGMENT #3
ROBOT NAVIGATION
Getting from point A to point B
How do I get to point B?
Where am I?
LOCALICATION
NAVIGATION
ROBOT NAVIGATION
How do I get to point B?
Where am I?
ROBOT NAVIGATION
Relative to:
How do I get to point B?
Where am I?
ROBOT: WHERE AM I?
ROBOT: WHERE AM I?
ROBOT: WHERE AM I?
ROBOT NAVIGATION
How do I get to point B?
Where am I?
COORDINATE TRANSFORMS
DIFFERENTIAL DRIVE ROBOTS
two independent drive wheels mounted on a common axis
STEERING
Differential drive steering is controlled by setting the relative speeds of the wheels
simple cases
complex cases
dL=dR
-dL =-dR
dL=-dR
-dL=dR
dL<dR
dL>dR
-dL<-dR
-dL>-dR
DIFFERENTIAL DRIVE
b
r2
x1-x0
y1-y0
d
Ļ
x= t (x1-x0)
Ė
Ė
y= t (y1-y0)
šL = tšL
Ė
šR = tšR
Ė
EXTRA SLIDES
COORDINATE TRANSFORMS
COORDINATE FRAMES
y
xā
(0,0)
š©0
(x0, y0)
x
yā
COORDINATE FRAMES
(0,0)
š©0
(x0, y0)
x
yā
y
{A}
{B}
xā
COORDINATE FRAMES
(0,0)
š©0
(x0, y0)
x
yā
y
{A}
{B}
BP
xā
AP
COORDINATE FRAMES
(0,0)
y
{A}
x
{B}
BP =
x1
y1
x1
y1
COORDINATE TRANSFORMS
(0,0)
š©0
(x0, y0)
x
yā
y
{A}
{B}
BP
xā
What is AP ?
COORDINATE TRANSFORMS
y
{A}
{B}
xā
BP =
x1
y1
Start with BP
Translate to (x0, y0)
Rotate by š©0
What is AP ?
AP
TRANSLATIONS
x
y
{A}
BP =
x1
y1
AP =
x0 + x1
y0 + y1
(x0, y0)
x0
x1
{B}
ROTATIONS
x
y
{A}
š©0
x
{B}
ROTATIONS
x
y
AP =
x2
y2
x
š©0
x1
y1
y2
x2
BP =
x1
y1
{B}
cos(š©0)
sin(š©0)
-sin(š©0) cos(š©0)
{A}
ROTATIONS
x
y
AP =
x2
y2
x
š©0
x1
y1
y2
x2
BP =
x1
y1
{B}
cos(š©0)
sin(š©0)
-sin(š©0) cos(š©0)
{A}
x1 = AP. AuBx
y1 = AP. AuBy
ROTATIONS
x
y
AP =
x2
y2
x
š©0
x1
y1
y2
x2
BP =
x1
y1
{B}
cos(š©0)
sin(š©0)
-sin(š©0) cos(š©0)
{A}
x1 = x2 cos(š©0) + y2 sin(š©0)
y1 = -x2 sin(š©0) + y2 cos(š©0)
ROTATIONS
x
y
AP =
x2
y2
x
š©0
x1
y1
y2
x2
BP =
x1
y1
{B}
{A}
x2 = x1 cos(š©0) - y1 sin(š©0)
y2 = x1 sin(š©0) + y1 cos(š©0)
x1 = x2 cos(š©0) + y2 sin(š©0)
y1 = -x2 sin(š©0) + y2 cos(š©0)
revert
ROTATIONS
x
y
x
š©0
x1
y1
y2
x2
BP =
x1
y1
{B}
{A}
ROTATIONS AS MATRIX MULTIPLICATIONS
x
y
cos(š©0), -sin(š©0)
sin(š©0), cos(š©0)
x
š©0
x1
y1
y2
x2
BP =
x1
y1
{B}
{A}
BP
ARB
TRANSLATIONS AS MATRIX MULTIPLICATIONS?
x
y
{A}
BP =
x1
y1
AP =
x0 + x1
y0 + y1
(x0, y0)
x0
x1
{B}
a, b
c, d
BP
TRANSLATIONS AS MATRIX MULTIPLICATIONS?
x
y
{A}
BP =
x1
y1
AP =
x0 + x1
y0 + y1
(x0, y0)
x0
x1
{B}
a, b
c, d
BP
Does not
work!
TRANSLATIONS AS MATRIX MULTIPLICATIONS?
x
y
{A}
BP =
x1
y1
APā =
x0 + x1
y0 + y1
1
(x0, y0)
x0
x1
{B}
1, 0, x0
0, 1, y0
0, 0, 1
Instead
x1
y1
1
homogeneous coordinates
COMBINING ROTATIONS AND TRANSLATIONS
y
{A}
{B}
xā
BP =
x1
y1
AP
APā =
1, 0, x0
0, 1, y0
0, 0, 1
x1
y1
1
ARB
replace with
homogeneous transformation
ATB
HOMOGENOUS TRANSFORMS
Ā
COMPOSING TRANSFORMS
š©0
(x0, y0)
x
yā
y
{A}
{B}
xā
CP =
x2
y2
APā =
x2
y2
1
ATB
yāā
xāā
š©1
{C}
BTC
COMPOSING TRANSFORMS
š©0
(x0, y0)
x
yā
y
{world}
{robot}
xā
yāā
xāā
š©2
{cube}
š©1
(x1, y1)
DIFFERENTIAL DRIVE
KINEMATICS
DIFFERENTIAL DRIVE ROBOTS
two independent drive wheels mounted on a common axis
STEERING
Differential drive steering is controlled by setting the relative speeds of the wheels
simple cases
complex cases
dL=dR
-dL =-dR
dL=-dR
-dL=dR
dL<dR
dL>dR
-dL<-dR
-dL>-dR
Steering
R
-R
-R
-R
-R
R
R
R
R
R
R
R
R
R
R
R
DIFFERENTIAL DRIVE
y
xā
(0,0)
š©0
(x0, y0)
x
yā
robot pose
target pose
DIFFERENTIAL DRIVE
xā
robot pose
target pose
APPROACH 1
u=
u=
u=
Issues?
Might overshoot
Not most efficient
Will not work for moving target
DIFFERENTIAL DRIVE
xā
robot pose
target pose
APPROACH 1
u=
u=
u=
Take into account
distance to go?
DIFFERENTIAL DRIVE
Rotate and translate at the same time to make the robot go towards target pose
xā
robot pose
target pose
APPROACH 2
How does
change as a function of
?
DIFFERENTIAL DRIVE
xā
robot pose
f(
Ė
Ė
Ė
Ė
=
, b, r)
b
2r
DIFFERENTIAL DRIVE
f(
Ė
Ė
Ė
Ė
=
, b, r)
b
2r
dL
dR
Ļ
instant center of turning
DIFFERENTIAL DRIVE
b
2r
dL=ršL
šL
dL
r
robot wheel
dR=ršR
Ļ
DIFFERENTIAL DRIVE
b
r2
r1
dL=r1Ļ
dR=r2Ļ
r1=b+r2
dL=ršL
dR=ršR
Ļ
DIFFERENTIAL DRIVE
b
2r
Ļ
š©0
š©1
Ļ
2
Ļ
2
š©1=š©0-Ļ
DIFFERENTIAL DRIVE
b
r2
x1-x0
y1-y0
d
Ļ
d
0.5b+r2
0.5b+r2
d=(b+2r2)sin
Ļ
2
š©0-
Ļ
2
y1-y0 =d sin( )
š©0-
Ļ
2
Ļ
DIFFERENTIAL DRIVE
b
r2
x1-x0
y1-y0
d
cos( )
š©0-
Ļ
2
Ļ
šL-šR
sin( )
š©0-
Ļ
2
šL-šR
Assume small
Ļ
DIFFERENTIAL DRIVE
b
r2
x1-x0
y1-y0
d
cos( )
Ļ
šL-šR
DIFFERENTIAL DRIVE
b
r2
x1-x0
y1-y0
d
Ļ
x= t (x1-x0)
Ė
Ė
y= t (y1-y0)
šL = tšL
Ė
šR = tšR
Ė
DIFFERENTIAL DRIVE ROBOT KINEMATICS
b
Odometry Calculations
Odometry Calculations
DIFFERENTIAL DRIVE
b
dL=ršL
dR=ršR
r2
r1
dL=r1Ļ
dR=r2Ļ
r1=b+r2
Ļ
Odometry Calculations
Odometry Calculations
Differential Drive Robot Kinematics
Differential Drive Robot Kinematics
Odometry Calculations
Differential Drive
Differential Drive
Ā
Coordinate Transformation
Ā
How can we steer to a desired relative location?
Problems with this approach?
Differential Drive Robot Kinematics
How can we steer to a desired relative location?
Note that this example assumes the velocity is bounded somewhere else in the software, such that you can send very high velocity values and they will always be bounded by maxVel. If this is not the case, an extra check can be added.
Time can also be incorporated into the formula if the target must be reached within some set period.
How can we steer to a desired relative location?
DIFFERENTIAL DRIVE
y
xā
(0,0)
š©
(x, y)
x
yā
robot pose
b
2r
COMPARISON OF DRIVING STRATEGIES
ASSUMPTIONS FOR ALL OF THE ABOVE