Difference between revisions of "Projets:Lab:2012:Couperobotique2013:Software"

From Electrolab
Jump to: navigation, search
m
 
(6 intermediate revisions by one user not shown)
Line 1: Line 1:
 
=Notice=
 
=Notice=
 
Cette page va décrire la structure et le fonctionnement du soft
 
Cette page va décrire la structure et le fonctionnement du soft
 +
=Structure du programme=
 +
==Low Level==
 +
===UART===
 +
 +
===i2c===
 +
 +
===GPIO===
 +
==Devices==
 +
===Roboclaw===
 +
Utilise la librarie UART
 +
 +
Une librairie qui permet d’exécuter toutes les commandes du roboclaw.
 +
===ads7830===
 +
Utilise la librarie i2c
 +
 +
Une librairie qui permet d'initialiser, de configurer et de lire d'ADC.
 +
===ads1015===
 +
Utilise la librarie i2c
 +
 +
Une librairie qui permet d'initialiser, de configurer et de lire d'ADC.
 +
===SFR10===
 +
Une librairie qui permet d'initialiser, de configurer, de démarrer le ranging et de lire la distance.
 +
 +
La distance est lue en ms, puis converti en mm, car ça augmente la précision.
 +
===PCA9685===
 +
Une librairie qui va configurer les pwms pour un fonctionnement avec servomoteurs et envoyer les angles.
 +
 +
Comporte des fonctions pour tester les angles.
 +
===MCP23017===
 +
Une librairie qui va configurer les gpios en E/S lire les entrées et écrire les sorties.
 +
 +
==Applicatif==
 +
===main===
 +
Récupère les arguments et lance les différents modes
 +
===coupe===
 +
Logiciel principal qui va recevoir les données des capteurs et va décider des actions pour ensuite agir sur les actionneurs.
 +
===motor_drive_test===
 +
Libraire qui permet de lancer des tests de sens de rotation des moteurs, et une mesure de réponse indicielle afin de déterminer le PID optimal.
 +
===motor_drive===
 +
Librairie qui permet de lancer des asservissements en position.
 +
 +
Comporte un thread qui gère le roboclaw.
 +
===i2c_master
 +
Libraire qui lit en permanence les capteurs et envoie les commandes aux actionneurs.
 +
 +
Comporte un thread qui gère l'i2c.
 +
 +
=Calcul pour déplacement=
 +
==Commande Roboclaw==
 +
Pour commander la roboclaw il faut fournir 5 infos:
 +
*distance roue gauche
 +
*distance roue droite
 +
*accélération/décélération des 2 roues
 +
*vitesse roue gauche
 +
*vitesse roue droite
 +
 +
==Arc de cercle==
 +
[[File:Arc_FL.png|Avant gauche]]Avant gauche
 +
Avant droite[[File:Arc_FR.png|Avant droite]]
 +
 +
[[File:Arc_BL.png|Arrière gauche]]Arrière gauche
 +
Arrière droite[[File:Arc_BR.png|Arrière droite]]
 +
 +
Fonctionnement:
 +
*Quatres modes
 +
**Avant gauche
 +
**Avant droite
 +
**Arrière gauche
 +
**Arrière droite
 +
*Un angle
 +
*Un rayon
 +
 +
==Ligne droite==
 +
*Deux modes:
 +
**Marche Avant
 +
**Marche Arrière
 +
*Une distance
 +
==Rotation==
 +
*Un angle entre -360 et 360
 +
**Négatif sens trigo(anti-horaire)
 +
**Positif sens horaire
 +
 
=TODO=
 
=TODO=
*Renforcer la mesure de réponse indicielle au cas ou le moteur tourne dans le mauvais sens (segfault pour le moment)
+
*[OPTIONNEL]Renforcer la mesure de réponse indicielle au cas ou le moteur tourne dans le mauvais sens (segfault pour le moment)
*Faire un mode test pour vérifier le sens des moteurs
+
*[DONE]Faire un mode test pour vérifier le sens des moteurs
 +
*[TBTESTED]Faire une fonction de debug avec __line__ __file__
 +
*Threads
 +
**[DONE]Ajouter des threads
 +
**Thread roboclaw
 +
***Se mettre en sleep jusqu'à delai de rafraîchissement ou nouvelle commande.
 +
*** Rafraîchir les codeurs et calculer les rayons à intervalle régulier.
 +
*** Rafraîchir l'accomplissement de la commande en cours.
 +
**Thread i2c
 +
***Même principe que le roboclaw (rafraichissement position et attente de commande)
 
*Tester l'i2c
 
*Tester l'i2c
 
**Avec SRF-10
 
**Avec SRF-10
 
**Avec ads7830
 
**Avec ads7830
 
**Avec arduino
 
**Avec arduino
*Coder un gpio generique
+
*Coder gpio raspi
**Et le coder pour la raspi
+
*Gestion de l'i2c
**Refaire la lib PCD8544 et virer wiringPi
+
*Recoder l'UART pour pouvoir utiliser plusieurs UART
+
**Coder l'interface CMUCAM2
+
*Ajouter des threads
+
**Gestion de l'i2c
+
 
