ego-planner开源代码之advanced_param.xml介绍&分析

72 篇文章 15 订阅

1. 源由

ego-planner开源代码之数据流分析工作的延续。

  • 对于算法逻辑的数据流,在前面已经初步做了整理,部分主要模块已经有比较清晰的认识。
  • 从数据流的角度,理解模块的工作逻辑,还是非常直观、简洁的。

如何从系统的角度,思考问题,尤其是一个系统由众多模块组成的复杂体系,要能够整体的理解,反而并不能一下子上手。

反之,若能够将整个系统作为一个模块来理解,入参和出参分别如何对应和理解呢?

section 1 配置入参

  <arg name="map_size_x_"/>
  <arg name="map_size_y_"/>
  <arg name="map_size_z_"/>

  <arg name="odometry_topic"/>
  <arg name="camera_pose_topic"/>
  <arg name="depth_topic"/>
  <arg name="cloud_topic"/>

  <arg name="cx"/>
  <arg name="cy"/>
  <arg name="fx"/>
  <arg name="fy"/>

  <arg name="max_vel"/>
  <arg name="max_acc"/>
  <arg name="planning_horizon"/>

  <arg name="point_num"/>
  <arg name="point0_x"/>
  <arg name="point0_y"/>
  <arg name="point0_z"/>
  <arg name="point1_x"/>
  <arg name="point1_y"/>
  <arg name="point1_z"/>
  <arg name="point2_x"/>
  <arg name="point2_y"/>
  <arg name="point2_z"/>
  <arg name="point3_x"/>
  <arg name="point3_y"/>
  <arg name="point3_z"/>
  <arg name="point4_x"/>
  <arg name="point4_y"/>
  <arg name="point4_z"/>

  <arg name="flight_type"/>

定义了用于 ego-planner 的配置入参,控制了地图大小、传感器输入、规划的物理参数以及航点和飞行模式等。

  1. 地图相关参数

    • <arg name="map_size_x_"/>
    • <arg name="map_size_y_"/>
    • <arg name="map_size_z_"/>

    这些参数定义了用于规划的三维地图的大小,分别对应于地图的 x、y、z 轴的范围,单位通常是 。例如,map_size_x_ 定义了地图在 x 轴方向的长度。

  2. 传感器输入参数

    • <arg name="odometry_topic"/>:定义了用于获取无人机位姿的 里程计话题,例如从惯性测量单元(IMU)或视觉里程计(VINS)的输出。
    • <arg name="camera_pose_topic"/>:定义了 相机位姿的话题,用于获取相机的姿态信息。
    • <arg name="depth_topic"/>:定义了深度传感器(如深度相机)的 深度图话题,用于感知障碍物。
    • <arg name="cloud_topic"/>:定义了 点云话题,如从激光雷达或RGB-D相机获取的点云信息,用于构建周围环境的三维表示。
  3. 相机内参

    • <arg name="cx"/>
    • <arg name="cy"/>
    • <arg name="fx"/>
    • <arg name="fy"/>

    这些参数定义了相机的内参(内在参数),主要用于图像中的像素坐标与实际三维世界坐标之间的转换:

    • cxcy 是相机的 主点坐标(光轴与图像平面的交点)。
    • fxfy 是相机在 x 方向y 方向焦距
  4. 物理运动参数

    • <arg name="max_vel"/>:定义了无人机的 最大速度,单位通常是米/秒 (m/s)。
    • <arg name="max_acc"/>:定义了无人机的 最大加速度,单位通常是米/秒² (m/s²)。
    • <arg name="planning_horizon"/>:定义了规划的时间 范围,即无人机在未来一段时间内要进行路径规划的时间段。
  5. 航点参数

    • <arg name="point_num"/>:定义了规划路径中要使用的 航点数量
    • <arg name="point0_x"/>, <arg name="point0_y"/>, <arg name="point0_z"/>, 等:定义了各个航点的 x、y、z 坐标,分别代表第 0、1、2、3、4 个航点在三维空间中的位置。这些航点用于路径规划中的预定义位置。
  6. 飞行模式

    • <arg name="flight_type"/>:定义了无人机的 飞行模式。这个参数可能用来控制无人机的飞行行为,比如预定路径飞行、手动控制等模式。

