Singularidades e Manipulabilidade

Published on 2026-11-04·v1.0

Objetivos de Aprendizagem

  • Definir uma singularidade cinemática como perda de posto do Jacobiano, e testá-la pelo determinante quando JJ é quadrada e pelos valores singulares nos outros casos.
  • Encontrar as configurações singulares de um braço planar de dois elos e de um braço articulado de três juntas, e classificá-las como de borda ou interiores.
  • Mostrar com uma execução como as velocidades de junta crescem perto de uma singularidade, e prever seu tamanho pelo menor valor singular.
  • Definir a medida de manipulabilidade de Yoshikawa, calculá-la para Jacobianos quadrados, largos e altos, e dizer o que ela não captura.
  • Descrever o que os mínimos quadrados amortecidos ganham e quanto custam.

Contexto e Motivação

velocity-kinematics-and-the-jacobian montou a matriz que transforma taxas de junta em velocidade da ferramenta, x˙=J(q)q˙\dot{\mathbf x}=J(\mathbf q)\dot{\mathbf q}. Um controlador costuma precisar do sentido oposto: a tarefa diz como a ferramenta deve se mover, e o controlador calcula as taxas de junta, para JJ quadrada e invertível por q˙=J−1x˙\dot{\mathbf q}=J^{-1}\dot{\mathbf x}. inverse-kinematics-and-workspace já encontrou o ponto problemático pelo lado da iteração: com o braço esticado, det⁡J=0\det J=0 e o método de Newton não conseguia dar um passo. Esta lição olha as mesmas configurações pelo lado da velocidade. O que exatamente se perde ali, quão grandes ficam as taxas de junta nas vizinhanças, e como medir "vizinhança" com um único número?

Teoria Central

Singular quer dizer deficiente em posto

Seja JJ de dimensão m×nm\times n, levando nn taxas de junta a mm velocidades da tarefa. Uma configuração é singular quando rank⁡J(q)\operatorname{rank}J(\mathbf q) cai abaixo do seu maior valor entre todas as configurações, que é min⁡(m,n)\min(m,n) para um braço que não é deficiente em toda parte. Nesse ponto acontecem duas coisas juntas. Alguma direção da tarefa sai da imagem de JJ, então nenhum movimento de junta produz movimento da ferramenta naquela direção. E o núcleo cresce, então algum movimento de junta não produz movimento da ferramenta.

Para JJ quadrada, perder posto é ter det⁡J=0\det J=0. Para JJ não quadrada não existe determinante, e a ferramenta geral é a decomposição em valores singulares J=UΣVTJ=U\Sigma V^T, com σ1≥⋯≥σmin⁡(m,n)≥0\sigma_1\ge\dots\ge\sigma_{\min(m,n)}\ge0. O posto é o número de σi\sigma_i não nulos, e o menor deles diz quão perto a configuração está de perder uma direção. Em ponto flutuante, "zero" quer dizer "abaixo de uma tolerância", que é o que numpy.linalg.matrix_rank aplica.

O que acontece perto de uma singularidade

Perto de uma singularidade de uma JJ quadrada, mas não nela, J−1J^{-1} existe e

∥q˙∥=∥J−1x˙∥≤∥x˙∥σmin⁡,\lVert\dot{\mathbf q}\rVert=\lVert J^{-1}\dot{\mathbf x}\rVert\le\frac{\lVert\dot{\mathbf x}\rVert}{\sigma_{\min}},

com igualdade quando x˙\dot{\mathbf x} aponta ao longo do vetor singular à esquerda de σmin⁡\sigma_{\min}. Então as taxas de junta não explodem para toda velocidade da tarefa: só a componente na direção que está sendo perdida é amplificada, por 1/σmin⁡1/\sigma_{\min}. Velocidades da tarefa que ficam nas direções sobreviventes continuam baratas.

Dois braços e seus conjuntos singulares

No braço planar de dois elos, det⁡J=L1L2sin⁡θ2\det J=L_1L_2\sin\theta_2: singular com o braço esticado (θ2=0\theta_2=0) ou dobrado (θ2=π\theta_2=\pi). Os dois casos ficam na borda do espaço de trabalho, onde inverse-kinematics-and-workspace encontrou uma única solução em vez de duas.

