Skip to content

Commit 2bd9036

Browse files
committed
feat(av2): set pc as sensor coordinate-based.
for ray-casting to have correct starting point from sensor but not the base link of car. docs(reminder) on set absolute path when run process data ref link: KTH-RPL/DeFlow#5 (comment)
1 parent 2e56794 commit 2bd9036

2 files changed

Lines changed: 8 additions & 2 deletions

File tree

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ Download tips in [dataprocess/README.md](dataprocess/README.md#argoverse-20)
5656

5757
### Prepare Data
5858

59-
Normally need 10-45 mins finished run following commands totally (my computer 15 mins, our cluster 40 mins).
59+
Normally need 10-45 mins finished run following commands totally (my computer 15 mins, our cluster 40 mins).
60+
Kindly reminder: Please provide the absolute path for the data_dir and output_dir.
6061
```bash
6162
python dataprocess/extract_av2.py --av2_type sensor --data_mode train --argo_dir /home/kin/data/av2 --output_dir /home/kin/data/av2/preprocess
6263
python dataprocess/extract_av2.py --av2_type sensor --data_mode val --mask_dir /home/kin/data/av2/3d_scene_flow

dataprocess/extract_av2.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from av2.datasets.sensor.av2_sensor_dataloader import convert_pose_dataframe_to_SE3
1919
from av2.structures.sweep import Sweep
2020
from av2.structures.cuboid import CuboidList, Cuboid
21-
from av2.utils.io import read_feather
21+
from av2.utils.io import read_feather, io_utils
2222
from av2.map.map_api import ArgoverseStaticMap
2323
from av2.geometry.se3 import SE3
2424
from av2.datasets.sensor.constants import AnnotationCategories
@@ -83,11 +83,16 @@ def create_eval_mask(data_mode: str, output_dir_: Path, mask_dir: str):
8383

8484
def read_pose_pc_ground(data_dir: Path, log_id: str, timestamp: int, avm: ArgoverseStaticMap):
8585
log_poses_df = read_feather(data_dir / log_id / "city_SE3_egovehicle.feather")
86+
# more detail: https://argoverse.github.io/user-guide/datasets/lidar.html#sensor-suite
87+
ego2sensor_pose = io_utils.read_ego_SE3_sensor((data_dir / log_id))['up_lidar']
8688
filtered_log_poses_df = log_poses_df[log_poses_df["timestamp_ns"].isin([timestamp])]
8789
pose = convert_pose_dataframe_to_SE3(filtered_log_poses_df.loc[filtered_log_poses_df["timestamp_ns"] == timestamp])
8890
pc = Sweep.from_feather(data_dir / log_id / "sensors" / "lidar" / f"{timestamp}.feather").xyz
8991
# transform to city coordinate since sweeps[0].xyz is in ego coordinate to get ground mask
9092
is_ground = avm.get_ground_points_boolean(pose.transform_point_cloud(pc))
93+
94+
# NOTE(SeFlow): transform to sensor coordinate, since some ray-casting based methods need sensor coordinate
95+
pc = ego2sensor_pose.inverse().transform_point_cloud(pc)
9196
return pc, pose, is_ground
9297

9398
def compute_sceneflow(data_dir: Path, log_id: str, timestamps: Tuple[int, int]) -> Dict[str, Union[np.ndarray, SE3]]:

0 commit comments

Comments
 (0)