section 2 节点配置

  <node pkg="ego_planner" name="ego_planner_node" type="ego_planner_node" output="screen">
  1. pkg="ego_planner"

    • 这个属性定义了该节点属于的 ROS 包,在这里是 ego_planner。ROS 会从 ego_planner 包中查找相关的节点文件和依赖。
  2. name="ego_planner_node"

    • 这是节点在 ROS 网络中的 名称,即启动该节点时,它将注册为 ego_planner_node。这个名称必须是唯一的,确保 ROS 网络中不会有重复的节点名称。
  3. type="ego_planner_node"

    • 这个属性定义了要执行的节点的 可执行文件 名称。在 ego_planner 包中,它是一个名为 ego_planner_node 的可执行文件。ROS 会根据这个名称来找到并启动对应的可执行文件。
  4. output="screen"

    • 该属性定义了节点的 输出位置,在这里指定为 screen,表示节点的日志和输出信息将直接显示在控制台(终端)屏幕上。这样可以实时查看节点的运行状态、调试信息或错误消息。

section 2.1 话题映射

表示将某个话题的名称重定向为另一个话题名称。集成不同传感器、里程计等输入时非常有用。这使得节点可以适应不同的传感器输入,而无需修改节点内部代码,只需通过参数配置调整话题名称。

<remap from="/odom_world" to="$(arg odometry_topic)"/>
<remap from="/grid_map/odom" to="$(arg odometry_topic)"/>
<remap from="/grid_map/cloud" to="$(arg cloud_topic)"/>
<remap from="/grid_map/pose" to="$(arg camera_pose_topic)"/>
<remap from="/grid_map/depth" to="$(arg depth_topic)"/>
  1. <remap from="/odom_world" to="$(arg odometry_topic)"/>

    • 这行表示将原始话题 /odom_world 重定向为参数 odometry_topic 的值。
    • 也就是说,节点内部期望从 /odom_world 订阅或发布数据,但通过重映射,实际上会使用你在 advanced_param.xml 中设置的 odometry_topic 话题。这可能是从惯性测量单元(IMU)或者视觉里程计(VINS)系统中发布的位置信息。
  2. <remap from="/grid_map/odom" to="$(arg odometry_topic)"/>

    • 类似地,将 /grid_map/odom 这个话题也重定向为 odometry_topic 的值。
    • 意味着节点中的 /grid_map/odom 会和 /odom_world 一样,使用相同的 odometry_topic 进行数据的订阅或发布。
  3. <remap from="/grid_map/cloud" to="$(arg cloud_topic)"/>

    • 将话题 /grid_map/cloud 重定向为参数 cloud_topic 的值。
    • 这个重定向通常用于 点云数据 的话题,比如来自激光雷达或RGB-D摄像头的三维点云数据。这样,原来使用 /grid_map/cloud 话题的地方将改用用户指定的 cloud_topic
  4. <remap from="/grid_map/pose" to="$(arg camera_pose_topic)"/>

    • 将话题 /grid_map/pose 重定向为 camera_pose_topic 的值。
    • 这通常与 相机的位姿 有关,比如在使用RGB-D相机或其他传感器时,提供相机的姿态(位置和方向)。
  5. <remap from="/grid_map/depth" to="$(arg depth_topic)"/>

    • /grid_map/depth 话题重定向为 depth_topic 的值。
    • 这通常用于深度数据的传递,比如来自深度摄像头的 深度图像,在路径规划中用来感知周围环境的障碍物。

section 2.2 有限状态机配置

    <!-- planning fsm -->
    <param name="fsm/flight_type" value="$(arg flight_type)" type="int"/>
    <param name="fsm/thresh_replan" value="1.5" type="double"/>
    <param name="fsm/thresh_no_replan" value="2.0" type="double"/>
    <param name="fsm/planning_horizon" value="$(arg planning_horizon)" type="double"/> <!--always set to 1.5 times grater than sensing horizen-->
    <param name="fsm/planning_horizen_time" value="3" type="double"/>
    <param name="fsm/emergency_time_" value="1.0" type="double"/>

