ERASOR:基于栅格占用差异的动态物体去除方法

2023-12-15 12:49:55


论文提出了一种如何去除激光slam生成点云地图中动态物体的后处理方法。

1问题定义与核心思想

定义经过slam生成的最终点云 M ( m a p ) \mathcal{M}(map) M(map)定义如下:
M = ? t ∈ [ T ] Q W T t ? P t Q (1) \mathcal{M}=\bigcup_{t \in[T]}{ }_Q^W \mathbf{T}_t * \mathcal{P}_t^Q\tag{1} M=t[T]??QW?Tt??PtQ?(1)
W W W:world frame , Q Q Q:query frame, t : t: t:query frame time, T t \mathbf{T}_t Tt?:query frame 到 world frame的变换矩阵。

假设 P t M \mathcal{P}_t^M PtM? M ( m a p ) \mathcal{M}(map) M(map) P t Q \mathcal{P}_t^Q PtQ?坐标系的点云(即对 M ( m a p ) \mathcal{M}(map) M(map)乘以 Q W T t _Q^W \mathbf{T}_t QW?Tt?的逆矩阵)

定义最终的静态点云地图为:
M ^ = M ? ? t ∈ [ T ] M ^ d y n , t (2) \hat{\mathcal{M}}=\mathcal{M}-\bigcup_{t \in[T]} \hat{\mathcal{M}}_{d y n, t}\tag{2} M^=M?t[T]??M^dyn,t?(2)
M ^ d y n , t \hat{\mathcal{M}}_{d y n, t} M^dyn,t?指由 P t M \mathcal{P}_t^M PtM? P t Q \mathcal{P}_t^Q PtQ?之间的差异确定的估计动态点云。

论文的方法将注意力集中在城市环境中大多数动态物体上,例如陆地车辆和行人,它们不可避免地与地面接触。基于这个假设,我们可以构建四种可能的情况:

  • P t M \mathcal{P}_t^M PtM?中地面上有物体,而 P t Q \mathcal{P}_t^Q PtQ?中相同位置的地面上没有物体

  • P t M \mathcal{P}_t^M PtM?中地面没有物体,而 P t Q \mathcal{P}_t^Q PtQ?中相同位置的地面上有物体

  • 物体同时存在 P t M \mathcal{P}_t^M PtM? P t Q \mathcal{P}_t^Q PtQ?中的地面上

  • 物体同时不存在 P t M \mathcal{P}_t^M PtM? P t Q \mathcal{P}_t^Q PtQ?中的地面上

在这些情况中,表示动态对象的点将被分类为第一种情况和第二种情况。然而,我们的目标是细化地图云,因此忽略第二种情况(目的是将map中的动态点云去掉,如果map没有物体就不用考虑了)。为了清楚起见,我们定义两个术语:第一种情况是潜在的动态情况,第三种和第四种情况是绝对静态的情况。

2具体方法

2.1生成感兴趣区域( Volume of Interest)

由于map范围很大,因此有必要在map中划定一块查询帧附近的小区域,再和查询帧进行比较,因此定义感兴趣区域为:
V t = { p k ∣ p k ∈ P t , ρ k < L max ? , h min ? < z k < h max ? } \mathcal{V}_t=\left\{\mathbf{p}_k \mid \mathbf{p}_k \in \mathcal{P}_t, \rho_k<L_{\max }, h_{\min }<z_k<h_{\max }\right\} Vt?={pk?pk?Pt?,ρk?<Lmax?,hmin?<zk?<hmax?}
ρ k = x k 2 + y k 2 \rho_k=\sqrt{x_k^2+y_k^2} ρk?=xk2?+yk2? ? L m a x , h m i n , h m a x L_{max},h_{min},h_{max} Lmax?,hmin?,hmax?为阈值。

请注意, V t \mathcal{V}_t Vt?是通过kdtree从 M ( m a p ) \mathcal{M}(map) M(map) 中提取的,提取之后再变换到查询帧的坐标系,这样可以避免所有点云进行运算,节约时间。

2.2区域伪占用描述符(RPOD: Region-wise Pseudo Occupancy Descriptor)

