Skip to content

KevinLADLee/carla_dataset_tools

Repository files navigation

🚗 CARLA Dataset Tools

Python CARLA License

📦 A comprehensive data collection and labeling toolkit for CARLA Simulator

Data collection and labeling tools for CARLA Simulator. This toolkit provides an efficient pipeline for generating high-quality autonomous driving datasets with support for multiple sensor types and standard dataset formats.

⚠️ Important: All raw data generated by this tool uses a right-hand coordinate system.

🌟 This work is part of the CarlaFLCAV project. Feel free to give us a star!


✨ Key Features

  • Multi-Sensor Support: RGB Camera, Semantic Segmentation, LiDAR, Semantic LiDAR, Radar, IMU, GNSS
  • V2X Communication: Vehicle-to-Everything (V2X) sensor support for V2V and V2I scenarios
    • V2X CAM sensors (ETSI standard) for automatic message generation
    • V2X Custom sensors for manual message broadcasting
    • Realistic wireless channel modeling with path loss simulation
  • Infrastructure Support: Roadside unit (RSU) simulation for V2X scenarios
    • Static infrastructure actors with sensor attachment
    • One-way message broadcasting from infrastructure to vehicles
    • Support for V2I (Vehicle-to-Infrastructure) communication
  • Multiple Dataset Formats: KITTI Object, YOLOv5, Argoverse
  • Flexible Configuration: YAML-based configuration with validation
  • Route Editor: Interactive tool for creating custom vehicle routes with topology-aware path planning
  • BEV Map Capture: Tool for generating bird's-eye view maps of entire CARLA maps
  • Synchronized Recording: Synchronized multi-vehicle and multi-sensor data collection
  • Visualization Tools: Built-in point cloud and data visualization utilities
  • Autopilot Integration: Automatic vehicle control using CARLA's traffic manager

🚀 30-Second Quick Start

# 1. Clone and install
git clone https://github.com/KevinLADLee/carla_dataset_tools.git
cd carla_dataset_tools
pip3 install -r requirements.txt

# 2. Set environment variable
export CARLA_ROOT=/path/to/your/carla

# 3. Start CARLA
cd $CARLA_ROOT && ./CarlaUE4.sh

# 4. Record data (in a new terminal)
cd carla_dataset_tools
python3 data_recorder.py --profile kitti

# 5. Generate labels 
python3 label_tools/kitti_objects_label.py -r record_YYYY_MMDD_HHMM -v vehicle_1st

# 6. Visulize output dataset
python3 tools/viz_lidar.py --type kitti --source dataset/record_YYYY_MMDD_HHMM/vehicle_1st/kitti_object/training/velodyne

📚 Documentation

For Users

User Guide - Complete installation and usage guide

  • Installation and prerequisites
  • Recording data with different profiles
  • Route Editor - Create custom vehicle routes interactively
  • Generating labels (KITTI, YOLOv5, Argoverse)
  • Data visualization
  • Troubleshooting

中文用户指南 - 完整的安装和使用指南

For Developers

Developer Guide - Technical documentation for developers

  • Architecture overview
  • Configuration system details (maps, weather, sensors)
  • API reference
  • Extending the toolkit
  • Development workflow

中文开发者指南 - 开发者技术文档


⚙️ Configuration Profiles

Pre-configured profiles for different dataset styles:

  • default - General purpose with multiple vehicles and sensors
  • kitti - KITTI-style (Velodyne HDL-64E, standard cameras)
  • argoverse - Argoverse-style with ring cameras
  • simple - Minimal configuration for testing
  • route_example - Demonstrates vehicle route following feature
  • v2x_test - V2X communication testing (V2V and V2I scenarios)
  • bev - Bird's-eye view camera configuration for map capture
# List available profiles
python3 tools/config_list.py

# Use a profile
python3 data_recorder.py --profile kitti

# Create custom vehicle routes
python3 tools/editor_route.py --map Town02 --name my_route

# Capture BEV map of entire CARLA map
python3 tools/capture_map_bev.py --map Town02 --output ./bev_output

# Validate a configuration
python3 tools/config_validate.py --profile kitti

See Developer Guide for complete configuration reference.


📊 Supported Dataset Formats

  • KITTI Object Detection - 3D bounding boxes with calibration
  • YOLOv5 - 2D bounding box annotations
  • Argoverse - Ring camera setup (experimental)

🔧 Prerequisites

  • CARLA Simulator >= 0.9.16
  • Python >= 3.8
  • Operating System: Linux (recommended) / Windows

Download CARLA: https://github.com/carla-simulator/carla/releases


📁 Project Structure

carla_dataset_tools/
├── config/                      # Configuration management
│   ├── config_manager.py        # YAML config loader and validator
│   └── profiles/                # Pre-configured profiles (default, kitti, argoverse, simple, route_example)
├── docs/                        # Documentation
│   ├── USER_GUIDE.md            # User guide (English)
│   ├── USER_GUIDE_CN.md         # User guide (Chinese)
│   ├── DEVELOPER.md             # Developer guide (English)
│   └── DEVELOPER_CN.md          # Developer guide (Chinese)
├── label_tools/                 # Labeling scripts (KITTI, YOLO, Argoverse)
├── recorder/                    # Core recording modules
├── routes/                      # Vehicle route definitions (YAML + PKL)
├── core/                        # Core shared modules (geometry, transform, logger)
├── tools/                       # CLI utility scripts
│   ├── editor_route.py          # Route editor
│   ├── capture_map_bev.py       # BEV map capture tool
│   ├── viz_lidar.py             # LiDAR visualization
│   └── ...                      # Other utilities
└── data_recorder.py             # Main recording script

🤝 Contributing

Contributions are welcome! Areas for contribution:

  • Additional dataset format support (nuScenes, Waymo, etc.)
  • Enhanced documentation and examples
  • Bug fixes and performance improvements
  • New sensor types or features

Please submit pull requests to the main repository.


📖 Citation

If you use this tool in your research, please cite:

@article{wang2022federated,
  title={Federated deep learning meets autonomous vehicle perception: Design and verification},
  author={Wang, Shuai and Li, Chengyang and Ng, Derrick Wing Kwan and Eldar, Yonina C and Poor, H Vincent and Hao, Qi and Xu, Chengzhong},
  journal={IEEE network},
  volume={37},
  number={3},
  pages={16--25},
  year={2022},
  publisher={IEEE}
}

🙏 Acknowledgements

This project builds upon:


📄 License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.


📮 Contact & Support


⭐ If this project helps your research, please give us a star! ⭐

🏠 Home📖 User Guide🔧 Developer Guide🐛 Report Bug