No braço articulado de the-denavit-hartenberg-convention, com Jacobiano de posição JvJ_v (3×33\times3),

det⁡Jv=−a2a3sin⁡θ3 (a2cos⁡θ2+a3cos⁡(θ2+θ3))=−a2a3sin⁡θ3  r,\det J_v=-a_2a_3\sin\theta_3\,\big(a_2\cos\theta_2+a_3\cos(\theta_2+\theta_3)\big)=-a_2a_3\sin\theta_3\;r,

em que rr é a distância horizontal da ponta ao eixo da base. O fator sin⁡θ3\sin\theta_3 é a singularidade de cotovelo, antebraço esticado ou dobrado, de novo na borda. O fator rr é a singularidade de ombro: a ponta sobre o eixo vertical da junta 1. Essa fica no interior do espaço de trabalho, então uma tarefa em linha reta pode atravessá-la.

A medida de manipulabilidade de Yoshikawa

Uma bola unitária de taxas de junta, ∥q˙∥≤1\lVert\dot{\mathbf q}\rVert\le1, é levada por JJ a um elipsoide de velocidades da tarefa com semieixos σi\sigma_i ao longo dos vetores singulares à esquerda. O Modern Robotics o chama de elipsoide de manipulabilidade e, para um espaço da tarefa de dimensão m≤nm\le n, mede seu volume com

w(q)=det⁡(J(q) J(q)T)=σ1σ2⋯σm,w(\mathbf q)=\sqrt{\det\big(J(\mathbf q)\,J(\mathbf q)^T\big)}=\sigma_1\sigma_2\cdots\sigma_m,

que ele lista como μ3\mu_3 e diz ser proporcional ao volume do elipsoide. As notas do capítulo atribuem a Yoshikawa (1985, International Journal of Robotics Research) a primeira formulação quantitativa de manipulabilidade, e a Robotics Toolbox for Python implementa esse volume como seu método padrão "yoshikawa", descrito como "distance from singularity". Propriedades que saem da definição:

  • w≥0w\ge0, e w=0w=0 exatamente numa singularidade.
  • Para JJ quadrada, w=∣det⁡J∣w=\lvert\det J\rvert.
  • Para JJ larga (m<nm<n, um braço redundante), JJTJJ^T é m×mm\times m e a fórmula funciona como está.
  • Para JJ alta (m>nm>n), JJTJJ^T é m×mm\times m com posto no máximo n<mn<m, então w=0w=0 em toda configuração e a fórmula não informa nada. A saída usual é aplicá-la às linhas que importam para a tarefa, por exemplo só JvJ_v. O Modern Robotics separa os elipsoides linear e angular por um motivo relacionado: as unidades diferem. A Robotics Toolbox oferece a mesma escolha pelo argumento axes e avisa que usar todas as linhas "involves adding different units".
  • ww tem unidade (m² para um Jacobiano de posição planar), então seu valor muda com a unidade de comprimento, e comparar ww entre robôs de tamanhos diferentes compara tamanho tanto quanto destreza.

Outras medidas de um número olham a forma em vez do volume. O Modern Robotics usa μ1=σmax⁡/σmin⁡\mu_1=\sigma_{\max}/\sigma_{\min}, que vale 1 para um elipsoide redondo e cresce perto de uma singularidade. Murray, Li e Sastry listam σmin⁡\sigma_{\min} e σmin⁡/σmax⁡\sigma_{\min}/\sigma_{\max}, e avisam que o determinante pode ser grande mesmo com σmin⁡\sigma_{\min} pequeno, porque um σmax⁡\sigma_{\max} grande compensa. Os dois livros usam os símbolos μ1\mu_1, μ2\mu_2, μ3\mu_3 para quantidades diferentes.

Exemplos Resolvidos

Valores supostos: braço de dois elos com L1=1,0L_1=1{,}0 m e L2=0,6L_2=0{,}6 m; braço articulado com d1=0,4d_1=0{,}4 m, a2=0,5a_2=0{,}5 m e a3=0,4a_3=0{,}4 m. Velocidades em m/s, taxas de junta em rad/s.

Exemplo 1: aproximando-se do braço esticado

