Salut !
H0x7d0 wrote: ↑Mon 21 Jan 2019, 15:33
J'ai un robot avec de l'odométrie, il a 2 roues, j'ai de manière temporellement locale: position du robot, des roues, leurs vitesses, leurs accélérations, etc.
Juste pour être sur d'avoir bien compris, tu as un odométrie avec roues codeuses indépendantes des moteurs, ou seulement mesure sur les moteurs, ou les deux ?
H0x7d0 wrote: ↑Mon 21 Jan 2019, 15:33
On peut aussi mettre des fins de course partout, mais j'aimerai faire mieux.
Partout, c'est probablement un peu trop, mais en laisser un bien placé devant voire derrière, c'est pas compliqué et ça peut régler quelques problèmes facilement.
H0x7d0 wrote: ↑Mon 21 Jan 2019, 15:33
Le mieux que j'ai comme idée est de faire un filtre RII passe-bas sur la somme des puissance(positives) envoyée aux moteurs,un filtre passe-bas RII sur l'acceleration des roues, et si le rapport est trop faible, je considère qu'il y a blocage. Mais je ne suis pas convaincu de mon idée.
Est-ce que vous savez s'il y a des documents d'équipes sur le sujet? avez-vous de bonnes idées?
merci

La question que je me pose est la façon dont tu calcules la consignes à ta moteurs.
Dans le cas où tu planifie une trajectoire, pour faire simple une grande droite de 2 mètres de long, avec vitesse en trapèze, cela veut dire que a tout moment tu sais où doit être ton robot par rapport à cette trajectoire précalculée. Comme la trajectoire a été calculée avec des paramètres physiquement réalisables (vitesses/accélération inférieurs au maxi réalisable par le robot), le robot va pouvoir suivre la trajectoire précisément quand tout va bien, et tout blocage, patinage, déjantage... va avoir un effet sur l'erreur entre la position actuelle du robot et celle qu'il aurait du avoir. Un simple seuil de 5, 10... 20 cm selon la précision de ton contrôle et tu as une détection de défaut couvrant un peu tout ce qui peut se passer.
C'est aussi applicable sur un moteur seul, si tu le regarde en position et pas en vitesse. En position, tu regarde l'intégrale de la vitesse, donc une une erreur faible va s'amplifier au cours du temps, et devenir visible. Dans le cas de l’accélération d'un moteur en rampe, comme tu l'avais mentionné, au début, la puissance n'est pas suffisante pour faire bouger le moteur, et la position (ou l'angle comme tu préfères) théorique continue d'augmenter, puis l'asserv fini par faire décoller le moteur et rattraper la consigne. Si le moteur ne décolle pas, l'angle théorique augmente sans que l'angle réalisé ne bouge, et lorsque tu atteinds le seuil critique, ça part en erreur.
Et tu peux avoir les 2 : seuils "serrés" sur les moteurs, pour être très réactifs sur un blocage ou gros effort sur roue, et seuil plus large sur la position du robot, permettant de détecter patinage et autre collision avec élément de jeu qui fait dévier le robot.
Si en revanche tu ne calcules pas de trajectoire, mais à un simple asserv sur une consigne de cap, ou asserv polaire, c'est plus difficile à mettre en place, mais il est possible de même de faire une notion de "gabarit" au niveau de la vitesse*.
Enfin ce n'est qu'une solution...