根据激光雷达点云中点的坐标计算ring的值

目前velodyne系列的激光雷达已经会提供ring的值,

所谓ring的值,就是每个点是几束光发出来的。

参考这个图

在这里插入图片描述

那如果没有提供的话,就需要自己来算 ring的值了.

下面是一段参考代码.


        # read binary data
        scan = (np.fromfile(velo_filename, dtype=np.float32)).reshape(-1, 4)

        # get ring channel
        depth = np.linalg.norm(scan, 2, axis=1)
        pitch = np.arcsin(scan[:, 2] / depth) # arcsin(z, depth)
        fov_down = -24.8 / 180.0 * np.pi
        fov = (abs(-24.8) + abs(2.0)) / 180.0 * np.pi
        proj_y = (pitch + abs(fov_down)) / fov  # in [0.0, 1.0]
        proj_y *= 64  # in [0.0, H]
        proj_y = np.floor(proj_y)
        proj_y = np.minimum(64 - 1, proj_y)
        proj_y = np.maximum(0, proj_y).astype(np.int32)  # in [0,H-1]
        proj_y = proj_y.reshape(-1, 1)

这里面有两个超参24.8, 2.0 分别代表着光束的最下边那束光与水平线的夹角,与最上面那束光与水平线的夹角,一般都是下面的大,上面的小,因为光打到空中也没啥用。
这两个参数是kitti中的,这也是为什么kitti的激光雷达基本上都是下面的点偏多.

上面的计算也非常的容易懂,
就是先算出pitch, 然后看pitch占整个 光束张角的比例,注意这时候算的时候,pitch要加上下张角,估计是因为最下面那束光的标号是0(对于kitti而言.)

然后根据比例以及总线数,算出来大致是在哪一个光束.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值