Aller au contenu


FPI

Inscrit(e) (le) 10 déc. 2021
Déconnecté Dernière activité déc. 27 2021 02:37
-----

Messages que j'ai postés

Dans le sujet : Utiliser les informations du Lidar pour gérer les obstacles

27 décembre 2021 - 12:51

Bonjour,

Toujours sur mon sujet de "mapping" de l'environnement, j'essaie la méthode suivante.

Le principe est de "voir" l'ensemble des points détectés comme une image en N&B. 

Lorsque le robot se déplace (translation et rotation), la nouvelle "image" instantanée des obstacles a subit une transformation affine (celle du mouvement du robot).

Mais je n'ai pas de capteurs me permettant d'estimer cette transformation.

La librairie OpenCv fournit une fonction permettant de discerner si éventuellement une transformation affine existe entre deux images (est-ce que c'est la même image mais avec une transformation affine). Elle retourne alors les éléments de la matrice de transformation.

Mon raisonnement est décrit dans l'image jointe.

La fonction calcule bien des coefficients (ce qui est encourageant car il y a surement certains points en plus et en moins sur les deux captures consécutives).

Mais le résultat n'est pas une carte statique, plutôt la carte en rotation ... J'ai peut-être bogué sur mon implémentation NodeJs, mais est-ce que de prime abord, mon raisonnement vous semble louche ?

Cordialement.

 


Dans le sujet : Utiliser les informations du Lidar pour gérer les obstacles

19 décembre 2021 - 03:09

Bonjour,

Je vais essayer de te fournir de quoi faire, mais il faudra que tu te penches un peu sur le code.

Je ne sais pas ce que tu connais en programmation, donc j'espère ne pas t'offenser avec des évidences si tu connais déjà la suite ...

 

1) je te fourni un ensemble de sources en html/js que j'ai en partie écrit (vite fait) pour des ballades avec des amis. Le but était de décrire des points d'intérêt (POI) sur une carte, sans la complexité de Google Map.

On choisit le type de carte, on clique pour ajouter des POI, on peut les commenter (clic droit) et les supprimer, et sauvegarder l'ensemble dans un fichier que l'on peut recharger.

J'ai juste ajouter pour toi le "tracé" d'un polygone reliant les POI.

Le principe des données manipulée est toujours le format JSON. Le contenu du fichier est chargé comme une chaine, la fonction JSON.parse le convertit en une structure json. On le sauvegarde en convertissant le json en chaine avec la fonction JSON.stringify.

Il te faudra donc que ton tableau de structure soit plutôt au format JSON. Si tu ne connais pas, c'est vraiment simple à faire :

- accolade-ouvrante,

- mot-clé, deux-point,

--> soit valeur-chaine (entre double quote), soit numérique telle-quelle,

--> soit une sous-structure (accolade, etc...), soit un tableau ( crochet ouvrant, valeur, virgule, valeur... crocher-fermant)

--> soit un tableau

- accolade-fermante.

 

2) Pour utiliser le tout, il faut :

- dezipper MapWalker dans un répertoire

- lancer le mini serveur http depuis une fenêtre console et contenu dans ce même répertoire (maintSmallHttpServer.cmd , qui lance lui-même miniweb.exe avec les bons paramètres)

- lancer ensuite, depuis chrome, "http://127.0.0.1:8000/MapWalker.html"(en 127.0.0.1 puisque le serveur web vient d'être lancé sur ta machine).

- tu peux tester l'outil en chargeant le fichier "MapWalker\MapWalker-2021-12-19 11_06_24.json" donné en exemple.

 

Ensuite, à toi d'adapter le code pour tes propres données.

- la fonction "processLoadParcoursFile()",

- elle même appelant MWParcours.loadFromData pour ajouter tous les points à l'objet parcours

- qui lui-meme crée des MWPoint "accroché à la carte (this.marker = L.marker( this.pos, ... ).addTo( this.mapView)

 

Si tu ne sais pas comment debugger du js :

- tu modifies le code avec un éditeur de texte quelconque. 

- sous chrome, tu appuie sur F12 pour afficher le debugger

- tu sélectionne l'onglet "Sources" pour choisir le fichier à inspecter (le html principal ou un sous-module en .js)

- tu accède au fichier, 

- tu pose un point d'arrêt en cliquant à gauche du n° de ligne

- tu recharges la page avec F5

- tu avance pas-à-pas avec F0, tu entres dans une fonction avec F11

- tu poursuis l'exécution avec F8.

 

Ce code est utilisable pour analyser tes données.

Tu pourrais utiliser quasiment le même si tu étais connecté en Websocket à ton robot, et que celui-ci t'envoyais en temps-réel les nouveaux points découvert.

 

NB : Pour indication, le mini serveur web est : MiniWeb (build 300, built on Feb 28 2013) ©2005-2013 Written by Stanley Huang <stanleyhuangyc@gmail.com>

 

J'espère ne pas avoir été trop à côté de la plaque.

 

Bonsoir.


Dans le sujet : superviser l'énergie de sa batterie

18 décembre 2021 - 03:19

Merci beaucoup pour ce conseil précis.

J'ai trouvé le "M5Stack : Voltmètre – mesure de tension ~36V (ADS1115), Grove", 

Il me semble bien adapté à mes deux batteries en série (avoir 24V sur les moteurs pour diminuer le courant par 2).

Sachant que la carte Saberbooth peut délivrer 32 A aux moteurs, je vais éviter la mesure du courant pour l'instant ;)

 


Dans le sujet : Utiliser les informations du Lidar pour gérer les obstacles

17 décembre 2021 - 04:14

En ce qui concerne le SLAM, autant j'imagine bien utiliser les angle/distance pour construire une vue à un instant donné, autant je ne comprend pas comment prendre en compte le déplacement du robot une itération plus tard lorsqu'il se déplace.

Car en intérieur, sauf d'utiliser des balises et de la triangulation (je sais qu'il y a des travaux avec du bluetooth, mais si vous utilisez d'autres techniques, ça m'intéresse), soit d'utiliser des Odomètres très précis, comment savez-vous où vous étiez, et où vous êtes ?

A moins de chercher d'abord le "contact" avec  un obstacle significatif et bien statique, et d'évoluer par rapport à lui...


Dans le sujet : Utiliser les informations du Lidar pour gérer les obstacles

17 décembre 2021 - 04:09

Très intéressant, malgré que je peine un peu.

 

Est-ce que vous pouvez m'éclairer concernant deux questions ?

 

Comment créer une grille ?

Comment la dessiner ? Sur écran du PC après ou sur un écran LCD.

Et plus tard comment la superposer sur une map Google ou autres ?

 

Salutations

 

Sauf si je n'ai pas compris la question, je dirais qu'il y a plusieurs aspects:

- le coeur du logiciel gère une matrice à deux dimensions (x,y), avec une résolution au cm, dm, m... et à chaque détection on remplit les cases.

- si on a une interface http pour afficher des pages et dialoguer avec le coeur, on peut intégrer un objet "canvas", et dessiner des points, des traits, du texte, pivoter, translater, etc... Le coeur transmet en T.R. soit l'intégralité de la matrice, soit des mises-à-jour avec la cellule modifiée (coordonnées, contenu).

- si on veut visualiser sur une carte, on peut intégrer une carte OpenStreetMap, et y ajouter des marqueurs, des formes, du texte... Mais il faut convertir les coordonnées X,Y en latitude/longitude. Mais cela suppose par exemple que le PC soit connecté sur le hotspot wifi du coeur pour échanger les données, et connecté en USB sur un smartphone pour recevoir les "tuiles" des cartes OpenStreetMap.