当前位置:网站首页>二維激光SLAM( 使用Laser Scan Matcher )
二維激光SLAM( 使用Laser Scan Matcher )
2022-06-23 11:59:00 【無水先生】
一、Laser Scan Matcher安裝配置
ROS自帶的laser_scan_matcher庫,使用的是CSM(Canonical Scan Matcher),是一個純C語言實現的PLICP算法。此外,laser_scan_matcher還集成好了gmapping,使得我們可以不需要裏程計,就可以用gmapping進行建圖。
如果您使用Kinetic版的ROS,可以直接apt下載
首先,您需要確定是否已安裝laser_scan_matcher
apt search laser-scan-matcher如果顯示已安裝,則可以直接使用;若未按照,則用apt install安裝
sudo apt install ros-noetic-laser-scan-matcher配置launch文件和rviz文件,注意對應好自己的ros版本
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/如果您使用的Melodic版的ROS,需要從源碼編譯,請參考
Can't build laser_scan_matcher for melodic · Issue #63 · CCNYRoboticsLab/scan_tools · GitHub
然後把~/XTDrone/sensing/slam/laser_slam/laser_scan_matcher/中的launch文件和rviz文件對應複制到catkin_ws/src/scan_tools/laser_scan_matcher/demo/中。
另外,還需要安裝map_server功能包
sudo apt install ros-kinetic-map-server #melodic對應修改即可二、二維激光定比特
indoor3.world由牆體組成,適合二維激光SLAM。首先需要修改launch文件,一是加入激光雷達坐標系和機體坐標系的變換關系,而是要選用帶有激光雷達的機型。下面給了一種方案(注意第3、4、18行)
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"/>啟動PX4仿真,
cd ~/PX4_Firmware
roslaunch px4 indoor3.launch 在另一個終端啟動PLICP
roslaunch laser_scan_matcher matcher.launch 下圖的激光和gitee主頁上的動畫有差异,因為激光掃描的角度和距離變了,這些可以根據您的要求修改,詳見2d激光雷達模型。

這時激光SLAM將發布二維定比特話題
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
---然後建立通信
cd ~/XTDrone/communication
python multirotor_communication.py iris 0
由於二維激光SLAM只能獲取無人機水平的比特置信息,因此,無人機實現定比特還需要高度信息,在這裏高度信息使用的是Gazebo發的高度真值。由於該坐標系與無人機的坐標系不同,因此需要對應的坐標變換並轉為對應的mavros話題。
cd ~/XTDrone/sensing/slam/laser_slam/script/
python laser_transfer_old.py iris 0 2d
這樣定比特信息就通過mavros發到了PX4,可以在PX4仿真終端看到
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控制無人機起飛
cd ~/XTDrone/control/keyboard
python multirotor_keyboard_control.py iris 1 vel
到了這一步,您已經實現了利用PLICP實現定比特,下一步將建立二維占據栅格地圖(Occupancy Grid Map),為二維運動規劃做准備。
二維激光建圖
先裝一下gmapping。
sudo apt-get install ros-kinetic-slam-gmapping類似上述流程,但是同時啟動PLICP+gmapping,並用鍵盤控制飛機的運動,走過整個地圖,實現完整地圖的建立。注意飛機飛行速度不要太快,否則地圖的一致性會不好。
roslaunch laser_scan_matcher matcher_gmapping.launchrviz裏默認顯示了所有的frame,這樣看著比較亂,咱們其實只需要觀察base_link和map就好,您可以在rviz裏把別的frame關閉。rviz中的坐標系,x軸對應紅色(red),y軸對應綠色(green),z軸對應藍色(blue),xyz正好對應rgb,比較容易記住。

當地圖都建好了,通過map_server可以保存地圖,得到indoor3.pgm和indoor3.yaml,為下一個示例二維運動規劃提供地圖。
rosrun map_server map_saver -f ~/XTDrone/motion_planning/2d/map/indoor3
在這個示例裏,涉及了一些坐標系變換和話題命名問題,XTDrone已經事先把這些問題都解决了,但如果開發者想要給其他機型加上激光雷達,進行激光SLAM,則有必要深入研究一下。下面展示了這個示例的TF Tree 和 Node Graph,供開發者參考。


到此,二維激光SLAM仿真完成!祝賀您又完成了一個仿真!
边栏推荐
- Invalid Navicat scheduled task
- Video data annotation tools and platforms (data annotation company)
- 六维图剖析:中国建筑集团有限公司企业成长性分析
- @黑马粉丝,这份「高温补贴」你还没领?
- 汉源高科1路千兆光口转4路千兆以太网电口千兆1光4电光纤收发器
- 浅谈标注平台架构
- ROS知识:读取点云数据文件
- 2022工具钳工(初级)考试练习题模拟考试平台操作
- 在flinksql中 kafka流表跟mysql 纬度流表做left join,根据I’d做关联,假
- WC statistics are out of date, and every line of cloc code is valid
猜你喜欢

HMS core video editing service has the ability to open templates, helping users get the same cool video with one click

链表5 - 234. 回文链表

汉源高科1路千兆光口转4路千兆以太网电口千兆1光4电光纤收发器

Use monotone stack to solve problems

汉源高科USB3.0光端机USB工业触摸屏光端机USB3.0光纤延长器USB3.0光纤传输器

利用XtraDiagram.DiagramControl进行流程图形的绘制和控制

Redis 入门-第四篇-数据结构与对象-跳跃表

Redis 入门-第一篇-数据结构与对象-简单动态字符串(SDS)

2光2电级联型光纤收发器千兆2光2电光纤收发器迷你嵌入式工业矿用本安型光纤收发器

Redis 入门-第二篇-数据结构与对象-链表
随机推荐
10-- 根据中序遍历和后序遍历,构造二叉树
Vous comprenez vraiment la capacité de sortie de LDO!?
MySQL matches multiple values in one field
PPT制作3D旋转动画从入门到进阶
64路PCM电话光端机64路电话+2路百兆以太网电话光端机64路电话PCM语音光端机
16路HD-SDI光端机多路HD-SDI高清视频光端机16路3G-SDI高清音视频光端机
请问连接oracle时,这个version 1.54 是什么的version?
Leetcode 1209. 删除字符串中的所有相邻重复项 II(初版本没过)
在flinksql中 kafka流表跟mysql 纬度流表做left join,根据I’d做关联,假
How to use the interval repetition memory system in flowus, notation and other note taking software?
KDD 2022 | 基于分层图扩散学习的癫痫波预测
Halcon原理:auto_threshold算子
Redis 入门-第四篇-数据结构与对象-跳跃表
Necessary software for automation or electrical specialty
【无标题】2022年压力管道巡检维护试题及在线模拟考试
php 手写一个完美的守护进程
QT5知识:QT绘制图形
Shell process control - 39. Special process control statements
『忘了再学』Shell流程控制 — 39、特殊流程控制语句
[zero foundation wechat applet] actual development of ID photo changing background color applet based on Baidu brain portrait segmentation