hdl_localization+move_base(Ubunbtu18.04 melodic)

最近对AMCL定位算法进行了一点改进,旨在提高AMCL算法的定位精度和稳定性。除了考虑AMCL原算法比较以外,考虑到了和hdl_localiazation进行一下对比,验证一下改进后的AMCL算法的定位效果。 

之所以考虑和hdl_localization算法进行对比主要有以下几个因素:一是传感器选型,都可以基于三维激光雷达进行定位使用;二是定位方式,二者都基于粒子滤波框架。

该定位方法最好和hdl_slam配套使用,可以保证地图坐标系一致。

1 hdl_localization安装与使用

1.1 hdl_localization安装

开创工作空间和src环节就跳过了,首先:

cd /工作空间/src

git clone https://github.com/koide3/ndt_omp

git clone https://github.com/SMRT-AIST/fast_gicp --recursive

git clone https://github.com/koide3/hdl_localization

git clone https://github.com/koide3/hdl_global_localization

然后在/src/hdl_global_localization/CMakeLists.txt下添加:

set(CMAKE_CXX_FLAGS "-std=c++11")
set(CMAKE_CXX_FLAGS "-std=c++14")

接着:

cd /工作空间

catkin_make -DCMAKE_BUILD_TYPE=Release

笔者是做了这些工作就编译通过了,当时参考了一篇文章链接如下:

https://blog.csdn.net/qq_47093464/article/details/117653955https://blog.csdn.net/qq_47093464/article/details/117653955

1.2 hdl_localization使用

在使用前,我们需要对hdl_localization.launch文件进行修改,主要包括点云话题(结合自己使用的激光雷达类型),雷达坐标系名称(也是依据激光雷达类型修改),IMU话题(Gazebo仿真时用到的是/imu/data),以及地图PCD文件加载路径和命名。

如果选择在仿真环境下进行研究,hdl_localization.launch文件开头加:

具体可以参照上述链接,里面介绍较为完整。

然后就可以在工作空间下打开终端,刷新环境变量后,输入下列语句开始使用算法:

roslaunch hdl_localization hdl_localization.launch

2 hdl_localization+move_base测试

2.1 原理简析

笔者是在Gazebo仿真环境下录制点云数据和IMU数据,然后使用lego_loam算法生成地图PCD文件,然后利用hdl_localization进行定位,结合move_base进行路径规划,发布速度指令从而完成导航。

hdl_localization定位算法发布/odom话题,其中包含了估计的激光雷达相对于map的坐标变换。具体可以参考下面链接进行了解:

https://blog.csdn.net/qq_21751281/article/details/125135548https://blog.csdn.net/qq_21751281/article/details/125135548笔者的初步理解,该定位算法是基于UKF框架对激光里程计和IMU进行融合,从而实现定位。

2.2 测试结果

定位的连续性、点云匹配过程中的抖动、以及UKF受噪音干扰可以优化。

你可能感兴趣的:(c++,开发语言)