Add MAN TruckScenes data processing into codebase - #19
Conversation
No radar involved at this stage. will do it in DoGFlow pull request.
|
Some visualization record Sensor Setup
Raw point cloud dataHere are Here are
I visualize these by debugging, part code here, here are the commit for debug: OpenSceneFlow/dataprocess/extract_truckscenes.py Lines 180 to 189 in bf3f75a Ground Truth Flow VisLooks correct
Done. Now all should be good (similar comparison #5):
Estimate FlowI directly used the DeltaFlow waymo ckpt for inference on truckscenes, here are comparsion with gt flow: |
style: remove/comment all debug check, style to the final run version.
…efore you finished the ego_motion compute. * spend half-hour to find... what's wrong with pose_flow.... outside extraction.
|
Some notes for truckscene, I would strong recommend to run Range-wise EPE for truckscene since as last figure show <35m are few and too short for truckscene perception setup etc. Here is the brief review of the truckscenes trainval-set:
|
todo need check on the dufo label for truckscene later since it have multi-lidar.
There was a problem hiding this comment.
Pull Request Overview
This pull request integrates MAN TruckScenes dataset processing scripts into the codebase, adding support for a new dataset that follows nuScenes-style annotation patterns (2Hz annotations with 10Hz LiDAR data). The changes include the addition of a complete data processing pipeline for TruckScenes, configuration updates, and documentation improvements.
- Adds complete TruckScenes data processing script with multi-sensor LiDAR support
- Updates environment configuration to specify exact version of truckscenes-devkit
- Refactors common processing utilities to support multiple dataset formats
Reviewed Changes
Copilot reviewed 15 out of 15 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| dataprocess/extract_truckscenes.py | New complete data processing script for MAN TruckScenes dataset |
| dataprocess/misc_data.py | Adds utility functions and mapping dictionaries for TruckScenes processing |
| dataprocess/extract_nus.py | Refactors utility functions to be more generic for reuse across datasets |
| envsftool.yaml | Pins truckscenes-devkit to specific version for reproducibility |
| dataprocess/README.md | Adds comprehensive documentation for TruckScenes dataset processing |
| conf/others/truckscenes.toml | Adds ground segmentation configuration for TruckScenes |
| tools/visualization.py | Updates view file reference for demo purposes |
| assets/view/demo.json | Adds new demo view configuration file |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| sample_data = mants.get('sample_data', sample_data['next']) | ||
|
|
||
| if check_h5py_file_exists(output_dir/f'{log_id}.h5', timestamps[SelectedSensor[-1]]): | ||
| print(f'{log_id} already exists and all timestamps are , skip...') |
There was a problem hiding this comment.
The print message has a grammatical error with an incomplete sentence 'all timestamps are , skip...'. Should be 'all timestamps are present, skip...' or similar.
| print(f'{log_id} already exists and all timestamps are , skip...') | |
| print(f'{log_id} already exists and all timestamps are present, skip...') |
| # lidar_dt.append(np.ones(pc.shape[0]) * timestamp_diff * 1e-6) # microsecond to s | ||
| lidar_id.append(np.ones(pc.shape[0]) * lidar_id_cnt) | ||
| # lidar_center.append(ego2lidar_np[:3,3].T) # x, y, z | ||
| lidar_center.append(ego2lidar_np) | ||
| lidar_id_cnt += 1 | ||
|
|
||
| points = np.vstack(lidar_list) | ||
| # lidar_dt = np.hstack(lidar_dt) |
There was a problem hiding this comment.
Multiple commented-out lines suggest incomplete refactoring. Either remove these comments if they're no longer needed or implement the functionality if it's required.
| # lidar_dt.append(np.ones(pc.shape[0]) * timestamp_diff * 1e-6) # microsecond to s | |
| lidar_id.append(np.ones(pc.shape[0]) * lidar_id_cnt) | |
| # lidar_center.append(ego2lidar_np[:3,3].T) # x, y, z | |
| lidar_center.append(ego2lidar_np) | |
| lidar_id_cnt += 1 | |
| points = np.vstack(lidar_list) | |
| # lidar_dt = np.hstack(lidar_dt) | |
| lidar_id.append(np.ones(pc.shape[0]) * lidar_id_cnt) | |
| lidar_center.append(ego2lidar_np) | |
| lidar_id_cnt += 1 | |
| points = np.vstack(lidar_list) |
| closest_ind = np.argmin(np.absolute(ref_arr - query_int)) | ||
| closest_int = cast( | ||
| int, ref_arr[closest_ind] | ||
| ) # mypy does not understand numpy arrays | ||
| int_diff = np.absolute(query_int - closest_int) | ||
| return closest_ind, closest_int, int_diff |
There was a problem hiding this comment.
The function returns a tuple with three elements but the return type annotation only mentions two in the docstring. The docstring should be updated to mention all three return values: closest_ind, closest_int, and int_diff.
* docs(truckscene): starting update truckscene dataprocess. * feat(truckscene): debug-mdoe for the file, will clean it up. * feat(truckscenes): finished the version and test successfully. * !hotfix(pose): the pose save type must be float64! do not astype 32 before you finished the ego_motion compute. * docs(README): update readme and slurm process script for users . --------- Co-authored-by: ajinkyakhoche<ajinkyakhoche@users.noreply.github.com>
|
To run Getting the coordinate transformations right between the ego-vehicle, world, and various sensor frames can be a bit of a headache (even for authors, yes). To save others the trouble, here is a summary of the frames and the transformation logic that works: Coordinate Frame Summary:
Required Transformations:
A working implementation of these transformations for Truckscene can be found at the link below: OpenSceneFlow/process-mlidar.py Lines 187 to 204 in a7c10e5 Here is a sample of the resulting map (by uncomment here). OpenSceneFlow/process-mlidar.py Lines 207 to 210 in a7c10e5
For more on addressing challenges like sparse observations on highways, check out our work on HiMo. |
* docs(truckscene): starting update truckscene dataprocess. * feat(truckscene): debug-mode for the file, will clean it up. * feat(truckscenes): finished the version and test successfully. * !hotfix(pose): the pose save type must be float64! do not astype 32 before you finished the ego_motion compute. * docs(README): update readme and slurm process script for users . --------- Co-authored-by: ajinkyakhoche <ajinkyakhoche@users.noreply.github.com>







This pull request introduces support for the MAN-TruckScene dataset, updates documentation and scripts for dataset processing, and refines configuration for TruckScene. The changes improve usability and clarity for users working with multiple datasets, especially with the addition of MAN-TruckScene. The most important changes are grouped below by theme.
MAN-TruckScene Dataset Integration:
README.md, including download instructions, citation, and dataset statistics. Also updated dataset lists to include MAN-TruckScene with relevant links. [1] [2] [3]assets/slurm/data-process.shto process TruckScene data, and removed the old Argoverse2-specific script. [1] [2]conf/others/truckscenes.tomlfor TruckScene dataset preprocessing.Documentation and Citation Updates:
Configuration and Processing Improvements:
dataprocess/extract_nus.pyfor pose extraction, data resampling, and parallel processing, making it more general and robust. [1] [2] [3] [4] [5]Old Message:
This pull request integrates MAN-TruckScenes data processing scripts into the codebase.
This data is involved by DoGFlow, please check more info in DoGFlow paper.