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 :