Se connecter / S'enregistrer
Votre question

Programmation d'un robot pour les tpe

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
29 Janvier 2012 19:30:20

Bonjour,
Je suis en première et si vous le savez dans quelques mois nous aurons les TPE je travaille donc avec mon groupe sur la voiture autonome nous avons commence la fabriquation du robot mais depuis plusieurs semaines nous restons bloqués au niveau du programme et nos professeurs n'arrive pas non plus à nous aider je m'en remet donc à votre aide.Ce programme doit donc suivre une ligne noirs à l'aide de capteurs et de même de s'arreter en cas d'obstacle passant devant le robot.La ligne noir représente les lignes blanches de la route avec lesquelles la voiture se dirige et l'obstacle simule un piéton.Nous avons donc commencer le programme nous arrivons à le faire nous rajoutons ue partie du programme permettant de suivre la ligne noir maois cela ne marche pas et nous trouvons pas d'erreur.Voici ce programme:
  1. 'Paramétrage et Déclarations
  2.  
  3. 'Déclaration du µC
  4. $regfile = "attiny2313.dat"
  5.  
  6. 'Paramétrage de la fréquence d'horloge
  7. $crystal = 16000000
  8.  
  9. 'Configuration des entrées-sorties
  10. Config Pinb.0 = Input
  11. Config Pinb.1 = Input
  12. Config Portb.3 = Output
  13. Config Portb.4 = Output
  14. Config Portd.2 = Output
  15. Config Portd.3 = Output
  16. Config Pind.6 = Input
  17. Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 64
  18.  
  19. 'Création des mnémoniques
  20. Bp_start Alias Pind.6 'Bouton poussoir : 0 = appuyé, 1 = relâché
  21. Mg Alias Pwm1a 'Commande du moteur gauche (de 0 à 255)
  22. Md Alias Pwm1b 'Commande du moteur droit (de 0 à 255
  23. Led1 Alias Portd.2 'LED 1
  24. Led2 Alias Portd.3 'LED 2
  25. Captg Alias Pinb.0 'Capteur gauche
  26. Captd Alias Pinb.1 'Capteur droit
  27. Dim I As Byte 'Variable I servant au test de démarrage progressif
  28. Portd = 255
  29.  
  30. 'PROGRAMME PRINCIPAL
  31.  
  32. 'Extinction des deux LED
  33. Reset Led1
  34. Reset Led2
  35.  
  36. 'Programme de test des moteurs
  37.  
  38. 'Moteur droit seul
  39. Md = 255
  40. Mg = 0 'on allume la led1 pour suivre le déroulement du programme
  41. Set Led1
  42.  
  43. 'Attente d'une action sur le bouton poussoir
  44. Bitwait Bp_start , Reset 'attente de l'appui sur le bouton poussoir
  45. Waitms 200 'temporisation de 200 ms afin d'éliminer les rebonds sur le bouton poussoir
  46. Bitwait Bp_start , Set 'attente qu'on relâche le bouton poussoir
  47.  
  48. 'Moteur gauche seul
  49. Md = 0
  50. Mg = 255
  51. Reset Led1 'on éteint la led1 et on allume la led2
  52. Set Led2 'pour suivre le déroulement du programme
  53.  
  54. 'Attente d'une action sur le bouton poussoir
  55. Bitwait Bp_start , Reset 'attente de l'appui sur le bouton poussoir
  56. Waitms 200 'temporisation de 200 ms afin d'éliminer les rebonds
  57. Bitwait Bp_start , Set 'attente qu'on relâche le bouton poussoir
  58.  
  59. 'LIGNE DROITE (les deux moteurs à fond)
  60. Mg = 255 'Moteur Gauche à 255
  61. Md = 255 'Moteur Droit à 255
  62. Reset Led2
  63. Set Led1
  64.  
  65. 'TEMPORISATION de 5 secondes
  66. Wait 5
  67.  
  68. 'Arrêt des deux moteurs pendant 2 secondes
  69. Mg = 0
  70. Md = 0
  71. Wait 2
  72. Reset Led1
  73. Set Led2
  74.  
  75. 'démarrage progressif des moteurs
  76. For I = 0 To 255 'On augmente la vitesse des deux moteurs de 1 toutes
  77. Mg = I 'les 20 millisecondes
  78. Md = I 'afin d'obtenir un démarrage progressif
  79. Waitms 20 'il faut augmenter l'attente pour un démarrage plus doux
  80. Next I 'ou la diminuer pour un démarrage plus brutal
  81.  
  82. Wait 5 'les deux moteurs restent à fond pendant 5 secondes
  83.  
  84. 'Arrêt des deux moteurs
  85. Mg = 0
  86. Md = 0
  87. Reset Led1
  88. Reset Led2
  89. End 'fin du programme



