CMU - FarPlanning 代码速读

https://github.com/MichaelFYang/far_planner
https://www.cmu-exploration.com/

系统结构

image.png

  • Far Planner 属于 High-level planning module,进行全局规划,找到可行路径;
  • way_point发布给 Local plannerpath following

KeyPoint

Local-layer

  • 当前帧点云 ➡️ edge points ➡️ enclosed polygons ➡️ visibility graph
  • 动态障碍物
    • 将被遮挡的 visibility edges 删除;
    • 动态障碍物消失后,重新连接;
  • 点云提取多边形
    • 将点云映射到图像(鸟瞰图)上,黑色-可通行,白色-障碍物
      • 白色像素使用机器人尺寸进行膨胀均值滤波平滑
      • OpenCV 拓扑边缘点提取,输出 enclosed polygonsTopological structural analysis of digitized binary images by border following
      • 封闭多边形顶点稀疏化Algorithms for the reduction of the number of points required to represent a digitized line or its caricature
        • 顶点间内角用于量化障碍物曲率,内角太小的抛掉
      • image.png

Global-layer

  • 和 Local-layer 匹配,获得增量式更新
    • Local-layer 构建
      • 之前得到了封闭多边形,对 Edge 超过阈值的进行可视角度筛选;Edge 太短的角度噪声太大,没法选;
    • Local-Global 关联
      • 遍历 vertex,若两地图间的 vertex 位置重叠,则将其关联;
      • 关联后,更新 Global 中 vertex 的位置;Modern Methods for Robust Regression
        • 在 vertex 对应历史帧位置中挑选 inlier,然后对 inlier 求均值
      • Global 中长期未被关联的 vertex 根据投票删除
      • Local 中未被关联的 vertex 直接添加到 Global
      • Edge 更新
        • 若 Global 两点之间存在 Edge,则更新
        • 若不存在,则新增
      • 可视图更新
        • image.png
      • Talk 图
        • image.png

Planning on V-Graph

  • 在 Global-Layer 中添加 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rsy5uQxf-1684922016766)(null#card=math&code=P_{robot}&id=ID5nJ)]和 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dlYkMZ9t-1684922016693)(null#card=math&code=P_{goal}&id=Q9KPL)] 两个 vertex,并根据可视性连接 Edge;
  • 在 Global-Layer 中使用宽度优先搜索,找 robotgoal的可行最短路径
    • 与 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-okJ8FdWV-1684922016708)(null#card=math&code=P_{robot}&id=zpeCD)]能构成可视 Edge 的 vertex 构成 free space
      • 沿途所有 robot能看到的 vertex 均组成 free space
    • 其余 Global vertex 构成 unknown space【未探索区域】
  • 保存 V-Graph
    • 将带有 free space标识的 V-Graph 保存
    • 再次加载时,可选择是否
      • attemptable planning: 在 free space+ unknown space 中导航
      • non-attemptable planning:仅在 free space 中导航
      • image.png

Multi-layer

  • 用于飞行器场景,在 3D 空间中建立多个水平切片,并在每层切片构建多边形,跨层构建 3D 可见性;
  • image.png

Terrain traversability analysis module

  • 分割障碍物(obs)、地面(free)

Modules

外围模块

FARMaster

ContourDetector contour_detector_;	// 轮廓检测 - 处理当前帧点云
DynamicGraph graph_manager_;		// 全局图 nav_graph_
GraphPlanner graph_planner_;		// 可视图上的 Planning 模块
ContourGraph contour_graph_;		// 基于轮廓构造的局部图,并与全局图匹配

主要线程
  • PlanningCallBack()
    • 定时器线程,约 2.5 Hz
    • 在接收 Goal 任务之后,周期性执行可视图路径规划
  • Loop()
    • ROS 定时线程,2.5 Hz
    • 主要用于 V-Graph 的维护

  • NavNode
    • is_odom表示机器人当前位姿插入图中的 Node
      • 会随机器人位姿移动,属于 free node
      • 每次更新均为重新初始化
    • is_navpoint表示局部导航点,可探测范围内的一个临时目标点
      • 属于 free node
    • is_active表示与机器人很近的点、或邻近点【有点像 frontier
      • is_nearby,距离小于车身直径
      • 在 odom_node 的邻近点(connect_nodes)栈内
      • 当前点的邻近点都是 is_active
    • is_contour_match 是轮廓上的点

DynamicGraph::UpdateNavGraph
  • near_nav_graph_->extend_match_nodes_ 包含 边界点 和 active
  • new_nodes_当前帧检测到的 vertex,且没有 Global 匹配项;


GraphPlanner::UpdateGraphTraverability 生成两套代价地图


GraphPlanner::PathToGoal


Refs

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值