有限状态机(FSM)相关的关键参数,控制了飞行器在规划路径时的行为逻辑,包括何时进行重新规划、规划的时间和范围、紧急情况的响应时间等。参数配置可以根据任务和环境进行调整,以优化飞行器的路径规划和避障性能。

  1. <param name="fsm/flight_type" value="$(arg flight_type)" type="int"/>

    • 这个参数 fsm/flight_type 决定了飞行器的 飞行类型,它的值是通过 flight_type 参数传递的,并且类型是整型(int)。
    • 飞行类型 可能表示飞行的模式或策略,比如手动控制、自主飞行、预定航线飞行等,具体的值取决于 flight_type 的配置。
  2. <param name="fsm/thresh_replan" value="1.5" type="double"/>

    • 这个参数 fsm/thresh_replan 表示 重新规划的阈值,它的值为 1.5,类型是浮点型(double)。
    • 当飞行器在路径上偏离或感知到障碍物的距离小于这个阈值时,系统会触发重新规划,以避开障碍物或调整路径。
  3. <param name="fsm/thresh_no_replan" value="2.0" type="double"/>

    • 这个参数 fsm/thresh_no_replan 表示在系统 不需要重新规划 的最小阈值,值为 2.0,类型是浮点型(double)。
    • 当飞行器与障碍物或预定轨迹的偏离距离大于该值时,系统认为当前路径安全,不需要进行重新规划。
  4. <param name="fsm/planning_horizon" value="$(arg planning_horizon)" type="double"/>

    • fsm/planning_horizon 表示 规划的时间范围,用于确定路径规划的前瞻范围,单位通常是秒(或米,取决于场景),这里通过 planning_horizon 参数传递,类型为浮点型(double)。
    • 通常建议将 规划范围 设置为 传感器感知范围的1.5倍,确保飞行器能够在传感器的可视范围内做出路径规划决策。
  5. <param name="fsm/planning_horizen_time" value="3" type="double"/>

    • fsm/planning_horizen_time 定义了规划的 时间范围,值为 3秒,类型是浮点型(double)。
    • 这个参数可能定义了在规划过程中,飞行器需要考虑未来的时间长度,也就是在3秒内规划路径。
  6. <param name="fsm/emergency_time_" value="1.0" type="double"/>

    • fsm/emergency_time_ 定义了 紧急情况下的时间阈值,值为 1秒,类型是浮点型(double)。
    • 当飞行器进入紧急状态(例如即将碰撞障碍物)时,这个参数定义了系统需要在 1秒 内完成应急规划或执行紧急动作,以避免碰撞。

section 2.3 航点设置

    <param name="fsm/waypoint_num" value="$(arg point_num)" type="int"/>
    <param name="fsm/waypoint0_x" value="$(arg point0_x)" type="double"/>
    <param name="fsm/waypoint0_y" value="$(arg point0_y)" type="double"/>
    <param name="fsm/waypoint0_z" value="$(arg point0_z)" type="double"/>
    <param name="fsm/waypoint1_x" value="$(arg point1_x)" type="double"/>
    <param name="fsm/waypoint1_y" value="$(arg point1_y)" type="double"/>
    <param name="fsm/waypoint1_z" value="$(arg point1_z)" type="double"/>
    <param name="fsm/waypoint2_x" value="$(arg point2_x)" type="double"/>
    <param name="fsm/waypoint2_y" value="$(arg point2_y)" type="double"/>
    <param name="fsm/waypoint2_z" value="$(arg point2_z)" type="double"/>
    <param name="fsm/waypoint3_x" value="$(arg point3_x)" type="double"/>
    <param name="fsm/waypoint3_y" value="$(arg point3_y)" type="double"/>
    <param name="fsm/waypoint3_z" value="$(arg point3_z)" type="double"/>
    <param name="fsm/waypoint4_x" value="$(arg point4_x)" type="double"/>
    <param name="fsm/waypoint4_y" value="$(arg point4_y)" type="double"/>
    <param name="fsm/waypoint4_z" value="$(arg point4_z)" type="double"/>

定义了从第0个到第4个航点在三维空间中的具体位置。航点的数量通过 fsm/waypoint_num 设置。每个航点都有三个坐标(x, y, z),代表在三维空间中的位置。

  1. <param name="fsm/waypoint_num" value="$(arg point_num)" type="int"/>

    • fsm/waypoint_num 表示航点的 数量,它的值来自 point_num 参数,类型是整型(int)。
    • 这个参数定义了飞行路径上有多少个航点,例如 5 个航点。
  2. <param name="fsm/waypoint0_x" value="$(arg point0_x)" type="double"/>

    • fsm/waypoint0_x, fsm/waypoint0_y, fsm/waypoint0_z 分别表示 第0个航点x, y, z 坐标,值来自 point0_x, point0_y, point0_z 参数,类型是浮点型(double)。
    • 这些坐标定义了飞行器在三维空间中第0个航点的位置。
  3. <param name="fsm/waypoint1_x" value="$(arg point1_x)" type="double"/>

    • fsm/waypoint1_x, fsm/waypoint1_y, fsm/waypoint1_z 分别表示 第1个航点x, y, z 坐标,值来自 point1_x, point1_y, point1_z 参数,类型是浮点型(double)。
    • 这些坐标定义了飞行器在三维空间中第1个航点的位置。
  4. <param name="fsm/waypoint2_x" value="$(arg point2_x)" type="double"/>

    • fsm/waypoint2_x, fsm/waypoint2_y, fsm/waypoint2_z 分别表示 第2个航点x, y, z 坐标,值来自 point2_x, point2_y, point2_z 参数。
  5. <param name="fsm/waypoint3_x" value="$(arg point3_x)" type="double"/>

    • fsm/waypoint3_x, fsm/waypoint3_y, fsm/waypoint3_z 分别表示 第3个航点x, y, z 坐标,值来自 point3_x, point3_y, point3_z 参数。
  6. <param name="fsm/waypoint4_x" value="$(arg point4_x)" type="double"/>

    • fsm/waypoint4_x, fsm/waypoint4_y, fsm/waypoint4_z 分别表示 第4个航点x, y, z 坐标,值来自 point4_x, point4_y, point4_z 参数。

section 2.4 栅格地图

    <param name="grid_map/resolution"      value="0.1" /> 
    <param name="grid_map/map_size_x"   value="$(arg map_size_x_)" /> 
    <param name="grid_map/map_size_y"   value="$(arg map_size_y_)" /> 
    <param name="grid_map/map_size_z"   value="$(arg map_size_z_)" /> 
    <param name="grid_map/local_update_range_x"  value="5.5" /> 
    <param name="grid_map/local_update_range_y"  value="5.5" /> 
    <param name="grid_map/local_update_range_z"  value="4.5" /> 
    <param name="grid_map/obstacles_inflation"     value="0.099" /> 
    <param name="grid_map/local_map_margin" value="30"/>
    <param name="grid_map/ground_height"        value="-0.01"/>

定义了与 栅格地图(grid map) 相关的参数设置,栅格地图用于飞行器的路径规划和避障。每个参数影响栅格地图的大小、分辨率、局部更新范围、障碍物膨胀以及障碍物的处理。通过这些设置,飞行器能够在三维空间中建立地图,感知环境,并根据地图进行路径规划和避障。这些参数确保地图在飞行器周围的更新范围适中,并且障碍物的膨胀可以提供额外的安全缓冲。

  1. <param name="grid_map/resolution" value="0.1" />

    • grid_map/resolution 定义了栅格地图的 分辨率,单位为米(m),值为 0.1
    • 这意味着每个栅格代表实际空间中的 0.1 米。较小的分辨率意味着地图会更精细,但需要更多计算资源。
  2. <param name="grid_map/map_size_x" value="$(arg map_size_x_)" />

    • grid_map/map_size_x 定义了地图在 x 轴方向大小,值由参数 map_size_x_ 传递。
    • 这表示栅格地图在 x 轴上的总长度,决定了飞行器可感知的范围。
  3. <param name="grid_map/map_size_y" value="$(arg map_size_y_)" />

    • grid_map/map_size_y 定义了地图在 y 轴方向大小,值由参数 map_size_y_ 传递。
    • 类似于 x 轴,表示地图在 y 轴上的范围。
  4. <param name="grid_map/map_size_z" value="$(arg map_size_z_)" />

    • grid_map/map_size_z 定义了地图在 z 轴方向大小,值由参数 map_size_z_ 传递。
    • 这定义了地图在垂直方向上的高度范围,用于处理飞行器的高度和空中障碍物。
  5. <param name="grid_map/local_update_range_x" value="5.5" />

    • grid_map/local_update_range_x 定义了飞行器周围地图在 x 轴方向局部更新范围,值为 5.5米
    • 这意味着在飞行过程中,地图的 x 轴方向上每次更新的局部范围是 5.5 米。
  6. <param name="grid_map/local_update_range_y" value="5.5" />

    • grid_map/local_update_range_y 定义了飞行器周围地图在 y 轴方向局部更新范围,值为 5.5米
  7. <param name="grid_map/local_update_range_z" value="4.5" />

    • grid_map/local_update_range_z 定义了飞行器周围地图在 z 轴方向局部更新范围,值为 4.5米
    • 这表示飞行器在飞行时可以感知到上下 4.5 米范围内的障碍物。
  8. <param name="grid_map/obstacles_inflation" value="0.099" />

    • grid_map/obstacles_inflation 表示 障碍物膨胀半径,值为 0.099米
    • 这意味着在地图上,障碍物会膨胀 0.099 米,增加其影响范围,用于确保飞行器在规划路径时保持足够的安全距离。
  9. <param name="grid_map/local_map_margin" value="30"/>

    • grid_map/local_map_margin 定义了局部地图的 边界余量,值为 30
    • 这个参数可能用于控制地图的边界区域,以确保在更新地图时有足够的缓冲区。
  10. <param name="grid_map/ground_height" value="-0.01"/>

  • grid_map/ground_height 定义了地图中 地面的高度,值为 -0.01米
  • 这意味着在地图中,地面被认为是处于 -0.01 米的位置,可能用于处理地形高度的差异或起飞/降落时的高度感知。

