当前位置:网站首页>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-matcherSi 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-matcherConfigurationlaunchDocuments 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
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/pose2Dx: 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 fusionContrô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.launchrviz 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 !
边栏推荐
猜你喜欢

QT5知识:信号和槽的一些要点

Use xtradiagram Diagramcontrol for drawing and controlling process graphics

64路PCM电话光端机64路电话+2路百兆以太网电话光端机64路电话PCM语音光端机

开源之夏中选名单已公示,基础软件领域成为今年的热门申请

并购增资或将有望启动东软越通新动能?

Mysql, how to calculate the maximum value using stored procedures

@黑马粉丝,这份「高温补贴」你还没领?

PPT制作3D旋转动画从入门到进阶

Ppt makes 3D rotation animation from beginner to advanced

KDD 2022 | 基于分层图扩散学习的癫痫波预测
随机推荐
I am in Foshan. Where can I open an account? Is it safe to open a mobile account?
4E1 PDH光端机19英寸机架式单纤传输20km E1接口光纤网络光端机
你真的理解LDO的輸出電容嗎!?
Qt 知识:使用 QGraphicsPixmapItem类
一张图解码 OpenCloudOS 社区开放日
ESP32-C3入门教程 问题篇⑧——blufi_example.c:244: undefined reference to `esp_ble_gap_start_advertising
【无标题】2022年压力管道巡检维护试题及在线模拟考试
全国进入主汛期,交通运输部:不具备安全运行条件的线路坚决停运!
QT知识:Qt Widgets小部件函数【02】
Redis 入门-第四篇-数据结构与对象-跳跃表
MySQL matches multiple values in one field
Gary Marcus发文:AI研究者需要知道的三个来自语言学家的观点
2022工具钳工(初级)考试练习题模拟考试平台操作
On the structure of annotation platform
汉源高科1路非压缩4K-DVI光端机4K高清非压缩DVI转光纤4K-DVI高清视频光端机
语音模块:pyttsx变声项目
Use xtradiagram Diagramcontrol for drawing and controlling process graphics
One picture decoding opencloudos community open day
【云驻共创】华为云HCIA-IoT V2.5培训系列内容之物联网概览
halcon原理:一维函数function_1d类型【2】