针对三维固态雷达的仿真,XTDrone 的官方文档中的教程,是配置的高博的 faster-lio ,是基于 fastlio 修改的一个轻量版本,但我的环境在实际使用中,经常运行不正常,点数少了,漂移会比较严重,有时还会报错,点数多了的话,就会崩掉,因此更换了 Fastlio 版本进行仿真,可以正常运行。
安装 Fastlio 的方法与安装 faster-lio 是一致的,可以参考以下两篇,其中一篇是官方文档,其中的一些配置参数后续还会用到:
https://blog.youkuaiyun.com/m0_71983702/article/details/139634206?spm=1001.2014.3001.5501
https://www.yuque.com/xtdrone/manual_cn/livox_lio
在步骤操作到安装 Faster-LIO 时,将链接替换为 Fastlio 的链接:
https://github.com/hku-mars/FAST_LIO
修改模型文件
注意修改px4的模型文件:
目的就是调用从 XTDrone 复制过来的模型文件,如果已经是这样了,就不用修改。
修改 Livox-simulation-customMsg
在配置好 Livox-simulation-customMsg 与 livox_ros_driver 以及 fastlio 之后,就需要将 avia 雷达加入到仿真环境,按照教程,将 livox_points_plugin.cpp 文件中的 avia.csv 文件的路径替换到自己的路径,因为我的 px4 的launch 文件中,调用的是 px4 工程 Tools 目录下的模型,也就是从 XTDrone 复制过去的模型,因此这个绝对路径我就填了这个路径:
还有注意发布类型选 3:
修改 Fastlio
对照官方文档的参数修改即可:
之后重新编译 catkin_ws。根据自己电脑的情况调整雷达分辨率:
运行
运行 px4 仿真
roslaunch px4 outdoor_fastlio.launch
我的是重新弄了一个 outdoot_fastlio.launch 文件:
<?xml version="1.0"?>
<launch>
<!-- MAVROS posix SITL environment launch script -->
<!-- launches Gazebo environment and 2x: MAVROS, PX4 SITL, and spawns vehicle -->
<!-- vehicle model and world -->
<arg name="est" default="ekf2"/>
<arg name="world" default="$(find mavlink_sitl_gazebo)/worlds/outdoor1_light.world"/>
<!-- gazebo configs -->
<arg name="gui" default="true"/>
<arg name="debug" default="false"/>
<arg name="verbose" default="true"/>
<arg name="paused" default="false"/>
<!-- Gazebo sim -->
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="gui" value="$(arg gui)"/>
<arg name="world_name" value="$(arg world)"/>
<arg name="debug" value="$(arg debug)"/>
<arg name="verbose" value="$(arg verbose)"/>
<arg name="paused" value="$(arg paused)"/>
</include>
<!-- iris_0 -->
<group ns="iris_0">
<!-- MAVROS and vehicle configs -->
<arg name="ID" value="0"/>
<arg name="ID_in_group" value="0"/>
<arg name="fcu_url" default="udp://:24540@localhost:34580"/>
<!-- PX4 SITL and vehicle spawn -->
<include file="$(find px4)/launch/single_vehicle_spawn_xtd.launch">
<arg name="x" value="0"/>
<arg name="y" value="0"/>
<arg name="z" value="0"/>
<arg name="R" value="0"/>
<arg name="P" value="0"/>
<arg name="Y" value="0"/>
<arg name="vehicle" value="iris"/>
<arg name="sdf" value="iris_realsense_livox"/>
<arg name="mavlink_udp_port" value="18570"/>
<arg name="mavlink_tcp_port" value="4560"/>
<arg name="ID" value="$(arg ID)"/>
<arg name="ID_in_group" value="$(arg ID_in_group)"/>
</include>
<!-- MAVROS -->
<include file="$(find mavros)/launch/px4.launch">
<arg name="fcu_url" value="$(arg fcu_url)"/>
<arg name="gcs_url" value=""/>
<arg name="tgt_system" value="$(eval 1 + arg('ID'))"/>
<arg name="tgt_component" value="1"/>
</include>
</group>
</launch>
<!--the launch file is generated by XTDrone multi-vehicle generator.py -->
运行 fastlio
roslaunch fast_lio mapping_avia.launch
最后再运行 XTDrone 的键盘与通信脚本,我是写了一个简单的脚本打开新的窗口来自动调用这两个脚本,我是wsl,一直开窗口不太方便:
简单控制飞机跑了一圈,正常运行,效果还好: