坡道上去地面

坡道上去地面

第 1 步的 remove_ground 按“离雷达多高”一刀切。路面一斜,这一刀就切错了。下面是假雷达在 4% 上坡上扫出来的一圈真实点(20016 个),一步一步看:一刀切错在哪,RANSAC 怎么把路面找出来。

拖动转视角 · 滚轮缩放

RANSAC 慢放:从侧面看,找一条贴着最多点的线

从侧面看,路面点排成一条斜线(灰),车和人的点竖在线上面(蓝)。侧面看只要 2 个点就能连成一条线;3D 里是 3 个点撑起一块板,道理一样。下面一次一次地试:随便抽 2 个点 → 连一条线 → 数有几个点贴着这条线(离它不到 15 厘米,就是线两边的浅绿带子)→ 记下来。全部试完,贴着的点最多的那条线就是路面。

路面上的点 车、人身上的点 这次抽到的 2 个点 连出来的线和它的“贴着”范围 贴着线的点(算一票)

第几次抽抽到的 2 个点贴着线的点

竖直方向放大了 4 倍。这里只画了 287 个点(路面 209 个、车和人 78 个),所以票数和上面 3D 里的 2 万个点不一样,道理一样。

三种情况放一起

路面点被当成障碍物DBSCAN 分出几堆(真的 5 个)召回率(门槛 2 米)精确率
平地,一刀切 z > −1.6050.600.60
上坡 4%,一刀切 z > −1.63371240.200.04
上坡 4%,RANSAC + 离路面 > 0.2 米050.600.60

召回、精确不是 1.00,是第 3 步的老问题:前车、左车道车只打到车尾,框中心偏 2.30 米,超过 2 米门槛。和去地面无关。数字都来自 python -m examples.a_stack.a5_slope(改第 23、24 行的坡度和方法)。