hdl_localization技术文档
hdl_localization是一个基于ROS的实时三维定位包,专为如Velodyne HDL32e和VLP16这样的3D激光雷达设计。它采用无迹卡尔曼滤波(UKF)进行姿态估计,结合了IMU数据初步估算传感器姿态,并通过多线程NDT(Normal Distributions Transform)扫描匹配进一步校正,提升定位精度。支持选择性地使用IMU信息,若不启用,则应用恒定速度模型。
安装指南
前提条件
确保您的系统已安装ROS(建议Melodic或更高版本)、PCL、OpenMP以及必要的编译工具。
步骤
-
克隆仓库:打开终端,进入您的catkin工作空间的
src
目录。cd /your/catkin_ws/src
接着,依次克隆所需的GitHub仓库:
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
-
构建与编译 使用
catkin_make
命令进行编译,可以选择开启CUDA加速。cd /your/catkin_ws catkin_make -DCMAKE_BUILD_TYPE=Release # 如需CUDA加速的VGICP # catkin_make -DCMAKE_BUILD_TYPE=Release -DBUILD_VGICP_CUDA=ON
Docker快捷方式
对于快速搭建环境,可以使用Docker,按照提供的指示操作即可。
项目使用说明
-
启动服务 在启动前,设置仿真时间(如果使用模拟数据),并启动
hdl_localization
节点:rosparam set use_sim_time true roslaunch hdl_localization hdl_localization.launch
-
可视化 使用RVIZ显示定位结果:
roscd hdl_localization/rviz rviz -d hdl_localization.rviz
-
播放示例数据 下载并播放提供的示例bag文件进行测试:
rosbag play --clock hdl_400.bag
-
全球重定位 当需要进行全球重定位时,调用服务:
rosservice call /relocalize
API使用文档与话题、服务
-
话题:
odom
: 输出的估计姿态,nav_msgs/Odometry类型。aligned_points
: 输入点云,经过地图对齐。status
: 扫描匹配状态信息,如收敛情况、匹配误差及内点比例。
-
服务:
/relocalize
: 服务调用来重置传感器姿态至全局定位结果。
示例与配置
定位过程中,如果遇到性能瓶颈或定位不稳定,修改hdl_localization.launch
中的ndt_neighbor_search_method
至"DIRECT1"可显著加快匹配速度。
相关资源与联系
hdl_localization与其他几个包一起构成一套完整的系统,可用于长期且大面积的人群行为测量等场景。作者Kenji Koide及其研究团队的联系方式可在文档末尾找到,更多技术支持和最新信息请访问其官方网站或直接通过邮件联系。
此文档旨在提供清晰、逐步的指导,帮助开发者和研究人员快速上手并有效利用hdl_localization进行激光雷达的实时定位任务。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考