Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
Graph Theory for Articulated Bodies
Alba Perez-Gracia
Department of Mechanical Engineering, Idaho State University
Articulated Bodies
• A set of rigid bodies (links) joined by joints that allow relative motion between consecutive links.
• Standard joints are defined as a pair of surfaces rubbing against each other (Releaux’s pairs)
• Higher pairs have a surface of contact, lower pairs contact at a line or a point. Other contacts, such as a finger contact, can be modeled as joints.
Kinematic Chains
• Serial chain or open-loop chain: only one path from one link to another link of the chain.
• Parallel or closed-loop chain: every link is connected to every other link by at least two paths.
• Hybrid chain: contains parallel and serial subchains.
• Tree chain: several end links.
Graph Theory
• Graph G(v,e): a set of v vertices (points) and a set of e edges (lines) such that the vertices are connected by the edges.
• Edge connecting i and j is called eij. • Edge e23 incident on vertices 2 and 3. • Vertices 2 and 3 are adjacent (they are connected through and
edge) • Edges e23, e34 adjacent (incident on vertex 3) • Degree of a vertex: number of edges incident on that vertex.
• Degree 2: vertices 1, 3, 4 • Degree 3: vertices 2, 5.
Note: all graph figures from Tsai, Enumera7on of Kinema7c Structures According to Func7on
Graph Theory
• Walk: a sequence of vertices and edges, beginning and ending on a vertex.
• Path: a sequence of alternating vertices and edges in which each vertex appears only once.
• Trail: a walk with distinct edges but vertices may be repeated. • Circuit or loop: a path for which the beginning vertex = end vertex (a
closed path).
Walk Path (and walk) Circuit
Graph Theory • Two vertices are connected if there is a path from one to the other. • A graph is connected if every vertex is connected to every other
vertex by at least one path.
• Subgraph: a subset of a graph that is a graph itself. • Component: each connected subgraph of a graph. • Directed graph: a graph in which a direction is assigned to every
edge. • Rooted graph: a graph with a distinguished vertex, called the root. • Complete graph: When every pair of vertices is connected by one
edge. It has n(n-1)/2 edges for n vertices.
Graph Theory • Tree graph: a connected graph that contains no circuits.
• Planar graph: a graph that can be embedded in a plane.
• Graph isomorphism: Two graphs G1, G2 are isomorphic if there is a one-to-one correspondence between their vertices and edges that preserves the incidence.
Graph Theory • Spanning tree: One of the possible trees containing all the vertices
of a connected graph.
• Given a spanning tree, we can create two subsets of the set of edges E:
• Edges that form the spanning tree: arcs. • Rest of edges, not used in the spanning tree: chords.
• Adding a chord to a spanning tree generates a circuit. • A collection of all the circuits wrt a spanning tree forms a set of
independent loops or fundamental circuits. • Any circuit of the graph is a l.c. of fundamental circuits.
Graph Theory • Example: a graph, its spanning tree and fundamental circuits.
• The number of fundamental circuits is independent of the spanning tree used.
Use of Graphs
• Graphs are widely used in any application in which we there is a relationship among discrete objects.
• Bond graphs in system dynamics, communications and data organization, biology, linguistics, chemistry, artificial intelligence,…
• We use graphs in order to represent the connection between rigid bodies in an articulated system.
Graph Representation of an Articulated System
• An articulated system is represented using a rooted graph, where:
• Vertices = links • Edges = joints
• Edges are labeled according to the type of joint.
Graph Representation of Articulated Systems
Graph Representation of Articulated Systems
Matrices Associated to a Graph
• Used for systematic identification and enumeration of graphs.
• Adjacency matrix [A]: Defined as aij =
• [A] is a vxv symmetric matrix with zeros at the diagonal. • The sum of each row gives the degree of that vertex. • [A] identifies a graph up to isomorphism.
1 if vertex i is adjacent to vertex j
0 otherwise, including i=j
Matrices Associated to a Graph
• Incidence matrix [B]: for a graph with vertices from 1 to v and edges from 1 to e,
• Defined as bij =
• [B] is a vxe matrix with rows corresponding to vertices and columns to edges.
• The sum of each column is always equal to 2. • [B] determines a graph up to isomorphism.
1 if vertex i is an end vertex of edge j
0 otherwise
Matrices Associated to a Graph
• Circuit matrix [C]: for a graph with edges from 1 to e, label the circuits from 1 to l,
• Defined as cij =
• [C] is an lxe matrix with rows corresponding to circuits and columns to edges.
• [C] does not determine a graph up to isomorphism.
1 if circuit i contains edge j
0 otherwise
Matrices Associated to a Graph
• Path matrix [T]: stores the information of all paths starting at the root and terminating at the other vertices of a rooted tree.
• Defined as tij =
• [T] is an (v-1)xe matrix (root vertex not included). • [T] does not determine a graph up to isomorphism.
1 if edge i lies on the path star7ng at 1 and ending at j+1
0 otherwise
Contracted Graphs
• Binary string of length k within a graph: a string of vertices of degree 2 connected in series by k+1 edges.
• First and last edges incident on non-binary vertices.
• Contraction: replace every binary string with a single edge. • It yields a contracted graph with no binary vertices. • Contracted graph of a graph is unique. • Total number of loops of the graph does not change.
Conclusions
• Articulated systems can be represented using rooted graphs.
• Associated matrices contain information about degree of links and joints and loops in the system.
• Graph representation allows to focus on the topology without considering the particular geometry.
• Especially useful for enumeration and database search. • Very active area of research, especially for parallel
robots. • We use them in our synthesis algorithms.
Tree Graphs for Hand Topologies
• Hand topology: a set of common joints connected to a set of branches, which end in end-effector links.
• Compacted tree: all serial chains replaced, no binary vertices. • Reduced tree: all loops replaced, no two edges have same incident
vertices (for synthesis purposes).
• For compacted, reduced trees: • v = e + 1 • Root and end-effector vertices have degree 1.
Ini$al tree Reduced Compacted
Tree Graphs for Hand Topologies
• Consider a “Hand” = wrist+hand. • Denote a branching with a hyphen and the branches as
a list in parentheses,
1-‐(1,1,1,1) 3R-‐(2R,R-‐(R,R,R)) 2R-‐(2R,R,R)
Parent-pointer Representation
• For a set of indices {i}e for edges and {j}v for vertices, the array pe = {p(i)}e is the parent-pointer representation, where p(i) indicates the edge previous to edge i.
• The “edge” previous to the root vertex is denoted as 0.
1-‐(1,1,1,1) 3R-‐(2R,R-‐(R,R,R))
pe = {0,1,1,1,1} pe = {0,1,1,3,3,3}
Parent-pointer Representation
• The parent-pointer representation captures: • Number of edges and vertices • Connectivity • Branches or end effectors.
• In order to define the number and type of joints for each edge, a second array needs to be defined, te.
3R-‐(2R,R-‐(R,R,R))
pe = {0,1,1,3,3,3}
te = {3R,2R,R,R,R,R}
Parent-pointer Representation
• Extracting information from the parent-pointer representation: • Number of edges: e = Length(pe) • Number of vertices: v = e+1 • Terminal edges (incident to end-effector vertices): edges not
appearing in pe : be = Complement({0,1,2,…,e},pe) • Number of branches: b = Length(be)
pe = {0,1,1,3,3,3} e = Length({0,1,1,3,3,3}) = 6 v = e+1 = 7 be = Comp({0,1,2,3,4,5,6},{0,1,1,3,3,3}) = {2,4,5,6} b = Length({2,4,5,6}) = 4
Matrices Associated to the Parent-pointer Representation
• Two matrices useful for design:
• Adjacency matrix [B] = matrix (v, e) initialized to 0 for (i = 1, i <= e, i++) { B(pe(i) + 1, i) = 1; B(i + 1, i) = 1; }
• End-effector path matrix [Pee]= matrix(e, b) initialized to 0 for (i = 1, i <= length(be), i++) { k = be(i); while (k > 0) { Pee(k, i) = 1; k = pe(k); } }
pe = {0,1,1,3,3,3} e = 6 v = 7 be = {2,4,5,6} b = 4