Si vous voyez un défaut merci de nous donner votre avis ou un quelquonque conseil et nous somme bloqués aussi pour faire la suite du programme permettant au robot de s'arreter ceci grace à un autre capteur.
Je vous remercie d'avance.

Autres pages sur : programmation robot tpe

a b L Programmation
29 Janvier 2012 21:31:36

L'avenir n'est pas à la lecture de simples capteurs comme certains robots industriels, mais l'analyse des informations d'une vidéo (d'où la difficulté) qui permet d'obtenir plus d'informations et permet l'anticipation.

Précise plutôt ce qui "ne marche pas" en indiquant:
- ce qui est voulu
- ce qui se réalise et qui est différent du voulu

Je demande ça parce que dans ton code, il est évident que le robot ne suive pas la ligne, car tu ne lis jamais le capteur.
31 Janvier 2012 12:50:45

CRicky a dit :
L'avenir n'est pas à la lecture de simples capteurs comme certains robots industriels, mais l'analyse des informations d'une vidéo (d'où la difficulté) qui permet d'obtenir plus d'informations et permet l'anticipation.

Précise plutôt ce qui "ne marche pas" en indiquant:
- ce qui est voulu
- ce qui se réalise et qui est différent du voulu

Je demande ça parce que dans ton code, il est évident que le robot ne suive pas la ligne, car tu ne lis jamais le capteur.




Alors je te remercie déjà de ta reponse.En fait notre souhait et d'imiter une voiture automate donc pour cela nous voulons que notre robot simulant cette voiture suive les lignes noires et s arrête en cas de détection d'un obstacle.
Le programme ci-dessus a été fait par notre professeur et est censé suivre les lignes noires.Seulement il ne fais qu'avancer tout droit.Nous avons essayer de faire un autre programme mais nous n'y arrivons pas.Donc si jamais vous savez comment faire pourriez vous nous aider parce-que nous sommes completement bloqués et que nos professeurs ne savent pas non plus comment faire pour que le robot suive la ligne noire et de plus ne savent pas non plus comment ecrire la suite du programme avec un autre capteur permettant au robot de détecter si un obstacle est présent devant lui pour le signaler ce qui entrainera l'arret du robot.Cet obstacle est censé simuler un pieton ou autre.
Contenus similaires
a b L Programmation
31 Janvier 2012 19:37:18

le programme se contente de faire avancer le robot tout droit.
Tu as les capteurs Captg et Captd qui ne sont pas utilisés.

Je suppose que tu as placé tes capteurs autour de la ligne. Ce que tu dois faire est en fait assez simple:
- si le capteur gauche est actif en blanc, tu actionnes le moteur gauche.
- si le capteur droit est actif en blanc, tu actionnes le moteur droit.

Donc:
- lorsque la ligne est droite, les 2 capteur autour de la ligne noire sont actifs en blanc : les 2 moteurs tournent
- lorsque la ligne tourne à droite, le capteur de gauche sera toujours actif en blanc, mais le capteur droit passera sur la ligne noire : le moteur gauche reste actif, et le droit s'arrête => le robot tourne à droite

Après tu peux gérer le freinage et l'accélération (en passant par une variable d'accélération valant -1, 0 ou 1).
Typiquement, C'est le cas où la vidéo permettrait de voir à l'avance le virage ainsi que la courbure du virage afin d'adapter la vitesse et le placement de manière optimale.
31 Janvier 2012 20:27:31

Merci encore de votre réponse CRicky, et oui vous avez très bien compris ce que nous voulons.Mais en fait nous bloquons dans l' écriture du programme car nous ne savons pas comment l'écrire mais nous avons compris la théorie.Pourriez-vous nous aider sur ce plan la s'il vous plait ?
a b L Programmation
1 Février 2012 19:52:53

Bon, si tu ne sais pas programmer, je te mets sur la voie.

Tu utilises "do" et "loop" pour faire une boucle principale (les actions et tests que tu vas répéter indéfiniement), et dans ta boucle, tu fais les tests et actionnes (ou non) les moteurs en conséquence:
  1. Do
  2. ' Gestion du moteur gauche
  3. If Captg = 0 Then
  4. ' Capteur gauche sur du noir
  5. '...
  6. Else
  7. ' Capteur gauche sur du blanc
  8. '...
  9. End If
  10.  
  11. ' Idem avec la gestion du moteur droit
  12. '...
  13. Loop

1 Février 2012 21:57:35

Merci beaucoup de votre aide j'essaierai de faire cela dès que j'en aurai la possibilité et vous tiendrai au courant des résultats.

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS