ego-planner开源代码之simulator.xml介绍&分析
1. 源由
ego-planner开源代码之数据流分析工作的延续。
- 对于算法逻辑的数据流,在前面已经初步做了整理,部分主要模块已经有比较清晰的认识。
- 从数据流的角度,理解模块的工作逻辑,还是非常直观、简洁的。
如何从系统的角度,思考问题,尤其是一个系统由众多模块组成的复杂体系,要能够整体的理解,反而并不能一下子上手。
反之,若能够将整个系统作为一个模块
来理解,入参和出参分别如何对应和理解呢?
2. simulator配置
2.1 配置入参
<arg name="init_x" value="-18.0"/>
<arg name="init_y" value="0.0"/>
<arg name="init_z" value="0.0"/>
<arg name="obj_num" value="1" />
<arg name="map_size_x_"/>
<arg name="map_size_y_"/>
<arg name="map_size_z_"/>
<arg name="c_num"/>
<arg name="p_num"/>
<arg name="min_dist"/>
<arg name="odometry_topic"/>
在启动文件中传递参数值给节点。每个 arg
标签定义了一个参数名和一个默认值(如果有的话),并且这些参数可以在启动节点时被传递和使用。
-
<arg name="init_x" value="-18.0"/>
- 含义: 初始位置的 x 坐标,值为 -18.0。
-
<arg name="init_y" value="0.0"/>
- 含义: 初始位置的 y 坐标,值为 0.0。
-
<arg name="init_z" value="0.0"/>
- 含义: 初始位置的 z 坐标,值为 0.0。
-
<arg name="obj_num" value="1" />
- 含义: 对象的数量,值为 1。
-
<arg name="map_size_x_"/>
- 含义: 地图在 x 方向上的大小。这里没有指定默认值,实际值需要在运行时传递。
-
<arg name="map_size_y_"/>
- 含义: 地图在 y 方向上的大小。这里没有指定默认值,实际值需要在运行时传递。
-
<arg name="map_size_z_"/>
- 含义: 地图在 z 方向上的大小。这里没有指定默认值,实际值需要在运行时传递。
-
<arg name="c_num"/>
- 含义: 参数 c 的数量。这里没有指定默认值,实际值需要在运行时传递。
-
<arg name="p_num"/>
- 含义: 参数 p 的数量。这里没有指定默认值,实际值需要在运行时传递。
-
<arg name="min_dist"/>
- 含义: 最小距离值。这里没有指定默认值,实际值需要在运行时传递。
-
<arg name="odometry_topic"/>
- 含义: 里程计数据的 ROS 话题名称。这里没有指定默认值,实际值需要在运行时传递。
在 simple_run.launch 中相关的覆盖值定义是:
<arg name="map_size_x" value="40.0"/>
<arg name="map_size_y" value="40.0"/>
<arg name="map_size_z" value=" 3.0"/>
<!-- topic of your odometry such as VIO or LIO -->
<arg name="odom_topic" value="/visual_slam/odom" />
<!-- use simulator -->
<include file="$(find ego_planner)/launch/simulator.xml">
<arg name="map_size_x_" value="$(arg map_size_x)"/>
<arg name="map_size_y_" value="$(arg map_size_y)"/>
<arg name="map_size_z_" value="$(arg map_size_z)"/>
<arg name="c_num" value="200"/>
<arg name="p_num" value="200"/>
<arg name="min_dist" value="1.2"/>
<arg name="odometry_topic" value="$(arg odom_topic)" />
</include>
2.2 mockamap_node 地图生成节点
<node pkg="mockamap" type="mockamap_node" name="mockamap_node" output="screen">
<remap from="/mock_map" to="/map_generator/global_cloud"/>
<param name="seed" type="int" value="127"/>
<param name="update_freq" type="double" value="0.5"/>
<!-- box edge length, unit meter-->
<param name="resolution" type="double" value="0.1"/>
<!-- map size unit meter-->
<param name="x_length" value="$(arg map_size_x_)"/>
<param name="y_length" value="$(arg map_size_y_)"/>
<param name="z_length" value="$(arg map_size_z_)"/>
<param name="type" type="int" value="1"/>
<!-- 1 perlin noise parameters -->
<!-- complexity: base noise frequency,
large value will be complex
typical 0.0 ~ 0.5 -->
<!-- fill: infill persentage