This paper introduces a novel, lightweight method to solve the visibility problem for 2D grids. The proposed method evaluates the existence of lines-of-sight from a source point to all other grid cells in a single pass with no preprocessing and independently of the number and shape of obstacles. It has a compute and memory complexity of $\mathcal{O}(n)$, where $n = n_{x}\times{} n_{y}$ is the size of the grid, and requires at most ten arithmetic operations per grid cell. In the proposed approach, we use a linear first-order hyperbolic partial differential equation to transport the visibility quantity in all directions. In order to accomplish that, we use an entropy-satisfying upwind scheme that converges to the true visibility polygon as the step size goes to zero. This dynamic-programming approach allows the evaluation of visibility for an entire grid orders of magnitude faster than typical ray-casting algorithms. We provide a practical application of our proposed algorithm by posing the visibility quantity as a heuristic and implementing a deterministic, local-minima-free path planner, setting apart the proposed planner from traditional methods. Lastly, we provide necessary algorithms and an open-source implementation of the proposed methods.
翻译:本文提出了一种新颖、轻量级的二维网格可见性问题求解方法。该方法无需预处理,即可在单次遍历中从源点评估到所有其他网格单元的视线存在性,且与障碍物的数量和形状无关。其计算和内存复杂度为$\mathcal{O}(n)$,其中$n = n_{x}\times{} n_{y}$为网格大小,每个网格单元最多只需十次算术运算。在提出的方法中,我们利用线性一阶双曲型偏微分方程在各个方向传输可见性量。为此,我们采用一种满足熵条件的迎风格式,当步长趋近于零时,该格式收敛于真实的可见多边形。这种动态规划方法评估整个网格可见性的速度比典型的射线投射算法快数个数量级。我们通过将可见性量作为启发式函数,并实现一种确定性、无局部极小值的路径规划器,提供了所提算法的实际应用,使该规划器与传统方法截然不同。最后,我们提供了必要的算法及所提方法的开源实现。