二维激光SLAM(HectorSLAM)

二维激光SLAM(HectorSLAM)

HectorSLAM安装

ROS自带有HectorSLAM,因此可以apt安装

sudo apt install ros-melodic-hector-slam*

安装map server用于保存地图

sudo apt install ros-melodic-map-server

复制相关文件

roscd hector_slam_launch
sudo cp ~/XTDrone/sensing/slam/laser_slam/hector_slam/hector_slam_xtdrone.launch launch/
sudo cp ~/XTDrone/sensing/slam/laser_slam/hector_slam/mapping_xtdrone.rviz rviz_cfg/mapping_xtdrone.rviz
roscd hector_imu_attitude_to_tf/
sudo cp ~/XTDrone/sensing/slam/laser_slam/hector_slam/hector_imu_xtdrone.launch launch/
roscd hector_mapping/
sudo cp ~/XTDrone/sensing/slam/laser_slam/hector_slam/hector_mapping_xtdrone.launch launch/

HectorSLAM使用

启动仿真环境(记得把indoor3.launch里的sdf设为iris_2d_lidar)

cd ~/PX4_Firmware/launch/
gedit  indoor3.launch

在这里插入图片描述
在新终端运行

roslaunch px4 indoor3.launch 

启动HectorSLAM(在一开始那个终端运行,也就是在下图的目录下运行。因为一开始我在新终端运行一直报错找不到路径

cd /opt/ros/melodic/share/hector_mapping
roslaunch hector_slam_launch hector_slam_xtdrone.launch

在这里插入图片描述
在这里插入图片描述
启动通信脚本

cd ~/XTDrone/communication/
python multirotor_communication.py iris 0

将HectorSLAM输出的2D位姿和高度值(由1D激光测距仪获得),转换为mavros话题

cd ~/XTDrone/sensing/slam/laser_slam/script/
python laser_transfer.py iris 0 hector

启动键盘控制脚本,控制无人机飞行,注意不能飞太高,导致激光雷达扫不到围墙。

cd ~/XTDrone/control/keyboard/
python multirotor_keyboard_control.py iris 1 vel

绕场地飞一圈,建立完整的地图,而后保存地图,用于后需要运动规划使用。(不知道为啥,每次控制无人机的时候就会报错,然后就没办法继续控制无人机飞行了)

下图是我控制无人机飞行建立的部分地图,后面无人机就没办法飞行了,没办法画完整的地图(这里没有用下面的命令保存,怕把完整的地图覆盖了)
在这里插入图片描述

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

完整的地图应该是下图这样的
在这里插入图片描述

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
二维转三维激光SLAM(Simultaneous Localization and Mapping)是一种利用激光雷达数据进行地图构建和自主定位的算法。在二维激光SLAM中,激光雷达通过测量环境中的物体距离和角度来获取二维地图信息。而将二维转换为三维的过程,通常是通过结合其他传感器数据,如惯性测量单元(IMU)或者摄像头,来获取物体的高度信息。 在二维激光SLAM中,通常使用标准卡尔曼滤波器或扩展卡尔曼滤波器来进行机器人的自主定位和地图构建。这些算法可以根据机器人的运动模型和激光雷达的观测数据来估计机器人在地图中的位置,并同时更新地图的信息。 要实现二维转三维激光SLAM,可以使用以下步骤: 1. 获取激光雷达数据:通过激光雷达获取环境中的物体距离和角度信息。 2. 数据预处理:对激光雷达数据进行去噪、滤波和校准等处理,以提高数据的质量和准确性。 3. 特征提取:从激光雷达数据中提取特征点,如物体的边缘或角点等。 4. 运动估计:利用机器人的运动模型和激光雷达数据,通过运动估计算法来估计机器人在地图中的位置。 5. 地图更新:根据激光雷达数据和运动估计结果,更新地图的信息,包括物体的位置和形状等。 6. 回环检测:通过检测机器人经过的相同地点,来识别并校正误差,提高地图的一致性和准确性。 7. 三维重建:结合其他传感器数据,如IMU或摄像头,来获取物体的高度信息,实现二维转三维的效果。 需要注意的是,二维转三维激光SLAM是一个复杂的问题,需要考虑传感器的精度、环境的特性以及算法的优化等因素。因此,在实际应用中,可能还需要进一步研究和改进算法,以提高地图构建和自主定位的准确性和鲁棒性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值