GARGAMEL wrote:
J'ai pu constater que certains robots géraient les trajectoires courbes. J'ai l'intention de rédiger un article sur le sujet et de le mettre à disposition sur notre site. Ca permettra je l'espère de susciter une discussion avec comparaison des algos utilisés. (Certains risquent d'être déçus de la simplicité de notre solution).
Puisque le sujet est abordé, j'en profite pour aborder une question un peu fourbe...
On a passé un bon moment à développer ces fonctionnalités de trajectoires courbes l'an dernier... avant de se rendre compte des dérives en odométrie, et de l'impact pas toujours rentable en temps (entre deux points aux arrêts obligés dont le segment est accessible, le plus rapide n'est pas de partir en courbe, mais bien de tourner avant de partir).
Notre solution est très générique puisque à chaque instant, le robot décide de lui-même de la meilleure trajectoire à adopter pour atteindre un point demandé.
Il freine juste le nécessaire, avant de s'orienter en angle et de viser le point attendu.
En "multipoints", il change de point dès le début du freinage pour un point, ce qui fait qu'il peut ne jamais s'arrêter (sauf si le nouveau point est "derrière lui")
Mais la question qui suit m'interroge encore un peu... (d'autant que j'ai un peu de difficulté à retranscrire ce qui est plus clair dans mon esprit que dans ce message..)
Lorsque le robot doit atteindre un point :
Possibilité n°1 : - à chaque instant (5ms), il recalcule la meilleure solution pour s'y rendre (donc son accélération, qui est bornée, puis sa vitesse qui est écretée et sa position... le tout en coordonnées polaires : translation et rotation)
- notons que le robot dispose à chaque instant d'un "potentiel d'accélération" dont la somme par roue est bornée... pour éviter de déraper. Il peut donner ce potentiel soit en translation, soit en rotation, pour accélérer positivement ou négativement.
- dans cette solution,
la consigne évolue à chaque 5ms par rapport à la position réelle du robotAVANTAGE : évite les erreurs, adapte son comportement lorsqu'il y a des petits obstacles ou des éléments perturbateurs
INCONVÉNIENT : la trajectoire est moins répétable, et le robot "fait ce qu'il peut", cela nécessite une très bonne méca sans jeu !
L'inconvénient majeur lorsqu'il y a du jeu mécanique par exemple, est que le robot cherche à maintenir son angle en faisant varier son accélération en rotation, et pas seulement par l'asservissement PD... Il donne ainsi son "potentiel d'accélération" à la rotation plutôt à la translation.
Possibilité n°2 : - la consigne évolue par elle même, le robot doit se débrouiller pour la suivre, et risque plutôt de partir en erreur en cas d'impossibilité mécanique. (l'écart à la consigne > seuil).
AVANTAGE : on obtient une meilleure vitesse et une meilleure répétabilité
INCONVÉNIENT : le robot ne s'adapte pas à chaque instant à sa position réelle
Mon explication est un peu bancale... tant pis...
Si la discussion vous tente, n'hésitez pas à me demander des précisions !
A+
