Unfortunately, the cases in which
is polygonal or polyhedral
are quite limited. Most problems yield extremely complicated C-space
obstacles. One good point is that
can be expressed using
semi-algebraic models, for any robots and obstacles defined using
semi-algebraic models, even after applying any of the transformations
from Sections 3.2 to 3.4. It might not be
true, however, for other kinds of transformations, such as warping a
flexible material [32,577].
Consider the case of a convex polygonal robot and a convex polygonal
obstacle in a 2D world. Assume that any transformation in may
be applied to
; thus,
and
. The task is to define a set of algebraic
primitives that can be combined to define
. Once again, it is important to distinguish between Type
EV and Type VE contacts.
Consider how to construct the algebraic primitives for the Type EV contacts; Type VE can be handled in a
similar manner.
For the translation-only case, we were able to determine all of the
Type EV contacts by sorting the edge normals.
With rotation, the ordering of edge normals depends on . This
implies that the applicability of a Type EV
contact depends on
, the robot orientation. Recall the
constraint that the inward normal of
must point between the
outward normals of the edges of
that contain the vertex of
contact, as shown in Figure 4.21. This constraint can be
expressed in terms of inner products using the vectors
and
. The statement regarding the directions of the normals can
equivalently be formulated as the statement that the angle between
and
, and between
and
, must each be less than
.
Using inner products, this implies that
and
. As in the translation case, the condition
is required for contact. Observe that
now depends on
. For any
, if
,
, and
, then
. Let
denote the set of configurations that satisfy
these conditions. These conditions imply that a point is in
.
Furthermore, any other Type EV and Type
VE contacts could imply that more points are in
. Ordinarily,
, which implies that the
complement,
, is a superset of
(thus,
). Let
. Using the
primitives
![]() |
(4.39) |
![]() |
(4.40) |
![]() |
(4.41) |
It is known that
, but
may contain points
in
. The situation is similar to what was explained in
Section 3.1.1 for building a model of a convex polygon
from half-planes. In the current setting, it is only known that any
configuration outside of
must be in
. If
is
intersected with all other corresponding sets for each possible Type
EV and Type VE contact,
then the result is
. Each contact has the opportunity to
remove a portion of
from consideration. Eventually, enough
pieces of
are removed so that the only configurations
remaining must lie in
. For any Type EV contact,
. A similar statement can be
made for Type VE contacts. A logical
predicate, similar to that defined in Section 3.1.1, can
be constructed to determine whether
in time that is
linear in the number of
primitives.
One important issue remains. The expression is not a
polynomial because of the
and
terms in the
rotation matrix of
. If polynomials could be substituted for
these expressions, then everything would be fixed because the
expression of the normal vector (not a unit normal) and the inner
product are both linear functions, thereby transforming polynomials
into polynomials. Such a substitution can be made using stereographic
projection (see [588]); however, a simpler approach is to use
complex numbers to represent rotation. Recall that when
is
used to represent rotation, each rotation matrix in
is
represented as (4.18), and the
homogeneous transformation matrix becomes
![]() |
(4.42) |
This was a simple trick to make a nice, linear function, but what was
the cost? The dependency is now on and
instead of
.
This appears to increase the dimension of
from 3 to 4, and
. However, an algebraic primitive
must be added that constrains
and
to lie on the unit circle.
By using complex numbers, primitives in
are obtained for each
Type EV and Type VE
contact. By defining
, the following algebraic
primitives are obtained for a Type EV
contact:
![]() |
(4.43) |
![]() |
(4.44) |
![]() |
(4.45) |
![]() |
(4.46) |
One interesting observation can be made here. The only nonlinear
primitive is
. Therefore,
can be considered as
a linear polytope (like a polyhedron, but one dimension higher) in
that is intersected with a cylinder.