RPOD 将 V t \mathcal{V}_t Vt?划分为方位和径向方向(即扇形和环)的规则间隔(bin)(即沿着径向和垂直于径向方向将Vt划分为二维栅格(bin),如果读过地面分割相关论文这个概念不难理解。)。令 Nr 和 Nθ 为环数和扇区数。则R-POD记为St,可表示为:
S t = ? i ∈ [ N r ] , j ∈ [ N θ ] S ( i , j ) , t (1) \mathcal{S}_t=\bigcup_{i \in\left[N_r\right], j \in\left[N_\theta\right]} \mathcal{S}_{(i, j), t}\tag{1} St?=i[Nr?],j[Nθ?]??S(i,j),t?(1)
S ( i , j ) , t \mathcal{S}_{(i, j), t} S(i,j),t?表示t时刻,第i-j个bin内的所有点云 S ( i , j ) , t \mathcal{S}_{(i, j), t} S(i,j),t?满足以下条件:
S ( i , j ) , t = { p k ∣ p k ∈ V t , ( i ? 1 ) ? L max ? N r ≤ ρ k < i ? L max ? N r ( j ? 1 ) ? 2 π N θ ? π ≤ θ k < j ? 2 π N θ ? π } (5) \begin{array}{r}\mathcal{S}_{(i, j), t}=\left\{\mathbf{p}_k \mid \mathbf{p}_k \in \mathcal{V}_t, \frac{(i-1) \cdot L_{\max }}{N_r} \leq \rho_k<\frac{i \cdot L_{\max }}{N_r}\right. \\\left.\frac{(j-1) \cdot 2 \pi}{N_\theta}-\pi \leq \theta_k<\frac{j \cdot 2 \pi}{N_\theta}-\pi\right\}\end{array}\tag{5} S(i,j),t?={pk?pk?Vt?,Nr?(i?1)?Lmax??ρk?<Nr?i?Lmax??Nθ?(j?1)?2π??πθk?<Nθ?j?2π??π}?(5)
Thereafter, the unit space, i.e. each bin, assigns a single real value to describe pseudo occupancy, Δ h ( i , j ) , t \Delta h_{(i, j), t} Δh(i,j),t?. Let Z ( i , j ) , t = Z_{(i, j), t}= Z(i,j),t?= { z k ∈ p k ∣ p k ∈ S ( i , j ) , t } \left\{z_k \in \mathbf{p}_k \mid \mathbf{p}_k \in \mathcal{S}_{(i, j), t}\right\} {zk?pk?pk?S(i,j),t?}. Then, the pseudo occupancy of each bin is encoded as follows:
Δ h ( i , j ) , t = sup ? { Z ( i , j ) , t } ? inf ? { Z ( i , j ) , t } (6) \Delta h_{(i, j), t}=\sup \left\{Z_{(i, j), t}\right\}-\inf \left\{Z_{(i, j), t}\right\}\tag{6} Δh(i,j),t?=sup{Z(i,j),t?}?inf{Z(i,j),t?}(6)
其中sup和inf表示上边界和下边界。

2.3扫描占比测试(Scan Ratio Test)

对比 P t M \mathcal{P}_t^M PtM? P t Q \mathcal{P}_t^Q PtQ?同一个bin(栅格)的 Δ h ( i , j ) , t M \Delta h_{(i, j), t}^M Δh(i,j),tM? Δ h ( i , j ) , t Q \Delta h_{(i, j), t}^Q Δh(i,j),tQ?的比值判断该bin内的点云是否存在动态物体,文中比例设置为0.2.

2.4区域地面平面拟合(Region-wise Ground Plane Fitting)

对2.3判断为存在动态物体的bin的点云,进行地面点和非地面点分割,非地面点即为动态物体点云。

由于每个bin相对于整个地图来说都很小,因此可以安全地假设bin内的地面是平坦的。

对于包含动态物体的bin S l , t M \mathcal{S}_{l, t}^M Sl,tM?而言,地面点位于最下方,因此初始地面点 0 I l , t { }^0 \mathcal{I}_{l, t} 0Il,t?估计为:
0 I l , t = { p k ∣ p k ∈ S l , t M , z ( p k ) < z ˉ + τ seed? } { }^0 \mathcal{I}_{l, t}=\left\{\mathbf{p}_k \mid \mathbf{p}_k \in \mathcal{S}_{l, t}^M, z\left(\mathbf{p}_k\right)<\bar{z}+\tau_{\text {seed }}\right\} 0Il,t?={pk?pk?Sl,tM?,z(pk?)<zˉ+τseed??}
z ˉ \bar{z} zˉ为从 S l , t M \mathcal{S}_{l, t}^M Sl,tM?选择几个最低点的z值的平均值, τ seed? \tau_{\text {seed }} τseed??为高度阈值。

