Do ponto de vista topológico, a função de retração .r(·) definida acima é, na verdade, um exemplo de retração de .Cfree sobre .V(Cfree), ou seja, um mapeamento contínuo e surjetivo de .Cfree para .V(Cfree) tal que sua restrição a .V(Cfree) seja a identidade. De acordo com sua definição, .r(·) preserva a conectividade de .Cfree, no sentido de que .q e .r(q)—assim como o segmento que os une—sempre estarão na mesma componente conexa de .Cfree. Essa propriedade é particularmente importante, pois é possível demonstrar que, dado uma retração genérica que preserve a conectividade .ρ de .Cfree sobre um roadmap .R, existe um caminho livre entre duas configurações .qs e .qg se, e somente se, existe um caminho sobre .R entre .ρ(qs) e .ρ(qg). Como consequência, o problema de planejar um caminho em .Cfree se reduz ao problema de planejar um caminho sobre sua retração .R = ρ(Cfree).
Dado as configurações de início e fim .qs e .qg, o método de planejamento de movimento via retração segue os seguintes passos. Primeiramente, construa o diagrama de Voronoi generalizado .V(Cfree). Em seguida, calcule as retrações .r(qs) e .r(qg) sobre .V(Cfree). Após isso, procure em .V(Cfree) por uma sequência de arcos tal que .r(qs) pertença ao primeiro e .r(qg) ao último. Se a busca for bem-sucedida, substitua o primeiro arco da sequência pelo seu subarco originado em .r(qs) e o último arco da sequência pelo seu subarco terminado em .r(qg), fornecendo como saída o caminho composto pelo segmento de linha que une .qs a .r(qs), a sequência de arcos modificada, e o segmento de linha que une .qg a .r(qg); caso contrário, reporte uma falha.
Caso se deseje simplicidade na implementação, a busca em grafos necessária no passo 3 pode ser realizada usando estratégias básicas, como a busca em largura (BFS) ou busca em profundidade (DFS). Por outro lado, se o objetivo for identificar o caminho de menor comprimento (entre aqueles que podem ser produzidos pelo método) entre .qs e .qg, cada arco deve ser rotulado com um custo igual ao seu comprimento real. O caminho de custo mínimo pode então ser calculado com um algoritmo informado, ou seja, um algoritmo que utilize uma estimativa heurística do caminho de custo mínimo entre um nó genérico e o objetivo, como o A*. Independentemente da estratégia de busca adotada, o método de planejamento de movimento baseado em retração de .Cfree sobre .V(Cfree) é completo; ou seja, ele garante encontrar uma solução, se existir, ou reportar uma falha caso contrário.
Sua complexidade de tempo é uma função do número de vértices .v da região poligonal .Cfree e depende essencialmente da construção do diagrama de Voronoi generalizado (passo 1), da retração de .qs e .qg (passo 2), e da busca no diagrama (passo 3). No que diz respeito ao passo 1, os algoritmos mais eficientes podem construir .V(Cfree) em tempo .O(v log v). O procedimento de retração requer .O(v), principalmente para calcular .N (qs) e .N (qg). Por fim, como é possível provar que .V(Cfree) possui .O(v) arcos, a complexidade da BFS ou DFS seria .O(v), enquanto o A* exigiria .O(v log v). No total, a complexidade de tempo do método de planejamento de movimento via retração é .O(v log v).
É importante notar que, uma vez que o diagrama de Voronoi generalizado de .Cfree tenha sido computado, ele pode ser reutilizado rapidamente para resolver outras instâncias (consultas) do mesmo problema de planejamento de movimento, ou seja, para gerar caminhos livres de colisões entre diferentes configurações de início e fim no mesmo .Cfree. Isso é útil, por exemplo, quando um robô precisa se mover repetidamente entre diferentes posturas dentro de um mesmo ambiente de trabalho estático. O método de planejamento de movimento baseado em retração pode ser, portanto, considerado como múltiplas consultas. Também é possível estender o método para o caso em que os obstáculos .C são polígonos generalizados.
O planejamento via decomposição de células pode ser visto como uma alternativa complementar ou até mesmo uma melhoria ao método de retração. A ideia aqui é que .Cfree seja decomposto em regiões de formas simples, chamadas células, com as seguintes características fundamentais: dado duas configurações pertencentes à mesma célula, é "fácil" calcular um caminho livre de colisões que as une; e dado duas células adjacentes—ou seja, duas células que compartilham uma parte de sua fronteira de medida não-nula—é "fácil" gerar um caminho livre de colisões que as liga. A partir dessa decomposição de .Cfree, pode-se construir o grafo de conectividade associado. Os nós desse grafo representam as células, enquanto um arco entre dois nós indica que as células correspondentes são adjacentes. Buscando-se no grafo de conectividade por um caminho da célula contendo a configuração de início .qs até a célula contendo a configuração final .qg, obtém-se (se existir) uma sequência de células adjacentes, chamada de canal, da qual é fácil—em razão das características das células mencionadas—extrair um caminho que una .qs a .qg e esteja inteiramente contido em .Cfree.
O processo geral de decomposição e busca em grafos pode ser aprimorado utilizando decomposições exatas ou aproximadas. A decomposição exata divide .Cfree em células convexas, garantindo que segmentos de linha que conectem configurações dentro da mesma célula permanecem dentro de .Cfree, e que é fácil atravessar de uma célula para a outra pela linha que forma o meio de sua fronteira comum. A decomposição precisa pode ser realizada usando o algoritmo de linha de varredura, que tem aplicações em diversos problemas de geometria computacional. Esse algoritmo move uma linha sobre .Cfree e, quando a linha passa por um vértice de .Cfree, estende-se em direções opostas até a interseção com a fronteira de .Cfree, definindo as células. Embora o uso de células convexas simplifique a tarefa de conexão, a decomposição em células trapezoidais é um caso específico e útil quando as células possuem formas mais simples, como os trapezoides.
Após a decomposição de .Cfree, constrói-se o grafo de conectividade, no qual cada célula é um nó e as células adjacentes são conectadas por arcos. A partir daí, a busca por um caminho entre a célula inicial e a célula final pode ser realizada de forma eficiente utilizando as mesmas abordagens de busca já descritas.
Como Determinar as Equações de Restrição para Mecanismos de Cadeias Cinemáticas Fechadas: Aplicação da Convenção DH
A posição e a orientação dos quadros e , definidos conforme a convenção de Denavit-Hartenberg (DH), não são independentes. Para derivar as equações de restrição que relacionam os dois quadros e as variáveis do conjunto e , é conveniente referir todas as quantidades a um quadro comum, que está atrelado ao elo . Esse quadro pode ser um dos dois quadros ou , que estão relacionados por uma transformação homogênea constante e conhecida . Logo, a equação (2.65) deve ser referida ao quadro ou, vice-versa, a equação (2.64) deve ser referida ao quadro . Para simplificar a notação, esse quadro comum é denominado .
Considerando os quadros no ponto de corte do mecanismo, representados na Figura 2.17, uma primeira restrição entre os quadros e pode ser derivada ao observar que os eixos e estão alinhados com o eixo da junta . Dessa forma, a seguinte igualdade deve ser satisfeita:
Adicionalmente, se a junta for prismática, o ângulo entre os eixos e será fixo. Portanto, além da equação anterior, surge a seguinte restrição adicional:
Se, por outro lado, a junta for revoluta, o ângulo varia. Definindo e como as posições das origens dos quadros e , respectivamente, ao calcular o vetor distância da origem do quadro a partir do quadro , expresso no quadro , obtém-se a seguinte igualdade:
onde é o desvio fixo ao longo do eixo . Se a junta for revoluta, essa equação define completamente a restrição. No caso de uma junta prismática, variará, de modo que apenas as duas primeiras igualdades dessa expressão são suficientes para definir a restrição.
Em resumo, se a junta for revoluta, as restrições são:

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский