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.
Follow the official guide to install ROS1.
pip install -r requirements.txt
Follow the official guide to install GTSAM with Python Bindings.
Follow the modified version to install CLIPPER with Python Bindings.
mkdir -p catkin_ws/src
cd catkin_ws/src
git clone https://github.com/qiaozhijian/openlane_bag.git
git clone https://github.com/HKUST-Aerial-Robotics/MonoLaneMapping.git
cd ..
catkin_make
We validate the method based on the OpenLane dataset. Users do not need to download this dataset, they just need to download the data 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.
Download link [OneDrive][Baidu Cloud]
Unzip the downloaded file.
├── OpenLane
│ └── lane3d_1000
│ ├── rosbag
│ └── test
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
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/ascia_bm.py --cfg_file config/lane_association.yaml --bm
Toy example for curve fitting
python examples/demo_curve_fitting.py
If you find this work useful in your research, please consider citing:
@INPROCEEDINGS{qiao_monolam,
author={Zhijian Qiao, Zehuan Yu, Huan Yin and Shaojie Shen},
booktitle={2023 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
title={Online Monocular Lane Mapping Using Catmull-Rom Spline},
year={2023},
volume={},
number={}}
This project is licensed under the MIT License - see the LICENSE file for details.