Programmation

Objectifs

La programmation du robot implique la réalisation des objectifs suivants:

 

Potentiels et contraintes

Les potentiels et contraintes dans la réalisation de ces objectifs s'énoncent comme suit:

 

Solution

La solution développée capitalise sur les points suivants:

Elle se décrit en 6 points.

1. Adoption d'une stratégie "Maître-esclave"

L'ordinateur prend l'initiative de contrôler la communication. Le robot attend d'être interrogé par l'ordinateur, pour en connaître l'état à tout instant et lui transmettre les ordres à exécuter.

2. Fonction avance()

Elle permet d’avancer et de reculer en ligne droite selon une vitesse et une distance. La vitesse du robot est constante et la fonction reçoit un paramètre de distance en centimètre (± 0 à 100). On obtient une précision de quelques centimètres pers. Si un des senseurs du robot est activé (collision avec un objet), le robot s’arrête et attend la prochaine commande.

3. Fonction tourne()

Elle permet de tourner sur place dans le sens horaire et anti-horaire selon le paramètre qu’elle reçoit, soit ± 0 à 360 degrés. On obtient une précision raisonnable.

4. Fonction electroaimant()

Elle reçoit « 1 » en paramètre pour activer l’électroaimant, et « 0 » pour désactiver. Cette fonction utilise le port D du robot. Elle a été développée avec les responsables de l’électrotechnique.

5. Protocole de communication

6. Communication série

Une classe en C++ GeoRobotCom a été développée et testée avec succès pour permettre la communication par le port série de l’ordinateur. Cette classe utilise les MFC et interface la classe CSerialPort. Elle contient seulement la fonction Commande(), qui prend en paramètre la commande à envoyer au robot, attend et retourne la réponse du robot.

 

Évaluation de la solution

Atteinte de l'objectif

L’objectif de départ a été atteint. Nous avons développé un programme pour le robot qui répond à toutes nos attentes de base. Un interface logicielle pour la communication série sur l’ordinateur a été conçu et testé et est fonctionnel pour le projet.

Principales faiblesses

Le robot ne s’arrête pas de lui même s’il rencontre un obstacle. Il ne peut savoir de lui même si les piles doivent être rechargé :il le fait sur commande de l’ordinateur. Pour ce faire, il aurait fallut développer les fonctions de façon « multithread ». Malheureusement le temps manquait pour réaliser cette fonctionnalité, qui aurait été intéressante, et pas trop difficile à implanter.

Délais de traitement

Le programme du robot s’exécute avec une assez grande rapidité. En fait, il ne s’exécute pas à sa pleine vitesse, car il attend les commandes résultant de la partie logicielle d’acquisition d’image qui est plus lente que la partie du robot.

Robustesse

Le programme du robot pourrait être plus robuste. Quand il reçoit des informations du port série alors qu’il ne s’y attends pas, il peut arriver que le programme devienne hors fonction, et que l’on doivent recharger le « pcode ».

Quantité de code

Améliorations possibles