HKUST-Aerial-Robotics / MonoLaneMapping

Online Monocular Lane Mapping Using Catmull-Rom Spline (IROS 2023)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MonoLaM

Introduction

overview This is the official code repository of "Online Monocular Lane Mapping Using Catmull-Rom Spline", which is accepted by IROS'23.

MonoLaM (Monocular Lane Mapping) is an online lane mapping algorithm based on a monocular camera. It takes real-time images and odometry (such as from VIO), and estimates its own pose as well as the lane map.

Its main features are:

  • MonoLaM uses a monocular 3D lane detection network to obtain 3D lane marking measurements.
  • Lane association using a combination of Chamfer distance, pose uncertainty, and lateral sequence consistency.
  • The lane marking is parameterized by the Catmull-Rom Spline, which saves the map memory.
  • Initializing control points for unordered lane line point clouds.
  • Incrementally extending and optimizing the lane map.
example

Prerequisites

ROS

Follow the official guide to install ROS1.

Python Dependencies

pip install -r requirements.txt

GTSAM

Follow the official guide to install GTSAM with Python Bindings.

OpenLane ROS Package

mkdir -p catkin_ws/src
cd catkin_ws/src
git clone https://github.com/qiaozhijian/openlane_bag.git

Build

git clone https://github.com/HKUST-Aerial-Robotics/MonoLaneMapping.git
cd ..
catkin_make

OpenLane Example

We validate the method based on the OpenLane dataset. Users need to download this dataset and the rosbags we provide after preprocessing with openlane_bag.

Specifically, we use PersFormer to predict 3D lane markings and save them along with GT and calibration parameters (Details). The camera coord sys (OpenLane) is x-front, y-left, z-up. However, you may feel confused if you want preprocess by yourself using PersFormer. Because its camera coord sys is different from OpenLane (please refer to issue 24.

Rosbag download link [OneDrive][Baidu Cloud]

Unzip the downloaded file and put it in the OpenLane dataset folder.

├── OpenLane
│   └── lane3d_1000
│       ├── rosbag
│       └── test
│       └── validation
│       └── training

Modify the config/lane_mapping.yaml file to change the dataset path.

dataset:
    name: "openlane"
    dataset_dir: "/media/qzj/Document/datasets/OpenLane/"

Quick Start

python examples/demo_mapping.py --cfg_file=config/lane_mapping.yaml

Reproduce the results in the paper

#In this step, users need to download the original [OpenLane](https://github.com/OpenDriveLab/OpenLane) dataset and merge it with our provided dataset.
cd src/MonoLaneMapping
# lane mapping and save the results
python examples/mapping_bm.py --cfg_file=config/lane_mapping.yaml
# evaluation of lane recall and precision
python examples/openlane_eval3d.py --cfg_file=config/lane_mapping.yaml
# lane association evaluation
python examples/lane_association.py --cfg_file config/lane_association.yaml --bm

Toy example for curve fitting

python examples/demo_curve_fitting.py

Citation

If you find this work useful in your research, please consider citing:

@inproceedings{qiao2023online,
  title={Online monocular lane mapping using catmull-rom spline},
  author={Qiao, Zhijian and Yu, Zehuan and Yin, Huan and Shen, Shaojie},
  booktitle={2023 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
  pages={7179--7186},
  year={2023},
  organization={IEEE}
}

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

Online Monocular Lane Mapping Using Catmull-Rom Spline (IROS 2023)

License:MIT License


Languages

Language:Python 99.7%Language:CMake 0.3%