Mova a ponta do braço de dois elos radialmente para fora ao longo do eixo xx a 0,050{,}05 m/s, rumo à borda em r=1,6r=1{,}6 m, e compare com a mesma velocidade na direção tangencial. Taxas de junta por q˙=J−1x˙\dot{\mathbf q}=J^{-1}\dot{\mathbf x} no ramo θ2>0\theta_2>0:

text
r (m) theta2 (graus) sigma_min |qdot| radial |qdot| tangencial 1.0 107.46 0.559 0.089 0.050 1.5 42.13 0.252 0.198 0.033 1.59 13.24 0.081 0.618 0.031 1.599 4.18 0.026 1.95 0.031 1.5999 1.32 0.0081 6.17 0.031 1.59999 0.42 0.0026 19.5 0.031

Cada passo dez vezes mais perto da borda multiplica a taxa radial por cerca de 10\sqrt{10}. Derivar r2=L12+L22+2L1L2cos⁡θ2r^2=L_1^2+L_2^2+2L_1L_2\cos\theta_2 explica: θ˙2=−rr˙/(L1L2sin⁡θ2)\dot\theta_2=-r\dot r/(L_1L_2\sin\theta_2), que dá −1,826-1{,}826 rad/s em r=1,599r=1{,}599, e sin⁡θ2\sin\theta_2 encolhe como a raiz quadrada da distância até a borda. A taxa tangencial, enquanto isso, se acomoda em 0,05/1,6=0,0310{,}05/1{,}6=0{,}031 rad/s: andar ao longo do círculo da borda só exige a junta 1, e essa direção nunca se perde.

Exemplo 2: uma linha reta passando pela singularidade de ombro

Comande a ponta do braço articulado ao longo da reta p(t)=(−0,2+0,1t; h; 0,6)\mathbf p(t)=(-0{,}2+0{,}1t;\ h;\ 0{,}6) m para 0≤t≤40\le t\le4 s, a 0,10{,}1 m/s constantes em xx, passando a uma distância horizontal hh do eixo da base em t=2t=2 s. A execução integra q˙=Jv−1p˙\dot{\mathbf q}=J_v^{-1}\dot{\mathbf p} pelo método de Runge-Kutta clássico de quarta ordem com passo fixo Δt\Delta t, partindo da cinemática inversa exata no ramo θ3<0\theta_3<0.

text
h (m) pico |theta1_dot| em t (s) min |det Jv| erro máx. de seguimento (dt = 1e-3 ou 1e-4 s) 0.05 2.000 2.000 3.9e-03 abaixo de 1e-12 m 0.01 10.000 2.000 7.6e-04 abaixo de 1e-12 m 0.001 100.00 2.000 7.6e-05 abaixo de 1e-9 m

O pico é exatamente v/hv/h. A junta 1 é a guinada da base, θ1=atan2⁡(y,x)\theta_1=\operatorname{atan2}(y,x), então θ˙1=(xy˙−yx˙)/(x2+y2)\dot\theta_1=(x\dot y-y\dot x)/(x^2+y^2), que em x=0x=0 vale −v/h-v/h. Nesse instante as outras duas juntas estão paradas: q˙=(−10,0,0)\dot{\mathbf q}=(-10,0,0) para h=0,01h=0{,}01. Na passagem inteira θ1\theta_1 vai de 177,1∘177{,}1^\circ a 2,9∘2{,}9^\circ, e 157∘157^\circ disso acontecem enquanto a ponta percorre os 10h10h em volta do eixo. Para h=1h=1 mm são 157∘157^\circ em 0,10{,}1 s, com a ferramenta andando a só 0,10{,}1 m/s. A integração não é o problema: o erro de seguimento fica perto do nível do arredondamento, cujos dígitos exatos dependem da implementação. O problema é o motor. Se a junta da base for limitada a, digamos, 3 rad/s (valor suposto), essa trajetória é inviável para h<0,033h<0{,}033 m.

Exemplo 3: mínimos quadrados amortecidos, e o preço

