Projet en langage C - Life On Mars Consignes de travail Compte

Transcription

Projet en langage C - Life On Mars Consignes de travail Compte
Projet en langage C - Life On Mars
Dept GEII
II1
Année universitaire 2012-2013
J. VILLEMEJANE - [email protected]
Consignes de travail
Le projet, proposé dans ce document, permet de valider vos acquis dans le module II1 à travers le développement d’une application en langage C. Ce projet peut être réalisé en petit groupe (2 à 3 étudiants maximum)
ou individuellement. Chaque groupe d’étudiants devra rendre impérativement :
– un compte-rendu (manuscrit ou dactylographié) ;
– le code source du programme ;
– l’exécutable du programme.
La remise des projets devra se faire avant le 14 janvier 2013 - 14h. Chaque enseignant est libre de choisir
sa méthode : main à main, par mail...
Tout compte-rendu parvenant après la date limite ne sera pas accepté et la note de 00/20 sera appliquée.
Ne pas oublier d’ajouter vos noms et vos groupes sur tous les fichiers que vous fournirez.
Compte-rendu
Chaque groupe d’étudiants devra fournir un compte-rendu de son travail, en plus du code et de l’exécutable.
Cette étape est essentielle et vous sera aussi demander dans votre vie active par votre chef de projet. En effet, les
clients vous fournissent un cahier des charges (comme celui fourni par ce document). En échange, ils attendent
d’obtenir un programme fonctionnel et bien documenté pour pouvoir l’utiliser ou/et le modifier ultérieurement.
Pour cela, ils ont donc besoin d’avoir un code source très commenté mais aussi une documentation du
travail qui a été réalisé par le programmeur et quels algorithmes ont été utilisés pour venir à bout du travail
demandé.
Classiquement, on retrouve dans un document, scientifique ou technique, les quatre éléments suivants :
la problématique, la méthodologie, les résultats et la discussion. L’introduction et la conclusion doivent bien
entendu aussi être de la partie.
Problématique : reformulation du problème posé par les clients. Elle permet de situer le projet dans son
contexte, de spécifier les objectifs attendus, d’en décrire l’intérêt et de formuler explicitement les principales
difficultés qu’on doit surmonter.
Méthodologie : état des moyens mis en oeuvre pour apporter une solution au problème. C’est à ce point
qu’on décrit sa vision du travail de réalisation : la détermination des étapes à suivre, la justification du choix
des outils et des méthodes susceptibles de faire progresser vers une solution faisable. Il s’agira ici de présenter
les algorithmes mis en place pour répondre au problème posé. Vous pourrez aussi présenter la façon dont vous
vous êtes répartis les tâches au sein de votre groupe de travail.
Résultats : liste des éléments du cahier des charges qui ont été effectivement développés et qui ne posent
pas de problème. Ensuite, il ne faudra pas omettre de passer également en revue les points qui n’ont pas été
traités et argumenter leurs non-réalisations.
Discussion : commentaire global sur les travaux qui ont été effectués. Une bonne discussion réside dans
l’analyse et la critique des méthodes exploitées et des résultats obtenus et non obtenus par rapport au problème
posé. À ce stade, on met en évidence la portée du travail et on exprime des recommandations susceptibles
d’orienter la poursuite ultérieure du projet.
Ce plan pourra être réutilisé chaque fois que vous aurez à faire un rapport de votre travail : pour votre stage
(à court terme) et dans votre vie de technicien ou d’ingénieur (à moyen et long terme).
IUT Créteil - GEII - II1
Projet en langage C - Life On Mars
Description du projet - Life On Mars
La NASA vous a embauché pour mettre au point le programme embarqué sur son robot Curiosity 2, qui
doit partir à bord d’Atlas VI, en direction de la planète Mars, le 14 janvier 2013 à 14h.
La mission principale de ce robot est de sonder le sol et l’air de la planète rouge, pour y détecter toute
trace de vie, et donc d’eau ! Pour des raisons techniques, la mission durera 3 jours et le robot devra parcourir
un maximum de distance durant cette période, pour pouvoir emmagasiner le maximum de données possibles
tout au long de son parcours.
Des relevés de pressions atmosphériques, de température et d’humidité devront être effectués à intervalle
de distance régulier (20 m). Les coordonnées GPS du robot devront également être sauvegardées. L’ensemble
des ces informations devront être stockées dans un fichier au format suivant :
temps:distance:coordX:coordY:humidite:temperature:pression:
Le robot
Les informations relatives au robot sont stockées dans une structure de données nommée curiosity2 :
– char nom[32] : le nom du robot ;
– float coordX : coordonnée GPS en X, en km ;
– float coordY : coordonnée GPS en Y, en km ;
– int temps : temps de parcours depuis le lancement, en s ;
– float distance : distance parcourue depuis le lancement, en km ;
– char batterie : etat de la batterie, entre 0 et 100%.
Il est équipé de plusieurs capteurs (pression, température, humidité) dont les données seront renvoyées
par l’intermédiaire d’une structure de données également, du type data :
– int humidite : humidité relevée, entre 0 et 100% ;
– float temperature : température relevée en ˚C ;
– int pression : pression relevée en Pascal.
Il est enfin équipé d’une batterie qui peut être rechargée à l’aide de panneaux solaires. Ces derniers peuvent
se déployer ou se replier à la demande. Le robot peut continuer d’avancer si jamais les panneaux sont déployés,
mais il perd en vitesse. La batterie ne doit jamais descendre en dessous de 2% de charge, sinon la mission est
considérée comme un échec.
Bibliothèque du robot
Pour pouvoir écrire votre programme plus facilement et tester les différentes étapes du projet avant la
mission réelle, la NASA vous fournit un ensemble de fonctions permettant de simuler le fonctionnement du
robot réel et ainsi controler les différentes actions disponibles sur le robot :
– avancer
– relever les données
– déployer, replier ses panneaux solaires
– se recharger
Chacune de ces actions consomme de l’énergie sur la batterie et prend un certain temps pour être exécutée
par le robot réel. Ces informations sont données dans la description des fonctions.
L’ensemble des fonctions disponibles dans la bibliothèque robot.h sont présentées en annexe.
ATTENTION ! ! La bibliothèque robot.h et le fichier robot.c ne doivent pas etre modifiés ! !
–2–
IUT Créteil - GEII - II1
Projet en langage C - Life On Mars
Travail demandé
C’est à vous que l’on confie la lourde tache de réaliser le programme de la mission et d’en exécuter
des simulations afin d’optimiser la récolte des informations. L’ensemble du programme sera réalisé en mode
console.
Etape 1 : Compréhension du système
Dans un premier temps, vous devrez mettre en place la base de l’application :
– création de la fonction principale ;
– utilisation de la librairie fournie :
– test des différentes fonctions (panneaux solaires, recolte de données...) ;
– affichage des données collectées ;
– affichage des informations du robot.
Etape 2 : Programme de la mission principale / Collecte des données
Maintenant que les fonctions de base sont maitrisées, vous devez vous intéresser au programme principal
de la mission : collecter à intervalle régulier (tous les 20 m) des données et les stocker dans un fichier. Le but
est de récupérer le maximum d’informations lors de la mission qui durera 3 jours.
Attention à la gestion de la batterie ! ! Si son niveau devient inférieur à 2%, la mission devra être abandonnée et vous serez responsable de la perte de millions de dollars...
Etape 3 : Récupération des données / Calcul sur les données
On souhaite également pouvoir travailler sur les données stockées par le robot à la fin de la mission :
recherche du minimum, du maximum et de la moyenne de toutes les données recuillies. On veut également
connaitre l’emplacement du point maximum d’humidité afin d’approfondir les recherches dans ce secteur là
dans les prochaines missions du robot.
Pour cela, vous mettrez en place un menu permettant de sélectionner l’une des trois grandeurs puis d’afficher l’ensemble des résultats des calculs mentionnés précédemment.
Les données recueillies pourront aussi être représentées à l’aide d’un tableur et fournies dans le compterendu (rubrique résultats).
Etape 4 : Point d’humidité maximale
A la fin de la première partie de la mission, la NASA a décidé de faire revenir le robot aux coordonnées du
point d’humidité maximale afin de scanner plus précisément le sol de la planète rouge aux alentours de cette
zone. Des données devront être recueillies tous les 2 m, mais cette fois-ci en quadrillant la zone par une matrice
de N x N relevés.
Pour cela, une fonction supplémentaire a été ajoutée sur le robot : int avancerXY(int x, int y).
Le relevé de ces nouvelles valeurs ne devra pas excéder plus de 2 jours. Le temps de retour sur la zone ne
sera pas pris en compte dans ce délai. Mais le niveau de batterie devra toujours être surveillé !
Ces nouveaux relevés seront stockés dans un nouveau fichier texte, sous le même format que précédemment
et devront également être analysés. La méthode utilisée pour déterminer N devra être décrite dans votre compterendu.
–3–
IUT Créteil - GEII - II1
Projet en langage C - Life On Mars
Etape BONUS : Optimisation de la mission / Recharge de la batterie
Le role des scientifiques de la NASA est d’optimiser au mieux le parcours de leur robot afin qu’il puisse
parcourir la plus grande distance possible lors de la mission. Plusieurs paramètres peuvent entrer en compte,
mais le plus crucial est la gestion de la recharge de la batterie.
Deux types de recharge sont possibles :
– lorsque la batterie atteint un seuil critique S_MIN et doit absolument être rechargée ;
– lorsque la luminosité est supérieure à 50 % (meilleure rapidité de recharge) et la batterie atteint un seuil
moins critique S_LIGHT.
Pour cela, on vous demande de fixer les niveaux de batterie optimaux (S_MIN et S_LIGHT) qui seront
implémentés dans le robot.
La méthode utilisée pour ces tests et les résultats obtenus devront être précisés et analysés dans le compterendu.
Un second programme pourra être développé pour cette étape, afin de ne pas perdre celui de l’étape 3.
Séances de travail
Ce projet s’étend sur 4 séances complètes de 4h, durant lesquelles vous serez en petit groupe devant vos
machines. L’efficacité et la rapidité devront être de mise.
Pour gagner en temps, certaines notions seront abordées au cours des séances de TD qui précéderont les TP.
Il vous sera également demandé de prendre connaissance du travail à réaliser avant la première séance.
Votre participation au cours des séances sera partie intégrante de la notation.
Il vous est conseillé de faire plusieurs sauvegardes de vos fichiers : chez vous et sur clef usb.
Notation
Le barème proposé est le suivant :
– Remise du projet : 9 points
– Compte-rendu : 4 Points (avec respect des consignes sur la rédaction donnée dans le sujet) ;
– Code Source : 3 Points (Commentaires, Indentation, Lisibilité,....) ;
– Exécutable : 2 Points (Présentation, Organisation de l’interface, exécution....).
– Réalisation du travail : 10 Points
– Etape 1 sur 1 point,
– Etape 2 sur 3 points,
– Etape 3 sur 3 points,
– Etape 4 sur 3 points.
– Participation en séance, Esprit de groupe : 2 Points
Fichiers de base
Un projet initial, incluant un fichier main.c, la bibliothèque robot.h et le fichier robot.c, est disponible
sur le site http ://cours.villemejane.net/ - rubrique DUT GEII / Semestre 1 / II1 / II1 - Projet.
L’archive Projet2012.zip contient un projet pour CodeBlocks et un projet pour PellesC, selon l’interface
de développement que vous utilisez en TD/TP.
–4–
IUT Créteil - GEII - II1
Projet en langage C - Life On Mars
robot.h
– void initialisationRobot(void) : initialise les données du robot lors de son lancement ;
– int avancer(void) : permet de faire avancer le robot de 20 m à chaque fois.
– Panneaux repliés : 37 s / 3 %
– Panneaux déployés : 45 s / 2 %
– int avancerXY(int x, int y) : permet de faire avancer le robot selon le vecteur de coordonnées (x,y) (où
x et y sont donnés en mètre). A utiliser uniquement dans l’étape 4 !
– Panneaux repliés : 2 s/m / 0.16 %/m
– Panneaux déployés : 3 s/m / 0.1 %/m
– float testBatterie(void) : renvoie l’état de la batterie (entre 0 et 100) ;
– int deployerPanneau(void) : deploye les panneaux solaires du robot.
– 26 s / 2 %
– int replierPanneau(void) : replie les panneaux solaires du robot.
– 18 s / 1 %
– int rechargerBatterie(void) : recharge la batterie à 100 %.
– si luminosité < 50 % :
– Temps de charge : 43 s si batterie < 40 % puis 38 s lorsque batterie > 40 %
– si luminosité > 50 % :
– Temps de charge : 31 s si batterie < 40 % puis 28 s lorsque batterie > 40 %
– int releverLuminosite(void) : renvoie la valeur de la luminosité entre 0 et 100 %
– data releverDonnees(void) : renvoie le relevé d’une donnée.
– Panneaux repliés : 60 s / 1 %
– Panneaux déployés : 50 s / 0 %
–5–

Documents pareils