配置 Livox 仿真 - 提升效率与兼容性

相关博客:【图像与点云融合教程(六)】Gazebo 下的 Livox 仿真(ROS1) - 古月居 (guyuehome.com)

Github: Livox_simulation_customMsg

在之前的博客中,我们已经探索了如何在Gazebo环境下配置Livox激光雷达的仿真。然而,Livox官方提供的功能包仅支持sensor_msgs::PointCloud类型的点云话题消息,这限制了其与某些SLAM算法的兼容性。幸运的是,存在一个开源库,它在官方功能包的基础上进行了改进,以支持sensor_msgs::PointCloudsensor_msgs::PointCloud2以及livox_ros_driver::CustomMsg这三种格式的点云话题消息。这意味着它现在可以与A-LOAM、Fast-LIO、R3live等多种SLAM算法无缝结合。

功能包的个性化修改

作者原始代码中包含了特定的绝对路径,我们推荐参考Livox官方的做法,通过自动获取路径来优化代码,以提高通用性和易用性。修改后的代码段如下所示:

std::string file_name = sdf->Get<std::string>("csv_file_name");

此外,您可以通过调整下图红色框中的代码来更改话题消息类型。值得注意的是,仅当选择sensor_msgs::PointCloud类型时,点云话题消息才能在Rviz中进行直观的可视化。

PX4 无人机与 Livox 激光雷达的集成

模型文件下载链接:【免费】Gazebo仿真中给PX4无人机添加Livox激光雷达

组装无人机和雷达

在集成过程中,首先确保将雷达仿真模型的文件正确放置于PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic/models/livox_avia路径下。如下图所示,这一步骤对于后续操作至关重要。

紧接着,在livox_avia.sdf文件中,您需要将csv_file_name参数中的路径更新为您自己的绝对路径。这一更改确保了插件能够正确地定位到该文件。

组装无人机和雷达的过程如下图所示,确保每一步都按照指示进行。

对于启动文件mavros_posix_sitl.launch的修改,我们建议保持vehicle参数不变,并将sdf模型更改为新的模型,以避免文件查找错误。示例错误信息如下:

Unknown model (not found by name on /home/xxx/.ros/etc/init.d-posix/airframes)

启动仿真的命令如下:

roslaunch px4 mavros_posix_sitl.launch

为无人机添加支架

为了在实际应用中更加实用,我们通常会将激光雷达安装在无人机的下方。因此,我们给无人机模型增加了四条支架,以便于安装

激光雷达。最终的效果如下所示:

解决 ROS 工作空间冲突问题

在PX4工作空间中无法找到livox_laser_simulation功能包的问题通常是由于~/.bashrc文件中source命令的顺序不当造成的。将livox_laser_simulation所在工作空间~/ws_ros1/ws_livox_new/devel/setup.bash放在前面,通常可以解决这个问题。

使用echo $ROS_PACKAGE_PATH命令可以查看当前已经source的功能包,这对于编写和调试~/.bashrc文件非常有帮助。