Os mínimos quadrados amortecidos trocam J−1J^{-1} por JT(JJT+λ2I)−1J^T(JJ^T+\lambda^2I)^{-1}. Em valores singulares, cada ganho 1/σi1/\sigma_i vira σi/(σi2+λ2)\sigma_i/(\sigma_i^2+\lambda^2), que é no máximo 1/(2λ)1/(2\lambda), então as taxas de junta ficam limitadas. O preço é que a velocidade comandada da ferramenta deixa de ser cumprida exatamente. Refaça o Exemplo 2 com h=1h=1 mm, Δt=10−4\Delta t=10^{-4} s e realimentação de posição, q˙=JT(JJT+λ2I)−1(p˙d+Ke)\dot{\mathbf q}=J^T(JJ^T+\lambda^2I)^{-1}(\dot{\mathbf p}_d+K\mathbf e) com K=10 s−1K=10\ \text{s}^{-1}:

text
lambda (m) taxa de junta de pico (rad/s) erro máx. de seguimento (mm) theta final (graus) 0 100.0 < 0.001 (0.3, 98.1, -145.6) 0.001 50.3 2.2 (0.3, 98.1, -145.6) 0.003 7.0 1.75 (180.3, 188.1, -145.6) 0.01 1.12 1.58 (180.3, 188.1, -145.6) 0.03 0.51 1.53 (180.3, 188.1, -145.6)

A taxa de junta de pico é a maior taxa de uma única junta; a norma de q˙\dot{\mathbf q} no pico concorda com ela a menos de 0,02 rad/s nas três primeiras linhas e vale 1,231{,}23 e 0,570{,}57 rad/s nas duas últimas. Um amortecimento de 1 cm corta o pico da junta mais rápida por um fator de 90, ao custo de um desvio de 1,6 mm perto do eixo, e a realimentação traz o erro de volta a 0,0110{,}011 mm no fim. A última coluna mostra um efeito colateral. Sem amortecimento suficiente, a base gira cerca de 177∘177^\circ. Com λ≥3\lambda\ge3 mm o braço passa por cima do eixo da base, com θ2\theta_2 ultrapassando 180∘180^\circ, e termina no outro ramo de ombro, com a mesma posição da ferramenta. Se isso é aceitável depende dos limites de junta e do que está em volta do robô.

Exemplo 4: manipulabilidade do braço de dois elos

text
theta2 (graus) w (m^2) sigma_1 sigma_2 mu1 = sigma_1/sigma_2 90 0.600 1.215 0.494 2.46 120 0.520 0.877 0.593 1.48 135 0.424 0.732 0.580 1.26 45 0.424 1.580 0.269 5.88 10 0.104 1.702 0.061 27.8 1 0.0105 1.709 0.0061 279

Aqui w=∣det⁡J∣=0,6∣sin⁡θ2∣w=\lvert\det J\rvert=0{,}6\lvert\sin\theta_2\rvert, que não depende de θ1\theta_1 (em θ2=60∘\theta_2=60^\circ vale 0,51960{,}5196 tanto com θ1=0\theta_1=0 quanto com θ1=1\theta_1=1 rad) e é máximo em θ2=±90∘\theta_2=\pm90^\circ. Mas a elipse mais redonda está em outro lugar: uma varredura de θ2\theta_2 põe o mínimo μ1=1,260\mu_1=1{,}260 em θ2≈134,2∘\theta_2\approx134{,}2^\circ, onde ww é cerca de 28 por cento menor. E θ2=45∘\theta_2=45^\circ e 135∘135^\circ têm o mesmo w=0,424w=0{,}424 com μ1=5,88\mu_1=5{,}88 contra 1,261{,}26: mesmo volume, formas muito diferentes, a limitação que Murray, Li e Sastry apontam. Em milímetros, o ww em 90∘90^\circ vira 6,0×1056{,}0\times10^5 mm².

Exemplo 5: Jacobianos largos e altos

Largo. O braço planar de três elos com comprimentos 1,01{,}0, 0,60{,}6 e 0,30{,}3 m, seguindo só a posição da ponta, tem JJ de 2×32\times3. Não há determinante, mas w=det⁡JJTw=\sqrt{\det JJ^T} está definido:

text
q (graus) posto sigma w (m^2) (0, 0, 0) 1 (2.124, 0) 0 (0, 180, 0) 1 (0.954, 0) 0 (0, 90, -90) 2 (1.554, 0.420) 0.652 (0, 90, 0) 2 (1.524, 0.623) 0.949