**Tableau global des capteurs
 
**Tableau global des capteurs
*Ajouter serveur web
+
** Rafraîchissement
 +
*Gestion Roboclaw
 +
**Déplacement
 +
***[DONE]Rotation
 +
***[DONE-TBT]Ligne droite
 +
***[DONE]Arc de cercle [BUG] Si le rayon est inférieur à l'écartement des roues. Voir aussi angle à 0.
 +
***[EN COURS]Calcul de distance de décélération
 +
***Mode réglage : debugger le choix de direction
 +
**Coordonnées absolue
 +
*Refaire la lib PCD8544 et virer wiringPi
 +
*Coder l'interface CMUCAM2[OPTIONNEL]
 +
*Ajouter serveur web[OPTIONNEL]
 
**Serveur de fichier
 
**Serveur de fichier
 
**Communication AJAX
 
**Communication AJAX
 
**Coder interface de debug javascript
 
**Coder interface de debug javascript

Latest revision as of 00:47, 10 February 2013

Notice

Cette page va décrire la structure et le fonctionnement du soft

Structure du programme

Low Level

UART

i2c

GPIO

Devices

Roboclaw

Utilise la librarie UART

Une librairie qui permet d’exécuter toutes les commandes du roboclaw.

ads7830

Utilise la librarie i2c

Une librairie qui permet d'initialiser, de configurer et de lire d'ADC.

ads1015

Utilise la librarie i2c

Une librairie qui permet d'initialiser, de configurer et de lire d'ADC.

SFR10

Une librairie qui permet d'initialiser, de configurer, de démarrer le ranging et de lire la distance.

La distance est lue en ms, puis converti en mm, car ça augmente la précision.

PCA9685

Une librairie qui va configurer les pwms pour un fonctionnement avec servomoteurs et envoyer les angles.

Comporte des fonctions pour tester les angles.

MCP23017

Une librairie qui va configurer les gpios en E/S lire les entrées et écrire les sorties.

Applicatif

main

Récupère les arguments et lance les différents modes

coupe

Logiciel principal qui va recevoir les données des capteurs et va décider des actions pour ensuite agir sur les actionneurs.

motor_drive_test

Libraire qui permet de lancer des tests de sens de rotation des moteurs, et une mesure de réponse indicielle afin de déterminer le PID optimal.

motor_drive

Librairie qui permet de lancer des asservissements en position.

Comporte un thread qui gère le roboclaw. ===i2c_master Libraire qui lit en permanence les capteurs et envoie les commandes aux actionneurs.

Comporte un thread qui gère l'i2c.

Calcul pour déplacement

Commande Roboclaw

Pour commander la roboclaw il faut fournir 5 infos:

  • distance roue gauche
  • distance roue droite
  • accélération/décélération des 2 roues
  • vitesse roue gauche
  • vitesse roue droite

Arc de cercle

Avant gaucheAvant gauche Avant droiteAvant droite

Arrière gaucheArrière gauche Arrière droiteArrière droite

Fonctionnement:

  • Quatres modes
    • Avant gauche
    • Avant droite
    • Arrière gauche
    • Arrière droite
  • Un angle
  • Un rayon

Ligne droite

  • Deux modes:
    • Marche Avant
    • Marche Arrière
  • Une distance

Rotation

  • Un angle entre -360 et 360
    • Négatif sens trigo(anti-horaire)
    • Positif sens horaire

TODO

  • [OPTIONNEL]Renforcer la mesure de réponse indicielle au cas ou le moteur tourne dans le mauvais sens (segfault pour le moment)
  • [DONE]Faire un mode test pour vérifier le sens des moteurs
  • [TBTESTED]Faire une fonction de debug avec __line__ __file__
  • Threads
    • [DONE]Ajouter des threads
    • Thread roboclaw
      • Se mettre en sleep jusqu'à delai de rafraîchissement ou nouvelle commande.
      • Rafraîchir les codeurs et calculer les rayons à intervalle régulier.
      • Rafraîchir l'accomplissement de la commande en cours.
    • Thread i2c
      • Même principe que le roboclaw (rafraichissement position et attente de commande)
  • Tester l'i2c
    • Avec SRF-10
    • Avec ads7830
    • Avec arduino
  • Coder gpio raspi
  • Gestion de l'i2c
    • Tableau global des capteurs
    • Rafraîchissement
  • Gestion Roboclaw
    • Déplacement
      • [DONE]Rotation
      • [DONE-TBT]Ligne droite
      • [DONE]Arc de cercle [BUG] Si le rayon est inférieur à l'écartement des roues. Voir aussi angle à 0.
      • [EN COURS]Calcul de distance de décélération
      • Mode réglage : debugger le choix de direction
    • Coordonnées absolue
  • Refaire la lib PCD8544 et virer wiringPi
  • Coder l'interface CMUCAM2[OPTIONNEL]
  • Ajouter serveur web[OPTIONNEL]
    • Serveur de fichier
    • Communication AJAX
    • Coder interface de debug javascript