1- La commande du robot 2- Les algorithmes implémentés au robot

publicité
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
Téléchargement