Some problems about sensor coord system

未关闭
#87 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
35/100
Issue 类型
文档
描述清晰度
需要澄清
活跃度
停滞
技术栈
jupyter-notebook, python

调研方向

从 get_sample_data 调用和所示的坐标变换代码块开始,然后比较 pose_record、cs_record、sensor_record 和 cam_intrinsic 的作用。对于每个传感器通道,明确记录坐标系的定义,以及返回的 box xyz 值(尤其是 z)的含义和单位,即表示完成。

由索引模型根据 Issue 内容生成。

描述

I try like this:

my_sample = level5data.get('sample', my_sample_token)
sensor_channel_list=['CAM_FRONT', 'LIDAR_TOP', 'CAM_BACK']
for sensor_channel in sensor_channel_list:
    my_sample_data = level5data.get('sample_data', my_sample['data'][sensor_channel])
    Path, box_list, cam_intrinsic = level5data.get_sample_data(my_sample_data['token'])
    print('{} channel path = {}'.format(sensor_channel, Path))
    if any(box_list):
        print('{} channel box = {}'.format(sensor_channel, box_list[0]))

I get the result like this:

CAM_FRONT channel path = J:\data\lyft\nuscenes-devkit\notebooks\..\..\perception\one_scene\train_images\host-a101_cam0_1241893239450000006.jpeg
CAM_FRONT channel box = label: nan, score: nan, xyz: [-17.98, 1.52, 27.38], wlh: [1.70, 3.89, 1.49], rot axis: [0.01, -0.70, 0.72], ang(degrees): 178.16, ang(rad): 3.11, vel: nan, nan, nan, name: car, token: 9f1434fa2688e89f7770958b13a24cb6b1d815a31ab1efb6346565799482d350
LIDAR_TOP channel path = J:\data\lyft\nuscenes-devkit\notebooks\..\..\perception\one_scene\train_lidar\host-a101_lidar1_1241893239502712366.bin
LIDAR_TOP channel box = label: nan, score: nan, xyz: [27.67, -16.85, -0.47], wlh: [1.55, 4.05, 1.41], rot axis: [-0.02, 0.03, 1.00], ang(degrees): -39.19, ang(rad): -0.68, vel: nan, nan, nan, name: car, token: fdfa2d9494bd4b2bc183522bc8a71ee02e0eeb451dfb5f91d057ffcdb8a8e7fc
CAM_BACK channel path = J:\data\lyft\nuscenes-devkit\notebooks\..\..\perception\one_scene\train_images\host-a101_cam3_1241893239500000006.jpeg
CAM_BACK channel box = label: nan, score: nan, xyz: [17.29, 0.37, 27.02], wlh: [1.55, 4.05, 1.41], rot axis: [0.84, -0.39, 0.38], ang(degrees): 101.59, ang(rad): 1.77, vel: nan, nan, nan, name: car, token: fdfa2d9494bd4b2bc183522bc8a71ee02e0eeb451dfb5f91d057ffcdb8a8e7fc

I feel confused about the xyz of the box_list[0], so I look into the source code.

box_list = []
for box in boxes:
        if flat_vehicle_coordinates:
            # Move box to ego vehicle coord system parallel to world z plane
            ypr = Quaternion(pose_record["rotation"]).yaw_pitch_roll
            yaw = ypr[0]

            box.translate(-np.array(pose_record["translation"]))
            box.rotate_around_origin(Quaternion(scalar=np.cos(yaw / 2), vector=[0, 0, np.sin(yaw / 2)]).inverse)

        else:
            # Move box to ego vehicle coord system
            box.translate(-np.array(pose_record["translation"]))
            box.rotate_around_origin(Quaternion(pose_record["rotation"]).inverse)

            #  Move box to sensor coord system
            box.translate(-np.array(cs_record["translation"]))
            box.rotate_around_origin(Quaternion(cs_record["rotation"]).inverse)

        if sensor_record["modality"] == "camera" and not box_in_image(
            box, cam_intrinsic, image_size, vis_level=box_vis_level
        ):
            continue

        box_list.append(box)

The parameter flat_vehicle_coordinates is False, so I think the final box_list‘s xyz is in sensor coord system.
But the result I find the z is 27.38 or 27.02 (m ?)
I want to know where to find the definition of each sensor coord system ? I'm confused about the result, especially the z axis.

Thanks for your contribution for this big dataset very much !

主要语言
Jupyter Notebook
星标
391
派生
99
PR 合并指标
30 天内没有已合并 PR

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

lyft/nuscenes-devkit 的其他 Issue

查看 lyft/nuscenes-devkit 的全部 Issue

相似的 Issue

更多 Autonomous Driving Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。