Projet Nivot Célia et Sarrato-Boudet Charlie
Intitulé du projet :
Programmation de géolocalisation et caméra
Eventuellement sur un robot
Composition du groupe : Nivot Célia et Sarrato-Boudet Charlie
Descriptif du projet :
Programmer un robot qui se déplace et qui puisse être géolocalisé. (idée initiale)
Programmer un raspberry géolocalisé qui prend des photos à l'aide une webcam et qui récupère donc la localisation gps et la photographie. (idée finale)
SEANCE 1 : prise en main de la géolocalisation
On s'est connectées sur un raspberry, on a récupéré l'ip de la machine (petit écran) : 10.254.0.14 et on a "pingé" son ip avec l'ordi d'adresse ip : 10.23.17.23 et ça a marché. Donc ils font partie du même réseau.
On s'est connectées avec l'ordi en ssh sur le petit écran.
ssh pi@ipraspberry
On a regardé si dans le raspberry il n'y avait pas déjà un fichier qui code la carte GPS. On en a trouvé et on les a donc copiés sur notre session. (ci-joint, le fichier gps qui a fonctionné)
ls -gps
Cependant on n'a pas réussi a récupéré des données gps car l'antenne était a l'intérieur et n'était pas déroulé donc la prochaine fois on essaiera de mettre l'antenne dehors.
SEANCE 2 : On essaye de faire fonctionner ce qu'on a cherché la dernière fois.
On a cherché a retrouver le fichier dans le raspberry et on a mis l'antenne dehors (sur le rebord de la fenêtre) donc ça devrait fonctionner.
history
sudo systemctl start gpsd
ps aux|grep gpsd
sudo cgps -s
Mais ça n'affiche pas les données du GPS (les câbles sont mals connectés donc pour l'instant nous n'avons aucune données) voir doc ci dessous pour reconneter les cables
On a commencé a regarder comment faire fonctionner la caméra (sans succès), il faudra la faire fonctionner avec "mjpeg" (apparemment déjà dans le raspberry) donc on continuera à la prochaine séance.
SEANCE 3 :
pour démarrer le gps : sudo gpsd /dev/ttyAMA0 -F /var/run/gpsd.sock
pour consulter les données cgps -s
pour la webcam : webcams/mjpg-streamer/
./start.sh &
Le gps a donc fonctionné et on a pu acceder à la caméra en tapant sur un navigateur http://10.254.0.14:8080 et on a pu voir ce que la caméra filmait. On a aussi essayer de capturer ce que la vidéo filmait pour faire une photo mais on n'a pas réussi donc on a demandé sur discord comment faire. On s'en occupera à la prochaine séance en attendant la réponse.
On a aussi pris des photos du raspberry qu'on mettra en ligne.
SEANCE 4 : (sans Célia et avec les élèves de Champolion)
On a téléchargé fswebcam et on l'a utilisé pour capturer l'écran avec la commande fswebcam nomdelaphoto.jpg
Ensuite on l'a récupéré sur notre session dans un autre terminal avec la commande
scp pi@10.254.0.14:~/test2.jpg .
Puis on a recupéré les dossiers dans mes documents.
Pour nous aider pour faire le bouton on cherche sur internet raspberry button input et on va utiliser le premier lien.
On a modifié le fichier bouton.py pour avoir une photo quand on appuie sur le bouton, l photo va dans le dossier "image" du raspberry et se nomme en fonction de la date et l'heure. On a aussi modifié le progrmme pour le relier a camillegpslast.py pour récupérer la latitude et longitude de quand on a pris la photo.
Dans la console on note python bouton.py pour utiliser le programme.
Dans les dossiers on fait ctrl L puis on note ssh://pi@10.254.0.14 pour voir les documents du raspberry.
SEANCE 5 :
On a refait fonctionner le programme bouton.py et essayé de le modifier de façon a ce qu'il fonctionne sans être connecté en ssh au raspberry mais ça n'a pas fonctionné. Il faudra qu'on le modifie de façon a ce qu'il soit un programme deamon. (qui tourne en permanence) Il faudra tout de même lancer le gps pour que ca fonctionne.
On voulait aller prendre des photos dehors pour voir si ça fonctionne mais à causedu problème qu'on a rencontré on le fera plus tard.
SEANCE 6 : (sans Célia)
On a installé screen sur le raspberry pour que le programme bouton.py continue de tourner sans être en réseau.
->screen -S nomdelasession (dans ce cas là "charlie")
->python bouton.py
->ctrl a puis d (pour se détacher de screen)
->exit (pour quitter le ssh)
->appuyer sur le bouton (2 tentatives)
-> se reconnecter en ssh sur le raspberry
->ls image/ (pour verifier que les photos ont bien été prises)
On a alimenté le raspberry avec une pile puis verfié que ça fonctionne toujours puis on a connecté screen comme pendant le test, on s'est détachés, puis on a retiré le ssh ensuite on s'est deconnectés du réseau.
Avec Paul on est partis prendre des photos dans le couloir du 3ème étage puis dans la cours mais la pile était vide donc ça n'a pas fonctionné. On va réessayer avec un panneau solaire.
Ca n'a pas fonctionné avec le panneau solaire. On essayera peut être de mettre des petites led pour voir quand on peut apuuyer sur le bouton ou pas.
SEANCE 7 :
recap :
lancer gps : sudo gpsd /dev/ttyAMA0 -F /var/run/gpsd.sock
cgps -s
lancer webcam (nouveau) : cd webcams/mjpg-streamer/
./start.sh &
ctrl C
pour sortir de la webcam : cd ..
cd ..
on ouvre le programme ProjetCamGPS.py avec la commande : python ProjetCamGPS.py &
le & sert a le laisser ouvert.
appuyer sur le bouton pour tester.
On a connecté une batterie avec panneau solaire, on va debrancher le réseau et tester de prendre des photos dehors.
Ca fonctionne. On va donc regarder comment fonctionne le programme ProjetCamGPS.py pour bien le connaitre et savoir l'expliquer. De plus nous allons tenter de créer un programme qui lance le gps, la camera et le programme ProjetCamGPS.py au demarrage du raspberry.
Commandes pour utiliser screen : https://doc.ubuntu-fr.org/screen
le point (Yves Dhenain)
Donc ok pour
- le gps (lancement du daemon et lecture
- la capture d'image (fswebcam)
J'ai ajouté un bouton poussoir sur le montage, objectif, appuyer sur le bouton :
- prendre une photo
- lire es données gps
- enregistrer les photos sur le disque dur
- dans un fichier enregistrer l'emplacement de l'image, les coordonnées gps (latitude, longitude, haltitude)
On pourra gérer le tout avec un TAD
la documentation pour l'usage du client gpsd https://gpsd.io/client-howto.html
Il y a plusieurs difficultés ici:
la mesure doit être accessible (antenne déployée ou pas .)
le programme doit pouvoir tourner en mode autonome (pas de commande manuelle , juste bouton)
il faut manager plusieurs actions indépendantes et les ordonner :
lire les mesures
prendre une photo
enregistrer l'ensemble
éventuellement indiquer à l'utilisateur ou on en est par un témoin lumineux.
D'où le choix logique du thread
https://fr.wikibooks.org/wiki/Programmation_Python/Les_threads
Pièces jointes
Catégories
- nos projets