最近因工作需要,需要在已经建好的点云地图上对小车进行定位,目前地图已经建好,选取HDL作为定位算法。
HDL算法的github源码链接:https://github.com/koide3/hdl_localization
按照README.md中的步骤:
cd /your/catkin_ws/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
cd /your/catkin_ws
catkin_make -DCMAKE_BUILD_TYPE=Release
# if you want to enable CUDA-accelerated NDT
# catkin_make -DCMAKE_BUILD_TYPE=Release -DBUILD_VGICP_CUDA=ON
如果你希望使用cuda加速计算过程,使用如下语句进行编译:
catkin_make -DCMAKE_BUILD_TYPE=Release -DBUILD_VGICP_CUDA=ON
其中,测试用到的bag包链接为:www.aisl.cs.tut.ac.jp/databases/hdl_graph_slam/hdl_400.bag.tar.gz
除此之外,我将算法相关的所有代码与数据都上传到了网盘中。如果以上链接下载速度缓慢,也可以使用下面这个链接:
链接:https://pan.quark.cn/s/547f5c542578
在编译过程中,遇到了一些问题:
‘file‘ object has no attribute ‘push‘/safe_execute_process.cmake:11
主要是由于使用了ubuntu18.04系统自带的python2.7而导致的python版本太低的问题。使用如下的编译命令即可解决:
catkin_make -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3
根据个人情况,将其中 /usr/bin/python3 修改为自己的python3路径。我这里是使用了anaconda新建了condn环境。
之后又遇到了缺少一些python三方库的问题,我这里遇到的是 yaml 库和empy库。
使用如下命令即可安装:
pip install pyyaml
pip install empy==3.3.4
注意,empy库要安装3.3.4版本,否则会出现'RAW_OPT'的经典错误。
编译通过:
之后需要另外启动roscore.
之后按照如下步骤:
终端1:
source devel/setup.bash
rosparam set use_sim_time true
roslaunch hdl_localization hdl_localization.launch
终端2:
source devel/setup.bash
roscd hdl_localization/rviz
rviz -d hdl_localization.rviz
终端3:
rosbag play --clock hdl_400.bag
这时就可以在rviz中看到定位效果啦!