J'envisage de programmer un robot suiveur de ligne en utilisant des algorithmes d'apprentissage par renforcement. La question que je réfléchis est de savoir comment puis-je obtenir l'algorithme pour apprendre à naviguer à travers un chemin arbitraire?
Après avoir suivi le livre Sutton & Barto pour l'apprentissage par renforcement, j'ai résolu un problème d'exercice impliquant une piste de course où l'agent de voiture a appris à ne pas sortir de la piste et à réguler sa vitesse. Cependant, ce problème d'exercice a permis à l'agent d'apprendre à naviguer sur la piste sur laquelle il s'est entraîné.
Est-ce dans le cadre de l'apprentissage par renforcement que d'obtenir un robot pour parcourir des chemins arbitraires? L'agent doit-il absolument avoir une carte du circuit ou du parcours de course? Quels paramètres pourrais-je éventuellement utiliser pour mon espace d'état?
Réponses:
L'une des mesures clés de tout algorithme d'apprentissage automatique est sa capacité à généraliser (c'est-à-dire à appliquer ce qu'il a appris à des scénarios jamais vus auparavant). Les apprenants de renforcement (RL) peuvent bien généraliser, mais cette capacité est en partie fonction de la formulation de l'espace d'état dans mon expérience. Cela signifie que si vous pouvez trouver la bonne configuration, l'apprenant RL n'aura pas besoin d'une carte du circuit de course.
Reste à savoir quels paramètres utiliser. Sans en savoir plus sur les capteurs disponibles sur votre robot, je ne peux que spéculer. Ma première inclinaison est d'essayer de coder l'orientation relative de la ligne et du robot (c'est-à-dire que le robot tend vers la droite, la gauche ou se déplace simplement parallèlement à la ligne). Cela entraînerait un joli petit espace d'état. Bien que n'étant pas strictement nécessaire, il permettrait une mise en œuvre simple et rapide. De plus, si le robot ne se déplace pas à une vitesse constante, cela peut aider à coder la vitesse du robot car le robot devra réagir plus rapidement lorsqu'il se déplace à des vitesses plus élevées.
la source
Je ne sais pas quel type de robot vous avez mais je fais de la ligne de sauvetage robocup depuis quelques années maintenant. Je me suis rendu compte que si vous voulez bien suivre une ligne, l'utilisation du PID est une bonne option. Permettez-moi de développer cela. Si vous imaginez deux capteurs de lumière de chaque côté de la ligne, vous voudriez qu'ils soient de valeur égale pour que la ligne soit au milieu. Vous pouvez ensuite utiliser la différence entre la valeur des deux capteurs pour modifier le pourcentage de rotation du robot. Avec cette technique, il est possible d'amener un robot à suivre une ligne à des vitesses extraordinaires. comme si vous envisagiez de faire apprendre au robot à améliorer ses capacités de suivi de ligne. Ce que j'ai trouvé, c'est commencer avec vos valeurs PID initiales supérieures à ce que vous voulez qu'elles soient et utiliser un capteur gyroscopique pour mesurer la fréquence d'oscillation du robot pendant qu'il suit la ligne. Vous pouvez à partir de là créer votre propre fonction pour déterminer de combien vous devez baisser vos valeurs afin d'obtenir un système stable, ce n'est pas exactement de l'intelligence artificielle plus comme un algorithme d'optimisation automatisé, mais bon im 18 et j'ai appris à coder à partir du l'Internet. J'espère que ça aide. Si vous avez des questions, écrivez-moi, ce n'est pas mon adresse e-mail principale, donc je ne la vérifierai pas régulièrement. [email protected]
la source