Академический Документы
Профессиональный Документы
Культура Документы
( ( )) ( )
12
θ = ± C T θ ,θ = 1
provides
a
simple
way
to
evaluate
θ ,
where
T θ ,θ = 1
! !
corresponds
to
the
kinetic
energy
evaluated
at
!θ = 1 .
Figure
1.
Symmetric,
floating
Bricard
mechanism
with
internal
joint
angles
at
90°.
Figure
1
shows
an
orthographic
3D
CAD
image
of
a
floating,
seven-‐DOF
symmetric
Bricard
mechanism,
which,
according
to
Grubler’s
mobility
criteria,
should
have
only
six
DOF.
The
over-‐constrained
model
is
composed
of
six
rigid
links,
each
with
an
ideal
revolute
joint
at
both
ends.
Each
link’s
two
joint
axes
are
perpendicular
to
its
centerline
and
to
each
other.
Connecting
the
six
links
end-‐to-‐end
as
shown
in
Fig.
1
makes
for
some
interesting
kinematics.
Figure
1
illustrates
the
configuration
where
the
link
centerlines
lie
along
edges
of
an
imaginary
cube.
The
mechanism’s
barycentric
Cartesian
frame
!b ,
located
in
the
center
of
the
image,
remains
fixed
in
space
when
the
spatial
momentum
is
zero.
The
hexagon
of
colored
vectors
connecting
the
link
centers
and
centers
of
mass
represents
one
form
of
progression
around
the
mechanism’s
kinematic
loop.
The
link
centers
of
mass
in
this
symmetric
mechanism
remain
in
the
barycentric
frame’s
x-‐y
plane
for
all
configurations,
making
it
easier
to
specify
their
spatial
locations
as
a
function
of
θ .
(Right-‐handed
Cartesian
frames
are
color
coded
with
red
x-‐axis,
green
y-‐axis,
and
blue
z-‐axis
for
easier
identification.)
Placing
reference
frames
at
the
link
centers
of
mass
means
that
their
origins
also
remain
in
the
barycentric
frame’s
x-‐y
plane
for
all
configurations.
In
addition,
the
reference
frame
origins
and
centers
of
mass
remain
equidistant
from
the
barycentric
frame’s
origin
for
all
configurations.
Specifying
the
orientation
of
each
link’s
reference
frame
relative
to
the
barycentric
frame
is
somewhat
complicated
and
will
be
a
major
subject
of
this
article.
Some
Preliminaries
Disclaimer
This
development
is
based
on
the
pioneering
work
of
many,
dating
as
far
back
as
the
eighteenth
and
nineteenth
centuries.
For
the
most
part,
this
article
contains
nothing
new,
and
the
sources
are
too
numerous
to
list.
Thus
few
references
are
included,
which
is
probably
safe,
because
most
of
the
original
researchers
are
unlikely
to
complain.
Readers
who
need
more
information
are
encouraged
to
consult
the
Internet.
And
if
when
you
find
mistakes,
please
let
me
know.
So
how
about
that
screen
saver?
Imagine
the
barycentric
frame
as
a
pedestal
upon
which
the
Bricard
mechanism
is
mounted.
When
a
conservative
version
is
started
up,
it
will
keep
going
and
going
and
going
like
the
Energizer
Bunny.
For
added
variety,
the
barycentric
frame
could
be
freed
up,
giving
the
mechanism
additional
rotational
and
translational
DOF.
To
avoid
getting
lost
in
space,
the
frame’s
origin
could
be
constrained
to
bounce
off
the
interior
walls
of
a
3D
box.
This
article
describes
how
the
spatial
motion
of
a
conservative,
“seven
DOF,”
symmetric
Bricard
mechanism
with
zero
potential
energy
may
be
modeled
and
simulated
without
setting
up
and
solving
its
equations
of
motion.
Imposing
zero
momentum
and
constant
kinetic
energy
constraints
just
makes
it
easier
to
illustrate
some
properties
of
this
mechanism.
Once
a
set
of
parameters
has
been
provided,
its
kinetic
energy
may
be
set
to
any
constant,
positive
value.
And
with
the
barycentric
frame
fixed
to
ground,
the
first
time
derivative
of
joint
angles
may
be
evaluated.
In
addition,
the
spatial
position
and
orientation
of
all
six
bodies
relative
to
the
barycentric
frame
may
be
computed.
This
last
feature
is
especially
useful
when
animating
the
articulating
mechanism,
such
as
for
a
screen
saver.
When
referenced
to
its
fixed
barycentric
frame,
the
number
of
configurations
needed
to
represent
the
mechanism
to
within
any
specified
tolerance
is
finite,
which
means
that
the
same
finite
number
of
velocities
may
be
computed
from
the
kinetic
energy
equation.
This
equation
provides
a
unique
functional
relationship
between
the
single
parametric
angle
θ
and
its
derivative
θ
for
all
possible
configurations.
When
simulating
the
floating
Bricard
mechanism
by
numerically
integrating
its
equations
of
motion,
the
θ
and
θ
obtained
from
this
solution
could
be
compared
with
the
corresponding
θ
and
θ
obtained
from
the
invariant
equations.
Discrepancies
between
the
θ
and
θ
values
obtained
from
numerical
integration
may
be
associated
with
modeling
errors
or
errors
related
to
uncoupling
the
equations
and
numerically
integrating
the
variables.
Assuming
that
the
dynamics
model
and
the
uncoupling
processes
are
correct,
then
discrepancies
can
still
result,
because
the
barycentric
frame
may
gradually
drift
relative
to
the
inertial
frame,
allowing
the
mechanism
to
translate
and
rotate
in
space.
Barycentric
frame
drift
violates
the
six
invariant
linear
and
angular
momentum
equations.
Some
drift
is
inevitable
when
the
invariant
equations
are
not
imposed,
because
the
numerical
integration
is
only
an
approximation
process.
Regardless
of
the
specified
integration
error
tolerance,
exact
numerical
solutions
cannot
be
obtained
without
the
invariant
constraints.
In
the
long
run,
accuracy
is
limited
by
numerical
round-‐off
errors.
Acknowledgements
The
simulations,
images,
and
plots
for
this
article
were
obtained
on
a
2009
MacBook
Pro
running
OS
X
10.6.8.
Vectorworks
2010,
http://www.vectorworks.net/
was
the
CAD
program
used
to
generate
the
various
images.
Inkscape,
http://inkscape.org/
running
in
XQuartz,
http://xquartz.macosforge.org/landing/
was
used
to
set
up
and
modify
some
of
the
images.
Maxima
http://maxima.sourceforge.net/
was
used
to
symbolically
process
the
kinematic
loop
equations.
GNU
Octave
http://www.gnu.org/software/octave/
was
used
to
solve
the
equations.
And
Gnuplot
http://www.gnuplot.info/
was
used
to
produce
the
plots.
Preliminary
kinematics
The
woes
of
numerical
methods
Six
highly
nonlinear
constraint
equations,
expressed
in
terms
of
six
revolute
joint
variables,
are
required
to
define
the
Bricard
mechanism’s
kinematics.
Bricard
called
this
and
similar
mechanisms
paradoxical,
because
figuring
out
their
correct
mobility
is
difficult.
http://math.aalto.fi/~arponen/my_stuff/rapoversio_bricard.pdf
The
mechanism’s
six-‐by-‐six
constraint
Jacobian
matrix,
expressed
in
terms
of
its
six
joint
variables,
has
a
rank
of
5,
which
gives
it
one
internal
DOF.
However,
the
slightest
of
geometrical
errors
will
cause
the
matrix
to
have
a
rank
of
6
and
prevent
articulation.
This
happens
because
even
the
slightest
of
errors
in
aligning
or
positioning
the
joints
will
prevent
the
mechanism
from
assembling
or
articulating,
unless
the
joints
are
given
sufficient
clearances
or
the
links
are
flexible.
In
this
development,
all
bodies
are
assumed
to
be
rigid
and
zero-‐clearance
joints
are
assumed
perfectly
aligned,
so
technically
the
links
will
be
able
to
articulate
relative
to
each
other.
However,
numerical
errors
are
always
lurking.
Thus,
in
the
presence
of
numerical
round-‐off
errors
and
constraint
violations,
even
when
the
zero-‐clearance
joints
are
perfectly
aligned,
some
multibody
dynamics
programs
may
get
the
wrong
solution.
Rank-‐revealing
numerical
methods,
such
as
Gaussian
Elimination
with
Complete
Pivoting,
may
find
an
incorrect
rank
for
Jacobian
matrices
associated
with
constraints
of
this
type.
Research
related
to
these
issues
has
been
performed
but
will
not
be
discussed
here.
It
suffices
to
say
that
incorrect
processing
of
kinematic
constraint
equations
may
cause
dynamic
simulations
to
fail
or
give
unexpected,
possibly
undetected,
unreliable
results.
But,
as
will
become
apparent
in
the
next
section,
we’ll
not
have
to
deal
with
such
issues
here.
The
symmetric
Bricard
mechanism’s
loop
constraint
equations
are
complicated,
but
a
few
simple
equations
among
its
six
joint
variables
may
be
extracted
using
a
symbolic
processor,
such
as
Maxima.
When
the
model
is
set
up
symmetrically,
as
illustrated
in
Fig.
1,
and
the
joint
variables
are
numbered
sequentially
around
the
loop
from
0
to
5
and
labeled
θ i , i = 0,...,5 ,
then
two
sets
of
constraints
on
these
variables,
namely
θ 0 = θ 2 = θ 4
and
θ1 = θ 3 = θ 5 ,
are
immediately
identified.
These
constrains
then
eliminate
four
DOF
from
the
model
and
leave
only
two
unique
variables,
labeled
θ e
and
θ o ,
where
the
e
and
o
subscripts
stand
for
the
respective
even
and
odd-‐numbered
indices
associated
with
the
joints
and
links.
Examples
in
this
paper
will
often
use
various
numerical
indices
associated
with
the
even
and
odd-‐numbered
variables
and
links,
such
as
θ 0
and
θ 5 ,
in
place
θ e
and
θ o .
from
the
loop
equations,
which
is
this
mechanism’s
characteristic
equation.
With
the
other
four
constraints
implied,
Eq.
(1)
is
what
makes
the
model
perform
as
it
does.
The
expanded
kinematic
loop
constraint
equations
could
fill
many
pages,
but
they
essentially
boil
down
to
this
one
simple
characteristic
equation.
Thus
Eq.
(1)
is
the
heart
of
this
development.
It
shows
the
exact
kinematic
relationship
between
θ e
and
θ o ,
between
θ 0
and
θ 5 ,
or
between
any
pair
of
even
and
odd-‐numbered
joint
variables,
even
when
the
two
joints
are
not
common
to
the
same
link.
In
essence,
Eq.
(1)
allows
the
introduction
of
a
single
parametric
variable
θ
to
represent
the
entire
mechanism’s
internal
kinematics,
because,
as
will
be
discovered
shortly,
it
constrains
each
of
the
θ e
and
θ o
variables
to
lie
within
the
limits
of
± 2π 3
radians.
Therefore
no
single
joint
variable
can
be
suitable
for
representing
all
configurations.
The
plane
containing
the
six
long
vectors
is
the
plane
of
symmetry,
the
barycentric
plane
to
which
a
Cartesian
coordinate
frame
b
has
been
attached
at
the
mechanism’s
geometrical
center
as
shown
in
Fig.
1.
The
red
x
and
green
y-‐axes
of
frame
b
lie
in
the
barycentric
plane,
and
the
blue
z-‐axis
is
perpendicular
to
it.
The
z-‐
axis
then
lies
on
the
mechanism’s
axis
of
symmetry.
When
all
six
links
have
identical
dimensions,
have
centers
of
mass
at
their
geometrical
centers,
and
have
principal
inertia
axes
aligned
with
the
body-‐fixed
frames
at
their
centers,
then
the
Bricard
mechanism’s
combined
inertia,
which
is
its
barycentric
inertia,
is
centered
on
frame
b .
In
essence,
for
all
configurations,
the
floating
mechanism’s
center
of
mass
lies
at
the
origin
of
frame
b ,
and
its
principal
inertia
axes
are
aligned
with
these
axes.
Thus
the
articulating
mechanism’s
6
by
6
inertia
matrix,
referenced
to
and
expressed
in
barycentric
coordinates,
is
diagonal
for
all
configurations.
⎡ t b ⎤
=⎢ b ⎥
gb,b
v b
(2)
gb,b
⎢ ω gb ⎥
⎣ ⎦
⎡ t b ⎤ ⎡ t b ⎤ ⎡ t b ⎤
=⎢ b ⎥ + ⎢ bi,b ⎥ = ⎢ gi,b ⎥
gb,b
v b
=v b
+v
b
(3)
gi,b gb,b bi,b
⎢ ω gb ⎥ ⎢ ωb ⎥ ⎢ ω gib ⎥
⎣ ⎦ ⎣ bi ⎦ ⎣ ⎦
The
general
symbol
tijb ,b
represents
the
linear
or
translational
velocity
of
frame
! j
!
relative
to
frame
!i
at
the
common
points
identified
by
the
symbol
!b
following
the
comma.
That
is,
all
linear
velocities
are
taken
at
points
that
instantaneously
coincide
with
the
origin
of
frame
!b .
The
superscript
!b indicates
that
the
coordinates
are
expressed
in
frame
!b .
In
a
similar
manner,
the
general
symbol
ω bij
represents
the
!
angular
or
rotational
velocity
of
frame
! j
relative
to
frame
!i ,
and
the
superscript
!b indicates
that
the
coordinates
are
expressed
in
frame
!b .
Thus
each
spatial
velocity
is
expressed
in
the
coordinates
of
frame
b
and
referenced
to
its
origin,
as
indicated
by
the
b
superscript
and
the
b
subscript
following
the
comma.
Spatial
momentum
Total
spatial
momentum
of
the
mechanism
is
given
as
5
b
pb,b = ∑ M i,bb
bb b
vgi,b
i=0
( )
5
= ∑ M i,bb
bb b
vgb,b + vbi,b
b
i=0
(4)
⎛ 5 bb ⎞ b
5
i=0 i=0
5
= M b,bb
bb b
vgb,b + ∑ M i,bb
bb b
vbi,b
i=0
= ∑ i=0 M i,bb
5
The
6
by
6
diagonal
matrix
M b,bb
bb bb
represents
the
mechanism’s
second-‐
order
barycentric
inertia
tensor,
expressed
at
the
origin
of
its
barycentric
frame
!b
and
in
its
coordinates,
and
the
6
by
1
column
matrix
pb,b
b
represents
its
spatial
momentum,
also
expressed
at
the
origin
of
frame
!b
and
in
its
coordinates.
When
the
spatial
momentum
is
set
to
zero,
Eq.
(4)
yields
5
bb
M b,bb b
vgb,b = − ∑ M i,bb
bb b
vbi,b
(5)
i=0
When
the
mechanism’s
spatial
momentum
is
zero,
it
must
not
drift
through
space
nor
rotate
about
any
axis.
In
essence,
its
barycentric
frame
b
must
not
move,
which
means
that
vgb,b
b
= 0
and
5
∑M bb b
v
i,bb bi,b = 0
(6)
i=0
1 5 bT bb b
T= ∑ vbi,b M i,bbvbi,b = C
2 i=0
(7)
which
now
makes
a
total
of
seven
velocity
constraints,
the
same
as
its
DOF?
Equation
(6)
handles
the
mechanism’s
six
floating
velocity
components,
and
Eq.
(7)
takes
care
of
the
single
internal
velocity
component.
Figure
2.
The
even
and
odd-‐numbered
links
that
form
the
Bricard
mechanism.
Figure
2
shows
the
six
links
of
the
Bricard
mechanism
laid
out
for
easy
visualization.
Each
link
has
a
Cartesian
coordinate
reference
frame
attached
at
its
geometrical
center,
which
is
also
its
center
of
mass.
The
respective
x,
y,
and
z-‐axes
of
each
coordinate
frame
are
colored
red,
green,
and
blue
for
easy
identification.
The
green
y-‐axes
of
all
frames
are
aligned
along
the
link
centerlines.
Thus
all
y-‐axes
in
the
assembled
configuration
(refer
to
Fig.
1)
align
with
a
positive
traversal
around
the
mechanism’s
kinematic
loop;
they
also
represent
a
positive
circuit
around
the
barycentric
frame’s
blue
z-‐axis.
Coordinate
systems
attached
at
the
pin
and
hinge
ends
of
the
links
are
oriented
so
that
the
even
and
odd-‐numbered
joint
angles
θe
and
θo
are
zero
when
adjacent
links
! !
form
a
straight
line.
The
included
angles
π − θe
and
π − θo
are
sometimes
used
in
! !
equations
instead
of
θe
and
θo .
Since
θe
and
θo
can
take
on
values
between
!±2π 3 ,
! ! ! !
these
included
angles
have
values
between
!π 3
and
!5π 3 .
Figure
1
shows
included
angles
of
!π 2 ,
and
two
upcoming
examples
will
show
included
angles
of
π
and
!π 3
for
joint
angles
of
zero
and
!2π 3 .
When
θe
or
θo
are
less
than
zero,
the
mechanism
! !
essentially
turns
inside
out,
and
the
included
link
angles
become
greater
than
π .
Figure
3.
Vectors
joining
adjacent
link
centers
of
mass
in
the
barycentric
frame’s
x-‐y
plane.
As
noted
earlier,
when
the
conservative
mechanism
has
zero
spatial
momentum,
its
barycentric
frame
remains
fixed
in
space
as
the
bodies
articulate
around
it.
The
link
centers
of
mass
remain
in
the
barycentric
frame’s
x-‐y
plane,
and
they
undulate
about
six
central
points
spaced
at
60°
intervals
on
a
circle
of
varying
radius
and
centered
on
the
blue
z-‐axis.
Figure
3
shows
six
equal-‐length
vectors
with
their
heads
and
tails
located
at
the
link
centers
of
mass
for
the
configuration
shown
in
Fig.
1,
so
these
vectors
also
lie
in
the
barycentric
frame’s
x-‐y
plane.
The
six
corners
of
the
hexagon
in
Fig.
3
identify
central
points
about
which
the
centers-‐of-‐mass
will
undulate
in
the
barycentric
plane.
What
this
means,
as
will
be
illustrated
shortly,
is
that
the
six
link
centers
of
mass
don’t
remain
stationary
in
the
barycentric
plane,
but
move
along
small
arc-‐like
paths
in
the
plane
as
the
mechanism
articulates.
We
won’t
draw
out
these
paths,
but
later
figures
will
show
points
at
both
ends
of
these
short
curves.
And,
as
mentioned
earlier,
the
six
corners
of
the
hexagon
in
Fig.
3
identify
the
center
points
of
these
curves.
Let
represent
the
length
of
each
link,
which
is
the
distance
between
adjacent
revolute
joint
axes.
Then,
for
the
configuration
in
Fig.
1,
each
edge
of
the
hexagon
in
Fig.
3
is
the
hypotenuse
of
a
right
triangle
with
equal
leg
lengths
of
2 .
Thus
each
vector
has
a
length
of
( )
2 / 2 .
The
geometry
in
Fig.
3
also
indicates
that
each
link’s
center
of
mass
is
r = ( )
2 / 2
away
from
the
barycentric
frame’s
origin,
which
is
at
the
center
of
a
radius
r
circle
containing
all
six
points.
Equations
to
evaluate
the
circle
radius
r
and
the
lengths,
e
and
o ,
of
the
even
and
odd-‐numbered
vectors
! !
for
all
configurations
will
be
derived
later.
Figure
3
also
shows
that
the
barycentric
frame’s
red
x-‐axis
is
perpendicular
to
and
points
toward
the
midpoint
of
the
long
red
vector,
and
it
is
perpendicular
to
and
points
away
from
the
midpoint
of
the
cyan
vector.
Orienting
the
barycentric
frame’s
x
and
y-‐axes
relative
to
the
Bricard
mechanism
is
arbitrary,
but
the
orientation
will
not
change
once
set.
Thus
the
red
x-‐axis
will
remain
perpendicular
to
and
centered
on
the
long
red
and
cyan
vectors
for
all
configurations.
However,
as
will
be
seen
shortly,
the
six
vectors
will
continually
change
magnitude
and
position
as
the
mechanism
articulates,
but
each
vector’s
direction
and
orientation
will
remain
fixed
relative
to
the
barycentric
frame.
And
all
vectors
will
remain
in
the
barycentric
frame’s
x-‐y
plane
for
all
configurations.
Figure
4.
Side
view
of
Bricard
mechanism
looking
down
the
long
red
vector.
Figure
5.
Skewed
side
view
of
Bricard
mechanism
showing
all
six
links
and
joints.
Figures
4
and
5
show
the
Bricard
mechanism
viewed
tangent
to
its
barycentric
plane,
which
is
horizontal
in
these
images.
The
orthographic
view
in
Fig.
4
is
looking
straight
down
the
long
red
vector
from
its
tail
end
and
straight
down
the
cyan
vector
from
its
head
end.
These
figures
show
another
symmetric
property
of
the
mechanism,
where
centers
of
the
even-‐numbered
red,
green,
and
blue
joints
are
equidistant
below
the
barycentric
frame’s
x-‐y
plane,
and
centers
of
the
odd-‐
numbered
yellow,
cyan,
and
magenta
joints
are
equidistant
above
it.
As
the
mechanism
articulates,
the
two
sets
of
joints
will
periodically
swap
positions,
the
even-‐numbered
joints
either
above
or
below
the
x-‐y
plane,
the
odd-‐numbered
joints
always
on
the
opposite
side,
and
the
two
sets
of
joints
always
equidistant
from
the
plane.
At
those
configurations
where
the
two
sets
of
joints
are
just
swapping
positions,
the
centers
of
all
six
joints
will
also
lie
in
the
barycentric
frame’s
x-‐y
plane.
Two
examples
of
such
configurations
are
shown
later.
Figure
6.
Top
view
of
Bricard
mechanism
with
θ e = 0
and
θ o = 2π 3 .
Figure
6
shows
another
Bricard
mechanism
configuration
where
the
centerlines
of
all
links
and
the
centers
of
all
joints
lie
in
the
barycentric
frame’s
x-‐y
plane.
In
this
case,
the
red,
green,
and
blue
joint
angles
θ e
are
zero,
and
the
yellow,
cyan,
and
magenta
joint
angles
θ o
are
2π / 3
radians
or
120°.
This
value
for
θ o
is
as
large
as
any
joint
angle
can
get,
and
it
will
be
shown
later
that
each
angle
can
range
between
±2π / 3
radians
or
±120° .
In
this
configuration,
the
long
red,
green,
and
blue
vectors
lie
along
the
link
centerlines,
and
the
shorter
yellow,
cyan,
and
magenta
vectors
subtend
the
respective
yellow,
cyan,
and
magenta
joint
angles,
each
to
form
one
side
of
an
equilateral
triangle
whose
edge
lengths
are
2 .
These
lengths
may
be
verified
by
inspecting
Fig.
6.
Figure
7.
Vectors
joining
adjacent
link
centers
of
mass
in
the
barycentric
frame’s
x-‐y
plane.
Figure
7
shows
the
six
long
vectors
that
connect
the
centers
of
mass
in
the
barycentric
plane
of
the
mechanism
in
Fig.
6.
The
barycentric
frame’s
red
x-‐axis
is
still
orthogonal
to
and
centered
on
the
red
and
cyan
vectors
as
before,
and
the
six
vectors
still
have
the
same
angular
orientations,
but
their
magnitudes
and
positions
have
changed.
Where
in
the
previous
example
each
vector
had
a
magnitude
of
( )
2 / 2 ,
now
the
long
red,
green,
and
blue
vectors
have
a
magnitude
of
,
and
the
yellow,
cyan,
and
magenta
vectors
have
a
magnitude
of
/ 2 .
The
radius
of
the
mass-‐
center
circle
(to
the
corners
of
the
hexagon)
has
also
increased
from
r = 6 12
to
r = 7 /12 .
These
are
the
extreme
values
of
r .
A
formula
for
computing
r
for
all
configurations
will
be
derived
later,
and
r
will
be
plotted
as
a
function
of
θ .
Figure
8.
Top
view
of
Bricard
mechanism
with
θ e = 2π 3
and
θ o = 0 .
Figure
8
shows
a
third
Bricard
mechanism
configuration
where
the
centerlines
of
all
links
and
the
centers
of
all
joints
again
lie
in
the
barycentric
frame’s
x-‐y
plane.
Now
the
even-‐numbered
red,
green,
and
blue
joints
have
positive
angles
of
θ e = 2π / 3
radians
or
120°,
and
the
odd-‐numbered
yellow,
cyan,
and
magenta
joints
have
angles
of
θ o = 0 .
In
this
case
the
red,
green,
and
blue
vectors
have
a
magnitude
of
/ 2 ,
and
the
yellow,
cyan,
and
magenta
vectors
have
a
magnitude
of
.
Figure
9.
Vectors
joining
adjacent
link
centers
of
mass
in
the
barycentric
frame’s
x-‐y
plane.
Figure
9
shows
how
the
six
long
vectors
are
laid
out
relative
to
the
barycentric
frame
for
the
configuration
in
Fig.
8.
Again,
these
vectors
have
the
same
orientation
relative
to
the
barycentric
frame,
and
only
their
lengths
and
symmetric
positions
have
changed.
Figure
10.
Overlaid
vectors
for
the
Bricard
mechanism
configurations
in
Figs.
1,
6,
and
8.
The
hexagons
formed
by
the
six
vectors
connecting
the
link
centers
and
centers
of
mass
for
the
Bricard
mechanism
configurations
shown
in
Figs.
1,
6,
and
8
are
overlaid
in
Fig.
10
for
comparison.
The
link
centers
of
mass
do
not
circulate
around
the
barycentric
frame’s
blue
z-‐axis,
but
undulate
within
small
regions
in
its
x-‐y
plane
as
suggested
by
the
figure.
From
the
earlier
calculations,
the
centers
of
mass
are
( )
seen
to
move
radially
no
more
than
7 /12 − 6 /12 = 0.0566 .
The
circumferential
movement
of
these
points
is
a
little
more
difficult
to
quantify,
but
the
corners
of
the
hexagons
in
Figs.
7
and
9
represent
the
extremes.
The
superimposed
images
in
Fig.
10
suggest
that
these
points
move
back
and
forth
along
small
arc-‐like
segments
spaced
at
60°
intervals
around
the
barycentric
frame’s
z-‐
axis.
Equations
for
expressing
the
mechanism’s
even
and
odd-‐numbered
joint
angles,
θ e and
θ o ,
and
their
first
time
derivatives
in
terms
of
θ
and
θ
are
derived
later,
but
the
process
might
go
as
follows.
To
start
the
analysis,
require
that
the
spatial
momentum
be
zero
and
set
a
positive
value
for
the
kinetic
energy.
Since
the
barycentric
frame
!b
is
fixed,
let
it
replace
the
global
inertial
frame
!g .
First
specify
an
initial
value
for
θ
and
evaluate
θ e and
θ o .
With
θ e and
θ o
known,
assemble
the
mechanism
relative
to
its
barycentric
frame;
obtain
equations
to
evaluate
θe and
θo
as
functions
of
θ e ,
θ o ,
and
θ ;
express
the
spatial
velocity
of
each
link
relative
to
the
barycentric
frame
in
terms
of
θ e ,
θ o ,
θe ,
and
θo ;
and
use
these
equations
to
express
the
kinetic
energy
in
terms
of
θ e ,
θ o ,
and
θ
and
solve
this
equation
for
θ .
Then
with
θ
known,
numerically
integrate
it
to
get
the
next
value
for
θ
and
repeat
the
process.
Using
numerical
integration
to
obtain
the
next
value
of
θ
is
useful,
because
the
conservation
equations
do
not
indicate
how
θ
should
evolve
over
time,
given
current
values
for
θ
and
θ .
However,
if
synchronizing
θ
with
time
is
not
important,
then
any
value
for
θ
may
be
used
for
the
next
step.
There
are
some
issues
associated
with
symbolically
solving
for
θ
from
the
kinetic
energy
equation.
First,
this
equation
is
somewhat
complex,
making
it
difficult
to
isolate
and
solve
for
θ .
Second,
the
parametric
variable
θ
is
not
natural
to
the
model,
and
the
slopes
of
various
intermediate
quantities
that
multiply
with
θ
are
discontinuous
at
transition
points
between
the
equations
relating
θ e and
θ o
to
θ .
It
turns
out
to
be
easier
and
more
efficient
to
give
θ
a
normalized
value
of
θ = 1
for
any
value
of
θ
and
then
solve
for
the
normalized
kinetic
energy
T (θ ,θ = 1) .
Now
T (θ ,θ = 1)
will
generally
not
be
equal
to
the
desired
constant
T (θ ,θ ) = C ,
but
the
two
quantities
are
related
as
The
sign
on
θ
in
Eq.
(9)
is
set
according
to
whether
θ
is
to
be
increasing
or
decreasing
with
time.
The
values
computed
for
θ
from
Eq.
(9)
will
be
referred
to
as
the
scaled
θ ,
and
the
slope
of
its
curve
as
a
function
of
θ
will
be
discontinuous.
Curves
for
normalized
quantities
that
depend
linearly
on
θ ,
but
have
been
evaluated
using
the
normalized
θ = 1
for
the
purpose
of
computing
T (θ ,θ = 1) ,
will
also
have
discontinuous
slopes.
As
noted
earlier,
these
slopes
are
discontinuous
because
second
derivatives
of
the
parametric
equations
relating
θ e
and
θ o
to
θ
are
discontinuous
at
the
transition
points.
These
discontinuities
will
be
discussed
later.
However,
rescaling
the
normalized
curves
with
discontinuous
slopes
by
the
scaled
θ
curve
with
discontinuous
slope
generates
new
scaled
curves
with
continuous
slopes
and
provides
values
that
would
have
been
used
to
evaluate
the
desired
constant
T (θ ,θ )
if
θ
were
known.
Plots
of
the
various
normalized
and
scaled
quantities
involved
in
computing
T (θ ,θ = 1)
and
T (θ ,θ )
will
be
presented
as
a
function
of
θ
for
comparison
purposes.
The
resulting
differences
between
normalized
and
scaled
curves
are
sometimes
striking,
especially
the
scaled
curve
for
θ .
It
should
be
expected
that
all
curves
used
to
evaluate
T (θ ,θ )
have
continuous
slopes,
because
the
kinetic
energy
is
constant,
which
clearly
has
a
continuous
slope.
But
before
these
curves
are
obtained,
it
will
be
useful
to
take
a
closer
look
at
the
Bricard
mechanism.
Figure
11.
Section
of
the
Bricard
mechanism
with
even
and
odd-‐numbered
links,
and
odd-‐numbered
connecting
joint.
This
discussion
will
show
how
adjacent
Cartesian
reference
frames
on
links
are
related
to
each
other
through
their
connecting
revolute
joints.
Figure
11
shows
two
links
connected
by
an
odd-‐numbered
joint
1
(yellow),
with
an
even-‐numbered
link
0
(red/yellow)
on
the
right
and
an
odd-‐numbered
link
1
(yellow/green)
on
the
left.
The
matrix
product
Deo = Ty ( / 2 ) Ry ( −π / 2 ) Rz (θ o ) Ty ( / 2 ) (10)
represents
the
spatial
displacement
from
the
middle
reference
frame
attached
to
the
even-‐numbered
link
(red/yellow)
on
the
right
to
the
middle
reference
frame
attached
to
the
odd-‐numbered
link
(yellow/green)
on
the
left.
The
spatial
transformation
Ty ( / 2 )
means
translate
(along
the
green
y-‐axis)
half
the
distance
along
the
even-‐numbered
(red/yellow)
link’s
centerline,
Ry ( −π / 2 )
means
rotate
by
−π / 2
around
the
centerline
of
the
even-‐numbered
(red/yellow)
link
(again
around
the
green
y-‐axis),
Rz (θ o )
means
rotate
by
θ o
around
the
blue
z-‐axes
of
the
odd-‐
numbered
(yellow)
joint,
and
Ty ( / 2 )
means
translate
half
the
distance
along
the
odd-‐numbered
(yellow/green)
link’s
centerline
(another
green
y-‐axis.)
These
displacement
matrices
represent
how
the
middle
frame
on
the
odd-‐numbered
link
(yellow/green)
would
be
displaced
away
from
the
middle
frame
on
the
even-‐
numbered
link
(red/yellow)
into
its
relative
spatial
position
shown
in
Fig.
11.
Figure
12.
Section
of
the
Bricard
mechanism
with
odd
and
even-‐numbered
links,
and
even-‐numbered
connecting
joint.
Similar
to
the
previous
discussion,
Fig.
12
shows
two
links
connected
by
an
even-‐
numbered
(green)
joint,
with
an
odd-‐numbered
(yellow/green)
link
on
the
right
and
an
even-‐numbered
(green/cyan)
link
on
the
left.
In
this
case
the
product
Doe = Ty ( / 2 ) Ry (π / 2 ) Rz (θ e ) Ty ( / 2 ) (11)
represents
the
spatial
displacement
from
the
middle
frame
of
the
odd-‐numbered
link
(yellow/green)
on
the
right
to
the
middle
frame
of
the
even-‐numbered
link
(green/cyan)
on
the
left,
where
the
only
difference
between
Eqs.
(10)
and
(11)
is
that
Ry (π / 2 )
in
Eq.
(11)
means
rotate
by
π / 2
radians
around
the
centerline
of
the
odd-‐numbered
link
(yellow/green).
Deo = Ty ( / 2 ) Ry ( −π / 2 ) Rz (θ o ) Ty ( / 2 )
⎡ 1 0 0 0 ⎤⎡ 1 0 0 0 ⎤⎡ 1 0 0 0 ⎤⎡ 1 0 0 0 ⎤
(12)
⎢ ⎥⎢ ⎥ ⎢ 0 cosθ − sin θ o
⎥
0 ⎥⎢ 0 ⎥
0 1 0 0 0 0 0 −1 ⎥ ⎢ 1 0 0
=⎢ ⎥⎢ ⎢ ⎥
o
From
Eq.
(12)
the
translational
and
rotational
parts
of
this
spatial
displacement
are
identified
as
⎡ 0 ⎤
⎢ ⎥
e
t eo = ⎢ (1+ cosθ o ) / 2 ⎥
(13)
⎢ − sin θ / 2 ⎥
⎣ o
⎦
and
⎡ 0 0 −1 ⎤
⎢ ⎥
R = ⎢ sin θ o
eo
cosθ o 0 ⎥
(14)
⎢ cosθ o − sin θ o 0 ⎥
⎣ ⎦
Doe = Ty ( / 2 ) Ry (π / 2 ) Rz (θ e ) Ty ( / 2 )
⎡ 1 0 0 0 ⎤⎡ 1 0 0 0 ⎤⎡ 1 0 0 0 ⎤⎡ 1 0 0 0 ⎤
⎢ ⎥⎢ ⎥⎢ 0 cosθ e − sin θ e
⎥
0 ⎥⎢ 0 ⎥
=⎢
0 1 0 0 ⎥⎢ 0 0 0 1 ⎥⎢ ⎢ 1 0 0 ⎥
⎢ /2 0 1 0 ⎥⎢ 0 0 1 0 ⎥⎢ 0 sin θ e cosθ e 0 ⎥⎢ / 2 0 1 0 ⎥
⎢ 0 0 0 1 ⎥⎢ 0 −1 0 0 ⎥⎢ ⎥⎢ ⎥
(15)
⎣ ⎦⎣ ⎦ ⎢⎣ 0 0 0 1 ⎥⎦ ⎣ 0 0 0 1 ⎦
⎡ 1 0 0 0 ⎤
⎢ ⎥ ⎡
0 0 0 1 ⎥=⎢ 1 0 ⎤
= ⎢⎢ ⎥
(1+ cosθ e ) / 2 sinθ e cosθ e 0 ⎥ ⎢ t oe
o
R oe ⎥
⎢ ⎥ ⎣ ⎦
⎢⎣ sin θ e / 2 − cosθ e sin θ e 0 ⎥
⎦
where
⎡ 0 ⎤
⎢ ⎥
t o
oe = ⎢ (1+ cosθ e ) / 2 ⎥
(16)
⎢ sin θ e / 2 ⎥
⎣ ⎦
and
⎡ 0 0 1 ⎤
⎢ ⎥
R = ⎢ sin θ e
oe
cosθ e 0 ⎥
(17)
⎢ − cosθ e sin θ e 0 ⎥
⎣ ⎦
The
direction
cosine
matrix
R eo
is
a
little
more
interesting.
The
third
column
shows
that
the
z-‐axis
of
the
even-‐numbered
frame
is
projected
onto
the
x-‐axis
of
the
odd-‐
numbered
frame,
which
can
be
verified
by
inspection.
The
first
and
second
columns
show
how
the
y
and
z-‐axes
of
the
even-‐numbered
frame
are
projected
onto
the
x
and
y-‐axes
of
the
odd-‐numbered
frame.
⎡ 1 0 ⎤⎡ 1 0 ⎤
Deo Doe = ⎢ e ⎥⎢ o ⎥
⎢⎣ t eo R eo ⎥ ⎢ t oe R oe ⎥
⎦⎣ ⎦
(18)
⎡ 1 0 ⎤
=⎢ e ⎥
⎢⎣ t eo + R t oe
eo o
R R oe
eo
⎥⎦
⎡ 0 0 −1 ⎤ ⎡ 0 0 1 ⎤
⎢ ⎥⎢ ⎥
R R = ⎢ so
eo oe
co 0 ⎥ ⎢ se ce 0 ⎥
⎢ co −so 0 ⎥ ⎢ −ce se 0 ⎥
⎣ ⎦⎣ ⎦
(19)
⎡ ce −se 0 ⎤
⎢ ⎥
= ⎢ co se co ce so ⎥
⎢ −s s −so ce co ⎥
⎣ o e
⎦
and
⎡ 0 ⎤ ⎡ 0 −1 ⎤ ⎡
0 0 ⎤
⎢ ⎥ ⎢ ⎥⎢ ⎥
e
t eo + R eo t oe
o
= ⎢ (1+ co ) / 2 ⎥ + ⎢ so 0 ⎥ ⎢ (1+ ce ) / 2
co ⎥
⎢ −s / 2 ⎥ ⎢ co −so 0 ⎥ ⎢ se / 2 ⎥
⎣ o
⎦ ⎣ ⎦⎣ ⎦
⎛⎡ 0 ⎤ ⎡ 0 0 −1 ⎤ ⎡ 0 ⎤⎞
⎜⎢ ⎥ ⎢ ⎥⎢ ⎥
(20)
= ⎜ ⎢ 1+ co ⎥ + ⎢ so co 0 ⎥ ⎢ 1+ ce ⎥⎟⎟ / 2
⎜ ⎢ −so ⎥ ⎢ co −so 0 ⎥ ⎢ se ⎥⎟⎠
⎝⎣ ⎦ ⎣ ⎦⎣ ⎦
⎛⎡ ⎤ ⎡ −se ⎤⎞
0
⎜⎢ ⎥ ⎢ ⎥⎟
= ⎜ ⎢ 1+ co ⎥ + ⎢ co (1+ ce ) ⎥⎟ / 2
⎜ ⎢ −s
⎜⎝ ⎣ ⎥ ⎢ −s (1+ c ) ⎥⎟
o
⎦ ⎢⎣ o e ⎥⎦⎟⎠
circle
and
comes
back
to
the
starting
point.
Returning
to
the
kinematic
starting
point
yields
a
null
spatial
displacement
equation
from
which
the
kinematic
loop
constraint
equations
may
be
extracted.
It
is
a
chore
to
expand
and
reduce
this
product
into
meaningful
constraint
equations,
so
it
was
set
up
in
Maxima
and
simplified.
A
common
occurrence
after
symbolic
expansion
and
reduction,
which
has
been
reported
more
than
once
in
the
literature,
is
the
characteristic
equation
presented
in
Eq.
(1)
and
repeated
here
for
reference
as
This
simple
equation
controls
the
complete
internal
kinematics
of
the
complex
Bricard
mechanism.
Now
how
can
it
be
used?
First,
rearrange
Eq.
(22)
into
−co
ce =
(23)
1+ co
and
−ce
co =
(24)
1+ ce
Then
solve
for
⎛ −co ⎞
θ e = ± cos −1 ⎜
(25)
⎝ 1+ co ⎟⎠
and
⎛ −ce ⎞
θ o = ± cos −1 ⎜
(26)
⎝ 1+ ce ⎟⎠
The sign ambiguity in these last two equations comes because cos x = cos ( −x ) .
pi ⎛ − sin θ ⎞
θ e = −θ + θ o = cos −1 ⎜ 0 ≤θ < π
⎝ 1+ sin θ ⎟⎠
; ;
2
3pi ⎛ sin θ ⎞
θ o = −θ + θ e = − cos −1 ⎜ π ≤ θ < 2π
⎝ 1− sin θ ⎟⎠
; ;
2
(27)
5 pi ⎛ − sin θ ⎞
θe = θ − θ o = − cos ⎜ −1
2π ≤ θ < 3π
⎝ 1+ sin θ ⎟⎠
; ;
2
7 pi ⎛ sin θ ⎞
θo = θ − θ e = cos −1 ⎜ 3π ≤ θ < 4π
⎝ 1− sin θ ⎟⎠
; ;
2
describe
a
full
cycle
of
the
Bricard
mechanism
and
cover
all
possible
internal
configurations.
Figure
13.
θ e
and
θ o
for
one
complete
cycle
of
the
Bricard
mechanism.
Figure
13
shows
the
resulting
even
and
odd-‐numbered
joint
angles
plotted
over
the
domain
of
0 ≤ θ < 4π ,
which
represents
one
complete
cycle
of
the
Bricard
mechanism,
starting
and
ending
with
the
configuration
shown
in
Fig.
1.
The
values
for
θ e
and
θ o
repeat
outside
the
domain
of
θ
in
Fig.
13.
The
graphs
show
that
the
curves
and
their
slopes
are
continuous
across
the
four
boundary
intervals.
Now
with
θ e
and
θ o
known
for
0 ≤ θ < 4π ,
it
is
possible
to
express
all
configurations
of
the
Bricard
mechanism
in
terms
of
just
one
independent
variable
θ .
While
these
curves
and
their
first
derivatives
are
continuous
across
the
transitions,
their
second
derivatives
are
not.
This
is
easily
verified
by
differentiating
the
equations
in
Eq.
(27)
twice
with
respect
to
θ .
Thus
we
will
find
later
that
plots
of
θ
and
various
quantities
expressed
in
terms
of
normalized
!θ = 1
as
a
function
of
θ
have
discontinuous
slopes.
These
discontinuities
have
some
interesting
ramifications
that
will
be
discussed
later.
differences
between
mechanisms
with
mobility
number
zero
versus
three
versus
six?
Might
one
imagine
that
a
mechanism
with
more
mobility
is
more
dexterous,
like
the
robot’s
dexterous
end
effector?
What
about
the
joints
that
make
up
a
mechanism?
When
effort
is
put
into
some
joint
of
a
mechanism,
it
may
be
easy
to
induce
displacement
or
motion,
but
when
effort
is
put
into
some
other
joint
it
may
be
difficult
or
impossible
to
induce
any
displacement
or
motion.
We
might
relate
the
ability
of
a
joint
to
control
the
mechanism
it
is
in
by
the
mechanical
advantage
afforded
its
DOF;
high
mechanical
advantage
requires
less
effort
and
low
mechanical
advantage
requires
more
effort
to
accomplish
its
tasks.
But
computing
mechanical
advantage
requires
specifying
input/output
relationships.
There
is
a
more
generic
qualitative
method
obtained
by
expressing
a
joint’s
mobility
number.
A
mechanism
with
mobility
number
!d ,
which
stands
for
its
DOF,
is
said
to
have
an
abstract
!d -‐dimensional
manifold
with
!d
orthogonal
tangent
directions
along
which
motion
is
allowed.
Now
if
the
mechanism
is
composed
of
!n
joint
DOF,
represented
by
a
total
of
!n
translational,
rotational,
and
generalized
variables,
then
each
variable
must
in
some
way
contribute
to
the
mechanism’s
mobility.
For
if
not
one
single
joint
variable
were
allowed
to
change,
then
surely
the
mechanism
must
have
zero
mobility
and
a
zero
mobility
number.
It
seems
that
each
joint’s
DOF
should
somehow
be
related
to
the
mechanism’s
constraint
manifold.
For
example,
if
a
joint
DOF
were
tangent
to
the
constraint
manifold,
it
should
have
maximum
mobility,
and
if
it
were
orthogonal
to
the
manifold,
it
should
have
zero
mobility.
Thus
a
joint’s
DOF
could
be
assigned
a
mobility
number
related
to
its
direction
cosine
or
orientation
relative
to
the
constraint
manifold.
Squaring
each
variable’s
direction
cosine
would
then
provide
mobility
numbers
between
zero
and
one.
Using
this
approach,
what
would
be
the
sum
of
all
joint
mobility
numbers
in
a
mechanism?
Perhaps
it
is
the
mechanism’s
mobility
number
or
DOF,
which
is
also
the
dimension
of
its
constraint
manifold.
Is
there
a
reliable
and
repeatable
method
for
assigning
such
joint
mobility
numbers?
Suppose
that
!A
represents
an
!m
by
!n
Jacobian
matrix
with
rank
!n − d .
Then
!A
has
an
!n
by
!d
null-‐space
matrix
!N
with
full
column
rank
such
that
!AN = 0 .
The
!d
columns
of
!N
span
the
tangent
space
of
the
constraint
manifold.
Applying
Gram-‐
Schmidt
orthogonalization
to
the
!d
columns
of
!N
yields
an
orthonormal
matrix
!V ,
where
its
!d
orthonormal
columns
also
span
the
manifold’s
tangent
space.
The
inner
product
of
the
! jth
column
of
!V
with
itself
is
1,
which
is
also
the
mobility
number
associated
with
the
! jth
orthogonal
tangent
direction
of
the
constraint
manifold.
The
sum
of
all
!d
such
inner
products
is
!d ,
which
is
the
mechanism’s
mobility
number.
Likewise,
the
inner
product
of
the
!ith row
of
!V
with
itself
is
less
than
or
equal
to
1,
and
this
corresponds
to
the
mobility
number
of
the
!ith
joint
variable.
By
this
definition,
the
sum
of
all
!n
such
inner
products
or
joint
mobility
numbers
is
also
!d ,
which
is
the
mechanism’s
mobility
number
and
the
dimension
of
its
constraint
manifold.
With
this
definition,
each
joint
variable’s
mobility
number,
the
square
of
its
direction
cosine,
is
related
to
its
degree
of
alignment
with
the
constraint
manifold.
If
a
joint’s
mobility
number
is
1,
its
angle
relative
to
the
constraint
manifold
surface
is
zero,
if
the
mobility
number
is
!1/2 ,
its
angle
is
45°,
and
if
0,
its
angle
is
90°.
Independent
joint
variables
will
have
higher
mobility
numbers
and
dependent
variables
will
have
lower
mobility
numbers.
For
the
mechanism
configuration
shown
in
Fig.
1,
the
normalized
null-‐space
matrix
is
T
⎡ 6 6 6 6 6 6 6 6 6 6 6 6 ⎤⎥
(28)
⎣⎢ ⎦
Squaring
the
norms
of
the
rows
in
Eq.
(28)
gives
the
joint
mobility
numbers
T
⎡ 1 6 1 6 1 6 1 6 1 6 1 6 ⎤
(29)
⎣ ⎦
and
they
add
up
to
unity
as
expected.
When
the
mobility
numbers
are
all
equal,
all
variables
are
equally
independent
and
dependent,
and
there
is
no
preference
for
which
one
to
select
as
independent.
The
Bricard
mechanism’s
joint
mobility
numbers
will
all
be
equal
whenever
θ e = ±π / 2
and
θ o = ±π / 2 .
Inspecting
Fig.
13
reveals
that
this
happens
on
the
±nπ
boundaries
of
θ
where
n
is
any
integer.
The
transition
points
at
±nπ
in
Eq.
(27)
were
selected
at
configurations
where
all
joint
mobility
numbers
are
equal.
Now
consider
the
Bricard
mechanism
configuration
shown
in
Fig.
6.
It
corresponds
to
θ = π 2
in
Fig.
13
where
θ e = 0
and
θ o = 2π / 3 .
The
normalized
null-‐space
matrix
for
this
configuration
is
T
⎡ 3 3 0 3 3 0 3 3 0 ⎤⎥
(30)
⎢⎣ ⎦
Equation
(31)
shows
that
the
odd-‐numbered
joint
variables
have
zero
mobility.
This
means
that
these
variables
will
have
no
ability
to
control
the
mechanism
and
must
be
dependent.
It
also
means
that
these
joints
have
zero
mechanical
advantage
relative
to
the
other
variables.
Inspecting
Fig.
6
reveals
that
the
odd-‐numbered
joints
are
at
the
corners
of
the
equilateral
triangle,
and
the
even-‐numbered
joints,
which
are
orthogonal
to
the
odd-‐
numbered
joints,
will
block
any
attempted
rotation
of
the
links.
In
essence,
the
three
sides
of
the
triangle
appear
rigid
to
the
odd-‐numbered
joints.
The
situation
is
different
for
the
even-‐numbered
joints.
In
this
case,
rotating
any
one
of
these
joints
will
cause
the
three
sides
of
the
triangle
to
start
bending
in
their
centers
and
start
the
three
odd-‐numbered
angles
to
gradually
change
magnitude.
Look
back
at
Fig.
13
and
compare
the
two
curves
around
the
θ = π 2
point.
In
fact,
compare
the
two
curves
at
each
θ = ( 2n − 1) π 2
point
where
n
is
any
integer.
The
Bricard
mechanism
shown
in
Fig.
8
has
joint
values
of
θ e = 2π / 3
and
θ o = 0 .
The
normalized
null-‐space
matrix
and
mobility
numbers
in
this
case
are
T
⎡ 0 3 3 0 3 3 0 3 3 ⎤⎥
(32)
⎣⎢ ⎦
and
T
⎡ 0 1 3 0 1 3 0 1 3 ⎤
(33)
⎣ ⎦
According
to
the
plot
in
Fig.
13,
this
configuration
occurs
at
θ = 7π 2 .
The
role
of
even
and
odd-‐numbered
joint
variables
has
reversed.
and
shows
that
θe
and
θo
are
elements
of
the
null-‐space
matrix,
which
may
be
expressed
as
T
q = ⎡ θe θo θe θo θe θo ⎤
(35)
⎣ ⎦
Thus
!Aq = 0
shows
that
!q
also
represents
the
null
space
of
!A ,
and
when
normalized
to
unity
yields
the
desired
normalized
null-‐space
matrix.
Thus
we
have
a
simple
way
of
obtaining
a
plot
of
joint
mobility
numbers
as
a
function
of
θ .
Figure
14.
Even
and
odd-‐numbered
joint
mobility
numbers.
For
all
0 ≤ θ < 4π ,
setting
either
θe
or
θo
to
unity
as
appropriate,
evaluating
the
other
quantity
using
Eq.
(34),
normalizing
the
resulting
matrix
in
Eq.
(35),
and
squaring
each
entry
gives
the
mobility
numbers
of
the
Bricard
mechanism’s
even
and
odd-‐numbered
joint
variables.
These
mobility
numbers
are
seen
to
range
between
zero
and
one-‐third,
as
the
examples
showed.
The
plot
shows
the
relative
degree
of
independence
and
dependence
of
each
variable.
A
variable
will
be
highly
dependent
when
its
mobility
number
is
near
zero,
and
in
these
situations
it
must
not
be
used
as
an
independent
variable.
The
domain
divisions
shown
in
Eq.
(27)
were
selected
to
insure
that
the
independent
variable’s
mobility
number
was
at
least
1/6
and
would
range
from
1/6
to
1/3.
as
functions
of
θ
and
θ
by
differentiating
the
equations
in
Eq.
(27).
We
will
obtain
these
values
later,
but
the
interesting
fact
is
that
all
of
these
quantities
may
be
obtained
without
assembling
the
mechanism,
evaluating
its
loop
constraint
equations
and
Jacobian
matrix,
or
solving
the
loop
velocity
equations.
However,
we
may
wish
to
correctly
position
the
links
for
other
purposes
such
as
animating
the
mechanism
or
evaluating
its
spatial
velocities
and
momentum.
Earlier
we
showed
in
Eq.
(18)
that
a
spatial
displacement
Deo Doe
from
the
origin
of
one
even-‐numbered
link
to
the
origin
of
the
next
even-‐numbered
link
could
be
expressed.
Then
we
indicated
in
Eq.
(21)
that
( Deo Doe ) = I
takes
us
full
circle
3
around
the
loop.
This
shows
that
the
mechanism
may
be
divided
into
three
identical
segments
by
slicing
through
the
center
of
each
even-‐numbered
link.
Imagine
that
we
first
evaluate
the
displacement
for
just
one
pair
of
links.
Then
rotate
a
copy
by
120°
around
the
barycentric
frame’s
z-‐axis
and
reattach
the
adjacent
even-‐numbered
link
components.
In
a
similar
manner,
rotate
a
second
copy
by
-‐120°
around
the
barycentric
frame’s
z-‐axis
and
again
reattach
the
adjacent
even-‐numbered
link
components.
With
this,
we
have
assembled
the
entire
mechanism.
Given
Eq.
(22),
the
loop
constraint
equations
don’t
have
to
be
evaluated,
so
only
the
spatial
displacement
matrices
Dbe
and
Dbo
from
the
barycentric
frame
!b
out
to
the
respective
even
and
odd-‐numbered
link
reference
frames
!e
and
!o
are
required.
We
b b
already
know
the
linear
part
of
these
displacements
as
t be
and
t bo ,
so
only
the
! !
b b
orientation
parts
!Rbe
and
!Rbo
remain
to
be
evaluated.
Matrices
t be
and
t bo
! !
represent
coordinates
in
frame
!b
of
position
or
translation
vectors
from
its
origin
to
origins
of
the
particular
even
and
odd-‐numbered
link
reference
frames.
Matrices
!Rbe
and
!Rbo
represent
direction
cosine
matrices
relating
orientation
of
the
particular
even
and
odd-‐numbered
link
reference
frames
relative
to
frame
!b .
Once
these
quantities
have
been
evaluated
for
the
first
segment,
copies
may
be
rotated
around
the
barycentric
frame’s
z-‐axis
by
±120°
to
obtain
the
remaining
four
displacement
matrices.
Figure
15.
Section
of
the
Bricard
mechanism
common
to
red
and
yellow
vectors.
Figure
15
shows
a
section
of
the
Bricard
mechanism
positioned
relative
to
barycentric
frame
!b .
The
lower
two
links
are
used
to
illustrate
the
relative
spatial
displacement
from
the
center
of
an
odd-‐numbered
link
5
(magenta/red)
through
an
even-‐numbered
joint
(red)
to
the
center
of
an
even-‐numbered
link
0
(red/yellow).
The
long
red
vector
between
the
two
frame
origins
and
link
centers
of
mass
represents
the
translational
component
of
this
displacement.
The
upper
two
links
are
used
to
illustrate
the
relative
displacement
from
the
center
of
an
even-‐
numbered
link
0
(red/yellow)
through
an
odd-‐numbered
joint
(yellow)
to
the
center
of
an
odd-‐numbered
link
1
(yellow/green).
The
long
yellow
vector
between
the
two
frame
origins
and
link
centers
of
mass
represents
the
translational
component
of
this
displacement.
These
two
spatial
displacements
in
sequence
represent
one-‐third
of
the
circuit
around
the
Bricard
mechanism,
which
corresponds
to
an
angular
displacement
of
2π / 3
radians
around
the
barycentric
frame’s
z-‐axis.
our
sequential
transformation
for
the
one-‐third
segment
would
be
Doe Deo
instead
of
!
the
previous
DeoDoe .
In
terms
of
the
actual
links
in
Fig.
15
it
would
be
D50D01 where
! !
links
5
(magenta/red),
0
(red/yellow),
and
1
(yellow/green)
are
involved.
Figure
16.
Section
of
the
Bricard
mechanism
showing
long
green
and
cyan
vectors.
Figure
16
shows
a
different
segment
of
the
Bricard
mechanism.
It
is
basically
a
rotated
copy
of
the
first
segment
shown
in
Fig.
15,
where
the
colors
have
been
changed
to
represent
different
links
1
(yellow/green),
2
(green/cyan),
and
3(cyan/blue),
different
joints,
and
different
connecting
vectors.
This
segment
is
rotated
2π / 3
radians
around
the
barycentric
frame’s
blue
z-‐axis
from
the
segment
in
Fig.
15.
The
relative
even
and
odd-‐numbered
joint
displacements
in
this
segment
are
identical
to
those
in
the
first
segment,
and
the
green
and
cyan
vector
lengths
are
the
same
as
the
respective
red
and
yellow
vector
lengths.
In
essence
every
local
property
of
the
rotated
copy
matches
the
original.
The
only
difference
is
that
the
links,
frames,
and
vectors
in
the
rotated
version
have
different
absolute
spatial
displacements
relative
to
the
barycentric
frame
!b .
A
second
copy
of
the
links,
joints,
and
vectors
in
Fig.
15
would
be
rotated
by
−2π / 3
radians
around
the
barycentric
frame’s
blue
z-‐axis
to
form
the
third
segment
of
the
Bricard
mechanism.
Figure
17.
Starting
position
for
displacing
link
0
(red/yellow)
relative
to
barycentric
frame
!b .
Figure
17
shows
the
starting
configuration
for
positioning
the
assembled
part
of
the
mechanism
in
Fig.
15,
consisting
of
link
5
(magenta/red),
link
0
(red/yellow),
and
link
1
(yellow/green),
relative
to
the
barycentric
frame
!b .
Frame
!b
is
not
apparent
in
the
image,
because
the
frames
attached
to
the
red-‐joint
ends
of
links
5
(magenta/red)
and
0
(red/yellow)
are
sitting
on
top
of
it.
Frame
!b
is
oriented
so
that
its
red
x-‐axis
points
toward
the
center
of
the
long
red
vector
and
its
blue
z-‐axis
points
upward.
For
this
assembly
process,
the
long
red
and
yellow
vectors
are
fixed
relative
to
frame
!b ,
and
they
lie
in
its
x-‐y
plane
as
indicated
in
Fig.
3.
In
the
ensuing
assembly
process,
the
link
trio
will
be
translated
and
rotated
together
until
particular
origins
of
the
three
link
reference
frames
align
with
ends
of
the
two
long
vectors.
Once
these
origins
are
aligned
with
the
vectors,
this
group
of
links
will
be
correctly
positioned
and
oriented
relative
to
the
barycentric
frame
!b .
This
is
true
because
tips
of
the
two
vectors
define
three
vertices
of
a
triangle
or
three
points
not
on
a
straight
line,
which
is
sufficient
to
position
and
orient
objects
in
space.
The
trick
to
setting
up
this
displacement
is
to
first
insert
a
floating
frame
f
inside
the
red
joint
common
to
links
5
(magenta/red)
and
0
(red/yellow),
where
both
links
are
allowed
to
rotate
relative
to
frame
f
around
their
common
blue
z-‐axes,
but
only
in
a
specific
way.
In
Fig.
17
the
red-‐joint
ends
of
links
5
and
0
hide
this
floating
frame
f ,
which
initially
coincides
with
frame
!b .
Thus
the
red
x-‐axis
of
frame
f
points
toward
the
center
of
the
long
red
vector
and
its
blue
x-‐axis
points
upward.
As
this
group
of
links
is
moved
into
place,
the
red
and
blue
axes
of
frame
f
will
remain
in
the
x-‐z
plane
of
frame
!b ,
and
the
green
y-‐axes
of
frames
!b
and
f
will
remain
parallel
and
maintain
the
same
orientation.
Refer
to
Fig.
15
to
see
where
this
group
of
links
will
end
up
relative
to
frames
!b
and
f
after
performing
the
series
of
spatial
displacements
described
next.
Specifically
note
the
position
and
orientation
of
the
long
red
vector
relative
to
frame
!b
and
the
position
and
orientation
of
the
red-‐joint
end
of
links
5
and
0
relative
to
the
long
red
vector.
It
will
be
helpful
to
periodically
refer
back
to
Fig.
15
as
we
go
through
the
following
discussion.
Initially
the
axes
of
floating
frame
f
align
with
those
of
the
frame
attached
to
the
red-‐joint
end
of
link
0
(red/yellow).
To
obtain
the
final
configuration,
link
0
(red/yellow)
and
link
1
(yellow/green)
must
be
rotated
together
relative
to
frame
f
so
that
their
two
red-‐joint
frames
become
centered
on
frame
f .
Thus,
after
the
three-‐link
combination
has
been
displaced
to
its
final
spatial
position
and
orientation
relative
to
the
barycentric
frame,
it
will
have
been
rotated
by
θ 0 2 = π 4
radians
(in
this
example)
relative
to
the
floating
frame
f
about
its
blue
z-‐axis.
In
summary,
the
origin
of
floating
frame
f
will
have
been
translated
in
the
barycentric
frame’s
x-‐z
plane
along
its
red
x-‐axis,
and
frame
f
will
then
have
been
rotated
around
its
green
y-‐axis.
Referring
back
to
Fig.
15,
imagine
the
final
position
and
orientation
of
frame
f ,
centered
between
the
two
red-‐joint
ends
of
links
5
and
0.
Its
green
y-‐axis
will
be
parallel
to
the
green
y-‐axis
of
frame
!b ,
and
its
blue
z-‐axis
will
be
aligned
with
the
blue
z-‐axes
of
the
two
red-‐joint
ends.
The
first
displacement
Tx ( r cos ( β 0 2 ))
translates
the
origin
of
frame
f
relative
to
frame
!b
by
the
distance
r cos ( β 0 2 )
along
the
common
red
x-‐axes
of
frames
!b
and
f .
See
Fig.
32
for
the
definition
of
!r
and
β0 ,
where
β0
corresponds
to
βe
in
that
! ! !
figure.
Translating
frame
f
causes
the
three
links
to
also
translate
with
it.
After
this
translation,
according
to
Fig.
15,
the
origin
of
frame
f
will
lie
on
the
center
of
the
long
red
vector
with
its
green
y-‐axis
aligned
with
the
long
red
vector
and
its
blue
z-‐
axis
pointing
upward,
parallel
to
the
blue
z-‐axis
of
frame
!b .
The
second
displacement
Ry (φ0 )
rotates
frame
f
around
its
green
y-‐axis
(also
around
the
long
red
vector)
by
an
angle
φ0
that
must
be
determined.
Again
the
three
!
links
rotate
with
frame
f .
An
equation
to
evaluate
φ0
will
be
developed
later.
!
The
third
displacement
Tx (( 2 ) sin (θ 0 2 ))
translates
the
origin
of
frame
f
and
the
three
links
along
its
red
x-‐axis
a
distance
of
Refer
back
to
Fig.
15
to
see
where
this
distance
comes
from.
Note
that
the
long
red
vector
forms
the
base
of
an
isosceles
triangle,
where
the
other
two
sides
each
have
length
! 2
and
the
angle
between
them
is
π − θ0 .
Thus
the
perpendicular
distance
!
from
the
center
of
the
long
red
vector
to
the
center
of
the
common
red
joints
is
( 2 ) sin (θ 0 2 ) ,
and
this
distance
may
be
negative
when
!θ0 < 0 .
At
this
point
the
floating
frame
f
will
have
been
properly
displaced
relative
to
the
barycentric
frame
!b ,
but
its
axes
coincide
with
those
of
the
frame
in
the
red-‐joint
attached
to
link
0
(red/yellow).
The
two
red-‐joint
frames
attached
to
links
must
be
centered
on
frame
f ,
so
the
three-‐link
combination
must
be
rotated
around
the
blue
z-‐axis
of
frame
f
by
θ0 2 .
The
final
rotation
Rz (θ 0 2 )
accomplishes
this.
!
In
the
illustrations
for
this
discussion,
the
angle
between
the
two
link-‐fixed
frames
that
form
the
red
joint
is
θ 0 = π 2
radians
around
their
common
z-‐axes,
which
is
the
value
set
for
the
example
in
Fig.
1.
As
noted
earlier,
this
angle
could
take
on
any
value
between
± 2π 3
radians,
depending
on
the
configuration
being
assembled
for
the
particular
value
of
!0 ≤ θ < 4π .
Likewise
the
angle
between
the
two
link-‐fixed
frames
that
form
the
yellow
joint
is
θ1 = π 2
radians,
and
this
angle
could
also
take
on
any
value
(subject
to
the
constraint
between
θ 0
and
θ1 )
between
± 2π 3
radians,
also
depending
on
the
value
of
!0 ≤ θ < 4π .
Figure
18.
Temporary
configurations
for
determining
the
rotation
angle
φ0 .
To
help
evaluate
the
rotation
angle
φ0
from
the
geometry
of
the
three
links
in
Fig.
18,
two
configurations
are
shown,
where
the
centers
of
link
5
(magenta/red)
and
link
0
(red/yellow)
coincide
with
the
respective
tail
and
head
ends
of
the
long
red
vector.
The
figure
illustrates
the
spatial
orientation
of
the
links
relative
to
barycentric
frame
!b
and
the
long
red
and
yellow
vectors
before
and
after
rotation
by
φ0
around
the
long
red
vector.
In
the
orientation
before
rotation,
the
center
of
link
1
(yellow/green)
is
below
the
barycentric
frame’s
x-‐y
plane
and
is
not
close
to
the
head
of
the
long
yellow
vector.
(Unfortunately
this
is
difficult
to
see
in
the
image,
but
notice
that
its
green
end
is
substantially
below
its
yellow
end.)
In
the
orientation
after
rotation,
the
center
of
link
1
(yellow/green)
has
been
rotated
upward
by
angle
φ0
so
it
then
coincides
with
the
head
of
the
yellow
vector.
(Now
the
green
end
of
link
1
has
been
swung
upward
relative
to
its
yellow
end.)
In
this
orientation,
the
centers
of
all
three
links
are
in
their
final
positions
in
the
x-‐y
plane
of
frame
!b ,
which
means
that
this
three-‐link
section
of
the
Bricard
mechanism
is
in
its
final
spatial
position
relative
to
frame
!b .
To
determine
φ0 ,
a
vector
from
the
center
of
link
0
(red/yellow)
to
the
center
of
link
1
(yellow/green)
is
first
expressed
in
the
red
joint’s
floating
frame
f
coordinates,
which
is
centered
in
the
red
joint
in
this
case.
Then
frame
f
and
this
vector
are
rotated
by
φ0
around
its
green
y-‐axis
and
the
long
red
vector,
which
is
also
oriented
with
and
parallel
to
the
barycentric
frame’s
green
y-‐axis.
Let
⎡ cos (θ 2 ) − sin (θ 2 ) 0 ⎤ ⎡ ⎤
⎢ 0 0
⎥⎢ 0 ⎥
v 0 = ⎢ sin (θ 0 2 ) cos (θ 0 2 ) 0 ⎥ ⎢ 2
f
⎥
⎢ ⎥
⎢⎣ 0 0 1 ⎥⎦ ⎢⎣ 0 ⎥⎦
(37)
⎡ − sin (θ 2 ) ⎤
⎢ 0
⎥
= ⎢ cos (θ 0 2 ) ⎥ 2
⎢ ⎥
⎢⎣ 0 ⎥⎦
represent
coordinates
of
the
vector
from
the
center
of
link
0
(red/yellow)
to
the
center
of
joint
1
(yellow)
in
floating
frame
f .
This
transformation
by
θ0 2
around
!
the
blue
z-‐axis
is
required,
because
the
red
joint
is
centered
on
frame
f ,
and
the
frame
attached
to
the
red-‐joint
end
of
link
0
(red/yellow)
has
been
rotated
away
from
frame
f
about
their
common
blue
z-‐axes
by
that
amount.
represent
coordinates
of
the
vector
from
the
center
of
joint
1
(yellow)
to
the
center
of
link
1
(yellow/green),
also
in
floating
frame
f .
The
first
transformation
results
for
the
same
reason
as
in
the
first
case.
The
second
transformation
results,
because
the
joint
reference
frame
for
the
yellow-‐joint
end
of
link
0
(red/yellow)
has
been
rotated
by
!− π 2
radians
about
the
common
green
y-‐axes
lying
along
the
link
0
(red/yellow)
centerline.
The
third
transformation
results
because
link
1
(yellow/green)
has
been
rotated
about
the
yellow
joint’s
blue
z-‐axes
by
angle
θ1 .
!
The
vector
being
transformed
in
this
case
lies
along
the
centerline
of
link
1
(yellow/green)
and
has
only
the
single
nonzero
y-‐coordinate
! 2
in
the
link
frame.
Coordinates
of
the
desired
vector
are
then
the
sum
of
these
two
matrices
or
f
v 01 = v 0f + v 1f
⎡ − sin (θ 2 ) ⎤ ⎡ − sin (θ 2 ) cosθ ⎤
⎢ 0
⎥ ⎢ 0 1
⎥
= ⎢ cos (θ 0 2 ) ⎥ 2 + ⎢ cos (θ 0 2 ) cosθ1 ⎥ 2
(39)
⎢ ⎥ ⎢ ⎥
⎢⎣ 0 ⎥⎦ ⎢⎣ − sin θ1 ⎥⎦
⎡ − sin (θ 2 ) (1+ cosθ ) ⎤
⎢ 0 1
⎥
= ⎢ cos (θ 0 2 ) (1+ cosθ1 ) ⎥ 2
⎢ ⎥
⎢⎣ − sin θ1 ⎥⎦
To
find
the
rotation
angle
φ0 ,
use
Ry (φ0 )
to
rotate
the
link
combination
around
the
common
long
red
vector
and
green
y-‐axis
of
frame
! f
to
bring
the
link-‐1
(yellow/green)
reference
frame
origin
into
alignment
with
the
arrowhead
end
of
the
long
yellow
vector.
This
rotation
is
equivalent
to
the
matrix
product
v b01 = Ry (φ0 ) v 01
f
or
In
essence,
v 01
f
has
been
rotated
by
φ0
around
the
y-‐axis
of
frame
! f
to
zero
out
its
z-‐
component.
Thus
the
third
equation
in
Eq.
(40)
is
used
to
obtain
sin θ1
tan φ0 =
(41)
sin (θ 0 2 ) (1+ cosθ1 )
Equation
(41)
has
two
problems
in
that
the
denominator
may
go
to
zero,
and
the
correct
quadrant
for
determining
φ0
cannot
be
determined.
However,
the
angle
φ0
can
be
determined
correctly
using
the
programming-‐style
function
to avoid dividing by zero and to identify the correct quadrant.
There
is
also
one
more
condition
to
consider.
As
θ
progresses
from
0
to
4π
radians,
φ0
will
execute
a
full
360°
rotation,
starting
at
54.74°
for
the
configuration
shown
in
Fig.
1
and
ending
at
414.74°,
again
at
the
configuration
in
Fig.
1.
The
atan2
function
is
designed
to
find
angles
between
±π
and
cannot
give
a
continuous
curve
for
φ0
over
the
full
domain
of
θ .
Thus
additional
logic
φ0 = φ0 + 2π ; 3π 2 ≤ θ < 4π (43)
is
required
to
adjust
the
results
from
the
atan2
function
to
give
a
continuous
curve
for
φ0 .
A
continuous
plot
of
φ0
will
be
shown
after
looking
at
some
examples.
(
φ0 = atan2 1, 2 2 )
(44)
= 54.74°
As
can
be
verified
from
Fig.
4
or
Fig.
20,
the
links
must
be
rotated
around
the
floating
frame’s
green
y-‐axis
by
φ0 = 54.74°
so
that
the
center
point
of
link
1
(yellow/green)
moves
into
the
barycentric
frame’s
x-‐y
plane.
In Fig. 6, θ 0 = 0 and θ1 = 2π 3 . Substituting these values into Eq. (42) gives
φ0 = atan2 ( 3 2,0 )
(45)
= 90°
In
this
case,
Fig.
6
shows
that
the
links
must
be
rotated
around
the
floating
frame’s
green
y-‐axis
by
φ0 = 90°
so
that
the
center
point
of
link
1
moves
into
the
barycentric
frame’s
x-‐y
plane.
In Fig. 8, θ1 = 0 and θ 0 = 2π 3 . Substituting these values into Eq. (42) gives
φ0 = atan2 0, 3 ( )
(46)
= 0°
Inspecting
Fig.
8
reveals
that
the
center
point
of
link
1
is
already
in
the
barycentric
frame’s
x-‐y
plane
with
the
floating
frame’s
blue
z-‐axis
pointing
upward,
so
the
bodies
need
no
rotation.
(In
reality,
as
shown
in
Fig.
19
below,
the
bodies
were
rotated
to
360°,
but
the
atan2
function
was
unable
to
detect
this.)
Figure
19.
Rotation
angle
φ0
of
the
floating
frame
f
centered
in
joint
0.
Figure
19
shows
the
rotation
angle
φ0
around
the
green
y-‐axis
of
floating
frame
! f ,
centered
in
joint
0,
for
one
complete
cycle
of
the
Bricard
mechanism.
The
angle
φ0
starts
at
54.74°,
which
corresponds
to
the
configuration
in
Fig.
1,
and
ends
at
414.74°
=
54.74°
+
360°,
which
again
corresponds
to
the
configuration
in
Fig.
1.
The
configuration
in
Fig.
6
is
at
θ = π 2
radians,
and
the
plot
shows
that
φ0
is
90°,
which
was
computed
above.
The
configuration
in
Fig.
8
occurs
at
θ = 7π 2
radians,
and
the
plot
shows
that
φ0
is
360°,
which
was
evaluated
as
0°
in
the
above
calculation.
Figure
20.
First
translation
for
placing
link
0
(red/yellow).
Figure
20
shows
the
first
step
in
the
assembly
process
where
the
image
of
the
displaced
segment
was
superimposed
on
the
image
of
the
original
configuration
in
Fig.
17
to
illustrate
the
relative
spatial
displacement.
The
floating
frame
! f
and
the
three
links
were
translated
along
its
red
x-‐axis
until
its
origin
intersected
the
long
red
vector.
(Refer
again
to
Fig.
15.)
The
distance
translated
is
r cos ( β 0 2 ) .
(Again
see
Fig.
32
for
the
definition
of
β e
and
β o ,
where
β 0
is
an
instance
of
β e ,
corresponding
to
an
even-‐numbered
joint
and
link.
Equations
to
evaluate
r
and
β 0
are
derived
later.)
In
this
configuration
the
floating
frame’s
green
y-‐axis
now
aligns
with
and
points
in
the
direction
of
the
long
red
vector.
Figure
21.
First
rotation
by
φ0
for
placing
link
0
(red/yellow).
Figure
21
shows
the
next
step
in
relocating
the
links,
with
the
previous
and
new
positions
superimposed.
For
example,
the
magenta
end
of
link
5
(magenta/red)
is
now
rotated
upward
relative
to
its
original
position
about
the
centerline
of
link
0
(red/yellow)
by
the
angle
φ0 ,
which
is
not
shown
in
the
figure.
Figure
22.
Second
translation
for
placing
link
0
(red/yellow).
Figure
22
shows
the
next
configuration
superimposed
on
the
previous
one
from
Fig.
21.
The
floating
frame
! f
and
the
three
links
are
now
translated
a
distance
of
( 2 ) sin (θ 0 2 )
along
its
red
x-‐axis,
which
is
still
aligned
with
the
centerline
of
link
5
(magenta/red).
The
red
x-‐axis
of
frame
! f
is
barely
visible
in
Fig.
22,
because
it
is
hidden
by
the
green
y-‐axis
of
the
red-‐joint
frame
of
link
5
(magenta/red).
Figure
23.
Second
rotation
for
placing
link
0
(red/yellow).
Figure
23
shows
the
final
step
in
relocating
the
links,
where
the
previous
and
new
positions
are
again
shown.
The
mechanism
has
now
been
rotated
θ 0 2
radians
relative
to
frame
! f
around
the
common
blue
z-‐axes
in
the
red
joint,
which
corresponds
to
π 4
radians
in
this
example.
Frame
! f
was
not
rotated,
so
its
red
x-‐
axis
remains
orthogonal
to
the
long
red
vector.
Effectively
the
red-‐joint
frame
attached
to
link
0
(red/yellow)
has
been
rotated
θ 0 2
radians
away
from
frame
! f ,
and
the
red
joint
frame
attached
to
link
5
(magenta/red)
has
been
rotated
−θ 0 2
radians
away
from
frame
! f .
After
this
second
rotation,
the
centers
of
links
5,
0,
and
1
in
Fig.
23
coincide
with
appropriate
ends
of
the
red
and
yellow
vectors,
just
as
they
do
in
the
temporary
configuration
in
Fig.
18
and
in
Fig.
1.
represents
the
sequence
of
displacements
described
in
Figs.
20
to
23.
Equation
(47)
is
expanded
as
⎡ 1 0 0 0 ⎤⎡ 1 0 0 0 ⎤⎡ 1 0 0 0 ⎤⎡ 1 0 0 0 ⎤
⎢ ⎥⎢ ⎥⎢ ⎥ ⎢ 0 cos (θ 2 ) − sin (θ 2 ) ⎥
⎢ r cos ( β 0 2 ) 1 0 0 ⎥ ⎢ 0 cosφ0 sin φ0 ⎥ ⎢ ( 2 ) sin (θ 0 2 )
=
(48)
0 1 0 0 ⎥⎢ 0 0 0 ⎥
⎢ 0 ⎥⎥
⎢ 0 0 1 0 ⎥⎢ 0 0 1 0 ⎥⎢ 0 0 1 0 ⎥ ⎢ 0 sin (θ 0 2 ) cos (θ 0 2 )
⎢ ⎥⎢ ⎥
0 cosφ0 ⎥ ⎢⎢ ⎥
⎢⎣ 0 0 0 1 ⎥⎦ ⎢⎣ 0 − sin φ0 ⎦⎣ 0 0 0 1 ⎥⎦ ⎢ 0 0 0 1 ⎥⎦
⎣
⎡ 1 0 0 0 ⎤
⎢ ⎥
⎢ r cos ( β 0 2 ) + cos φ 0 ( 2 ) sin (θ 0 2 ) cos φ 0 cos (θ 0 2 ) − cos φ 0 sin (θ 0 2 ) sin φ0 ⎥
⎢ 0 sin (θ 0 2 ) cos (θ 0 2 ) 0 ⎥⎥
⎢
⎢
⎢⎣ − sin φ0 ( 2 ) sin (θ 0 2 ) − sin φ0 cos (θ 0 2 ) sin φ0 sin (θ 0 2 ) cosφ0 ⎥⎥
⎦
Equation
(48)
describes
where
the
coordinate
frame
attached
to
the
red
joint-‐end
on
link
0
(red/yellow)
will
be
located
relative
to
the
barycentric
frame
b .
However,
it
does
not
describe
the
position
and
orientation
of
the
reference
frame
attached
to
link
0
(red/yellow)
at
its
center
of
mass
relative
to
frame
b .
Additional
transformations
would
be
needed
to
express
the
displacement
of
link
0’s
reference
frame
relative
to
frame
b .
To
check
this
displacement,
consider
the
example
shown
in
Fig.
1.
Set
= 1 ,
r = 2 2 ,
θ 0 = π 2 ,
0 = cos (θ 0 2 ) = 2 2 ,
β 0 = 2sin −1 ( 0 2r ) = 2sin −1 (1 2 ) = π 3 ,
cosφ0 = 3 3 ,
and
sin φ0 = 6 3 .
Substituting
these
quantities
into
Eq.
(48)
gives
⎡ 1 0 0 0 ⎤
⎢ ⎥ ⎡ 1 0 0 0 ⎤
⎢ 6 3 6 6 − 6 6 6 3 ⎥ ⎢ 0.816 0.408 −0.408 0.816 ⎥
⎢ ⎥=⎢ ⎥
(49)
⎢ 0 2 2 2 2 0 ⎥ ⎢ 0 0.707 0.707 0 ⎥
⎢ − ⎢ ⎥
⎢⎣ 3 6 − 3 3 3 3 3 3 ⎥⎥ ⎣ −0.289 −0.577 0.577 0.577 ⎦
⎦
Refer
back
to
Figs.
1,
4,
and
5
to
verify
that
these
numbers
look
reasonable.
The
bottom
three
entries
in
the
first
column
of
the
matrix
in
Eq.
(49)
locate
the
red
joint’s
center
relative
to
barycentric
frame
!b
and
in
its
coordinates.
The
figures
show
that
the
joint
lies
in
the
barycentric
plane,
so
the
y-‐component
is
zero
as
expected.
The
figures
also
indicate
that
the
z-‐component
is
negative,
the
x-‐
component
is
positive,
and
the
magnitudes
look
reasonable
when
referring
to
Fig.
4.
The
bottom
three
entries
of
the
fourth
column
in
Eq.
(49)
indicate
the
red
joint’s
blue
z-‐axis
projection
onto
frame
!b
axes.
Figure
1
shows
that
this
vector
lies
in
the
barycentric
frame’s
x-‐z
plane,
so
its
projection
onto
the
y-‐axis
is
zero,
and
Figs.
4
and
5
show
that
its
projection
onto
the
x
and
z-‐
axes
are
positive
and
reasonable.
The
bottom
three
entries
of
the
second
and
third
columns
in
Eq.
(49)
indicate
red
x-‐
axis
and
green
y-‐axis
projections
of
the
red
joint
(of
link
0
(red/yellow))
onto
the
barycentric
frame’s
three
axes.
The
numbers
for
the
red
x-‐axis
vector
are
a
bit
more
difficult
to
verify,
because
a
green
y-‐axis
vector
from
another
frame
has
hidden
the
red
x-‐axis
vector.
But
this
red
x-‐axis
vector
points
up
and
to
the
right
in
Fig.
1,
so
the
x
and
y
components
in
column
two
look
reasonable.
And
the
green
y-‐axis
points
up
and
to
the
left
in
Fig.
1,
so
the
x
and
y
components
in
column
three
also
look
reasonable.
Verifying
the
z-‐components
in
these
columns
is
a
bit
more
difficult.
Figure
4
shows
that
the
red
joint
is
below
the
barycentric
frame’s
x-‐y
plane,
so
its
visible
green
y-‐axis
in
Fig.
4
is
pointing
upward
toward
this
plane
and
has
a
positive
z-‐component.
In
a
similar
manner,
the
red
joint’s
hidden
red
x-‐axis
is
aligned
with
the
centerline
of
link
5
(magenta/red)
and
pointing
away
from
barycentric
frame’s
x-‐y
plane,
so
it
has
a
negative
z-‐component.
Figure
24.
Initial
configuration
for
placing
link
5
(magenta/red).
A
similar
sequence
of
operations
is
performed
using
links
4,
5,
and
0
instead
of
links
5,
0,
and
1
to
place
link
5
(magenta/red)
relative
to
the
barycentric
frame.
In
general,
there
would
be
no
need
to
position
link
5
(magenta/red)
using
the
same
method
as
described
above,
because
it
could
be
placed
relative
to
link
0
(red/yellow)
using
the
connecting
red
joint’s
angular
displacement.
But
placing
link
5
(magenta/red)
using
techniques
similar
to
the
previous
method
will
show
how
its
absolute
displacement
and
velocity
may
be
evaluated
directly,
independent
of
link
0.
And
doing
this
will
provide
some
other
benefits
as
discussed
later.
Once
the
absolute
displacement
and
velocity
of
links
0
and
5
have
been
evaluated,
the
absolute
displacement
and
velocity
of
the
other
links
may
be
evaluated
by
rotating
copies
of
these
two
links
and
their
displacements
and
velocities
by
± 2π 3
around
the
barycentric
frame’s
blue
z-‐axis.
Because
the
kinematics
of
each
pair
of
links
is
based
on
the
same
relative
displacements
and
velocities,
this
approach
avoids
extra
overhead.
Figure
24
shows
the
section
of
the
Bricard
mechanism
composed
of
links
4,
5,
and
0
with
internal
joint
angle
values
corresponding
to
those
in
Fig.
1.
This
three-‐link
combination
is
set
up
so
that
frame
! f
and
the
red-‐joint
frame
attached
to
link
5
(magenta/red)
are
initially
aligned
with
frame
!b .
The
known
and
fixed
positions
and
orientations
of
the
long
magenta
and
red
vectors
are
also
shown
relative
to
frame
!b .
In
this
example,
the
coordinate
frame
of
the
red
joint
attached
to
link
5
(magenta/red)
is
initially
aligned
with
that
joint’s
floating
frame
f ,
and
both
frames
are
aligned
with
the
barycentric
coordinate
frame
b .
This
is
the
starting
configuration
shown
in
Fig.
24.
Just
as
in
the
previous
example,
the
red
x-‐axes
of
the
two
frames
in
the
red
joint
point
toward
the
center
of
the
long
red
vector.
The
long
magenta
and
red
vectors
are
used
in
this
example,
because
they
will
connect
the
centers
of
links
4,
5,
and
0.
Figure
25.
First
translation
for
placing
link
5
(magenta/red).
Figure
25
shows
the
first
adjustment
step,
where
the
bodies
are
translated
by
r cos ( β 0 2 )
along
the
floating
frame’s
red
x-‐axis
until
its
origin
lies
on
the
long
red
vector.
The
previous
configuration
in
Fig.
24
is
also
shown
for
reference.
Figure
26.
First
rotation
for
placing
link
5
(magenta/red).
In
Fig.
26
the
same
φ0
used
in
the
previous
example
rotates
the
bodies,
because
it
is
the
same
frame
! f
in
the
red
joint
used
to
rotate
link
0.
This
rotation
has
now
brought
the
center
of
link
4
(blue/magenta)
closer
to
the
tail
of
the
magenta
vector.
Figure
27.
Second
translation
for
placing
link
5
(magenta/red).
In
Fig.
27
the
bodies
are
translated
along
the
floating
frame’s
red
x-‐axis
a
distance
of
( 2 ) sin (θ 0 2 ) ,
which
is
also
the
same
distance
used
in
the
previous
example.
In
fact,
the
relative
displacements
in
Figs.
25-‐27
are
the
same
as
those
used
in
the
first
example
in
Figs.
20
to
22
to
place
link
0
(red/yellow).
Figure
28.
Second
rotation
for
placing
link
5
(magenta/red).
Only
the
spatial
displacement
in
the
final
step
shown
in
Fig.
28
differs
from
the
previous
example.
In
the
final
step
of
that
example
in
Fig.
23,
the
bodies
were
rotated
relative
to
frame
! f
by
θ 0 2 .
In
Fig.
28,
the
bodies
are
rotated
relative
to
frame
! f
by
− θ 0 2 .
The
origins
of
the
center
frames
on
the
three
links
now
coincide
with
the
appropriate
heads
and
tails
of
the
long
magenta
and
red
vectors.
The
spatial
displacement
of
link
5
(magenta/red)
at
its
red
joint
end
relative
to
the
barycentric
frame
b
is
obtained
by
replacing
Rz (θ 0 2 )
with
Rz ( − θ 0 2 )
in
Eq.
(47).
Just
as
was
noted
for
link
0
(red/yellow),
this
displacement
does
not
describe
the
position
and
orientation
of
the
reference
frame
attached
to
link
5
(magenta/red/)
at
its
center
of
mass.
Additional
transformations
are
required
to
express
the
displacement
of
link
5’s
reference
frame
relative
to
frame
!b .
straightforward.
However,
the
quantities
needed
to
place
the
bodies
into
their
correct
locations
for
any
value
of
θ
still
have
to
be
evaluated.
The
assembled
mechanism
in
Figs.
1,
4-‐6,
and
8
show
that
each
vector
representing
one
edge
of
the
hexagon
is
also
the
base
of
an
isosceles
or
equilateral
triangle,
where
the
other
two
sides
have
a
length
of
2 .
Since
the
even
or
odd-‐numbered
joint
angle
opposite
the
respective
even
or
odd-‐numbered
vector
at
the
triangle’s
base
is
known,
the
corresponding
vector’s
length
may
be
obtained
as
e = sin ( (π − θ e ) 2 ) = cos (θ e 2 )
(50)
o = sin ( (π − θ o ) 2 ) = cos (θ o 2 )
Figure
29.
Normalized
length
of
even
and
odd-‐numbered
vectors
connecting
link
centers
for
= 1 .
Figure
29
shows
plots
of
e
and
o
representing
the
length
of
vectors
subtending
the
respective
even
and
odd-‐numbered
joint
angles
for
= 1 .
These
vectors
range
in
magnitude
from
2
to
.
Figure
30.
Layout
for
determining
the
radius
r
of
link
centers.
The
radius
r
of
the
circle
containing
the
six
mass
centers
is
evaluated
next.
An
equilateral
triangle
was
drawn
in
black
around
the
outer
edges
of
the
hexagon
shown
in
Fig.
7.
(A
similar
equilateral
triangle
with
the
same
orientation
may
be
drawn
around
each
hexagon
no
matter
what
configuration
the
Bricard
mechanism
takes.
For
example,
compare
the
superimposed
triangles
in
Fig.
10.)
Consider
the
larger
right
triangle
in
Fig.
30
with
its
top
leg
labeled
x
and
its
divided
vertical
leg
extending
to
the
lower
corner
of
the
large
equilateral
triangle.
The
upper
part
of
this
vertical
leg
has
a
length
of
e 2
and
the
lower
part
has
a
length
of
o .
(The
roles
of
e
and
o
could
be
reversed
and
yield
the
same
results.)
The
two
segments
are
equal
in
this
example,
but
in
general
they
are
not.
Regardless
of
their
relative
size,
the
lower
angle
of
this
triangle
is
always
π 6 ,
because
it
is
half
of
the
equilateral
triangle’s
angle
of
π 3 .
From
this
triangle
is
obtained
the
relationship
x ⎛π⎞ 3
(51)
= tan ⎜ ⎟ =
e 2 + o ⎝ 6⎠ 3
Then
the
smaller
right
triangle
with
r
as
its
hypotenuse
and
x
and
e 2
as
its
two
legs
yields
r 2 = x 2 + 2e 4
= ( e 2 + o ) 3 + 2e 4
2
(52)
= ( 2e + 2o + e o ) 3
(
= ( e + o ) − e o
2
)3
or
r= (( + ) − ) 3
e o
2
e o
(53)
Figure
31.
Normalized
radius
r
of
link
reference
frames
and
mass
centers
for
= 1 .
Figure
31
shows
how
the
radius
r
varies
in
a
somewhat
sinusoidal
fashion,
ranging
from
a
minimum
of
6 12
when
all
six
joint
angles
have
values
of
± π 2
radians
to
a
maximum
of
7 12
when
three
of
the
angles
are
zero
and
the
other
three
are
± 2π 3
radians.
Figure
32.
Layout
for
determining
subtended
angles
β e
and
β o .
Referring
to
Fig.
32
with
r ,
e ,
and
o
known,
the
subtended
angles
β e
and
β o
may
be
determined
from
⎛ ⎞
β e = 2sin −1 ⎜ e ⎟
⎝ 2r ⎠
(54)
⎛ ⎞
β o = 2sin −1 ⎜ o ⎟ = 2π 3 − β e
⎝ 2r ⎠
Figure
33.
Subtended
angles
β e
and
β o .
Figure
33
shows
the
subtended
angles
in
the
center-‐of-‐mass
circle
for
all
possible
mechanism
configurations.
For
any
value
of
θ
it
is
easily
verified
that
β e + β o = 2π 3 ,
which
corresponds
to
one
third
of
the
Bricard
mechanism,
one
third
of
the
hexagon,
and
one
third
of
the
center-‐of-‐mass
circle.
where
cβ 0 = cos ( β 0 2 )
and
sβ 0 = sin ( β 0 2 ) .
(The
symbol
!r
was
used
in
Eq.
(55)
to
represent
coordinates
of
translation
or
position
vectors
instead
of
!t
introduced
earlier.
This
discrepancy
results
from
associating
!r
with
the
circle
radius
symbol
!r
of
link
centers
in
the
barycentric
plane.)
All
six
vectors
are
expressed
in
terms
of
just
two
variables
r
and
β 0 ,
which
makes
it
easier
and
more
efficient
to
evaluate
their
coordinates
and
first
time
derivatives.
As
indicated
in
Fig.
32,
coordinates
of
r b0 b
and
b
r b5
are
simply
reflections
of
each
other
around
the
barycentric
frame’s
red
x-‐axis.
Coordinates
of
the
other
four
vectors
are
obtained
by
rotating
copies
of
r b0
b
and
r b5
b
by
± 2π 3
radians
around
the
barycentric
frame’s
blue
z-‐axis.
It
is
easy
to
verify
from
Eq.
(55)
that
∑
5
i=0
rbib = 0
(56)
⎡ −sβ 0 ⎤ ⎡ −sβ 0 ⎤
⎢ ⎥ ⎢ ⎥
b b
r b0
r r b5
r
r b0 = r + ⎢ cβ 0 ⎥ β0 ; r b5 = r + ⎢ −cβ 0 ⎥ β0
b b
r 2⎢ ⎥ r 2⎢ ⎥
⎣ 0 ⎦ ⎣ 0 ⎦
⎡ sβ − 3cβ ⎤ ⎡ sβ + 3cβ ⎤
b
r b2
r ⎢ 0 0
⎥ ⎢
b
r b1
r
0 0
⎥
(57)
r b2 = r + ⎢ − 3sβ − cβ ⎥ β0 ; r b1 = r + ⎢ − 3sβ + cβ ⎥ β0
b b
r 4⎢ 0 0
⎥ r 4⎢ 0 0
⎥
⎢⎣ 0 ⎥⎦ ⎢⎣ 0 ⎥⎦
⎡ sβ + 3cβ ⎤ ⎡ sβ − 3cβ ⎤
r bb 4 r⎢ ⎥ ⎢
r bb 3 ⎥
0 0 0 0
r
r bb 4 = r + ⎢ 3sβ − cβ ⎥ β0 ; r bb 3 = r + ⎢ 3sβ + cβ ⎥ β0
r 4⎢ 0 0
⎥ r 4⎢ 0 0
⎥
⎢⎣ 0 ⎥⎦ ⎢⎣ 0 ⎥⎦
∑
5
i=0
rbib = 0
(58)
Then use Eq. (59) to express derivatives of the equations in Eq. (27) in terms of θ as
Figure 34. θ for Bricard mechanism model and constant kinetic energy T (θ ,θ ) .
Figure
34
shows
a
typical
plot
of
scaled
θ
for
constant
kinetic
energy
with
specified
mass
and
moments
of
inertia.
The
actual
parameter
values
are
not
important
for
this
illustration.
An
interesting
feature
of
the
scaled
θ
as
a
function
of
θ
in
Fig.
34
is
that
its
slope
is
not
continuous.
As
discussed
earlier,
the
reason
for
this
lack
of
continuity
in
slope
is
that
θ
is
not
a
natural
variable
to
the
Bricard
mechanism;
it
was
introduced
as
a
parametric
quantity
to
simplify
evaluating
the
joint
angles.
While
the
slope
of
the
scaled
θ
curve
in
Fig.
34
is
not
continuous,
the
slopes
of
all
other
velocity
curves
based
on
this
scaled
quantity
must
be
continuous.
Since
all
other
scaled
quantities
are
used
to
compute
constant
kinetic
energy
over
the
Bricard
mechanism’s
full
cycle,
and
because
the
slope
of
a
constant
curve
is
continuous,
these
curves
must
have
continuous
slopes.
Figure 35. Normalized and scaled values for θe and θo .
Figure
35
shows
scaled
plots
of
θe
and
θo
superimposed
on
normalized
plots
of
θe
and
θo
evaluated
using
θ = 1 .
The
scaled
θ
curve
in
Fig.
34
was
multiplied
with
the
normalized
θe
and
θo
curves
in
Fig.
35
to
obtain
the
smooth,
scaled
θe
and
θo
curves.
The
scaled
θ
and
normalized
θe
and
θo
curves
each
have
discontinuous
slopes,
but
when
multiplied
together
to
evaluate
the
scaled
θe
and
θo
curves,
the
discontinuities
have
mysteriously
canceled
out,
giving
the
smooth
results.
These
smooth,
scaled
curves
are
what
would
have
been
used
to
evaluate
the
smooth,
constant
T (θ ,θ )
curve
if
θ
were
known.
r =
( 2 e + o ) e + ( 2 o + e ) o
(61)
6r
−sin (θ e 2 )
e = θe
2
(62)
o =
−sin (θ o 2 ) θo
2
Figure
36
shows
scaled
plots
of
e
and
o
superimposed
on
normalized
plots
of
e
and
o
evaluated
using
θ = 1 .
Just
as
was
done
for
the
previous
case,
the
scaled
θ
curve
in
Fig.
34
was
multiplied
with
the
normalized
e
and
o
curves
in
Fig.
36
to
obtain
the
scaled
e
and
o
curves.
And
again
the
discontinuities
in
slopes
have
canceled
out
to
give
smooth
results.
These
smooth
scaled
curves
are
what
would
have
been
used
to
evaluate
T (θ ,θ )
if
θ
were
known.
Figure
37.
Normalized
and
scaled
values
for
r .
With
e
and
o
known,
Eq.
(61)
is
used
to
evaluate
the
time
derivative
of
the
center-‐
of-‐mass
circle
radius
r .
Figure
37
shows
the
scaled
r
superimposed
on
the
normalized
plot.
In
this
case,
both
curves
appear
to
have
continuous
slopes,
because
the
discontinuities
in
slopes
occur
where
r = 0 .
With e and r known, differentiate e = 2r sin ( β e 2 ) from Eq. (54) to obtain
e − ( e r ) r
βe =
(64)
r cos ( β e 2 )
o − ( o r ) r
βo = = − βe
(65)
r cos ( β o 2 )
The last identity in Eq. (65) comes from differentiating β o = 2π 3 − β e in Eq. (54).
Figure 38. Normalized and scaled values for βe and βo .
Figure
38
shows
scaled
plots
of
βe
and
βo
superimposed
on
their
normalized
plots.
Again
multiplying
the
normalized
curves
with
the
scaled
θ
curve
in
Fig.
34
has
given
scaled
curves
with
continuous
slopes
in
Fig.
38.
is
extracted
from
Eq.
(47)
and
differentiated
with
respect
to
time
to
express
the
angular
velocity
of
link
0
(red/yellow)
relative
to
the
barycentric
frame
!b
as
R b0 = R y (φ0 ) Rz (θ 0 2 ) + Ry (φ0 ) R z (θ 0 2 )
= ω bfb Ry (φ0 ) Rz (θ 0 2 ) + Ry (φ0 )ω ff 0 Rz (θ 0 2 )
(67)
( )
= ω bfb + ω bf 0 Ry (φ0 ) Rz (θ 0 2 )
= ω b0
b
Rb0
In
Eq.
(67)
ω bfb
is
the
angular
velocity
of
the
frame
f
in
red
joint
0
relative
to
frame
b ,
and
ω bf 0
is
the
angular
velocity
of
link
0
(red/yellow)
relative
to
frame
f .
Thus
ω b0
b
= ω bfb + ω bf 0
(68)
expresses
the
angular
velocity
of
link
0
(red/yellow)
relative
to
frame
b .
In
earlier
discussions
it
was
noted
that
the
y-‐axis
of
frame
f
in
red
joint
0
remains
oriented
with
the
barycentric
frame’s
y-‐axis,
so
⎡ 0 ⎤
⎢ ⎥
ω =ω = ⎢
b
bf
f
bf φ0 ⎥
(69)
⎢ 0 ⎥⎦
⎣
In
a
similar
manner,
the
blue
z-‐axes
of
frame
! f
and
the
link
0
(red/yellow)
reference
frame
have
the
same
orientation,
so
⎡ 0 ⎤
⎢ ⎥
ω ff 0 = ω 0f 0 = ⎢ 0 ⎥
(70)
⎢ θ0 2 ⎥
⎣ ⎦
ω bf 0 = Ry (φ0 )ω ff 0
⎡ cosφ0 0 sin φ0 ⎤ ⎡ 0 ⎤
⎢ ⎥⎢ ⎥
=⎢ 0 1 0 ⎥ ⎢ 0 ⎥
(71)
⎢ − sin φ0 0 cosφ0 ⎥ ⎢⎣ θ0 2 ⎥⎦
⎣ ⎦
⎡ sin φ θ 2 ⎤
⎢ 0 0
⎥
=⎢ 0 ⎥
⎢ cosφ θ 2 ⎥
⎣ 0 0
⎦
⎡ sin φ θ 2 ⎤
⎢ 0 0
⎥
ω b0
b
=⎢ φ0 ⎥
(72)
⎢ ⎥
⎢⎣ cosφ0 θ0 2 ⎥⎦
The
only
difference
between
the
absolute
angular
velocities
of
links
0
and
5
is
that
link
0
(red/yellow)
rotates
at
θ0 2
radians/second
relative
to
frame
f ,
and
link
5
(magenta/red)
rotates
at
− θ0 2
radians/second
relative
to
it.
Thus
⎡ − sin φ θ 2 ⎤
⎢ 0 0
⎥
ω b5
b
=⎢
φ0 ⎥
(73)
⎢ ⎥
⎢⎣ − cosφ0 θ0 2 ⎥⎦
Rotational
velocities
of
the
remaining
links
are
simply
copies
of
ω b0
b
and
ω b5
b
rotated
by
± 2π 3
radians
about
the
barycentric
frame’s
blue
z-‐axis.
Since
copies
of
links
0
and
5
were
also
rotated
by
± 2π 3
radians
about
the
barycentric
frame’s
z-‐axis
to
position
the
other
four
links,
their
local
angular
velocity
vectors
align
with
their
local
inertia
matrices,
just
like
they
do
with
links
0
and
5.
The
even
and
odd-‐numbered
links
have
identical
local
inertia
matrices,
are
symmetrical
about
their
centerlines,
and
have
principal
inertia
axes
aligned
with
their
reference
frame
axes.
With
these
requirements,
all
six
links
have
the
same
constant,
diagonal
local
inertia
matrix
J ,
where
its
first
and
third
components
are
equal.
ω b0
0
= RzT (θ 0 2 ) RyT (φ0 )ω b0
b
and
ω b5
5
= RyT ( − π 2 ) RzT ( −θ 0 2 ) RyT (φ0 )ω b5
b
⎢⎣ −1 0 0 ⎥⎦ ⎢⎢ ⎥⎢
1 ⎥⎦ ⎣ sin φ0 0 cosφ0 ⎥ ⎢⎢ − cosφ θ 2 ⎥⎥
⎣ 0 0 ⎦⎣ 0 0
⎦
⎡ − θ0 2 ⎤
⎢ ⎥
= ⎢ cos (θ 0 2 )φ0 ⎥
⎢ ⎥
⎢ sin (θ 0 2 )φ0 ⎥
⎣ ⎦
each
link
may
be
verified
to
have
the
same
rotational
kinetic
energy.
The
extra
transformation
in
Eq.
(75)
compared
to
Eq.
(74)
is
necessary
because
the
reference
frame
for
link
5
(magenta/red)
has
a
different
orientation
than
the
frame
in
the
red
joint
attached
to
link
5
(magenta/red).
(Refer
to
Fig.
2.)
1 5 bT b 1 5 iT i
T = m ∑ r bi r bi + ∑ ω bi Jω bi
(76)
2 i=0 2 i=0
bT b
r b0 r b0 r2 2 r2
r r =
bT
b0
b
b0 r2 + β 0 = r2 + β02
r2 4 4
bT b
(77)
r b5 r b5 r2 r2
r r =
bT
b5
b
b5 r + β02 = r2 + β02
2
r2 4 4
Equations
(77)
and
earlier
discussions
show
that
the
linear
component
of
kinetic
energy
of
each
link
is
the
same,
and
so
is
the
angular
component
of
kinetic
energy
for
each
link
as
indicated
in
the
previous
discussion.
Thus
Eq.
(76)
simplifies
to
⎛ r2 ⎞
T = 3m ⎜ r2 + β02 ⎟ + 3ω b0
0T
Jω b0
0
(78)
⎝ 4 ⎠
Equation
(78)
is
implicitly
quadratic
in
θ
and
could
be
symbolically
manipulated
to
solve
for
θ .
However,
as
noted
earlier,
it
will
be
easier
to
set
θ = 1
and
use
normalized
quantities
in
Eq.
(78)
to
first
evaluate
T (θ ,θ = 1) ,
and
then
use
Eq.
(9)
to
solve
for
θ
and
scale
the
normalized
quantities
to
their
true
values,
if
they
are
even
needed.
To
evaluate
the
normalized
kinetic
energy
T (θ ,θ = 1)
based
on
Eq.
(78),
start
with
the
normalized
θ = 1
and
use
Eq.
(60)
to
get
θ0 = − 1; θ5 =
(1+ cosθ 5 ) sinθ 0 ; 0 ≤θ < π
(1+ cosθ 0 ) sinθ 5
θ5 = − 1; θ0 =
(1+ cosθ 0 ) sinθ 5 ; π ≤ θ < 2π
(1+ cosθ 5 ) sinθ 0
(79)
θ0 = 1; θ5 = −
(1+ cosθ 5 ) sinθ 0 ; 2π ≤ θ < 3π
(1+ cosθ 0 ) sinθ 5
θ5 = 1; θ0 = −
(1+ cosθ 0 ) sinθ 5 ; 3π ≤ θ < 4π
(1+ cosθ 5 ) sinθ 0
Then
use
Eq.
(62)
to
evaluate
the
normalized
0
and
5 ,
use
Eq.
(61)
to
evaluate
the
normalized
r ,
and
use
Eq.
(64)
to
evaluate
the
normalized
β .
0
sin (θ 0 2 ) (1+ cosθ 5 ) cosθ 5θ5 − sin θ 5 ( cos (θ 0 2 ) (1+ cosθ 5 ) 2 θ0 − sin (θ 0 2 ) sin θ 5θ5 )
φ0 = cos 2 φ0
sin 2 (θ 0 2 ) (1+ cosθ 5 )
2
(sin (θ 2 )(1+ cosθ ) cosθ + sin 2 θ 5 sin (θ 0 2 ))θ5 − ( sin θ 5 cos (θ 0 2 ) (1+ cosθ 5 ) 2 )θ0
= cos 2 φ0
(80)
0 5 5
Now
there
is
a
problem
with
Eq.
(80),
because
θ 0
can
go
to
zero
and
cause
a
divide
by
0.
Thus
an
alternate
equation
for
φ0
is
required
for
situations
where
θ 0
is
close
to
zero.
This
may
be
obtained
by
differentiating
Equation
(81)
is
just
the
inverse
of
Eq.
(41)
with
θ 5
substituted
for
θ1 ,
and
it
is
valid
for
small
values
of
θ 0 ,
because,
as
Fig.
13
shows,
θ 5
is
far
from
zero
when
θ 0
is
close
to
zero.
Differentiating
Eq.
(81)
gives
( )
⎛ sin θ 5 ( cos (θ 0 2 ) (1+ cosθ 5 ) 2 )θ0 − sin (θ 0 2 ) sin θ 5θ5 − sin (θ 0 2 ) (1+ cosθ 5 ) cosθ 5θ5 ⎞
φ0 = − sin 2 φ0 ⎜ ⎟
⎜⎝ sin 2 θ 5 ⎟⎠
sin 2 φ0
(82)
=
sin 2 θ 5
(
(sin2 θ 5 sin (θ 0 2 ) + sin (θ 0 2 )(1+ cosθ 5 ) cosθ 5 )θ5 − (sinθ 5 cos (θ 0 2 )(1+ cosθ 5 ) 2 )θ0 )
sin 2 φ0 (1+ cosθ 5 ) ⎛ sin θ 5 cos (θ 0 2 ) θ ⎞
=
sin 2 θ 5 ⎜⎝ sin (θ 0 2 )θ 5 − 2
0⎟
⎠
The logic for selecting the correct equation to evaluate φ0 is then given as
cos 2 φ0 ⎛ sin θ 5 ⎞
φ0 = ⎜ θ5 − θ0 ⎟ ; π ≤ θ < 2π
sin (θ 0 2 ) (1+ cosθ 5 ) ⎝ 2 tan (θ 0 2 ) ⎠
(83)
sin 2 φ0 (1+ cosθ 5 ) ⎛ 5 − sin θ 5 cos (θ 0 2 ) θ0 ⎞ ; 2π ≤ θ < 3π
φ0 =
sin θ 5
2 ⎜⎝ sin (θ 0 2 )θ
2 ⎟⎠
cos 2 φ0 ⎛ sin θ 5 ⎞
φ0 = ⎜ θ5 − θ0 ⎟ ; 3π ≤ θ < 4π
sin (θ 0 2 ) (1+ cosθ 5 ) ⎝ 2 tan (θ 0 2 ) ⎠
Figure
39
shows
the
normalized
values
for
φ0
based
on
the
normalized
θ = 1
and
the
corresponding
scaled
values
based
on
the
scaled
θ .
Compare
the
values
of
the
normalized
curve
in
Fig.
39
with
the
slope
of
the
φ0
curve
in
Fig.
21.
Note
that
it
is
!
the
discontinuous
normalized
curve
that
matches
the
slope
of
the
φ0
curve
in
Fig.
21,
!
not
the
scaled
curve.
The
reason
for
this
is
that
θ
is
the
parametric
quantity
whose
time
derivative
θ
does
not
represent
a
natural
progression
of
any
of
the
mechanism’s
joint
variables
through
time.
With
this
current
normalized
value
for
φ0 ,
all
normalized
quantities
are
available
to
evaluate
the
normalized
kinetic
energy
in
Eq.
(78),
which
is
then
used
in
Eq.
(9)
to
evaluate
the
scaled
θ .
Then
θ
is
numerically
integrated
to
get
the
next
value
for
θ ,
if
desired,
and
the
process
repeats.
A
nice
feature
of
this
method
is
that
no
scaled
velocity
quantity
except
θ
is
needed
to
simulate
the
Bricard
mechanism.
The
scaled
θ can
be
multiplied
with
normalized
quantities,
and
other
scaled
quantities
can
be
evaluated
in
terms
of
the
scaled
θ
if
needed
for
output.
Quantities
depending
only
on
θ
can
also
be
directly
evaluated
for
output
if
desired.
⎡ rcβ 0
⎢
⎤ ⎡ rxb0 ⎤
⎥ ⎢ ⎥
⎡
( )
⎢ − (1 2 ) rxb0 − 3 2 ryb0
⎤
⎥
⎡
( )
⎢ − (1 2 ) rxb0 + 3 2 ryb0
⎤
⎥
=⎢ ⎥; = ⎢ − 3 2 r − (1 2 ) r ⎥
= ⎢ rsβ 0 ⎥ = ⎢ ryb0 ⎥ ; ( )
3 2 rxb0 − (1 2 ) ryb0 ( )
b b
r b0 r b2 r bb 4
⎢ 0 ⎥ ⎢ 0 ⎥
⎢ ⎥ ⎢ xb0 yb0 ⎥
(84)
⎣ ⎦ ⎣ ⎦ ⎢ ⎥ ⎢ ⎥
⎣ 0 ⎦ ⎣ 0 ⎦
⎡ rxb0
⎢
⎤
⎥
⎡
( )
⎢ − (1 2 ) rxb0 + 3 2 ryb0
⎤
⎥
⎡
( )
⎢ − (1 2 ) rxb0 − 3 2 ryb0
⎤
⎥
r b1 = ⎢ ⎥; r b 3 = ⎢ − 3 2 r + (1 2 ) r ⎥
= ⎢ −ryb0
( )
3 2 rxb0 + (1 2 ) ryb0 ( )
b b b
r b5 ⎥; ⎢ ⎥ ⎢ ⎥
⎢ ⎥
xb0 yb0
⎣ 0 ⎦ ⎢ ⎥ ⎢ ⎥
⎣ 0 ⎦ ⎣ 0 ⎦
Equation
(84)
shows
that
only
six
multiplications
are
required
to
evaluate
the
six
position
vectors.
Rb0 = Ry (φ0 ) Rz (θ 0 2 )
Rb5 = Ry (φ0 ) Rz ( −θ 0 2 ) Ry ( −π 2 )
(86)
⎡ cosφ0 0 sin φ0 ⎤ ⎡ cos ( − θ 0 2 ) − sin ( − θ 0 2 ) 0 ⎤ ⎡ cos ( −π 2 ) 0 − sin ( −π 2 ) ⎤
⎢ ⎥⎢ ⎥⎢ ⎥
=⎢ 0 1 0 ⎥ ⎢ sin ( − θ 0 2 ) cos ( − θ 0 2 ) 0 ⎥ ⎢ 0 1 0 ⎥
⎢ − sin φ0 0 cosφ0 ⎥ ⎢ ⎥ ⎢ sin −π 2 0 cos −π 2
( ) ( ) ⎥
⎣ ⎦ ⎢⎣ 0 0 1 ⎥⎦ ⎢⎣ ⎥⎦
⎡ sin φ cosφ0 sin (θ 0 2 ) − cosφ0 cos (θ 0 2 ) ⎤
⎢ 0
⎥
=⎢ 0 cos (θ 0 2 ) sin (θ 0 2 ) ⎥
⎢ ⎥
⎢ cosφ0 − sin φ0 sin (θ 0 2 ) sin φ0 cos (θ 0 2 ) ⎥
⎣ ⎦
(Refer
to
Fig.
2
to
see
why
the
third
transformation
is
required
in
Eq.
(86).)
The
orientation
of
links
2
and
1
are
obtained
by
rotating
copies
of
links
0
and
5
by
2π 3
radians
around
the
barycentric
frame’s
z-‐axis
using
the
direction
cosine
matrix
⎡ cos ( 2π 3) − sin ( 2π 3) 0 ⎤
⎢ ⎥
Rz ( 2π 3) = ⎢ sin ( 2π 3) cos ( 2π 3) 0 ⎥
⎢ ⎥
⎢⎣ 0 0 1 ⎥⎦
(87)
⎡ −1 2 − 3 2 0 ⎤
⎢ ⎥
=⎢ 3 2 12 0 ⎥
⎢ ⎥
⎢⎣ 0 0 1 ⎥⎦
This
matrix
was
also
used
to
rotate
copies
of
the
position
vectors
in
Eq.
(84).
Applying
this
matrix
to
the
previous
direction
cosine
matrices
gives
Rb2 = Rz ( 2π 3) Rb0
(88)
Rb1 = Rz ( 2π 3) Rb5
The
direction
cosine
matrices
for
links
4
and
3
are
obtained
by
rotating
links
0
and
5
by
− 2π 3
radians
around
the
barycentric
frame’s
z-‐axis.
They
are
represented
as
Rb 4 = Rz ( −2π 3) Rb0
(89)
Rb 3 = Rz ( −2π 3) Rb5
is
the
quaternion
representing
the
rotation
described
by
R12 .
The
two
quaternions
representing
the
orientation
of
link
0
(red/yellow)
are
⎡ cos (φ 2 ) ⎤
⎢ 0
⎥
⎢ 0 ⎥
q bf = ⎢ ⎥
(91)
⎢ sin (φ0 2 ) ⎥
⎢ 0 ⎥
⎣ ⎦
and
⎡ cos (θ 4 ) ⎤
⎢ 0
⎥
⎢ 0 ⎥
qf0 =⎢ ⎥
(92)
0
⎢ ⎥
⎢ sin (θ 0 4 ) ⎥
⎣ ⎦
where
f
corresponds
to
the
floating
frame
in
the
red
joint
0.
Recall
that
quaternions
are
based
on
half-‐angles.
Substituting
Eqs.
(91)
and
(92)
for
the
quaternions
in
Eq.
(90)
gives
To
check
Eq.
(93),
let
θ 0 4 = 22.5°
and
φ0 2 = 27.37°
for
the
Bricard
mechanism
configuration
in
Fig.
1,
giving
The direction cosine matrix for this quaternion has the form
⎡
⎢
b0 2
( b0 2
)
⎢ 2 ( q0 ) + ( q1 ) − 1 2 ( q1 q2 − q0 q3 )
b0 b0 b0 b0
2 ( q1b0 q3b0 + q0b0 q2b0 )
⎤
⎥
⎥
b0
⎢ ( 2
)
R = ⎢ 2 ( q1b0 q2b0 + q0b0 q3b0 ) 2 ( q0b0 ) + ( q2b0 ) − 1 2 ( q2b0 q3b0 − q0b0 q1b0 )
2
⎥
(95)
⎥
⎢
⎢ 2 ( q1 q3 − q0 q2 )
⎣
b0 b0 b0 b0 2 2
(
2 ( q2b0 q3b0 + q0b0 q1b0 ) 2 ( q0b0 ) + ( q3b0 ) − 1 ) ⎥
⎥
⎦
Substituting
the
values
from
Eq.
(94)
into
Eq.
(95)
gives
the
entries
in
Eq.
(49)
to
within
round-‐off
error.
( )
Rb5 = Ry (φ0 ) Rz ( −θ 0 2 ) Ry ( −π 2 )
(96)
(Refer
again
to
Fig.
2
to
see
why
the
third
transformation
is
required
in
Eq.
(96).)
With
this
partitioning,
it
follows
that
the
quaternions
⎢ ⎥ ⎢ ⎥
⎢⎣ q3b5 ⎥ ⎢ q3b* −q2b* q1b* q0b* ⎥ ⎢⎣ 0 ⎥
⎦
⎦ ⎣ ⎦
⎡ q0b0 q1b0 −q2b0 q3b0 ⎤ ⎡ ⎤
⎢ ⎥⎢ 2 2
⎥
⎢ −q1b0 q0b0 q3b0 q2 ⎥ ⎢
b0
(98)
0 ⎥
=⎢ ⎥⎢ ⎥
⎢ q2b0 −q3b0 q0b0 q1 ⎥ ⎢ − 2 2
b0
⎥
⎢ ⎥
⎢⎣ −q3b0 −q2b0 −q1b0 q0b0 ⎥ ⎢⎣ 0 ⎥
⎦
⎦
⎡ q0b0 + q2b0 ⎤
⎢ ⎥
⎢ −q1b0 − q3b0 ⎥
=⎢ ⎥ 2 2
⎢ q2b0 − q0b0 ⎥
⎢ ⎥
⎢⎣ −q3b0 + q1b0 ⎥
⎦
The
transformations
in
Eq.
(88)
may
be
carried
out
in
a
similar
manner.
For
example,
the
quaternions
for
links
2
and
1
are
and
and
Equations
(101)
and
(102)
require
no
multiplications,
because
they
use
the
same
quantities
as
evaluated
in
Eqs.
(99)
and
(100).
Equations
(97)
and
(98)
each
require
four
multiplications,
not
counting
the
trig
function
evaluations,
so
the
number
of
multiplications
for
the
six
links
averages
to
four
per
quaternion.
This
is
substantially
less
than
first
forming
direction
cosine
matrices
and
then
converting
them
to
quaternions.
To
check
the
validity
of
these
quaternions,
consider
the
Bricard
mechanism
configuration
shown
in
Fig.
6
where
φ0 = π 2
and
θ 0 = 0 .
Equation
(85)
gives
⎡ 0 0 1 ⎤
R = Ry (φ0 ) Rz (θ 0 2 ) = ⎢ 0 1 0 ⎥
b0
(103)
⎢ ⎥
⎢⎣ −1 0 0 ⎥⎦
⎡ 0 0 1 ⎤ ⎡ 0 0 −1 ⎤ ⎡ 1 0 0 ⎤
R = Ry (φ0 ) Rz ( −θ 0 2 ) Ry ( −π 2 ) = ⎢ 0 1 0 ⎥ ⎢ 0 1 0 ⎥ = ⎢ 0 1 0 ⎥
(104)
b5
⎢ ⎥⎢ ⎥ ⎢ ⎥
⎢⎣ −1 0 0 ⎥⎦ ⎢⎣ 1 0 0 ⎥⎦ ⎢⎣ 0 0 1 ⎥⎦
From Eqs. (93) and (98), the quaternions for links 0 and 5 are
and
⎡ q0b0 + q2b0 ⎤ ⎡
⎢ ⎥ 2 2+ 2 2 ⎤ ⎡ 1 ⎤
⎢ ⎥ ⎢ ⎥
⎢ −q1b0 − q3b0 ⎥ ⎢ 0 ⎥ 0
q b5 = ⎢ ⎥ 2 2=⎢ ⎥ 2 2 = ⎢⎢ ⎥
⎥
(106)
⎢ q2 − q0 ⎥
b0 b0
⎢ 2 2− 2 2 ⎥ 0
⎢ ⎥ ⎢ ⎥ ⎢ 0 ⎥
−q3b0 + q1b0 ⎥ ⎣ 0 ⎦ ⎣ ⎦
⎢⎣ ⎦
⎡
⎢
(
b0 2 b0 2
)
⎢ 2 ( q0 ) + ( q1 ) − 1 2 ( q1 q2 − q0 q3 )
b0 b0 b0 b0
2 ( q1b0 q3b0 + q0b0 q2b0 )
⎤
⎥
⎥
b0
⎢
2
( 2
)
R = ⎢ 2 ( q1b0 q2b0 + q0b0 q3b0 ) 2 ( q0b0 ) + ( q2b0 ) − 1 2 ( q2b0 q3b0 − q0b0 q1b0 ) ⎥
⎥
⎢
⎢ 2 ( q1 q3 − q0 q2 )
⎣
b0 b0 b0 b0
(
2 ( q2b0 q3b0 + q0b0 q1b0 ) 2 ( q0b0 ) + ( q3b0 ) − 1
2 2
) ⎥
⎥
⎦
(107)
⎡ ⎤
( ) ( )
2 2
⎢ 2 2 2 −1 0 2 2 2 ⎥
⎢ ⎥ ⎡ 0 0 1 ⎤
( ) ⎥=⎢ 0 1 0 ⎥
2
=⎢ 0 4 2 2 −1 0
⎢ ⎥ ⎢ −1 0 0 ⎥
⎥ ⎢⎣ ⎥⎦
⎢
( ) ( )
2 2
⎢⎣ −2 2 2 0 2 2 2 −1 ⎥
⎦
Equation (107) agrees with Eq. (103), and clearly Eq. (106) yields Eq. (104).
Now,
rotating
copies
of
links
0
and
5
around
the
barycentric
frame’s
z-‐axis
by
2π 3
gives
the
direction
cosine
matrices
⎡ cos ( 2π 3) − sin ( 2π 3) 0 ⎤ ⎡ ⎡ −1 2 ⎤
⎢ ⎥ 0 0 1 ⎤ ⎢ 0 − 3 2 ⎥
(108)
Rb2 = Rz ( 2π 3) Rb0 = ⎢ sin ( 2π 3) cos ( 2π 3) 0 ⎥ ⎢ 0 1 0 ⎥ = ⎢ 0 −1 2 3 2 ⎥
⎢ ⎥ ⎢⎢ −1 0 0 ⎥⎥ ⎢ ⎥
⎢⎣ 0 0 1 ⎥⎦ ⎣ ⎦ ⎢⎣ −1 0 0 ⎥⎦
and
⎡ cos ( 2π 3) − sin ( 2π 3) 0 ⎤ ⎡ ⎡ ⎤
⎢ ⎥ 1 0 0 ⎤ ⎢ −1 2 − 3 2 0 ⎥
Rb1 = Rz ( 2π 3) Rb5 = ⎢ sin ( 2π 3) cos ( 2π 3) 0 ⎥ ⎢ 0 1 0 ⎥ = ⎢ 3 2 −1 2 0 ⎥
(109)
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎢⎣ 0 0 1 ⎥⎦ ⎢⎣ 0 0 1 ⎥⎦ ⎢⎣ 0 0 1 ⎥⎦
From Eqs. (99) and (100) the quaternions for links 2 and 1 are
⎡
⎢ q0b0 2 − ( ) ⎤
3 2 q3b0 ⎥ ⎡
2 4 ⎤
⎢ ⎥ ⎢ ⎥
⎢ q1b0 2−( )
3 2 q2b0 ⎥ ⎢ − 6 4 ⎥
q b2 = ⎢ ⎥=⎢ ⎥
(110)
⎢ q2b0 2+( )
3 2 q1 ⎥
b0 ⎢ 2 4 ⎥
⎢ ⎥ ⎢ ⎥
⎢ q3b0 2+( 3 2 q0)
b0 ⎥ ⎢
⎣
6 4 ⎥
⎦
⎢⎣ ⎥⎦
and
⎡
⎢ q0b5 2 − ( ) ⎤
3 2 q3b5 ⎥
⎡ 12 ⎤
⎢ b5 ⎥
⎢ q1b5 2−( )
3 2 q2 ⎥ ⎢ 0 ⎥
q b1 = ⎢ ⎢ ⎥
⎥=⎢
(111)
2+( ) ⎥
⎢ q2b5 3 2 q1 ⎥ ⎢ 0 ⎥
b5
⎢ ⎥ ⎢ 3 2 ⎥
⎢ q3b5 2+( )
3 2 q0b5 ⎥ ⎣ ⎦
⎢⎣ ⎥⎦
The direction cosines for links 2 and 1 based on these quaternions are
⎡
⎢
(b2 2 b2 2
)
⎢ 2 ( q0 ) + ( q1 ) − 1 2 ( q1 q2 − q0 q3 )
b2 b2 b2 b2
2 ( q1b2 q3b2 + q0b2 q2b2 )
⎤
⎥
⎥
⎢ ( 2 2
)
Rb2 = ⎢ 2 ( q1b2 q2b2 + q0b2 q3b2 ) 2 ( q0b2 ) + ( q2b2 ) − 1 2 ( q2b2 q3b2 − q0b2 q1b2 ) ⎥
⎥
⎢
⎢ 2 ( q1 q3 − q0 q2 )
⎣
b2 b2 b2 b2
( 2
)
2 ( q2b2 q3b2 + q0b2 q1b2 ) 2 ( q0b2 ) + ( q3b2 ) − 1
2 ⎥
⎥
⎦
⎡
((
2
) (
⎢ 2 2 4 + − 6 4 −1
⎢
2
)) (
2 − 6 4 2 4− 2 4 6 4 ) 2 (− 6 4 6 4 + 2 4 2 4 )
⎤
⎥
(112)
⎥
⎢
( ) 2 (( 2 4 ) + ( 2 4 ) ) − 1 2 ( 2 4 6 4 + 2 4 6 4 ) ⎥
2 2
= ⎢ 2 − 6 4 2 4+ 2 4 6 4 ⎥
⎢ ⎥
(
⎢ 2 − 6 4 6 4− 2 4 2 4 ) 2 ( 2 4 6 4 − 2 4 6 4 ) 2 (( 2 4 ) + ( 6 4 ) ) − 1 ⎥
2 2
⎢⎣ ⎥⎦
⎡ 0 − 3 2 −1 2 ⎤
⎢ ⎥
=⎢ 0 −1 2 3 2 ⎥
⎢ ⎥
⎢⎣ −1 0 0 ⎥⎦
and
⎡
⎢
(
⎢ 2 ( q0 ) + ( q1 ) − 1
b1 2 b1 2
) 2 ( q1b1q2b1 − q0b1q3b1 ) 2 ( q1b1q3b1 + q0b1q2b1 )
⎤
⎥
⎥
Rb1 = ⎢ 2 ( q1b1q2b1 + q0b1q3b1 )
⎢
2
(
2 ( q0b1 ) + ( q2b1 ) − 1
2
)
2 ( q2b1q3b1 − q0b1q1b1 ) ⎥
⎥
⎢
⎢ 2 ( q1 q3 − q0 q2 )
⎣
b1 b1 b1 b1
2 ( q2b1q3b1 + q0b1q1b1 )
2
(
2 ( q0b1 ) + ( q3b1 ) − 1
2
) ⎥
⎥
⎦
⎡
⎢ 2 (1 2 ) − 1
2
(
2 −1 2 3 2 ) 0
⎤
⎥
(113)
⎢ ⎥
(
=⎢ 2 12 3 2 ) 2 (1 2 ) − 1
2
0 ⎥
⎢ ⎥
⎢
⎢⎣
0 0 (
2 (1 2 ) +
2
( 3 2 ))
2
−1 ⎥
⎥⎦
⎡ −1 2 − 3 2 0 ⎤
⎢ ⎥
= ⎢ 3 2 −1 2 0 ⎥
⎢ ⎥
⎢⎣ 0 0 1 ⎥⎦
The quaternions for links 4 and 3 may be verified in a similar manner.
= Tb5b−T M 5,55
bb b
vb5,5 + Tb0b−T M 0,00
bb 0
vb0,0
⎡ I 0 ⎤ ⎡ m r b5 ⎤ ⎡ I 0 ⎤ ⎡ m r b0 ⎤
b b
=⎢ b ⎥ ⎢ ⎥+⎢ b ⎥ ⎢ ⎥
⎢⎣ r b5 I ⎥ ⎢ Rb5 Jω 5 ⎥ ⎢ r b0 I ⎥ ⎢ Rb0 Jω 0 ⎥
(114)
⎦⎣ b5
⎦ ⎣ ⎦⎣ b0
⎦
⎡
⎢ m r b5
b
+ r b0
b
( ) ⎤
⎥
=⎢ ⎥
b5 5 b0 0 b b b
(
⎢⎣ R Jω b5 + R Jω b0 + m r b5 r b5 + r b0 r b0
b
) ⎥⎦
The
transformations
in
(114)
moved
spatial
momentum
from
the
origins
of
link
frames
0
and
5
to
the
origin
of
barycentric
frame
!b .
The
3
by
1
matrix
r b5
b
+ r b0
b
has
no
z-‐component,
so
it
represents
a
vector
in
the
barycentric
frame’s
x-‐y
plane.
Rotating
copies
of
this
matrix
by
± 2π 3
radians
around
the
barycentric
frame’s
z-‐
axis
yields
three
matrices
representing
vectors
in
the
x-‐y
plane
whose
entries
sum
to
zero.
Thus
the
linear
component
of
momentum
is
verified
to
be
zero.
That
this
linear
component
of
momentum
is
zero
may
also
be
verified
directly
using
Eq.
(58).
may
be
verified
by
looking
at
Eqs.
(55)
and
(57).
Equation
(115)
shows
that
the
second
part
of
the
Bricard
mechanism’s
angular
momentum
is
zero,
because
rotating
copies
of
this
zero-‐length
vector
to
represent
the
other
four
links
still
gives
zero.
Transforming
the
first
part
of
the
angular
momentum
in
Eq.
(114)
to
frame
f
centered
in
the
red
joint
0
gives
R f 5 Jω b5
5
+ R f 0 Jω b0
0
= Rz ( −θ 0 2 ) Ry ( −π 2 ) Jω b5
5
+ Rz (θ 0 2 ) Jω b0
0
(Refer
again
to
Fig.
2
as
to
why
the
extra
Ry ( −π 2 )
transformation
is
required
in
Eq.
(116).)
Multiplying
Eq.
(116)
by
Ry (φ0 )
to
transform
the
angular
momentum
to
barycentric
frame
b
coordinates
gives
the
same
results.
Because
the
z-‐component
of
this
momentum
vector
is
zero,
it
lies
in
the
barycentric
frame’s
x-‐y
plane,
so
rotating
copies
of
it
by
± 2π 3
radians
around
the
barycentric
frame’s
z-‐axis
to
represent
the
other
four
links
yields
three
vectors
in
the
x-‐y
plane
that
add
to
zero.
With
this
last
result,
the
Bricard
mechanism’s
total
spatial
momentum
has
been
verified
to
be
zero
as
claimed
in
Eq.
(6).