Simulador de braço robótico: cinemática e planejamento ROS
Explore limites de juntas, cinemática direta e inversa e planejamento seguro numa prévia de simulador de braço robótico no navegador.
- Categoria
- ROS
- Tempo
- 3–6 horas
- Plataforma
- Navegador · ROS 2
01 / Comece aqui
Introdução
Braços robóticos transformam comandos de junta em movimento preciso da ferramenta por meio de geometria, realimentação e planejamento. Este simulador introduz essa cadeia sem esconder as partes difíceis. Ele expõe referenciais de coordenadas, poses alcançáveis, limites de juntas e singularidades para que usuários de ROS e estudantes de robótica entendam por que um movimento solicitado é bem-sucedido ou falha.
Live lab / Forward & inverse kinematics · pick-and-place
Robot arm simulator
Pose the joints, drag a target and watch inverse kinematics solve it live, or set a pick-and-place task and run it — with honest reach, singularity, and limit reporting on a full 360° workspace.
The filled dot is the base at the centre; segments are links with round joints; the tool shows a small x/y frame. The shaded ring is the reachable workspace (between the two dashed circles). In inverse mode the cross-marker is the draggable target and the faint arm is the other elbow solution. In pick-and-place mode, drag the box (pick) and the dashed square (place), then press Run.
- Tool X
- 0 px
- Tool Y
- 0 px
- Tool angle
- 0°
- Status
- Reachable
- Reach
- 0 / 240 px
Keyboard: focus the workspace, then use Space to run a pick-and-place, R to reset, B to switch elbow, and F for full screen.
Controles
O simulador oferece controles deslizantes das juntas, um alvo de posição da ferramenta que pode ser arrastado, sobreposições de referenciais de coordenadas e controles das dimensões dos elos, com a base centralizada para que todo o espaço de trabalho alcançável de 360° fique visível. O modo direto calcula a pose da ferramenta a partir dos ângulos das juntas definidos. O modo inverso acompanha o alvo de posição que você arrasta — resolve os ângulos das juntas ao vivo e informa quando o alvo é inatingível ou ambíguo, em vez de se ajustar silenciosamente a um resultado. Um terceiro modo de coleta e posicionamento permite posicionar um ponto de coleta e um destino e então conduz o braço pela tarefa inteira: ele se move até o objeto, agarra, transporta e solta na zona de destino — o trabalho canônico para o qual todo manipulador real é construído.
Teoria
Cada junta contribui com uma transformação entre referenciais de coordenadas. Multiplicar essas transformações da base até a ferramenta fornece a pose pela cinemática direta. A cinemática inversa trabalha no sentido inverso e pode não ter solução, ter uma solução ou várias.
Perto de uma singularidade, um pequeno movimento da ferramenta pode exigir um movimento enorme das juntas. Um planejador também precisa respeitar limites de posição, velocidade, aceleração, torque e colisão. O alcance geométrico, por si só, não torna uma trajetória segura.
Algoritmo
- Defina comprimentos dos elos, eixos das juntas, transformações iniciais e limites das juntas.
- Calcule a cinemática direta para o estado atual das juntas.
- Compare a pose atual da ferramenta com o alvo solicitado.
- Use um solucionador analítico ou numérico para reduzir o erro de pose dentro dos limites.
- Rejeite candidatos que colidam ou sejam singulares e selecione uma solução contínua.
- Parametrize o caminho no tempo e envie referências sincronizadas aos controladores das juntas.
Código-fonte
Um braço planar de dois elos tem um modelo direto compacto:
from math import cos, sin
def forward_kinematics(theta_1, theta_2, link_1, link_2):
elbow = (link_1 * cos(theta_1), link_1 * sin(theta_1))
tool = (
elbow[0] + link_2 * cos(theta_1 + theta_2),
elbow[1] + link_2 * sin(theta_1 + theta_2),
)
return elbow, tool
Para braços físicos, valide cada trajetória planejada em um ambiente limitado que considere as colisões antes de alimentar os atuadores.
Premissas e diferenças do hardware
O braço é planar, com duas ou três juntas revolutas, elos perfeitamente rígidos, resposta instantânea de velocidade e sem gravidade, dinâmica ou colisão — você pode mudar do cotovelo para cima para o cotovelo para baixo sem limite de torque. Servos reais têm limites de posição e velocidade, folga da caixa de engrenagens, torque limitado pela corrente e deflexão dependente da carga, e um braço de seis eixos também precisa controlar a orientação, lidar com singularidades e trabalhar próximo aos limites das juntas. Este laboratório é onde você aprende por que um alvo dentro do anel pode ter duas soluções e por que um alvo em sua borda é singular, antes de adicionar a dinâmica que torna essas poses difíceis de manter.
Diagrama do circuito
Separe a alimentação de alta corrente dos atuadores da alimentação de computação, mantendo os sinais de referência e de segurança exigidos pelo hardware escolhido.
Experimentos guiados
Arrastar um alvo ao redor é a maneira mais rápida de desenvolver a intuição para coisas que são tediosas de provar no papel e caras de descobrir no hardware.
1. Encontre a forma do espaço de trabalho
Arraste o alvo lentamente para fora até o solucionador informar que ele está inatingível e então trace essa fronteira por toda a extensão. Agora arraste para dentro, em direção à base.
Com comprimentos de elos diferentes, você encontrará duas bordas: um círculo externo em L1 + L2 e um círculo interno em |L1 − L2|. O espaço de trabalho é um anel, não um disco, e há um buraco no centro ao qual
o braço não
consegue chegar fisicamente.
| Elos | Alcance externo | Buraco interno | Forma |
|---|---|---|---|
| 100 + 90 | 190 | 10 | Anel com um pequeno buraco |
| 100 + 50 | 150 | 50 | Anel com um grande buraco |
| 100 + 100 | 200 | 0 | Um disco completo — elos iguais podem dobrar sobre si mesmos |
Essa última linha é um fato de projeto realmente útil: comprimentos de elos iguais eliminam completamente a zona inacessível. Se seu braço precisa trabalhar próximo da própria base, esse é o motivo para escolhê-los.
2. Veja as duas soluções se fundirem
Alterne entre os ramos de cotovelo para cima e para baixo para um alvo próximo ao centro do espaço de trabalho: duas poses do braço claramente diferentes alcançando o mesmo ponto.
Agora arraste esse alvo para fora, em direção à borda. As duas poses convergem e, na extensão completa, se fundem na mesma pose. Essa é uma singularidade, e é onde o braço perde a capacidade de mover a ferramenta em uma direção, qualquer que seja a ação das juntas.
3. Sinta o que uma singularidade custa
Arraste o alvo ao longo de uma linha reta que passe perto da extensão máxima, devagar e com firmeza. Observe os ângulos das juntas, e não o braço.
A ferramenta se move a uma taxa constante; as juntas não. Perto da borda, um pequeno movimento da ferramenta exige um movimento enorme das juntas, portanto uma trajetória cartesiana suave se transforma em um movimento violento das juntas. No hardware, isso é um servo batendo em seu limite.
Mantenha as trajetórias planejadas dentro de cerca de 95% do alcance máximo, e isso deixa de ser um problema.
4. Cruze a fronteira de um ramo e veja a troca
Defina o solucionador para escolher sempre o cotovelo para cima e então arraste o alvo por uma região em que esse ramo encontra um limite de junta e o solucionador muda de ramo. O braço faz a troca em um movimento grande, rápido e completamente não planejado.
É por isso que a escolha correta é movimento mínimo: escolha o ramo mais próximo da pose atual, em vez de um ramo fixo. Uma troca de ramo silenciosa no meio do caminho, no hardware real, é assustadora e pode ser destrutiva.
O que observar
| Ação | Resultado esperado | Se você vir outra coisa |
|---|---|---|
Alvo além de L1 + L2 |
Uma indicação clara de “inatingível” | Um NaN ou uma pose ajustada significa que o solucionador só verifica a alcançabilidade depois de tentar a solução |
Alvo dentro de |L1 − L2| |
Também inatingível | Correto — esse é o buraco, não um defeito |
| Alvo atrás da base | Alcançado corretamente | Se a solução se espelhar, o código está usando atan em vez de atan2 |
| Alternar o ramo do cotovelo | Mesma posição da ferramenta, juntas diferentes | Ambas são válidas; a escolha é sua |
| Arrastar em direção à borda | As velocidades das juntas sobem abruptamente | Essa é a singularidade |
| Ida e volta por FK e depois IK | Os ângulos originais voltam | Uma incompatibilidade significa que um sinal ou convenção de deslocamento está inconsistente |
Aplicação em hardware
A geometria é transferida com exatidão. Nada mais é transferido, e essa é a diferença que consome o tempo da construção do primeiro braço:
| Neste laboratório | Um braço servo real |
|---|---|
| As juntas vão exatamente onde forem comandadas | O zero do servo depende de onde o braço foi montado; alguns giram para o lado errado |
| Sem gravidade | O ombro cede quando o braço se estende — pior exatamente onde a precisão é pior |
| Sem folga | Vários graus de folga, acumulados a cada reversão |
| Movimento instantâneo | Um salto comandado ocorre na velocidade máxima, com um pico de corrente |
| Comprimentos perfeitos dos elos | Meça entre os eixos das juntas, não entre as bordas dos suportes |
| Torque infinito | Um SG90 a 58% do torque de travamento não mantém a posição com precisão |
Dois números deixam isso claro. Quatro graus de folga no ombro em um alcance de 190 mm correspondem a mais de 13 mm na garra — maior que qualquer erro introduzido pela matemática. E um comprimento de elo medido 10 mm maior em um elo de 95 mm é um erro sistemático de 10% que nenhum ajuste removerá.
A consequência prática é que a precisão no hardware vem de calibração e de uma direção de aproximação consistente, e não de uma cinemática melhor. Aproxime-se sempre de um alvo pela mesma direção e a folga se torna um deslocamento repetitivo que você pode subtrair. O solucionador completo, com todos os casos de falha tratados, está em cinemática inversa para um braço de dois elos.
Lista de verificação de hardware
Componentes
- Braço robótico de três eixos ou mais
- Controlador capaz de atualizar as juntas de forma sincronizada
- Realimentação das juntas ou servos inteligentes
- Base rígida e ponto central da ferramenta definido
- Parada de emergência e alimentação com limite de corrente
Explore o grafo
Onde este simulador é usado
Os projetos, caminhos de aprendizagem e tutoriais que se apoiam neste laboratório.
Continue construindo
Baixar recursos
Use estas referências da página enquanto trabalha no projeto. Pacotes de projeto para download serão adicionados somente depois que seu código-fonte e sua versão forem publicados.
Dúvidas comuns
Perguntas frequentes
Qual é a diferença entre cinemática direta e inversa?
A cinemática direta calcula a pose da ferramenta a partir de valores de junta conhecidos. A cinemática inversa parte de uma pose desejada da ferramenta e procura uma ou mais configurações das juntas capazes de produzi-la.
Por que um braço de dois elos tem duas soluções (cotovelo para cima e para baixo)?
Para a maioria dos alvos alcançáveis, o cotovelo pode dobrar para qualquer lado e ainda colocar a ferramenta no mesmo ponto, produzindo uma configuração com o cotovelo para cima e outra com o cotovelo para baixo. As duas soluções vêm do sinal de mais ou menos no ângulo da lei dos cossenos da segunda junta. Elas coincidem apenas em uma singularidade, quando o braço está totalmente estendido ou totalmente dobrado.
Como escolho entre cotovelo para cima e para baixo?
Escolha a configuração mais segura e eficiente para a tarefa: aquela que mantém as juntas longe dos limites, minimiza o movimento a partir da pose atual ou evita obstáculos. Este simulador permite alternar entre os ramos e mostra a solução alternativa como uma pose fantasma, para que a escolha fique visível.
O que é uma singularidade em um braço robótico?
Uma singularidade é uma configuração em que o braço perde a capacidade de mover a ferramenta em alguma direção — normalmente quando está totalmente estendido ou totalmente dobrado. Perto de uma singularidade, um pequeno movimento da ferramenta pode exigir um movimento enorme das juntas, portanto os planejadores diminuem a velocidade ou contornam essas poses. É também onde as soluções de cotovelo para cima e para baixo se fundem em uma.
Quando a cinemática inversa não tem solução?
Um alvo planar para um braço de dois elos é alcançável somente dentro do anel entre o alcance mínimo (a diferença dos comprimentos dos elos) e o máximo (a soma deles). Um ponto fora desse anel não pode ser alcançado com nenhum ângulo de junta. Uma pose também pode ser inatingível porque exige um ângulo de junta proibido, uma orientação que as juntas disponíveis não conseguem produzir ou uma configuração que colidiria com o próprio braço.
Por que usar cinemática inversa analítica em vez de um solucionador numérico?
Para um braço planar de dois ou três elos, a geometria tem solução em forma fechada (analítica), portanto você pode calcular diretamente os ângulos exatos das juntas, de forma determinística e rápida — ideal para ensino e testes. Solucionadores numéricos são necessários para braços redundantes ou espaciais, em que não existe forma fechada, mas eles iteram, podem perder soluções e são mais difíceis de analisar.
Leitura complementar
Referências
Fontes confiáveis para ir além do modelo educacional limitado deste simulador.