hogeol / lidar_localizer

5 stars 2 forks source link

lidar_localizer

How to install third party

geographic library

follow below link to download geographic library

https://github.com/geographiclib/geographiclib

Open terminal

cd
mkdir libraries
cd libraries
git clone --recursive https://github.com/geographiclib/geographiclib.git
cd geographiclib
mkdir build && cd build
cmake ../
make -j$(nproc-4)
sudo make install

Others

Ohter third party packages are included in this repository.

Execution

Configuration launch file

roslaunch lidar_localizer ndt_based_localizer.launch

In arguments ndt_max_thread.

Many thread is not always good results.

In my case, CPU i7-12700KF have 20-threads.

but, Compare between thread 12 and above, it seems it doesn't have any difference in performance.

I think it is almost same above 12-thread.

In my case in ch.32 velodyne with car velocity is about 120km/h, performed well.

Please find your best threads through experience.

Recommend that at least 4 thread are left for other process

GNSS to UTM conversion

Using geographic library for GNSS to UTM conversion.
Please check your UTM zone and implement at utm_zone parameter in launch file. (south korea is 52)


Result

Result compared with Ground truth


<Green line is localization result with LiDAR, Red line is ground truth>

<Green line is localization result with LiDAR, Blue line is ground truth>
<Using dlo slam to make point cloud map (direct_lidar_odometry)>

Result without any filter

<Without any filter, the localizer only performed accurately up to 40kph>

Result with Exponential weight filter

<With Exponential weight filter, the localizer can performed accurately up to 120kph>

Future Work

Filters

  1. LiDAR input date pre-correction is needed if possible.
    (X-axis based on robot frame is slightly late compared with input data. Currently, it is covered with Exponential weight filter.)
  2. Extended Kalman filter is needed for more accurate localizer.