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


论文提出了一种如何去除激光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]QWTtPtQ(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 QWTt的逆矩阵)

定义最终的静态点云地图为:
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^=Mt[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={pkpkPt,ρ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={pkpkVt,Nr(i1)Lmaxρk<NriLmaxNθ(j1)2ππθk<Nθj2ππ}(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\} {zkpkpkS(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={pkpkSl,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(pjipl,t)(pjipl,t)T
where ∣ ⋅ ∣ |\cdot| and i p ‾ l , t { }^i \overline{\mathbf{p}}_{l, t} ipl,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,tv m=λmv 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,tibl,ticl,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,tTipl,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,tx+ibl,ty+icl,tz+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={pkpkSl,tM,idl,tid^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,tTpk 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,tM3Il,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))

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值