XTdrone——二维激光仿真(HectorSLAM)出现tf变换错误[已解决]

照着XTDrone的教程进行HectorSLAM进行仿真出现缺少tf坐标变换

[ INFO] [1743152723.009181683, 540.280000000]: lookupTransform base_stabilized to laser_2d timed out. Could not transform laser scan into base_frame.

XTDrone二维激光SLAM(Hector SLAM)

HectorSLAM安装

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/

启动仿真环境

检查/home/用户名/PX4_Firmware/PX4_Firmware_13/launch下的indoor3.launch文件的配置都没有问题

启动仿真launch文件

roslaunch px4 indoor3.launch 

这四步全都没有问题,但当执行到后面的步骤

启动HectorSLAM

roslaunch hector_slam_launch hector_slam_xtdrone.launch

出现了报错

[ INFO] [1743152723.009181683, 540.280000000]: lookupTransform base_stabilized to laser_2d timed out. Could not transform laser scan into base_frame.

并且rviz中没有图像

启动rqt_tf_tree后,发现也和教程里给出的不一样

教程的tf_tree

我的tf_tree

明显两部分没有连接上,找遍了csdn所有的帖子也没有解决方法,最终在github的issue模块中找到了xtdrone作者给出的解决方法!可以看到作者也是2025年2月11号才刚刚发布的解决方法

解决方法!

1.新建launch文件

在PX4_FIRMWARE_13的launch目录下新建一个launch文件,命名可以随意,我的命名是hector2d_tf.launch,内容就是补充上base_stabilized到laser_2d的静态坐标变换

<launch>

	<node pkg="tf" type="static_transform_publisher" name="laser_scan_to_base_stabilized" args="0 0 0 0 0 0 base_stabilized laser_2d 100" />

</launch>

2.启动步骤

第一步:启动仿真环境

roslaunch px4 indoor3.launch 

第二步:启动补充坐标变换的launch文件

roslaunch px4 hector2d_tf.launch 

第三步:启动HectorSLAM

roslaunch hector_slam_launch hector_slam_xtdrone.launch

打开rviz显示正常!

结束

后续正常按照教程来就可以了,启动通信脚本

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/ZTLindoor3

注意:

/home/ztl/XTDrone/motion_planning/2d/map下已经有了indoor3.map文件,如果你想保留原始文件,创个自己的map文件记得改下命名

到此,二维激光SLAM仿真完成!祝贺您又完成了一个仿真!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值