section 2.5 相机内参

    <!-- camera parameter -->
    <param name="grid_map/cx" value="$(arg cx)"/>
    <param name="grid_map/cy" value="$(arg cy)"/>
    <param name="grid_map/fx" value="$(arg fx)"/>
    <param name="grid_map/fy" value="$(arg fy)"/>

定义了与 摄像头参数 相关的设置,具体是摄像头的内参(intrinsic parameters),这些参数通常用于将摄像头捕捉的二维图像信息转换为三维空间中的坐标,便于进行地图构建或障碍物检测。

  1. <param name="grid_map/cx" value="$(arg cx)"/>

    • cx 是摄像头内参中的 主点横坐标,表示图像平面上光轴与摄像头成像平面的交点在图像坐标系中的 x 方向的坐标
    • 该参数通常取决于摄像头的物理结构和校准结果。
  2. <param name="grid_map/cy" value="$(arg cy)"/>

    • cy 是摄像头内参中的 主点纵坐标,表示图像平面上光轴与摄像头成像平面的交点在图像坐标系中的 y 方向的坐标
    • 类似于 cx,它也是摄像头校准的结果。
  3. <param name="grid_map/fx" value="$(arg fx)"/>

    • fx 是摄像头的 焦距参数,表示摄像头在 x 方向 上的 焦距(单位通常是像素)。
    • 该参数用于将实际物理距离转换为像素距离,在深度估计和三维重建中非常关键。
  4. <param name="grid_map/fy" value="$(arg fy)"/>

    • fy 是摄像头的 焦距参数,表示摄像头在 y 方向 上的 焦距,单位也是像素。
    • fx 一样,fy 用于将物理距离转换为像素距离,并在视觉处理中用于三维信息恢复。

section 2.6 深度滤波

    <!-- depth filter -->
    <param name="grid_map/use_depth_filter" value="true"/>
    <param name="grid_map/depth_filter_tolerance" value="0.15"/>
    <param name="grid_map/depth_filter_maxdist"   value="5.0"/>
    <param name="grid_map/depth_filter_mindist"   value="0.2"/>
    <param name="grid_map/depth_filter_margin"    value="1"/>
    <param name="grid_map/k_depth_scaling_factor" value="1000.0"/>
    <param name="grid_map/skip_pixel" value="2"/>

深度滤波,即从深度相机或激光雷达等传感器获取的深度数据进行处理,以提高数据的准确性和可靠性。通过设定最大和最小距离、容差、边缘处理等条件,系统能够过滤掉不准确或噪声较大的深度信息,提升感知效果,确保飞行器在构建地图和路径规划时能够依据准确的三维环境感知。

  1. <param name="grid_map/use_depth_filter" value="true"/>

    • use_depth_filter:启用或禁用深度滤波功能。设置为 true 表示启用深度滤波。
  2. <param name="grid_map/depth_filter_tolerance" value="0.15"/>

    • depth_filter_tolerance:深度滤波的容差值,单位为米(m)。设置为 0.15 米,即深度值的误差如果超过 0.15 米,会被认为是不可靠的并被滤除。
  3. <param name="grid_map/depth_filter_maxdist" value="5.0"/>

    • depth_filter_maxdist:深度滤波的最大距离,单位为米(m)。设置为 5.0 米,即超过 5 米的深度信息将被视为无效并被过滤掉。
  4. <param name="grid_map/depth_filter_mindist" value="0.2"/>

    • depth_filter_mindist:深度滤波的最小距离,单位为米(m)。设置为 0.2 米,即小于 0.2 米的深度信息将被过滤掉,避免因过近距离造成的测量误差。
  5. <param name="grid_map/depth_filter_margin" value="1"/>

    • depth_filter_margin:深度滤波时的边缘容差,值为 1。用于处理深度图像的边缘区域,以防止边缘噪声影响整体深度数据的准确性。
  6. <param name="grid_map/k_depth_scaling_factor" value="1000.0"/>

    • k_depth_scaling_factor:深度数据的缩放因子,值为 1000.0。将深度数据从毫米转换为米,通常用于处理深度相机输出的毫米单位数据。
  7. <param name="grid_map/skip_pixel" value="2"/>

    • skip_pixel:指定在处理深度图像时跳过的像素间隔,值为 2
    • 这意味着每隔 2 个像素进行一次深度数据处理,或者跳过一些像素以减少计算量。这通常用于降低数据处理的负荷,提高处理速度,特别是在处理高分辨率深度图像时。

