Il n'y a pas beaucoup d'informations ici. Fixons les roues comme séparées par la distance , et chaque roue a une orientation par rapport à la ligne qui les . Supposons ensuite que chaque roue peut être entraînée indépendamment avec une vitesse angulaire .bθivi
Si les roues sont entraînées indépendamment, mais fixes dans la direction, , vous avez quelque chose comme un entraînement différentiel (marches de réservoir). Il convient de noter que, en supposant que les roues ne glissent pas perpendiculairement à leur orientation, vous pouvez résoudre le mouvement de la base du robot sous forme fermée, étant donné les commandes de vitesse qui sont fixées sur une petite durée (comme c'est généralement le cas avec les robots sous logiciel). contrôle). L'iCreate est une telle plate-forme, tout comme les petits pionniers, et le Husky de Clearpath. Ensuite, le changement d'orientation de la base, étiqueté ci-dessous, peut être trouvé sous forme fermée.θ1=θ2=90∘θ
Le modèle habituel pour ces choses, où est la vitesse de base et est la vitesse angulaire de la base, est:vbωb
vb=12⋅(v1+v2)
ωb=1b(v2−v1)
Pour un incrément de temps fixe, , vous pouvez trouver le changement d'orientation et la distance linéaire parcourue à l'aide de ceux-ci. Notez que le robot se déplace le long d'un cercle dans cette fenêtre temporelle. La distance le long du cercle est exactement , et le rayon du cercle est . Cela suffit pour se connecter à ces équations: des segments circulaires - en particulier l'équation de la longueur de l'accord, qui décrit la distance que le robot déplace de son emplacement d'origine. Nous connaissons et , résolvez pour .δtδt⋅vbR=b2⋅v1+v2v2−v1Rθa
Donc, en supposant que le robot commence avec l'orientation et la position et se déplace le long de la fenêtre temporelle avec les vitesses (roue gauche) et (roue droite), son orientation sera: avec la position:
0(0,0)δtv1v2
θ1=δtb(v2−v1)
px=cos(θ12)⋅(2Rsin(θ12))
py=sin(θ12)⋅(2Rsin(θ12))
Notez que comme la limite est
v1→v2=v
px=δt⋅v
py=0
comme prévu.
Mettre à jour pourquoi?.
Réorganisez pour que:px
px=cos(v2−v12b)∗2∗(bv1+v22(v2−v1))∗sin(v2−v12b)
px=cos(v2−v12b)∗(v2+v1)2∗sin(v2−v12b)v2−v12b
Notez maintenant que nous avons trois limites comme .v2→v1
cos(v2−v12b)→1
(v2+v1)2→v1==v2
sin(v2−v12b)v2−v12b→1 (see sinc function)
Ceci est couvert partout sur Internet, mais vous pouvez commencer ici: http://rossum.sourceforge.net/papers/DiffSteer/ ou ici: https://web.cecs.pdx.edu/~mperkows/CLASS_479/S2006/ cinematics-mobot.pdf
Si les roues ne sont pas fixes dans le sens, comme vous pouvez faire varier la vitesse et l'orientation, cela devient plus compliqué. En ce sens, un robot peut devenir essentiellement holonomique (il peut se déplacer dans des directions et des orientations arbitraires sur le plan). Cependant, je parie pour une orientation fixe, vous vous retrouvez avec le même modèle.
Il existe d'autres modèles pour deux roues, comme un modèle de vélo, qui est facile à imaginer comme définissant les vitesses et ne variant qu'une seule orientation.
C'est le mieux que je puisse faire pour l'instant.