Plan 1- La commande du robot 2- Les algorithmes implémentés au robot 2.1 – Algorithme1 : calcul de l’angle et de la distance d’erreur 2.2 - Algorithme2 : utilisation du repère de Frenet 3- Comment utiliser et envoyer ces algorithmes au robot ? 3.1- La connexion par wifi au robot en mode ad-hoc 3.2- La Compilation des algorithmes en utilisant le cross-compiler 1- La commande du robot Pour commander le robot, nous disposons d’un buffer de 2 octets : - un octet pour les roues gauches, buffso_rcv [0]; //Commande de la partie gauche du robot - un octet pour les roues droites. buffso_rcv [1]; //Commande de la partie droite du robot Figure 1 : buffer de commande du robot On peut en déduire que pour contrôler le robot on a : Bit7 : Permet d’activer le PID des roues. Bit6 : sens des roues (`1’ : avance,`0’ : arrière ). Bit5 à Bit0 : vitesse des roues (0 à 60 : en mode libre, 0 à 40 : en mode PID) On active le mode PID pour le contrôle de la vitesse pendant le trajet, donc on met 1 dans le bit7. On observe que quand la vitesse des roues passe à plus de 10tick/41ms et quand elles roulent d’arrière en avant et vise versa, le robot se plante. 2 - Les algorithmes implémentés au robot Pour commander le robot on a implanté deux algorithmes: 2.1 Algorithme 1 : calculer l’angle et la distance d’erreur Calculer l’équation de la droite en utilisant la méthode du moindre carrée. Détecter le sens de rotation du robot (gauche, droite) Calculer l’angle θr qui est l’angle entre la droite d et l’axe X. Calculer θe et D, tel que θe =90- θr et D la distance entre or et P. On calcule la commande suivante : C= A*θe + B*D ; où A et B est de valeur empirique on les a choisi pendant l’essai pour stabiliser le mouvement du robot, afin de lui permettre de suivre la ligne blanche. Si la valeur C est supérieure à 10, le virage effectué par le robot est grand donc la vitesse de l’une de deux roues est plus importante que l’autre et le sens de rotation des deux roues est opposé. Si la valeur C est inferieure à 10, le virage effectué par le robot est petit donc la vitesse de l’une de deux roues est plus importante que l’autre. Si la valeur C est égale à 0, le robot avance tout droit donc la vitesse des deux roues est égale. Envoyer la commande aux 2 roues. 2.2 Algorithme 2 : Utilisation de la méthode de Frenet Calculer l’équation de la droite en utilisant la méthode du moindre carrée. Détecter le sens de rotation du robot (gauche, droite) Calculer l’angle θr qui est l’angle entre la droite d et l’axe X. Calculer θe et D, tel que θe =90- θr et d la distance minimum entre P et la droite D. La loi de commande a trouvé est : Choisir une vitesse linéaire constante de robot (V) Calculer φd et φg φg = (V-L*w)/r r : est le rayon du chaque roue φd = (V+L*w)/r Choisir k(d, θe) en empirique pour stabiliser le mouvement du robot et suivre la ligne blanche. 3-Comment utiliser et envoyer ces algorithmes au robot ? 3.1- La connexion par wifi au robot en mode ad-hoc Changer la configuration de l’ordinateur : Changer le fichier etc/network/interfaces Ouvrir le fichier par la commande suivante : Copier les donnes suivantes dans le fichier interfaces et on le sauvegarde: auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.0.4 netmask 255.255.255.0 network 192.168.3.0 broadcast 192.168.0.255 auto eth1 iface eth1 inet static wireless-mode ad-hoc wireless-channel 4 wireless-essid wifibot address 192.168.1.112 netmask 255.255.255.0 gateway 192.168.1.113 Configuration de la partie Ethernet Configuration de la partie Wifi et en l’activant en mode ad-hoc Ecrire les lignes suivantes dans le terminal : sudo /etc/init.d/networking restart sudo /etc/dbus-1/event.d/25NetworkManager stop Se connecter par wifi au robot par la commande : ssh [email protected] (xxx=110 ou 111) Pour revenir à la configuration initiale de l'ordinateur : Changer le fichier interfaces et on copie les lignes suivantes et on le sauvegarde: auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.0.4 netmask 255.255.255.0 network 192.168.3.0 broadcast 192.168.0.255 Ecrire les lignes suivantes : sudo /etc/init.d/networking restart sudo /etc/dbus-1/event.d/25NetworkManager start 3.2- La Compilation des algorithmes en utilisant le cross-compiler Ouvrir un terminal. Entrer dans le dossier algorithme. Compiler avec la commande : mipsel-linux-gcc -o algorithme processus.c -ljpeg – thread - Envoyer l'exécutable suivi dans le robot par la commande: scp algorithme root@adresse_ip_robot:/... Ouvrir un deuxième terminal Se connecter au robot par la commande: ssh root@adresse_ip_robot Le mot de passe est wifibot Exécuter le programme algorithme par la commande: ./algorithme