section 2.7 传感融合

    <!-- local fusion -->
    <param name="grid_map/p_hit"  value="0.65"/>
    <param name="grid_map/p_miss" value="0.35"/>
    <param name="grid_map/p_min"  value="0.12"/>
    <param name="grid_map/p_max"  value="0.90"/>
    <param name="grid_map/p_occ"  value="0.80"/>
    <param name="grid_map/min_ray_length" value="0.1"/>
    <param name="grid_map/max_ray_length" value="4.5"/>

局部融合(local fusion) 的设置,特别是在处理栅格地图(grid map)时,这些设置控制了如何将深度数据融入地图中。

p_hitp_miss 定义了障碍物检测的概率更新规则,p_minp_max 设定了概率值的范围限制,而 p_occ 定义了栅格被认为已占用时的概率值。min_ray_lengthmax_ray_length 则控制了有效的光束长度范围。这些设置有助于提高地图数据的准确性,并减少由于测量噪声和误差引起的不准确数据。

  1. <param name="grid_map/p_hit" value="0.65"/>

    • p_hit:表示 测量命中概率,值为 0.65
    • 当传感器检测到一个障碍物时,这个参数决定了栅格地图中对应栅格的概率值增加到 0.65。这个值用于表示该栅格有障碍物的可能性较高。
  2. <param name="grid_map/p_miss" value="0.35"/>

    • p_miss:表示 测量未命中概率,值为 0.35
    • 当传感器没有检测到障碍物时,栅格地图中对应栅格的概率值减少到 0.35。这个值用于表示该栅格没有障碍物的可能性较高。
  3. <param name="grid_map/p_min" value="0.12"/>

    • p_min:表示 最小概率值,值为 0.12
    • 这个参数设置了栅格地图中概率值的下限,任何栅格的概率值都不会低于 0.12。这有助于防止因测量噪声而导致的概率值过低。
  4. <param name="grid_map/p_max" value="0.90"/>

    • p_max:表示 最大概率值,值为 0.90
    • 这个参数设置了栅格地图中概率值的上限,任何栅格的概率值都不会高于 0.90。这有助于防止栅格被认为是完全被占据,除非有强有力的证据。
  5. <param name="grid_map/p_occ" value="0.80"/>

    • p_occ:表示 占用概率,值为 0.80
    • 如果栅格被认为已经被障碍物占据,这个参数决定了栅格的概率值设置为 0.80。这表明该区域被障碍物占据的可能性较高。
  6. <param name="grid_map/min_ray_length" value="0.1"/>

    • min_ray_length:表示 最小光束长度,值为 0.1米
    • 这个参数指定了传感器测量光束的最小有效长度。如果光束长度小于 0.1米,则该测量将被忽略,以避免由于测量误差或噪声导致的不准确数据。
  7. <param name="grid_map/max_ray_length" value="4.5"/>

    • max_ray_length:表示 最大光束长度,值为 4.5米
    • 这个参数指定了传感器测量光束的最大有效长度。如果光束长度超过 4.5米,则该测量将被忽略,以避免远距离测量带来的不可靠数据。

section 2.8 栅格可视化

    <param name="grid_map/virtual_ceil_height"   value="2.5"/>
    <param name="grid_map/visualization_truncate_height"   value="2.4"/>
    <param name="grid_map/show_occ_time"  value="false"/>
    <param name="grid_map/pose_type"     value="2"/>  
    <param name="grid_map/frame_id"      value="world"/>

配置了栅格地图的可视化行为和姿态数据的处理方式。virtual_ceil_heightvisualization_truncate_height 控制了地图在可视化时的显示范围,show_occ_time 决定是否显示占用时间信息,而 pose_typeframe_id 定义了姿态数据的类型和坐标框架。这些设置帮助确保栅格地图的可视化效果符合需求,并与其他系统组件的数据协调一致。

  1. <param name="grid_map/virtual_ceil_height" value="2.5"/>

    • virtual_ceil_height:表示 虚拟天花板高度,值为 2.5米
    • 这个参数设置了地图中的虚拟天花板高度。在可视化过程中,高于该高度的区域将被视为天花板,因此不予绘制或显示,以避免无关区域的干扰。
  2. <param name="grid_map/visualization_truncate_height" value="2.4"/>

    • visualization_truncate_height:表示 可视化截断高度,值为 2.4米
    • 这个参数定义了在栅格地图的可视化中截断的高度。低于这个高度的区域将被显示,高于这个高度的区域将被截断或不显示在地图中。这样可以帮助集中显示感兴趣的区域,提高地图的可读性。
  3. <param name="grid_map/show_occ_time" value="false"/>

    • show_occ_time:表示是否 显示占用时间,值为 false
    • 如果设置为 true,在地图的可视化中将显示栅格被占用的时间。这对于调试或分析地图数据的变化可能有帮助,但默认设置为 false 表示不显示。
  4. <param name="grid_map/pose_type" value="2"/>

    • pose_type:表示 姿态类型,值为 2
    • 这个参数指定了用于栅格地图中的姿态表示的类型。具体的 pose_type 值和含义通常需要参考相关的文档或代码,不同的值可能表示不同的姿态数据表示方式或坐标系统。
  5. <param name="grid_map/frame_id" value="world"/>

    • frame_id:表示 坐标框架ID,值为 “world”
    • 这个参数指定了栅格地图的坐标框架ID。在系统中,这个ID用于标识地图的全局坐标系,通常用于确保地图数据与其他传感器数据的对齐。

