十一、二维激光SLAM建图(运行)

 

这里使用的是ROS自带的laser_scan_matcher,使用的是CSM(Canonical Scan Matcher),是一个纯C语言实现的PLICP算法。此外,laser_scan_matcher还集成好了gmapping,使得我们可以不需要里程计,就可以用gmapping进行建图。

所述 laser_scan_matcher 功能包是增量激光扫描配准工具。该软件包允许扫描连续的 sensor_msgs / LaserScan 消息之间的匹配,并将估计的激光位置发布为 geometry_msgs / Pose2D 或 tf 变换。该包可以在没有其他传感器提供的任何测距估计的情况下使用。因此,它可以作为独立的里程计算器估算器。

可以通过雷达扫描匹配功能包laser_scan_matcher提供里程计信息(odom→base_footprint),这里会把gazebo运动仿真插件提供的 (odom→base_footprint) 转换屏蔽直接由功能包 laser_scan_matcher 提供

可以直接运行以下脚本文件:

#!/bin/bash

source ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware/ ~/PX4_Firmware/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/uav_test_ws/src/ORB_SLAM2/Examples/ROS
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/uav_test_ws/src/scan_tools/laser_scan_matcher

gnome-terminal --window -e 'bash -c "roscore; exec bash"' \
--tab -e  'bash -c " sleep 3 ;cd ~/PX4_Firmware && roslaunch px4 indoor3.launch ; exec bash"' \
--tab -e  'bash -c " sleep 6 ;roslaunch laser_scan_matcher matcher_gmapping.launch; exec bash"' \
--tab -e  'bash -c " sleep 9 ;cd ~/uav_test_ws/scripts && python laser_transfer.py iris 0 2d; exec bash"' \
--tab -e  'bash -c " sleep 12 ;cd ~/XTDrone/communication && python multirotor_communication.py iris 0; exec bash"' \
--tab -e  'bash -c " sleep 14 ;cd ~/XTDrone/control && python multirotor_keyboard_control.py iris 1 vel; exec bash"' \

或者按照下面的操作一步一步来:

启动px4仿真:(注意这里的launch文件是已经加入激光雷达坐标系和机体坐标系的变换关系,以及标明要选用带有激光雷达的机型的)

cd ~/PX4_Firmware
roslaunch px4 indoor3.launch 

然后启动PLICP:

roslaunch laser_scan_matcher matcher_gmapping.launch

这个时候激光SLAM将发布二维定位话题:

rostopic echo /iris_0/pose2D

会输出:

theta是角度的意思(希腊字母)应该指的是无人机的方向

由于二维激光SLAM只能获取无人机水平的位置信息,因此,无人机实现定位还需要高度信息,在这里高度信息使用的是Gazebo发的高度真值。(我猜在真实的飞机当中,读取的是气压计返回的高度值,这个我们待会儿看一下这个转换的代码)

由于该坐标系与无人机的坐标系不同,因此需要对应的坐标变换并转为对应的mavros话题。

这样定位信息就通过mavros发到了PX4,可以在PX4的终端看到:

INFO  [ecl/EKF] 3324000: reset position to ev position
INFO  [ecl/EKF] 3324000: starting vision pos fusion
INFO  [ecl/EKF] 3324000: starting vision yaw fusion

 

>>>未完待续...

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: LaserScanMatcher 是一种用于将激光雷达扫描数据与地图进行匹配的算法。它通常用于机器人的定位和导航,通过比较激光雷达扫描数据与地图中的特征来确定机器人的位置。该算法常用于激光雷达SLAM (Simultaneous Localization and Mapping) 系统。 ### 回答2: laser_scan_matcher激光扫描匹配器)是一种用于激光雷达数据匹配与定位的算法或软件工具。它广泛应用于机器人导航、SLAM(同时定位与地图构建)和无人驾驶等领域。 激光扫描匹配器的主要作用是通过比较不同时间步骤下的激光雷达扫描数据,找到匹配最佳的位置与姿态。其原理基于几何模型和优化算法,通过最小化匹配误差来寻找最佳匹配结果。具体来说,它将一帧激光雷达数据与先前保存的地图进行比较,推断机器人当前的位置和姿态。 激光扫描匹配器的优点是高精度和实时性。由于激光雷达的高精度测量和数据点密集性,它能够提供准确的位置估计结果。此外,激光扫描匹配器的计算效率较高,能够实时更新机器人的位置信息。 然而,激光扫描匹配器也面临一些挑战和限制。首先,当环境中有重复结构、低反射或遮挡物时,匹配器可能出现错误或局部最优解。其次,由于激光雷达本身存在盲区和测量误差,匹配器的准确性可能受到限制。最后,激光扫描匹配器的实时性对硬件和计算资源的要求较高,限制了其适用范围。 总结而言,激光扫描匹配器是一种用于激光雷达数据匹配与定位的重要算法或软件工具。它能够提供高精度和实时的位置估计结果,广泛应用于机器人导航、SLAM和无人驾驶等领域。尽管存在一些挑战和限制,但随着技术的不断发展和进步,激光扫描匹配器的性能将不断提升。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值