由于方法是迭代的,因此 假设第 i i i次迭代bin中的地面点( inliers) 为 i I l , t { }^i \mathcal{I}_{l, t} iIl,t?, 然后计算 i I l , t { }^i \mathcal{I}_{l, t} iIl,t? 的协方差阵 i C l , t { }^i C_{l, t} iCl,t?:
i C l , t = ∑ j = 1 : ∣ i I l , t ∣ ( p j ? i p  ̄ l , t ) ( p j ? i p  ̄ l , t ) T { }^i C_{l, t}=\sum_{j=1:\left|{ }^i \mathcal{I}_{l, t}\right|}\left(\mathbf{p}_j-{ }^i \overline{\mathbf{p}}_{l, t}\right)\left(\mathbf{p}_j-{ }^i \overline{\mathbf{p}}_{l, t}\right)^T iCl,t?=j=1:iIl,t??(pj??ip?l,t?)(pj??ip?l,t?)T
where ∣ ? ∣ |\cdot| ? and i p  ̄ l , t { }^i \overline{\mathbf{p}}_{l, t} ip?l,t? denote the size of a set and mean position of i I l , t { }^i \mathcal{I}_{l, t} iIl,t?, respectively.

然后利用PCA分解得到协方差阵的特征值与特征向量, i.e. i C l , t v ? m = λ m v ? m { }^i C_{l, t} \vec{v}_m=\lambda_m \vec{v}_m iCl,t?v m?=λm?v m? where m = 1 , 2 , 3 m=1,2,3 m=1,2,3. 最小特征值对应的特征值向量则为地面点法线. 让特征向量为 i n l , t = [ i a l , t i b l , t i c l , t ] T { }^i \mathbf{n}_{l, t}=\left[{ }^i a_{l, t}{ }^i b_{l, t}{ }^i c_{l, t}\right]^T inl,t?=[ial,t?ibl,t?icl,t?]T. 然后地面点的平面方程为: i d l , t = ? i n l , t T i p  ̄ l , t { }^i d_{l, t}=-{ }^i \mathbf{n}_{l, t}^T{ }^i \overline{\mathbf{p}}_{l, t} idl,t?=?inl,tT?ip?l,t?, 展开后: i a l , t x + i b l , t y + i c l , t z + i d l , t = 0 { }^i a_{l, t} x+{ }^i b_{l, t} y+{ }^i c_{l, t} z+{ }^i d_{l, t}=0 ial,t?x+ibl,t?y+icl,t?z+idl,t?=0. 我们的目标是提取地面点,即位于该平面下方一定距离的点认为是地面点:
i + 1 I l , t = { p k ∣ p k ∈ S l , t M , i d l , t ? i d ^ k < τ g } { }^{i+1} \mathcal{I}_{l, t}=\left\{\mathbf{p}_k \mid \mathbf{p}_k \in \mathcal{S}_{l, t}^M,{ }^i d_{l, t}-{ }^i \hat{d}_k<\tau_g\right\} i+1Il,t?={pk?pk?Sl,tM?,idl,t??id^k?<τg?}
where i d ^ k = ? i n l , t T p k { }^i \hat{d}_k=-{ }^i \mathbf{n}_{l, t}^T \mathbf{p}_k id^k?=?inl,tT?pk? and τ g \tau_g τg? denotes the distance margin of the plane.

设置迭代3次就够了,得到每个bin最终的地面点 3 I l , t { }^3 \mathcal{I}_{l, t} 3Il,t? 。 因此非地面点即为动态点云:
M ^ d y n , t = ? l ∈ [ L ] ( S l , t M ? 3 I l , t ) . \hat{\mathcal{M}}_{d y n, t}=\bigcup_{l \in[L]}\left(\mathcal{S}_{l, t}^M-{ }^3 \mathcal{I}_{l, t}\right) . M^dyn,t?=l[L]??(Sl,tM??3Il,t?).
对每一frame的每个bin进行同样的处理就得到了最终的动态物体点云和静态地图点云。

《ERASOR: Egocentric Ratio of Pseudo Occupancy-based Dynamic Object Removal for Static 3D Point Cloud Map Building》

[1](动态环境SLAM专题(一) | ICRA2021:ERASOR — 解决动态环境下SLAM建图"鬼影"问题 - 知乎 (zhihu.com))

文章来源:https://blog.csdn.net/xinxiangwangzhi_/article/details/135012949
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。