section 2.9 规划器配置

  <!-- planner manager -->
    <param name="manager/max_vel" value="$(arg max_vel)" type="double"/>
    <param name="manager/max_acc" value="$(arg max_acc)" type="double"/>
    <param name="manager/max_jerk" value="4" type="double"/>
    <param name="manager/control_points_distance" value="0.4" type="double"/>
    <param name="manager/feasibility_tolerance" value="0.05" type="double"/>
    <param name="manager/planning_horizon" value="$(arg planning_horizon)" type="double"/>

这些参数用于配置 规划管理器(planner manager) 的设置,主要涉及到运动规划的速度、加速度、加加速度(jerk)、控制点距离、可行性容差和规划范围等方面符合系统的需求。这些设置有助于生成有效且可行的轨迹,优化系统的运动性能,并确保规划出的轨迹在实际执行时是安全且平稳的。

  1. <param name="manager/max_vel" value="$(arg max_vel)" type="double"/>

    • max_vel:表示 最大速度,类型为 double
    • 这个参数定义了规划过程中允许的最大速度。速度限制有助于确保规划出的轨迹在实际执行时是可行的,避免超过飞行器或机器人能够安全操作的速度。
  2. <param name="manager/max_acc" value="$(arg max_acc)" type="double"/>

    • max_acc:表示 最大加速度,类型为 double
    • 这个参数定义了规划过程中允许的最大加速度。加速度限制确保了运动的平稳性和可控性,防止系统在加速过程中出现过大的力或不稳定的行为。
  3. <param name="manager/max_jerk" value="4" type="double"/>

    • max_jerk:表示 最大加加速度(即 “jerk”),值为 4,类型为 double
    • 这个参数定义了规划过程中允许的最大加加速度(jerk)。jerk 是加速度的变化率,控制 jerk 可以帮助减少运动过程中的突变,使运动更加平滑,提升系统的稳定性和舒适性。
  4. <param name="manager/control_points_distance" value="0.4" type="double"/>

    • control_points_distance:表示 控制点之间的距离,值为 0.4米,类型为 double
    • 这个参数定义了规划过程中控制点之间的距离。控制点是用于生成轨迹的关键点,适当的距离有助于确保生成的轨迹平滑且符合实际需求。
  5. <param name="manager/feasibility_tolerance" value="0.05" type="double"/>

    • feasibility_tolerance:表示 可行性容差,值为 0.05,类型为 double
    • 这个参数定义了在规划过程中可接受的可行性容差。容差值用于确定规划结果是否符合要求,较小的容差值意味着规划需要更加精确。
  6. <param name="manager/planning_horizon" value="$(arg planning_horizon)" type="double"/>

    • planning_horizon:表示 规划范围,类型为 double
    • 这个参数定义了规划时考虑的时间范围或空间范围。规划范围的大小影响到规划算法在计算轨迹时考虑的时间或空间长度,通常需要设置为比传感器感知范围稍大的值,以确保规划的完整性。

section 2.10 轨迹优化

  <!-- trajectory optimization -->
    <param name="optimization/lambda_smooth" value="1.0" type="double"/>
    <param name="optimization/lambda_collision" value="0.5" type="double"/>
    <param name="optimization/lambda_feasibility" value="0.1" type="double"/>
    <param name="optimization/lambda_fitness" value="1.0" type="double"/>
    <param name="optimization/dist0" value="0.5" type="double"/>
    <param name="optimization/max_vel" value="$(arg max_vel)" type="double"/>
    <param name="optimization/max_acc" value="$(arg max_acc)" type="double"/>

