Qual é o modelo adequado para robôs de duas rodas?

30

Qual é o modelo adequado para robôs de duas rodas? Ou seja, quais equações de movimento descrevem a dinâmica de um robô de duas rodas.

Modelos de fidelidade variável são bem-vindos. Isso inclui modelos não lineares, bem como modelos linearizados.

ronalchn
fonte
1
Esta questão parece muito ampla. Seria bom se você vincular "equações de movimento" a um artigo da Wikipedia (por exemplo) que descreva o que é. Além disso, você deve especificar o robô mais especificamente. Por exemplo, existem rodas passivas? Quais são os tipos das duas rodas? etc.
Shahbaz
1
Estilo de bicicleta ou estilo de segway? Você deveria ser mais específico.
Paul

Respostas:

23

Não há muita informação aqui. Vamos fixar as rodas separadas pela distância b , e cada roda tem orientação θi em relação à linha que as une. Então assuma que cada roda pode ser acionada independentemente com uma velocidade angular vi .

Se as rodas forem acionadas independentemente, mas fixadas na direção, θ1=θ2=90 , você terá algo como uma transmissão diferencial (banda de rodagem do tanque). Vale ressaltar que, supondo que as rodas não deslizem perpandicularmente à sua orientação, é possível resolver o movimento da base do robô de forma fechada, dados os comandos de velocidade que são fixados por um período de tempo pequeno (como é geralmente o caso dos robôs sob software) ao controle). O iCreate é uma plataforma assim como os pioneiros menores e o Husky by Clearpath. Em seguida, a alteração na orientação da base, rotulada como θ abaixo, pode ser encontrada na forma fechada.

...

O modelo usual para essas coisas, em que é a velocidade base e ω b é a velocidade angular da base, é:vbωb

ωb=1

vb=12(v1+v2)
ωb=1b(v2v1)

Para um incremento de tempo fixo, , é possível encontrar a alteração na orientação e a distância linear percorrida usando-as. Observe que o robô viaja ao longo de um círculo nesta janela de tempo. A distância ao longo do círculo é exatamente δ t v b , e o raio do círculo é R = bδtδtvb . Isso é suficiente para se conectar a essas equações:segmentos circulares- particularmente a equação do comprimento da corda, que descreve a distância que o robô desloca de sua localização original. ConhecemosReθ, resolvemos paraa.R=b2v1+v2v2v1Rθa

Portanto, supondo que o robô comece com a orientação e a posição ( 0 , 0 ) e se mova ao longo da janela de tempo δ t com velocidades v0(0,0)δt (roda esquerda) e v 2 (roda direita), sua orientação será: θ 1 = δ tv1v2 com posição: p x = cos ( θ 1

θ1=δtb(v2v1)
px=cos(θ12)(2Rsin(θ12))
py=sin(θ12)(2Rsin(θ12))

Observe que, como o limite é v1v2=vp y = 0

px=δtv
py=0

como esperado.

Atualizar por quê?

Reorganize para que:px

px=cos(v2v12b)2(bv1+v22(v2v1))sin(v2v12b)

px=cos(v2v12b)(v2+v1)2sin(v2v12b)v2v12b

v2v1

cos(v2v12b)1

(v2+v1)2v1==v2

sin(v2v12b)v2v12b1 (see sinc function)

Isso é coberto por toda a Internet, mas você pode começar aqui: http://rossum.sourceforge.net/papers/DiffSteer/ ou aqui: https://web.cecs.pdx.edu/~mperkows/CLASS_479/S2006/ kinematics-mobot.pdf

Se as rodas não estiverem fixas na direção, como você pode variar a velocidade e a orientação, fica mais complicado. Nesse sentido, um robô pode se tornar essencialmente holonômico (ele pode se mover em direções e orientações arbitrárias no avião). No entanto, aposto que a orientação é fixa, você acaba com o mesmo modelo.

Existem outros modelos para duas rodas, como o modelo de bicicleta, fácil de imaginar como definindo as velocidades e variando apenas uma orientação.

É o melhor que posso fazer por enquanto.

Josh Vander Hook
fonte
1
Talvez eu seja um pouco tarde, mas não pode ver porque Px=dt*vse v1 = v2. Temos sin(theta/2)como parte da multiplicação, portanto, quando v1=v2 -> theta = 0, obtemos sin(0/2)=0e como conseqüência Px = 0. O que estou perdendo?
Longa Smith
θ0
4

Se você realmente deseja mergulhar na matemática, aqui está o artigo seminal que unificou e categorizou a maioria dos modelos para robôs de rodas.

georgebrindeiro
fonte
2
Sinto muito, as respostas somente de link são desencorajadas no StackExchange. Talvez você possa condensar o conteúdo desse link em alguns parágrafos e mantê-lo aqui (junto com o link real, é claro). Isso ajuda a evitar a podridão do link.
Manishearth
Claro, farei isso assim que tiver tempo suficiente para isso esta semana. Desculpe por isso, eu não estava ciente dessa política e achei que o link seria útil como está.
Georgebrindeiro
Excelente papel - obrigado pelo link! Um longo fim de semana bem :-)
uhoh
0

A resposta para isso é simples, mas as outras respostas ofuscam a dinâmica.

Os robôs de acionamento diferencial podem ser modelados com a dinâmica de monociclo da forma:

[x˙y˙θ˙]=[cos(θ)0 0sEun(θ)0 00 01][vω],
Onde x e y são coordenadas cartesianas do robô e θ(-π,π] é o ângulo entre o cabeçalho e o x-eixo. O vetor de entrada[v,ω]T consiste em entradas de velocidade linear e angular.
JSycamore
fonte
-1 Isso é apenas uma transformação entre coordenadas diferentes. Ele não modela a dinâmica do robô, conforme solicitado na pergunta. A " ofuscação " das outras respostas é porque elas levam em conta que existem duas rodas para controlar e não algum vetor de entrada abstrato. Esse vetor pode ser o resultado de um modelo, conforme solicitado na pergunta.
Unidade de flexão 22
O modelo que apresentei aborda o prompt, aumenta a discussão e é, de fato, um modelo da dinâmica de um robô de acionamento diferencial não-holonômico (embora não necessariamente de duas rodas, o que é uma força). Embora o vetor de velocidade de entrada (também conhecido como twist) possa ser uma abstração, o uso da entrada de twist é padrão para muitas plataformas de duas rodas. No entanto, isso destaca o fato de que as representações do espaço de estados são arbitrárias. Controlar as velocidades das rodas é uma abstração do controle de torques das rodas, que é uma abstração do controle das correntes do motor.
JSycamore