基于激光传感器的移动机器人动态运动检测

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Nksjc/article/details/72848277

基于激光传感器的移动机器人动态运动检测

运动物体检测模型

对于静止的激光传感器,检测动态物体非常容易,进入到上一时刻“自由空间”(激光点和激光传感器包围的空间)的物体就可以认为是动态物体。对于移动机器人,检测动态运动的问题在于,环境中的物体运动的同时,机器人也会移动,而环境的变化使得扫描匹配等方法的匹配效果下降,需要找到一种方法将临近帧的数据“对齐”(在一个坐标系下表示)。因此,融合移动机器人的里程计信息。

运动检测模型如下图所示:T-1时刻由机器人位姿 (x(t1),y(t1),θ(t1)) (激光)和激光数据包围出一个Free Space
(激光数据可以看成是环境中物体的表面的离散观测),下一时刻,机器人移动到 (x(t),y(t),θ(t)) 。位姿增量: (δxt,δyt,δθt) ,将T时刻的激光数据经 (δxt,δyt,δθt) 变换到T-1时刻T。

这里写图片描述
移动到上时刻Free Space 的物体可以得出是一个Violation,即动态物体。不过存在图中黄色的圆不能被检测到的问题。物体远离机器人运动不会进入到Free Space。解决办法:将当前的激光数据与上一时刻对调,由T时刻的数据生成Free Space,然后检测T-1在T中的违背点,如下图,最后由里程计数据把上一时刻检测到的动态点对应到当前时刻。
这里写图片描述

Free Space生成

如何处理激光数据生成Free Space

Bounded Minimization Operator

激光数据 r(i) i 是激光的索引。对第 i 个激光点,确定一个边界 δ ,

r(i)=min{r(iδ),,r(i+δ)}

因为激光数据本身会有误差,还要进行一个收缩操作:

r(i)=r(i)dis

dis 是根据激光性能设置的一个很小的数。白色的激光数据收缩后生成如下图中红色的数据。
这里写图片描述
因为里程计数据和激光数据来自不同的数据源,考虑数据到达的时间问题,需要考虑多帧的数据。

Find Violations

对一帧激光点的每一个索引 i ,判断是否在另一帧的Free Space中,判断方法就是一个点是否在闭合的多边形内。如果在,则 flag(i) 是1;得到全部的标识后滤除010这种噪声点。得到违背点,然后结合激光片段的分析,得到动态的物体。

如下图中粗的绿色的点,是运动中的人,在机器人的移动过程中检测到。

这里写图片描述

Notes

1、在实现收缩的时候(自己曾经的BUG),考虑t-1 -> t的时候收缩t-1是 r(i)=r(i)dis ;t -> t -1的时候”收缩“t是 r(i)=r(i)+dis
2、其实动态也是一种”特征“,在动态检测的时候可以考虑其他”特征“

有问题可加群 (移动机器人导航与控制群:199938556) 讨论交流,进群修改备注。

猜你喜欢

转载自blog.csdn.net/Nksjc/article/details/72848277