Introduction
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.
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.