Visualisation des données Lidar

Bonjour, J’ai fait un montage avec Arduino et un capteur LIDAR-Lite v3. Ceci est destiné à tracer une image en 3D de l’environnement dudit capteur. Les données mises en forme sont transmises par le port série…Malheureusement je ne sais pas comment visualiser ces données sur l’écran de mon PC…

Pourriez-vous, dans la mesure de votre possible de m’aiguiller sur des pistes, ou connaitriez-vous un logiciel qui permette la visualisation en temps réel du scanning du Lidar ?

Merci et bonne journée

votre LIDAR-Lite v3 retourne juste une distance, comment obtenez vous une image 3D ? (il est monté sur deux axes ? combien de points prenez vous sur la "sphère" ?)

sinon pour votre question, vous pouvez émettre les infos vers Python (cf Usage de Python3 pour une communication avec un Arduino) et utiliser les bibliothèques de visualisation de python pour faire ce que vous voulez

Merci pour votre réponse. Chaque point mesuré possède, sa distance et ses deux coordonnées polaires. Je vais regarder ce que me propose le langage Python. Bonne soirée

C’est possible de faire de la 3D avec matplotlib par exemple

merci!

un exemple

imaginons que vous fassiez un scan sur 360° (de 0° à 359°) par pas de 5° sur le plan horizontal (azimuth) et pour chaque pas vous prenez des mesures de distances tous les 5° entre 0° et 90° (élévation) et que vous envoyez cette mesure sur le port série

le code python de l'autre côté écoute le port série (cf mon tuto) et remplit petit à petit sa représentation de l'espace

une fois tout reçu vous créez le nuage de point et vous l'affichez

voici un exemple de code avec génération des distances de manière aléatoire

#!/usr/bin/env python3

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import random
import numpy as np

# listes pour stocker les données
x = []
y = []
z = []
distances = []

# on reçoit les distance sur le port série dans l'ordre
for angle_horizontal in range(0, 360, 5):  # De 0° à 359° par pas de 5
    for angle_vertical in range(0, 91, 5):  # De 0° à 90° par pas de 5
        distance = random.uniform(2, 5)  # ici normalement on reçoit la donnée sur le port série, là on simule avec une valeur aléatoire
        # on construit le nuage de points
        angle_horizontal_rad = np.radians(angle_horizontal)
        angle_vertical_rad = np.radians(angle_vertical)
        x.append(distance * np.cos(angle_horizontal_rad) * np.sin(angle_vertical_rad))
        y.append(distance * np.sin(angle_horizontal_rad) * np.sin(angle_vertical_rad))
        z.append(distance * np.cos(angle_vertical_rad))
        # pour la représentation en couleurs
        distances.append(distance)

# Créer une figure 3D et Afficher le nuage de points
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
scatter = ax.scatter(x, y, z, c=distances, cmap='viridis', marker='o')

# Configurer la vue de la caméra (Vue en plongée à 90 degrés, initialement orientée vers le "nord")
ax.view_init(elev=90, azim=0)

# Définir les étiquettes des axes
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')

# Ajouter une barre de couleur
cbar = plt.colorbar(scatter)
cbar.set_label('Distance (m)')

# Afficher le graphique
plt.show()

(il faudra sans doute faire un pip install matplotlib et pip install numpy si vous ne les avez pas)

Un grand merci, vous êtes vraiment un KING!
Bon week-end et belles pensées

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.