Bonsoir,
Le simulateur produit un fichier de données lisible (CSV). A chaque Tick (~20ms), les données suivantes sont enregistrées :
- numéro du tour courant
- temps (ms)
- vitesse (m/s)
- accélérations longitudinale et latérale (m²/s)
- commandes de direction et de gaz (-100%..+100%)
- les distances mesurées par les LIDAR (cm)
Ce fichier est facilement exploitable pour tracer des courbes et analyser les résultats. Exemples de graphes :
J'ai ajouté un bruit dans les mesures des capteurs. Pour commencer, j'ai choisi une distribution normale, avec une variance de l'ordre de 5 cm pour les LIDAR TF Mini plus. C'est supérieur à la précision des capteurs donnée par Benewake. A ajuster! Je pense faire la même chose sur la remontée de vitesse instantanée. Le simulateur connait la vitesse exacte, mais je peux retourner une valeur bruitée à l'algorithme de pilotage.
Je suis tombé sur l'adaptateur USB qui permet d'émuler un joystick à partir d'un ensemble R/C. Le couplage avec le simulateur a nécessité un simple ajustement de son fichier de configuration XML (mapping des axes). En pilotant manuellement, je ne retrouve pas le comportement de mon robot. La simulation physique (paramètre et formules) est à travailler.
Pour configurer le simulateur, les performances du robot doivent être préalablement mesurées. A cet effet, le robot doit être équipé d'un capteur de vitesse et il doit pouvoir enregistrer sa vitesse sur un court laps de temps (~20s). L'objectif est d'obtenir un enregistrement de la manipulation suivante :
- Départ arrêté
- Accélération maximale juste à la vitesse max,
- Plus roule libre jusqu'à l'arrêt.
Cette manipulation doit permettre de relever :
- la décélération liée aux frottements secs,
- l'accélération produite par la force motrice
- la vitesse maximale du robot
Une fois ces données reportées dans la configuration du simulateur, le robot simulé doit se comporter de la même manière. Il suffit de rejouer cette manipulation dans le simulateur, et analyser le fichier de données qu'il génère. Je vais essayer sur mon propre robot pour valider l'approche. Si cela fonctionne, il restera la physique liée aux virages.
Les graphismes 3D n'ont pas changé. La marge de progression est énorme, mais ce n'est pas la priorité.
Je souhaiterais tester la distribution sous forme de binaire exécutable. Je dépose en pièces jointe une archive (TRRsim.zip) contenant le dossier de TRRsim avec l'exécutable, ses fichiers dll et le pack de données. Je vous invite à tester l'exécution. Important : Vérifiez absolument les fichiers avec votre antivirus à jour avant de lancer l'exe.
Si jamais le simulateur se lance correctement, voici les touches de fonction utiles, sachant qu'il y a un algorithme par défaut dans le simulateur pour contrôler le robot.
F2: RETURN TO START LINE
F3: START AUTOPILOT
F4: SUSPEND AUTOPILOT
F5: DRAW LIDAR
F10: WORLD CAMERA (MAYA)
F11: ON-BOARD CAMERA
ALT-F4 pour fermer.
Au lancement, la caméra est positionnée au ras du sol. Bouton gauche de la souris pour faire tourner la caméra, bouton droit pour la déplacer, bouton central pour zoomer (appuyer puis glisser droite<=>gauche). C'est une caméra avec l'ergonomie Maya (oui, c'est vieux!).
J'attaque la petite couche réseau qui permettra de faire le lien entre le simulateur et les algorithmes du robot à tester. Je voulais me rendre la vie plus facile en choisissant une petite librairie. J'ai trouvé Enet en faisant une recherche : http://enet.bespin.org/ . Si vous en connaissez une pratique, n'hésitez pas à me l'indiquer.
Reste à Faire :
* améliorer le modèle physique (vraiment trop optimiste) et le rendre paramétrable. Préciser la méthode de paramétrage du simulateur (mesures à réaliser sur son propre robot).
* rendre paramétrable le robot simulé, son apparence (voie, empattement, diamètre/largeur des roues, ...voire skin STL) et la position et l'orientation de ses capteurs
* produire un fichier de log (CSV) contenant toutes les données de la simulation (temps, capteurs, commandes, vitesse, accélérations...) afin de tracer des courbes et analyser la simulation.
* étudier la possibilité d'injecter du bruit et des imprécisions dans les mesures retournées par les capteurs.
* améliorer l'apparence du rendu 3D.
* inclure le circuit de la TRR 110m.
* repo publique sur Github.
--edit :
* adaper UI aux dimesions de l'écran.
* compatibilité aux cartes graphiques à améliorer
A suivre !
Patrick.