Cours:SaéSBC : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
(Réseau local)
(Modalités d'évaluation)
 
(31 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
travail en trinôme
+
<!-- {{Rouge|Intégrer de la vérification si possible !!}}
 +
faire vérifier le fonctionnement de la carte capteur par un autre binôme ? :
 +
rédiger une fiche de vérif et la donner à la personne en charge de vérifier ?
 +
-->
  
 +
=Organisation générale=
 +
*Travail en binôme
 +
*En général :
 +
**Encadré le matin
 +
**En autonomie l'après-midi
 +
* Horaires étudiants :
 +
** du lundi (début 9h) au vendredi matin (vendredi après-midi libre)
 +
** 8h30 - 12h et 13h30 - 17h
 +
 +
=Sujets=
 +
 +
*[[Cours:SaéSBC_robotAutonome]]
 +
 +
Anciens sujets :
 +
*[[Cours:SaéSBC_brasRobotique]]
 +
*[[Cours:SaéSBC_domotique]]
 +
*[[Cours:SaéSBC_balancingRobot]]
 +
*[[Cours:SaéSBC_robotMobile]]
 +
 +
=Modalités d'évaluation=
 +
 +
*Pour le binôme : évaluations dans la semaine
 +
** '''lundi fin de matinée''' : présentation de votre conception qui devra comporter diagrammes de classes et d'objets pour la partie voiture ainsi que pour la partie affichage déporté.
 +
** '''mardi 14h''' : démonstration voiture simulée + évaluation
 +
** '''vendredi matin''' : démonstration + soutenance/question
 +
***10 minutes de soutenance par binôme ([[Rouge|vendredi matin 9h]])
 +
****en anglais
 +
****avec support de présentation comportant des éléments techniques
 +
****chaque étudiant présente ses classes conçues
 +
****le binôme présente le choix de comportement de voiture, en s'appuyant sur des figures ou des schémas.
 +
***10 minutes de questions
 +
***Démonstration simulée ET réelle
 +
 +
* Note individuelle de suivi qui évaluera ([[Rouge|au quotidien]])
 +
**comportement
 +
**présence
 +
**autonomie
 +
 +
*rapport sous forme d'archive zip qui comprendra (à rendre au plus tard le mercredi [[Rouge|13 novembre]])
 +
**les fichiers du projet
 +
**un diagramme de classes
 +
**un diagramme d'objets
 +
**un diagramme du réseau ip
 +
**un document pdf comprenant :
 +
***un descriptif du cahier des charges
 +
***détail des topics/payload du protocole mqtt choisis
 +
***une explication des solutions
 +
***un bilan/perspectives (adéquation par rapport au cahier des charges, manques, améliorations potentielles)
 +
***bilan sur le travail de groupe
  
 
=Ressources=
 
=Ressources=
 +
*[[Cours:QtTCP]]
 
*[[Cours:QtMqtt]]
 
*[[Cours:QtMqtt]]
 
*[[Cours:RessourcesReseau]]
 
*[[Cours:RessourcesReseau]]
 
*[[Cours:QtEvdevConsole|événements de périphérique evdev (clavier/souris) en mode console]]
 
*[[Cours:QtEvdevConsole|événements de périphérique evdev (clavier/souris) en mode console]]
*Classes diverses à disposition :[[Media:FichiersEtudiantEvalPOO2.zip]] / [[Cours:DevoirPOO2_classes]]
+
*Aide pour régulation PID : lire http://www.ferdinandpiette.com/blog/2011/08/implementer-un-pid-sans-faire-de-calculs/
 +
*Classes diverses à disposition : [[Media:FichiersEtudiantEvalPOO2.zip]] / [[Cours:DevoirPOO2_classes]]
  
 
=Contraintes communes=
 
=Contraintes communes=
 
  
 
Vous devrez configurer un réseau local pour connecter les cartes / ordinateurs que vous utiliserez.
 
Vous devrez configurer un réseau local pour connecter les cartes / ordinateurs que vous utiliserez.
  
 
Nous donnerons à chaque groupe les caractéristiques du réseau à créer.
 
Nous donnerons à chaque groupe les caractéristiques du réseau à créer.
 
=bras robotique=
 
 
*les communications se feront avec le protocole mqtt
 
*télécommande
 
*affichage de la couleur de la balle sur des leds
 
*affichage déporté (angles des servos, détection de balle ...)
 
 
 
Objectif : déplacer le bras pour saisir une balle.
 
 
*[[Media:TestPca9685.zip]]
 
*[[Media:SourcesPixyCPP.zip]]
 
*utiliser pixymon pour configurer la caméra pixy
 
 
* Quelques références :
 
** RaspArm-S Kit for RPi : https://www.adeept.com/learn/detail-53.html (télécharger "Tutorials and Code" en particulier)
 
 
Exemple Pixy :
 
 
<source lang=cpp>
 
//fichier pro
 
LIBS += -L/opt/electronique/pi/sysroot/lib/arm-linux-gnueabihf -l:libusb-1.0.so -l:libudev.so.1
 
INCLUDEPATH += /opt/electronique/pi/sysroot/usr/include/libusb-1.0/
 
 
 
// sans doute dans un .h
 
...
 
#include "pixy/libpixyusb2/include/libpixyusb2.h"
 
...
 
    Pixy2        pixy;
 
....
 
// sans doute dans un .cpp
 
...
 
    int Result = pixy.init();
 
    if (Result<0) qDebug()<<"pb initialisation pixy !!!";
 
....
 
      pixy.ccc.getBlocks();
 
      if (pixy.ccc.numBlocks)
 
      {
 
        qDebug()<<"Detected "<< pixy.ccc.numBlocks <<" block(s)\n";
 
        for (int blockIndex = 0; blockIndex < pixy.ccc.numBlocks; blockIndex++)
 
        {
 
            qDebug()<<pixy.ccc.blocks[blockIndex].m_x<<" "<<pixy.ccc.blocks[blockIndex].m_y;
 
        }
 
      }
 
</source>
 
 
=Robot mobile=
 
 
*comportement dépendant de codes barre, ex de code barre :
 
**tourner à droite
 
**tourner à gauche
 
**1/2 tour
 
**...
 
*télécommande wifi par mqtt
 
*affichage sur des leds de la vitesse des moteurs
 
 
==Pb de verrouillage numérique==
 
 
Si lors de la lecture d'un code barre les chiffres n'apparaissent pas, il faut :
 
*ouvrir le fichier /etc/rc.local dans un éditeur:
 
**nano /etc/rc.local
 
*ajouter les lignes suivantes avant {{Rouge|exit 0}}
 
**
 
for tty in /dev/tty[1-9]*;
 
do
 
setleds -D +num < $tty > /dev/null
 
done
 
**sauvegarder : control+w
 
**quitter : control+x
 
*redémarrer la carte
 
**reboot
 
 
==Lecture de fichier CSV==
 
 
Classes à utiliser :
 
*QFile
 
**méthode readline
 
*QString
 
**méthode split
 
 
==Documents==
 
[[Media:PromoDUT2021.zip]]
 
 
==Conserver le focus clavier sur la zone de saisie==
 
 
*Ajouter une zone de saisie dans l'interface : QLineEdit
 
*rendre active cette zone : ui->lineEdit->activateWindow();
 
*garder le focus sur cette zone : ui->lineEdit->setFocusPolicy(Qt::StrongFocus);
 
*empêcher la prise du focus clavier par d'autres widgets :
 
**sur chaque widget
 
**ui->unWidget->setFocusPolicy(Qt::NoFocus);
 
 
=Domotique=
 
 
*à minima
 
**3 cartes rpi
 
**communication par mqtt
 
**carte capteurs (i2c/gpio)
 
**carte actionneurs (i2c/gpio)
 
 
 
 
 
MQTT pour Qt : https://doc.qt.io/QtMQTT/qtmqtt-index.html
 
 
MQTT pour Arduino : https://pubsubclient.knolleary.net
 
 
NanoPi avec NodeRed ou QT
 
 
Adresses IP pour cartes Arduino : 10.98.9.XXX avec XXX = 211, 212, 213, 214 ou 215.
 
''Changer également l'adresse MAC pour la différencier des autres cartes''.
 
 
Adresse broker mosquitto : 10.98.35.245
 
 
=Balancing Robot=
 
 
*les communications se feront avec le protocole mqtt
 
*modifier avec une interface graphique les paramètres de l'asservissement
 
*télécommande avec boutons physique
 
*affichage de l'angle du robot sur un barregraphe
 
 
 
== Indications pour démarrer ==
 
 
Projet QTCreator pour commencer : [[Media:balancingBot_Minimal.zip]]
 
 
Il faudra configurer un kit de cross-compilation :
 
* Appareil mobile : linux générique (ip=192.168.7.2, login=root, mdp=geii)
 
* Racine du système : {{Rouge|/opt/electronique/bbBlue/sysroot}}
 
* Version de QT : pointer {{Rouge|/opt/electronique/bbBlue/qt5/bin/qmake}}
 
* Compilateurs : pointer l'executable du compilateur situé dans l'arborescence de {{Rouge|/opt/electronique/bbBlue/}}
 
 
Aide pour régulation PID : lire http://www.ferdinandpiette.com/blog/2011/08/implementer-un-pid-sans-faire-de-calculs/
 
 
==Guide de progression==
 
 
# Configurer le projet pour qu'il compile et s'exécute sur la carte du robot
 
# Analyser le code - inutile de rentrer trop dans le détail, mais comprendre l'articulation des classes utilisées dans le main.
 
# Afficher la valeur d'angle du gyroscope en temps réel avec qDebug()
 
# Implémenter une classe pour un régulateur PID qui interviendra entre le gyroscope et les moteurs. Vous pourrez commencer par un régulateur proportionnel uniquement et compléter ensuite.
 
# Implémenter une application graphique PC communiquant en tcp avec le robot permettant
 
## d'afficher les valeurs du gyroscope,
 
## de démarrer/éteindre le PID,
 
## de modifier les valeurs du PID,
 
## ...
 

Version actuelle datée du 8 novembre 2024 à 13:55


Organisation générale

  • Travail en binôme
  • En général :
    • Encadré le matin
    • En autonomie l'après-midi
  • Horaires étudiants :
    • du lundi (début 9h) au vendredi matin (vendredi après-midi libre)
    • 8h30 - 12h et 13h30 - 17h

Sujets

Anciens sujets :

Modalités d'évaluation

  • Pour le binôme : évaluations dans la semaine
    • lundi fin de matinée : présentation de votre conception qui devra comporter diagrammes de classes et d'objets pour la partie voiture ainsi que pour la partie affichage déporté.
    • mardi 14h : démonstration voiture simulée + évaluation
    • vendredi matin : démonstration + soutenance/question
      • 10 minutes de soutenance par binôme (vendredi matin 9h)
        • en anglais
        • avec support de présentation comportant des éléments techniques
        • chaque étudiant présente ses classes conçues
        • le binôme présente le choix de comportement de voiture, en s'appuyant sur des figures ou des schémas.
      • 10 minutes de questions
      • Démonstration simulée ET réelle
  • Note individuelle de suivi qui évaluera (au quotidien)
    • comportement
    • présence
    • autonomie
  • rapport sous forme d'archive zip qui comprendra (à rendre au plus tard le mercredi 13 novembre)
    • les fichiers du projet
    • un diagramme de classes
    • un diagramme d'objets
    • un diagramme du réseau ip
    • un document pdf comprenant :
      • un descriptif du cahier des charges
      • détail des topics/payload du protocole mqtt choisis
      • une explication des solutions
      • un bilan/perspectives (adéquation par rapport au cahier des charges, manques, améliorations potentielles)
      • bilan sur le travail de groupe

Ressources

Contraintes communes

Vous devrez configurer un réseau local pour connecter les cartes / ordinateurs que vous utiliserez.

Nous donnerons à chaque groupe les caractéristiques du réseau à créer.