LMSR-OMM
It constructs a novel HMM model with four types of emission probability factors. A lane marking map is established and associated with the SD map using HMM to build the SD+ map. In areas where the SD+ map exists, the vehicle can re-localize itself by the Iterative Closest Point (ICP) registration method for lane markings. Based on the association probability between adjacent lanes and roads, the probability factor of lane marking observation is obtained. The driving scenario recognition model is applied to generate the emission probability factor of scenario recognition, which improves the performance of map matching on elevated roads and the normal roads below them.
To generate the lane marking map, the system processes camera data through multi-lane tracking and associates it with the SD map.

Current online map matching algorithms are prone to errors in complex road networks, especially at Y-shaped bifurcations and multilevel road areas. This paper proposes an online Standard Definition (SD) map matching method assisted by lane marking mapping and driving scenario recognition based on the Hidden Markov Model (HMM). It effectively improves the accuracy of online map matching, especially on Y-shaped bifurcated roads and multilevel road areas.
Ablation studies confirm the critical role of lane marking (
| Category | Tool/Library Name | Recommended Version | Description |
|---|---|---|---|
| Operating System | Ubuntu (Linux) | 20.04 LTS | Long-term support version with abundant community resources, ensuring high compatibility and stability. |
| Development Tools | CMake | 3.20.0 | Supports modern C++ features, offering powerful and stable project building capabilities. |
| Development Tools | C++ | C++17 Standard | The core language version, ensuring compatibility with new features like structured bindings and fold expressions. |
| Libraries | HDF5 | 1.12.2 | Efficiently stores and manages large-scale data, with numerous performance and security improvements in this version. |
| Libraries | Eigen3 | 3.4.0 | A linear algebra library, with version 3.4.0 optimizing matrix operation performance. |
| Libraries | GeographicLib | 2.4 | A geographic coordinate calculation library, enhancing the accuracy of coordinate system transformations in this version. |
| Libraries | nlohmann_json | 3.11.2 | A JSON data processing library, providing simple and easy-to-use interfaces, with significant improvements in parsing efficiency in version 3.11.2. |
| Libraries | PCL | 1.12.1 | A point cloud processing library, adding multiple point cloud registration algorithms in version 1.12.1, fitting the project's lane positioning requirements. |
| Libraries | Boost | 1.78.0 | A general C++ library, with version 1.78.0 improving multi-threading and file system modules, enhancing project extensibility. |
Zenseact's proprietary map software and map dynamic libraries are required (commercial software, not open - source).
Use CMake for compilation.
mkdir build
cd build
cmake ..
make
Compile to generate the executable file hmm_madmap_node.
Then, you can achieve map matching under different parameters by modifying the config.yaml configuration.
Generating the lane marking map depends on libdateLoaderFeature and libmultiLaneTracking.
Then, set the ASSOCIATE_LANE_MODE in the config.yaml configuration to true to generate the lane marking map, and it can be used.
For OBDSC, you need to use the code and pre - trained models provided at https://figshare.com/articles/journal_contribution/Code_and_Data_of_OMM - OBDSC/21782267 in advance.
View our pre-print paper on arXiv: https://arxiv.org/abs/2505.05007
You can contact the main developer of the code via [email protected].