From MRPi1

MRPi1 robot navigation “cleaning algorithm”

Le programme :

from mrpi1_lib import *
import time

obs_limit = 600


# main program
state = 1

while 1:
 x1 = proxSensor(3)
 x2 = proxSensor(4)

 if(( x1 > obs_limit)and( x2 > obs_limit)and(state == 1)):
   x1 = 0
   x2 = 0
   stop()
   time.sleep(1)
   state = 2
   controlEnable()
   turnRight_degree(10,90)
   forward_mm(10, 100)
   turnRight_degree(10,90)
 if(( x1 > obs_limit)and( x2 > obs_limit)and(state == 2)):
   x1 = 0
   x2 = 0
   stop()
   time.sleep(1)
   state = 2
   controlEnable()
   turnLeft_degree(10,90)
   forward_mm(10, 100)
   turnLeft_degree(10,90)
   state = 1
 else:
  forward(20)

Mise à jour du robot MRPi1

Une mise à jour pour le robot MRPi1 est disponible sur GitHub :

https://github.com/macerobotics/MRPi1

  • Pour mettre à jour le Firmware (version : 0.92) du robot MRPi1 :

Mise à jour firmware du microcontrôleur

  • Ensuite, mise à jour de la librairie Python  :

Puis transférer ces fichiers sur le robot avec FileZilla, puis installation  la librairie :

>> cd /home/pi/Desktop/MR_Projects/
>> sudo python setup.py install

Les nouvelles fonctions disponibles :

  • Lecture de la position du robot :
    • robotPositionX()
    • robotPositionY()

Retourne une valeur en millimètre.

De plus, le déplacement du robot à été améliorer avec les fonctions : forward(), back(), turnLeft(), turnRight().

Pour vérifier la version du  firmware avec Python :

>> firmwareVersion()
0.92

Programmer le robot MRPi1 en langage C

Dans ce tutorial vous allez apprendre à programmer le robot MRPi1 en langage C.

Télécharger la librairie C

  • Télécharger la librairie C sur Github :

https://github.com/macerobotics/MRPi1/tree/master/Software/C

Transférer les fichiers avec FileZilla.

  • Placez le fichier MRPi1.h dans le dossier header :
cd /home/pi/Descktop/MR_Projects/C/header
  • Placez le fichier MRPi1.c dans le dossier sources:
cd /home/pi/Descktop/MR_Projects/C/sources

Hello MRPi1

Voici un petit programme ‘main.c‘ :

#include "MRPi1.h"

int main(int argc, char* argv[])
{
  // initialisation du robot MRPi1
  init();
  printf("Hello MRPi1\n");

  // Allumer les leds du robot MRPi1
  led(1,1);
  led(2,1);
  led(3,1);
  
}
  • Placez ce fichier main.c dans le répertoire sources
  • Compilation :
>> cd /home/pi/Desktop/MR_Projects/C
>> gcc sources/*.c -I header -o Hello_MRPi1
  • Exécution :
>> ./Hello_MRPi1

Les 3 leds du robot MRPi1 doivent s’allumer.

Gestion des déplacements

Voici un exemple de programme pour gérer les déplacements du robot MRPi1.

#include "MRPi1.h"

int main(int argc, char* argv[])
{
  // Initialisation du robot MRPi1
  init(); 

  // avancer avec une vitesse de 10% sur une distance de 150 mm
  forward_mm(10, 150);

  // pause de 2 secondes
  sleep(2);

  // tourner a droite
  turnRight(30);

  // pause de 4 secondes
  sleep(4);

  // arret du robot
  stop();
  
}

Ce petit programme permet :

  • de faire avancer le robot MRPi1 pendant 2 secondes
  • de tourner à droite pendant 4 secondes
  • puis de s’arrêter.

Lien pour l’API C

Connecter MRPi1 à Internet

Dans ce tutorial vous allez apprendre à connecter le robot MRPi1 à Internet. Par défaut le robot MRPi1 est configuré en point d’accès, une configuration pour se connecter à votre réseau est donc nécessaire.

img7_tuto

Fichier interfaces

  • Ouvrir le fichier interfaces avec l’éditeur nano :
$ sudo nano /etc/network/interfaces 

img1_tuto

Modifier ce fichier pour qu’il ressemble à ceci :

  • Avec votre SSID et mot de passe de votre réseau.

img2_tuto

  • Enregistrer le fichier puis quitter :
    • ctrl + X
    • Y

Arrêt du daemon hostapd

  • Ouvrir le fichier hostapd avec l’éditeur nano :
sudo nano /etc/default/hostapd 

img3_tuto

  • Mettez en commentaire cette ligne  :

img4_tuto

La ligne devient donc :

img5_tuto

  • Enregistrer le fichier puis quitter.

Modification du fichier rc.local

  • Ouvrir le fichier hostapd avec l’éditeur nano :
sudo nano /etc/rc.local
  • Placer en commentaire les deux lignes suivantes :
ifconfig wlan0 192.168.42.1
 etc/init.d/isc-dhcp-server start

Le fichier devient donc :

img6_tuto

  • Enregistrer le fichier puis quitter.

Maintenant, vous pouvez redémarrer le système pour la prise en compte des modifications :

sudo reboot

Voilà, votre robot peut se connecter à votre box internet. Une adresse IP va lui être affecter automatiquement. Pour connaitre cette adresse pour pouvez utiliser le logiciel Advanced IP Scanner.

Détection des chocs avec le robot MRPi1

Le robot MRPi1 est équipé d’un accéléromètre 3 axes permettant de détecter les chocs.

Voici une petite vidéo :

Ce programme lit les 3 axes de l’accéléromètre et suivant un seuil d’accélération de 0.1 g une led est allumé ou éteinte.

  • led n°1 : axe X
  • led n°2 : axe Y
  • led n°3 : axe Z

Le programme python :

from mrpi1_lib import *
import time

while 1:

  axeX = acceleroX();
  axeY = acceleroY();
  axeZ = acceleroZ();

  time.sleep(0.01)

  if(axeX > 0.1):
    led(1,1)
  else:
    led(1,0)   

  if(axeY > 0.1):
    led(2,1)
  else:
    led(2,0) 

  if(axeZ > 0.1):
    led(3,1)
  else:
    led(3,0)