Voici un exemple de création d’une carte avec le robot MRPiZ en utilisant le capteur de distance laser VL53L0X :
Le programme python de la création d’une carte :
- Le robot tourne à 360° et lit le capteur de distance,
- Enregistrement de l’orientation du robot et de la distance du capteur dans un fichier csv.
from mrpiZ_lib import * import time, csv NameFile = 'carte.csv' def read_laser(): p3_1 = proxSensor(3) p3_2 = proxSensor(3) p3_3 = proxSensor(3) p3_4 = proxSensor(3) p3_5 = proxSensor(3) p3 = (p3_1 + p3_2 + p3_3 + p3_4 + p3_5)/5 return p3 ############################################# MAIN # wait init time.sleep(2) Fichier = open(NameFile,'w') Robot_tourne = 0 # enable asv control controlEnable() while 1: # read laser distance sensor distance = read_laser() # read robot orientation orientation = robotPositionO() # write in file Fichier.write(str(distance)) Fichier.write(";") Fichier.write(str(orientation)) Fichier.write("\r\n")# nouvelle ligne if(Robot_tourne == 0): turnLeftDegree(8,360) Robot_tourne = 1 Fichier.close() exit()
Le programme de lecture et d’affichage de la carte :
import numpy as np
import math
import matplotlib.pyplot as plt
import numpy as np
import csv
liste_distance = []
liste_orientation = []
fichier = open("carte.csv", "r")
c = 0
# lecture fichier
while True:
  ligne = fichier.readline()
  if ligne =='':
    break # fin fichier
  # lecture de la distance (capteur distance)
  distance = ligne.split(';')[0]
  # lecture orientation
  orientation = ligne.split(';')[1]
  # correction de la distance par rapport au centre du robot et la position du capteur
  distance = float(distance) + 50
  # conversion en radian
  if float(orientation) > 0:
    orientation = (float(orientation)*3.14)/180
  liste_distance.append(float(distance))
  liste_orientation.append(float(orientation))
  c = c + 1
ax = plt.subplot(111, projection='polar')
ax.plot(liste_orientation, liste_distance)
ax.grid(True)
plt.show()
Exemple d’affichage :

