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.

chain: several end links.

• 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.

Note: all graph figures from Tsai, Enumeraon of Kinemac Structures According to Funcon

• 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 3) • Degree of a vertex: number of edges incident on that vertex. • Degree 2: vertices 1, 3, 4 • Degree 3: vertices 2, 5. 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. • : 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.

1 if vertex i is adjacent to vertex j • Adjacency matrix [A]: Defined as aij = 0 otherwise, including i=j

• [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. Matrices Associated to a Graph

• Incidence matrix [B]: for a graph with vertices from 1 to v and edges from 1 to e,

1 if vertex i is an end vertex of edge j • Defined as bij = 0 otherwise

• [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. Matrices Associated to a Graph

• Circuit matrix [C]: for a graph with edges from 1 to e, label the circuits from 1 to l,

1 if circuit i contains edge j • Defined as cij = 0 otherwise

• [C] is an lxe matrix with rows corresponding to circuits and columns to edges. • [C] does not determine a graph up to isomorphism. 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.

1 if edge i lies on the path starng at 1 and ending at j+1 • Defined as tij = 0 otherwise

• [T] is an (v-1)xe matrix (root vertex not included). • [T] does not determine a graph up to isomorphism. 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).

Inial tree Compacted Reduced • For compacted, reduced trees: • v = e + 1 • Root and end-effector vertices have degree 1. 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) { P (k, i) = 1; ee p = {0,1,1,3,3,3} k = pe(k); e } e = 6 } v = 7

be = {2,4,5,6} b = 4