MCPcopy Create free account
hub / github.com/ailab-hanyang/Radar4Motion

github.com/ailab-hanyang/Radar4Motion @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
148 symbols 204 edges 30 files 11 documented · 7% updated 13mo ago★ 227

Browse by type

Functions 123 Types & classes 25
What it actually does AI analysis from the code graph — generated when you open this
loading…
README
<a href="https://ieeexplore.ieee.org/abstract/document/10715681" style="text-decoration:none;">
<img src="https://img.shields.io/badge/Paper-T--IV-blue"/></a>

Radar4Motion: IMU-Free 4D Radar Odometry with Robust Dynamic Filtering and RCS-Weighted Matching

Radar4Motion is a robust odometry method that utilizes Doppler and RCS information from the 4D imaging radar's point cloud, even in the presence of noisy and sparse point cloud data.

View-of-Delft Dataset Seq 03

View-of-Delft Dataset Seq 17

  • The above gif shows ONLY odometry-based mapping results.
    • NO inertial sensor, NO GNSS sensor, NO loop-closure
    • Only Single front-view 4D Imaging Radar!

Prerequisites

To run this project, you need: - ROS (Robot Operating System), tested with ROS Noetic - Eigen3, for matrix and vector operations - PCL (Point Cloud Library), for handling radar point cloud data - nlohmann_json, for JSON parsing

Installation

Clone the Repository

cd ~/catkin_ws/src
git clone https://github.com/ailab-hanyang/Radar4Motion.git

Build the Project

Using catkin, set up your workspace and build the project:

cd ~/catkin_ws
catkin_make
source devel/setup.bash

Using the View-of-Delft (VoD) Dataset

If you want to evaluate Radar4Motion with the View-of-Delft (VoD) dataset, please do the following:

  1. Download or place the VoD dataset in your preferred location.
  2. Set VoD datset path str_vod_dataset_base_path in /launch/radar4motion_offline.launch.

    • OR, create a symbolic link inside the dataset/ folder so the code can locate VoD data under dataset/view_of_delft_PUBLIC.
    • Set <param name="str_vod_dataset_base_path" value="$(find radar4motion)/dataset/"/>
    • For example: sh cd ~/catkin_ws/src/Radar4Motion mkdir -p dataset ln -s /path/to/view_of_delft_PUBLIC dataset/

      Folder tree: sh Radar4Motion/ ├── src/ │ ├── .cpp files.. └── dataset/ └── clips/ └── view_of_delft_PUBLIC/ -> symlink to /path/to/view_of_delft_PUBLIC ├── radar/ │ ├── training/ │ │ ├── velodyne/ │ │ │ ├── (bin files) │ │ ├── pose/ │ │ │ ├── (label files)

  3. Create a test folder for evaluation (option) sh cd ~/catkin_ws/src/Radar4Motion mkdir -p test

Usage

To start the radar odometry processing, launch the provided ROS launch files: (Deactivate any active conda environment.) - View-of-delft dataset sh cd ~/catkin_ws/src source devel/setup.bash roslaunch radar4motion radar4motion_offline.launch - ROS topic sh cd ~/catkin_ws/src source devel/setup.bash roslaunch radar4motion radar4motion_online.launch - Note: The accumulated scans-to-submap matching algorithm requires precise sensor-vehicle calibration.
Therefore, you must accurately set the following parameters in the ./config/radar_point_cloud_odometry.ini file according to your environment:

```sh
m_d_radar_calib_x_m = 3.5
m_d_radar_calib_y_m = 0.0
m_d_radar_calib_z_m = 0.0
m_d_radar_calib_roll_deg = 1.0
m_d_radar_calib_pitch_deg = -0.568
m_d_radar_calib_yaw_deg = 0.43
```

- In particular, for the View-of-Delft (VOD) dataset, exact sensor-vehicle calibration values are not provided by the dataset.
- Hence, we have set approximate values based on the sensor mounting position and vehicle images. These values will be updated in the future through our ongoing *radar4selfcalibration* research, which will estimate these parameters more accurately.

Configurations

Detailed descriptions of parameters can be found in PARAMETERS. 1. ROS & File path configuration - File: /launch/radar4motion_[offline/online].launch 2. Radar ego motion estimation (ref: REVE) - File: /config/radar_ego_motion_estimation.ini 3. Odometry - File: /config/radar_point_cloud_odometry.ini

TODO

  • [ ] Update voxel struct (frame-scan unit)
  • [ ] Update VoD calibration params with Radar4SelfCalibration

License

This project is licensed under the Apache-2.0 License - see the LICENSE.md file for details.

Authors

  • Soyeong Kim - soyeongkim@hanyang.ac.kr
  • Jiwon Seok - jiwonseok@hanyang.ac.kr

Citation

If you find this work useful, please cite the following paper:

@article{kim2024radar4motion,
title={Radar4Motion: IMU-Free 4D Radar Odometry with Robust Dynamic Filtering and RCS-Weighted Matching},
author={Kim, Soyeong and Seok, Jiwon and Lee, Jaehwan and Jo, Kichun},
journal={IEEE Transactions on Intelligent Vehicles},
year={2024},
publisher={IEEE}
}

Acknowledgement

We would like to express our gratitude to all the contributors and resources that made this research possible. - In the development of this package, we refer to KISS-ICP and REVE for source codes. - Dataset: View-of-Delft (VoD) - Evaluation: evo package for odometry evaluation

Core symbols most depended-on inside this repo

Shape

Method 101
Class 24
Function 22
Enum 1

Languages

C++100%

Modules by API surface

include/radar4motion/ini_handler_cpp/ini.h26 symbols
src/core.cpp20 symbols
src/radar4motion/odometry.cpp11 symbols
include/radar4motion/kiss-icp/Registration.cpp9 symbols
include/vod_utils/vod_parse_utils.cpp8 symbols
include/radar4motion/ini_handler_cpp/c_ini.hpp7 symbols
include/ego_motion_estimator/ego_motion_estimator.cpp7 symbols
include/radar4motion/preprocessing.hpp6 symbols
include/radar4motion/kiss-icp/VoxelHashMap.cpp6 symbols
src/radar4motion/preprocessing.cpp5 symbols
include/radar4motion/odometry.hpp5 symbols
include/ego_motion_estimator/ego_motion_estimator.h5 symbols

For agents

$ claude mcp add Radar4Motion \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page