知识杂记-1
近期读了一些MP(Motion Planning)方向的论文,其用到了一些图形学,数学方面的知识,遂小记,以便于日后复习。
NTFields: Neural Time Fields for Physics-Informed Robot Motion Planning
Progressive Learning for Physics-informed Neural Motion Planning
PC-Planner: Physics-Constrained Self-Supervised Learning for Robust Neural Motion Planning with Shape-Aware Distance Function
线性插值
- 线性插值
- 二线性插值
- 三线性插值
转载自线性插值与双/三线性插值 - 知乎 (zhihu.com)
线性插值 linear interpolation
无需多言,公式:
P(t) = A + (B -A)t
P(t) = A(1-t) + Bt
这个函数一般我们叫做lerp.
1 | template<typename T> |
如果门把t变成某个函数g(t),那么线性可以变得平滑,可以变成多项式等等…
双线性插值 bilinear interpolation
思路是类似的,我们首先用插值算出 nx0 和 nx1,然后再用插值算出P处的值:
nx0 = lerp(c00,c10,tx)
nx1 = lerp(c01,c11,tx)
p = lerp(nx0,nx1,ty)
如果我们展开的话长这样:
p=c00(1−tx)(1−ty)+c10tx(1−ty)+c01(1−tx)ty+c11txty
三线性插值 Trilinear interpolation
同样的思路,只是我们推到3d空间:
a = lerp(c000,c100,tx)
b = lerp(c010,c110,tx)
c = lerp(c001,c101,tx)
d = lerp(c011,c111,tx)
得到了这四个点,再把它代入回双线性插值既可:
e = lerp(a, b, ty)
f = lerp(c, d, ty)
最终e, f之间构成了线性插值:
拉普拉斯算子
在知乎看到了一个很好的回答,引用在此为什么 空间二阶导(拉普拉斯算子)这么重要? - 链巨人的回答
“我们进一步概括,在一连串的事件中,拉普拉斯算子能够计算找到那些变化很突然的那些事件。这便是拉普拉斯得到很多应用,很重要的原因。”
Grid_sample
torch.nn中的方法
1 | torch.nn.functional.grid_sample(input, grid, mode='bilinear', padding_mode='zeros', align_corners=None) |
简单来说,grid_sample提供一个input以及一个网格,然后根据grid中每个位置提供的坐标信息(input中pixel的坐标),将input中对应位置的像素值填充到grid指定的位置,得到最终的输出。
具体介绍引用一个知乎回答TORCH.NN.FUNCTIONAL.GRID_SAMPLE - 知乎 (zhihu.com)
SDF(Signed Distance Field)
SDF(signed distance field)基础理论和计算 - 知乎 (zhihu.com)
浅谈3D隐式表示(SDF,Occupancy field,NeRF)-CSDN博客
SE(2) SE(3)
SE(2) 和 SE(3) 是描述刚体运动的李群(Lie group),常用于机器人学、计算机视觉和图形学等领域。
**SE(2)**:
- 表示二维空间中的刚体运动,包括平移和旋转。
- 具体来说,SE(2) 是由所有的平移(x, y)和旋转(θ)组成的组合。
- 数学上,可以表示为:
$SE(2) = { (x, y, \theta) | x, y \in \mathbb{R}, \theta \in [0, 2\pi) }$
**SE(3)**:
- 表示三维空间中的刚体运动,包括平移和旋转。
- SE(3) 包含一个三维平移向量(x, y, z)和一个旋转矩阵(通常表示为四元数或欧拉角)。
- 数学上,可以表示为:
$SE(3) = { (x, y, z, R) | (x, y, z) \in \mathbb{R}^3, R \in SO(3) }$ - 其中,SO(3) 是表示三维空间中所有旋转的特殊正交群。
这两个空间提供了描述物体在平面和空间中运动的数学框架,广泛应用于运动学分析和路径规划等问题。