O posto só cai quando as três colunas são paralelas, o que exige a base, as duas juntas e a ponta numa mesma reta. Como n>mn>m, quase toda postura é regular, e a junta extra pode ser usada para manter ww alto.

Alto. O Jacobiano geométrico completo 6×36\times3 do braço articulado em (30∘,45∘,−60∘)(30^\circ,45^\circ,-60^\circ) tem valores singulares (1,633; 1,244; 0,324)(1{,}633;\ 1{,}244;\ 0{,}324), logo posto cheio 3, e mesmo assim det⁡(JJT)\det(JJ^T) sai um número da ordem de 10−5010^{-50}, zero a menos de arredondamento, como tem de ser para uma matriz 6×66\times6 de posto 3. Aplicada às linhas de posição, wv=∣det⁡Jv∣=0,128w_v=\lvert\det J_v\rvert=0{,}128 m³, igual a a2a3∣sin⁡θ3∣ r=0,5⋅0,4⋅0,866⋅0,7399a_2a_3\lvert\sin\theta_3\rvert\,r=0{,}5\cdot0{,}4\cdot0{,}866\cdot0{,}7399. As linhas angulares têm posto 2 em toda configuração (as juntas 2 e 3 têm eixos paralelos), então esse braço nunca controla as três componentes do giro da ferramenta, e uma medida só nas linhas angulares daria zero em toda parte: uma deficiência permanente, não proximidade de singularidade. Misturar linhas também mistura unidades: expressar as linhas lineares em mm muda o produto dos valores singulares das seis linhas de 0,6580{,}658 para 1,28×1081{,}28\times10^8.

Equívocos Comuns e Armadilhas

  • "Numa singularidade todas as taxas de junta explodem." Só a componente na direção perdida. No Exemplo 1 o movimento tangencial pedia 0,0310{,}031 rad/s bem na borda.
  • "Singularidades ficam na borda do espaço de trabalho." A singularidade de ombro do Exemplo 2 é interior, e uma reta passa por ela.
  • "O teste é det⁡J=0\det J=0." Só para JJ quadrada. Para JJ larga ou alta, use o posto e os valores singulares.
  • "Maximizar ww deixa o braço isotrópico." No Exemplo 4, ww teve o pico em 90∘90^\circ, e a elipse mais redonda estava em 134∘134^\circ.
  • "A medida de Yoshikawa serve para qualquer Jacobiano." Para JJ alta ela é identicamente zero. Aplique-a às linhas da tarefa.
  • "w=0,6w=0{,}6 é bom." Só em relação ao mesmo robô, às mesmas unidades e às mesmas linhas. Em mm a mesma postura dá 6×1056\times10^5.
  • "O amortecimento resolve singularidades de graça." Ele troca velocidade de junta por erro de seguimento, e no Exemplo 3 também mudou o ramo de configuração do braço.

Resumo

Uma singularidade é uma configuração em que o Jacobiano perde posto: alguma direção da ferramenta fica impossível e algum movimento de junta fica invisível. Jacobianos quadrados a sinalizam com det⁡J=0\det J=0, todos os Jacobianos com um valor singular nulo. Perto dela, a taxa de junta necessária para uma velocidade da tarefa cresce como 1/σmin⁡1/\sigma_{\min} na componente da direção perdida, como mostrou a aproximação radial do Exemplo 1, enquanto as outras direções seguem baratas. Algumas singularidades são interiores: uma reta passando a hh do eixo da base do braço articulado exigiu exatamente v/hv/h da junta da base, 100 rad/s com h=1h=1 mm. A medida de Yoshikawa w=det⁡JJTw=\sqrt{\det JJ^T} é o volume do elipsoide de velocidades, igual a ∣det⁡J∣\lvert\det J\rvert para JJ quadrada, definida para JJ larga e identicamente zero para JJ alta, a menos que se restrinja às linhas da tarefa. Ela se anula nas singularidades, mas não diz nada sobre a forma do elipsoide e depende das unidades. Os mínimos quadrados amortecidos limitam as taxas de junta ao custo de erro de seguimento e, às vezes, de outra configuração.

Documentation Links