这些参数用于调整轨迹优化的行为,通过设置不同的权重系数来平衡平滑性、碰撞避免、可行性和适应性目标,同时设置速度和加速度的最大限制。合理配置这些参数有助于生成符合实际需求的轨迹,提高系统的性能和安全性。

  1. <param name="optimization/lambda_smooth" value="1.0" type="double"/>

    • lambda_smooth:表示 平滑性权重系数,值为 1.0,类型为 double
    • 这个参数定义了轨迹优化中平滑性目标的权重。值越高,优化将越倾向于生成更平滑的轨迹。较大的值使得生成的轨迹更加平稳,避免剧烈的转弯或速度变化。
  2. <param name="optimization/lambda_collision" value="0.5" type="double"/>

    • lambda_collision:表示 碰撞避免权重系数,值为 0.5,类型为 double
    • 这个参数调整了优化中碰撞避免目标的权重。较大的值表示优化过程将更注重于避免潜在的碰撞区域。较小的值则可能降低对碰撞避免的重视程度,可能会导致碰撞风险。
  3. <param name="optimization/lambda_feasibility" value="0.1" type="double"/>

    • lambda_feasibility:表示 可行性权重系数,值为 0.1,类型为 double
    • 这个参数用于调整优化过程中的可行性目标的权重。值较大的话,优化将更加关注解决约束条件以确保轨迹的可行性。值较小则减少对可行性的重视,可能导致生成的轨迹在某些约束条件下不满足要求。
  4. <param name="optimization/lambda_fitness" value="1.0" type="double"/>

    • lambda_fitness:表示 适应性权重系数,值为 1.0,类型为 double
    • 这个参数定义了优化中适应性目标的权重。适应性通常指的是轨迹对任务需求的符合程度。较大的值使得优化过程更加关注轨迹的适应性,使其更好地满足目标要求。
  5. <param name="optimization/dist0" value="0.5" type="double"/>

    • dist0:表示 初始距离,值为 0.5米,类型为 double
    • 这个参数通常用于定义优化过程中初始控制点之间的距离。它对优化算法如何生成初始轨迹有影响。较大的距离可能会减少计算负担,但也可能导致轨迹不够精确。
  6. <param name="optimization/max_vel" value="$(arg max_vel)" type="double"/>

    • max_vel:表示 最大速度,类型为 double
    • 这个参数定义了轨迹优化中允许的最大速度,确保生成的轨迹在实际执行过程中不会超过系统的速度限制。
  7. <param name="optimization/max_acc" value="$(arg max_acc)" type="double"/>

    • max_acc:表示 最大加速度,类型为 double
    • 这个参数定义了轨迹优化中允许的最大加速度,确保生成的轨迹在实际执行过程中不会超过系统的加速度限制。

section 2.11 B样条配置

    <param name="bspline/limit_vel" value="$(arg max_vel)" type="double"/>
    <param name="bspline/limit_acc" value="$(arg max_acc)" type="double"/>
    <param name="bspline/limit_ratio" value="1.1" type="double"/>

这些参数配置了B样条生成的轨迹的速度和加速度限制,以及一个比率,用于调整这些限制的灵活性。通过合理设置这些参数,可以确保生成的B样条轨迹在执行过程中不会超出系统的速度和加速度限制,同时允许一定的调整范围来优化轨迹性能。

  1. <param name="bspline/limit_vel" value="$(arg max_vel)" type="double"/>

    • limit_vel:表示 B样条最大速度限制,类型为 double
    • 这个参数定义了在B样条生成的轨迹中允许的最大速度。它确保B样条生成的轨迹不会超过指定的最大速度。这个限制有助于确保轨迹在实际执行中符合系统的速度要求,避免超速带来的风险。
  2. <param name="bspline/limit_acc" value="$(arg max_acc)" type="double"/>

    • limit_acc:表示 B样条最大加速度限制,类型为 double
    • 这个参数定义了在B样条生成的轨迹中允许的最大加速度。它确保B样条生成的轨迹不会超过系统允许的最大加速度,避免过大的加速度导致系统不稳定或不安全。
  3. <param name="bspline/limit_ratio" value="1.1" type="double"/>

    • limit_ratio:表示 限制比率,值为 1.1,类型为 double
    • 这个参数通常用于设置限制条件的比率。它可能用来放宽或收紧速度和加速度的限制。例如,如果 limit_ratio 设置为 1.1,则实际限制可能会根据这个比率在计算时进行调整,允许一定的超出范围。具体使用方法依赖于实现细节,但通常用于在优化过程中处理限制条件的弹性。

3. 总结

advanced_param.xml 主要对 ego_planner_node 节点进行了配置。

整体上 ego_planner_node 可以分为以下功能部分:

  • 有限状态机配置
  • 航点设置
  • 栅格地图
  • 相机内参
  • 深度滤波
  • 传感融合
  • 栅格可视化
  • 规划器配置
  • 轨迹优化
  • B样条配置

注:后续有时间,我们逐步了解和研究。因为当代码优化或者存在一些BUG的时候,往往需要更细节的了解算法逻辑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值