Git Product home page Git Product logo

monolanemapping's Introduction

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.

CLIPPER

Follow the modified version to install CLIPPER 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 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

Citation

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={}}

License

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

monolanemapping's People

Contributors

qiaozhijian avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.