1. range insert tsdf
参数:const sensor::RangeData& range_data, GridInterface* grid
即:激光点云数据 + 栅格
- 首先获得截断距离 默认0.2m, 从.lua中通过proto中读取
- 根据truncation_distance,range_data,tsdf 确定地图是否增长使得 tsdf地图包含所有的点云数据
- 如果需要计算法向量 (周围多个hit点的拟合)
-激光法线的距离or 射线激光扫描角度法线的权重 更新时,计算法线
-将激光点排序 --一顿神操作
-为“ range_data”中的每个“ return”估算法线 - 遍历所有hit点,插入hit点,hit,origin,normal,tsdf
- tsdf更新完成 更新状态update_indices_刷新,该状态防止一帧激光数据多次更新一个栅格点
权重:距离 * 角度 * 法线
更新:线上的 截断距离
1.1地图是否生长:
Grid2d中,与概率栅格一样
- 遍历激光点云 p i ( x , y ) p_i(x,y) pi(x,y)。
对于每个点云,首先计算机器人到该点 p i ( x , y ) p_i(x,y) pi(x,y)的向量, p i − p r {p_i-p_r} pi−pr
然后确定该点云可能到达的最大距离 p i + t r u n c a t i o n d i s t a n c e ∗ ( p i − p r ) {p_i + truncation_distance *(p_i-p_r)} pi+