我们知道far planner前部分的流程是这样子的:

对于特定的地图,如下:

我们要从surround_obs_cloud里抽取生成realworld_contour_,如下图所示:

在这时候,每个node的z坐标都是以机器人的高度定的。如图所示:

然后我们用real_world_contour去更新我们的contour_graph,对于PILLAR的点,它用取均值去替代。

如图所示,深紫色的点为通过real_world_contour去更新得到的contour_graph,其中淡蓝色的点是之前real_world_contour内的点,他们被标记为pillar类型,所以通过mean_p去合成标记一个紫色的点。

对于有完整的一组polygon的点,我们还要把它的第一个点放入poly_ctnodes列表里,也就是图中淡紫色的两个点,我们可以通过该node的front方向和back方向去遍历该polygon里的每一个点。

之后,我们得到contour_graph,我们还需要对它每个node里的z坐标进行还原。我们取机器人的z值,在加上一个辅助的限高值kTolerZ,得到h_min和h_max:

1、首先判断该点是不是属于terrain_cloud里的点,若用kdtree查找返回的点的个数大于0,则表示该点是属于terrain_cloud的点,标识符is_ground_associate为true,并更新返回平均高度

2、若不属于terrain_cloud,则直接返回该点的z值

3、根据标识符is_ground_associate进行判断

(1)is_ground_associate为true,按kdtree查找的点云的minH和小车的高度去更新z值,

并判断该高度在不在h_min和h_max的范围内

(2)is_ground_associate为false,把该点变成(x,y,0),然后在terrain_height_grid_下进

行一个从pos2sub的变换,得到sub,判断sub在不在terrain_height_grid_的subs范围内,如

果在的换,就用sub2ind转换成对应的ind。判断该ind在terrain_grid_traverse_list_上是否被探

索过,如果被探索过,就根据cell[ind]取出里面存放的第一个z值,并把is_ground_associate

标记为true。

如果该ind不在terrain_height_grid_范围内,但是is_search标记为true,那么我们就在

kdtree_terrain_clould里找离该ctnode最近的一个node,并用它的高度去代替该ctnode的高

度,完事以后我们要加上小车本身的高度,得到该ctnode的最终高度,并且要判断该高度在

不在h_min和h_max的范围内

Far planner 代码系列(33) 关于real_world_contour和contour_graph相关推荐

  1. Far planner代码系列(1)

    读了大神的论文以后自己动手跑了一下,感觉很有趣,想细读一下大神的代码,反正当作一个自娱自乐的系列好了~MichaelFYang/far_planner: Fast, Attemptable Route ...

  2. Far planner代码系列(2)

    graph_decoder系列(2) 承接上文 我们接着来看decoder_node.cpp的代码部分 void GraphDecoder::Init() {/* initialize subscri ...

  3. Far planner代码系列(31)is_covered

    今天讲的是UpdateNavGraph函数里的分析每个node的is_covered属性和is_frontier属性. 我们看代码,代码里把near_nav_nodes里的点挨个都取出来判断该node ...

  4. SAP PM入门系列33 - IP16 维修计划报表

    SAP PM入门系列33 - IP16 维修计划报表 对于维修计划,SAP PM模块也提供了标准查询报表IP16,方便业务人员根据需要对维修计划做查询. 执行事务代码IP16, 进入如下界面, 输入相 ...

  5. 深入学习SAP UI5框架代码系列之八:谈谈 SAP UI5 的视图控件 ID,以及 SAP UI5 视图和 Angular 视图的异同

    今天是 2021 年 4 月 27 日,周二,SAP 全球心理健康日.SAP 全球的员工,今天放假一天. 这不,早在上周五,我所在的 SAP Spartacus 开发团队的开发经理,就贴心地在 Sla ...

  6. 深入学习SAP UI5框架代码系列之七:控件数据绑定的三种模式 - One Way, Two Way和OneTime实现原理比较

    这是Jerry 2021年的第 8 篇文章,也是汪子熙公众号总共第 279 篇原创文章. 系列目录 (0) SAP UI5应用开发人员了解UI5框架代码的意义 (1) SAP UI5 module懒加 ...

  7. 深入学习SAP UI5框架代码系列之六:SAP UI5控件数据绑定的实现原理

    这是Jerry 2021年的第 7 篇文章,也是汪子熙公众号总共第 278 篇原创文章. 系列目录 (0) SAP UI5应用开发人员了解UI5框架代码的意义 (1) SAP UI5 module懒加 ...

  8. 深入学习SAP UI5框架代码系列之五:SAP UI5控件的实例数据修改和读取逻辑

    这是Jerry 2021年的第6篇文章,也是汪子熙公众号总共第277篇原创文章. 系列目录 (0) SAP UI5应用开发人员了解UI5框架代码的意义 (1) SAP UI5 module懒加载机制 ...

  9. 深入学习SAP UI5框架代码系列之四:SAP UI5控件的元数据实现

    这是Jerry 2021年的第5篇文章,也是汪子熙公众号总共第276篇原创文章. 系列目录 (0) SAP UI5应用开发人员了解UI5框架代码的意义 (1) UI5 module懒加载机制 (2) ...

最新文章

  1. shell脚本中echo显示内容带颜色的实现方法
  2. 【Python爬虫学习实践】基于BeautifulSoup的网站解析及数据可视化
  3. [Java]Thinking in Java 练习2.12
  4. HTML + CSS 实现 GitHub 项目标签、徽章样式
  5. leetcode 高薪_利用两种不同的方法解LeetCode第1312题:让字符串成为回文串的最少插入次数
  6. 移动网页广告引入mraid.js使用指南
  7. vivo S10系列正式发布 引领“自然美”自拍潮流
  8. Bug:Google Analytics例子未使用example.com
  9. ivy java_Ivy 在eclipse里的配置
  10. lingix系统安装服务器,安装ngix
  11. 使用Python开发小说下载器,不再为下载小说而发愁
  12. 如何安装服务器操作系统 HP服务器系统安装
  13. 用javascript实现九九乘法口诀表
  14. 一款应用ANR的分析思路总结
  15. java使用poi对excel文件的加密解密
  16. 计算机如何驱动无线网络,电脑如何安装全民WiFi驱动
  17. Android版本号和版本名对应关系
  18. 《精通Oracle Database 12c SQL PL/SQL编程(第3版)》代码下载
  19. #define 宏的边际效应是什么
  20. Android 汇集CSDN、GitHub等最实用的良心之作-KING

热门文章

  1. ubuntu磁盘修复
  2. win10的基础上安装win7
  3. 开放式式商业模式_开放式办公室最符合行政人员而不是公司的最大利益
  4. php语言加减乘除函数,php的chr和ord函数实现字符加减乘除运算实现代码_PHP教程...
  5. 用递归实现求n!阶层和菲波那切数列
  6. because it is included into a circular dependency循环依赖的解决办法
  7. Oil Deposits(简单深搜)(又名: 僵尸王子的复仇计划)
  8. Oracle Cloud(甲骨文)开启root登录
  9. Shell小技巧(一百三十一)服务器tcp连接数实时统计
  10. 最全国外优秀技术网站推荐