当前位置:网站首页>Slam Laser 2D (en utilisant Laser Scan matcher)

Slam Laser 2D (en utilisant Laser Scan matcher)

2022-06-23 11:59:00 M. anhydre.

Un.、Laser Scan MatcherConfiguration de l'installation


ROSAutoportantelaser_scan_matcherBibliothèque,UtiliséCSM(Canonical Scan Matcher),C'est un purCMise en œuvre linguistiquePLICPAlgorithmes.En outre,laser_scan_matcherEt intégrégmapping,Pour que nous n'ayons pas besoin d'un compteur kilométrique,Ça marche.gmappingFaire des dessins.
Si vous utilisezKineticEditionROS,Ça pourrait être directaptTélécharger
Tout d'abord,, Vous devez déterminer si laser_scan_matcher

apt search laser-scan-matcher

Si l'affichage est installé ,Peut être utilisé directement; Si ce n'est pas le cas ,Oui.apt installInstallation

sudo apt install ros-noetic-laser-scan-matcher

ConfigurationlaunchDocuments etrvizDocumentation, Fais attention à ce que tu fais. rosVersion

sudo cp ~/XTDrone/sensing/slam/laser_slam/laser_scan_matcher/launch/* /opt/ros/kinetic/share/laser_scan_matcher/demo/
sudo cp ~/XTDrone/sensing/slam/laser_slam/laser_scan_matcher/rviz/* /opt/ros/kinetic/share/laser_scan_matcher/demo/

Si vous utilisezMelodicEditionROS, Besoin de compiler à partir du code source ,Voir

Can't build laser_scan_matcher for melodic · Issue #63 · CCNYRoboticsLab/scan_tools · GitHub

Ouhttps://medium.com/@k3083518729/robot-localization-using-laser-scanner-and-pose-graph-optimization-fc40605bf5bc

Et mettre~/XTDrone/sensing/slam/laser_slam/laser_scan_matcher/DanslaunchDocuments etrviz Le fichier correspondant est copié à catkin_ws/src/scan_tools/laser_scan_matcher/demo/Moyenne.

En plus,Il faut aussi installermap_serverPack de fonctions

sudo apt install ros-kinetic-map-server #melodic La modification correspondante est suffisante 

2.、 Positionnement laser bidimensionnel

indoor3.world Composé de murs , Pour les lasers 2D SLAM.Il faut d'abord le modifier.launchDocumentation, Premièrement, la relation de transformation entre le système de coordonnées lidar et le système de coordonnées du corps , Au lieu de cela, choisissez un modèle avec un radar laser . Voici un schéma (Attention à la3、4、18D'accord)

gedit ~/PX4_Firmware/launch/indoor3.launch
<?xml version="1.0"?>
<launch>
    <node pkg="tf" type="static_transform_publisher" name="iris_0_base_link_to_laser"
    args="0.0 0.0 0.06 0.0 0.0 0.0 /base_link /iris_0/laser_2d 40" />
    <!-- MAVROS posix SITL environment launch script -->
    <!-- launches MAVROS, PX4 SITL, Gazebo environment, and spawns vehicle -->
    <!-- vehicle pose -->
    <arg name="x" default="0"/>
    <arg name="y" default="0"/>
    <arg name="z" default="0"/>
    <arg name="R" default="0"/>
    <arg name="P" default="0"/>
    <arg name="Y" default="0"/>
    <!-- vehicle model and world -->
    <arg name="est" default="ekf2"/>
    <arg name="vehicle" default="iris"/>
    <arg name="world" default="$(find mavlink_sitl_gazebo)/worlds/indoor3.world"/>
    <arg name="sdf" default="$(find mavlink_sitl_gazebo)/models/iris_2d_lidar/iris_2d_lidar.sdf"/>

DémarragePX4Simulation,

cd ~/PX4_Firmware
roslaunch px4 indoor3.launch 

Démarrage à un autre terminalPLICP

roslaunch laser_scan_matcher matcher.launch 

Le laser et gitee Il y a des différences dans l'animation sur la page d'accueil , Parce que l'angle et la distance de balayage laser ont changé , Ceux - ci peuvent être modifiés à votre demande ,Voir détails2d Modèle lidar .

  Et le laser SLAM Des sujets de positionnement 2D seront publiés

rostopic echo /iris_0/pose2D
x: 0.0
y: 2.22044604925e-16
theta: 0.0
---
x: 0.0
y: 6.66133814775e-16
theta: 1.11022302463e-16
---
x: -1.66533453694e-16
y: -2.22044604925e-16
theta: 1.66533453694e-16
---

Et ensuite établir la communication

cd ~/XTDrone/communication

python multirotor_communication.py iris 0


Grâce au Laser 2D SLAM L'information sur la position au niveau du drone ne peut être obtenue que ,Donc,, La localisation de l'UAV nécessite également des informations d'altitude , Ici, l'information de hauteur utilise Gazebo La vraie hauteur des cheveux . Comme ce système de coordonnées est différent de celui du drone , Il est donc nécessaire de transformer les coordonnées correspondantes et de les convertir en mavrosSujet (s).

cd ~/XTDrone/sensing/slam/laser_slam/script/

python laser_transfer_old.py iris 0 2d


De cette façon, l'information de localisation passe par mavrosC'est parti.PX4,Ça pourrait être dansPX4 Le terminal de simulation voit



INFO  [ecl/EKF] 19804000: reset position to ev position
INFO  [ecl/EKF] 19804000: commencing external vision position fusion
INFO  [ecl/EKF] 19804000: commencing external vision yaw fusion
 Contrôle du décollage du drone 
cd ~/XTDrone/control/keyboard
python multirotor_keyboard_control.py iris 1 vel


Et voilà., Vous avez réalisé l'utilisation de PLICPRéaliser le positionnement, L'étape suivante consiste à établir une carte bidimensionnelle de la grille d'occupation (Occupancy Grid Map), Préparation à la planification des mouvements 2D .
Dessin laser bidimensionnel
Chargez d'abord.gmapping.

sudo apt-get install ros-kinetic-slam-gmapping

Comme le processus ci - dessus , Mais démarrer en même temps PLICP+gmapping, Et contrôler le mouvement de l'avion à l'aide d'un clavier , En parcourant toute la carte , Réaliser l'établissement d'une carte complète . Attention à ne pas voler trop vite , Sinon, la carte ne sera pas cohérente .
 

roslaunch laser_scan_matcher matcher_gmapping.launch

rviz Tous les frame, C'est un peu désordonné , On a juste besoin d'observer base_linkEtmapC'est bon,Vous pouvezrviz Mets autre chose. frameFermer.rvizSystème de coordonnées dans,x L'axe correspond au rouge (red),y L'axe correspond au vert (green),z L'axe correspond au bleu (blue),xyzÇa correspond.rgb, C'est plus facile de se souvenir .
 



Quand les cartes seront construites ,Adoptionmap_server La carte peut être sauvegardée ,Je l'ai.indoor3.pgmEtindoor3.yaml, Pour l'exemple suivant Planification des mouvements 2D Fournir des cartes.

rosrun map_server map_saver -f ~/XTDrone/motion_planning/2d/map/indoor3


Dans cet exemple,, Il s'agit de la transformation du système de coordonnées et de la désignation des sujets ,XTDrone Ces problèmes ont été résolus à l'avance , Mais si les développeurs veulent ajouter un lidar à d'autres modèles , Faire des lasers SLAM, Il est nécessaire d'étudier plus avant . Voici un exemple de TF Tree Et Node Graph,Pour les développeurs.


Ici, Laser 2D SLAMSimulation terminée! Félicitations pour une autre Simulation !

原网站

版权声明
本文为[M. anhydre.]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/174/202206231152018610.html