着重介绍通过对三维 PCD 点云进行处理生成 2D 栅格地图 PGM,而后将该 PGM 地图充分运用到无人系统路径规划之中,使得无人机能够依据此规划合理避开飞行路线上可能出现的障碍物。(解决如何使用PGM的问题)
Hybrid A*算法
参考博客:
Hybrid A*——ROS实现带有车辆运动学约束的路径规划算法_ros hybrid a*-CSDN博客
GitHub - zm0612/Hybrid_A_Star: Hybrid A Star algorithm C++ implementation
nvidia@Xavier-NX:~$ mkdir -p ~/hy_astar/src
nvidia@Xavier-NX:~$ cd hy_astar/
nvidia@Xavier-NX:~/hy_astar$ cd src/
nvidia@Xavier-NX:~/hy_astar/src$ catkin_init_workspace
Creating symlink "/home/nvidia/hy_astar/src/CMakeLists.txt" pointing to "/opt/ros/melodic/share/catkin/cmake/toplevel.cmake"
nvidia@Xavier-NX:~/hy_astar/src$ git clone https://github.com/zm0612/Hybrid_A_Star.git
正克隆到 'Hybrid_A_Star'...
如果下载不了就多下载几次
都是网络问题!
里面存在了一些pgm文件和png文件,将自己的.pgm文件和.yaml拷贝在这个文件夹里面:
然后进行编译:
nvidia@Xavier-NX:~/hy_astar$ catkin_make
运行launch文件
source devel/setup.bash
roslaunch hybrid_a_star run_hybrid_a_star.launch
如果运行报错,可能是yaml文件没有设置初始姿态:
修改yaml里面的部分值即可:
image: map.pgm
resolution: 0.5 # 按着自己的栅格地图的分辨率进行改
# 初始姿态需要是这个值,如果你的yaml文件不是,改为这个值
origin: [ 0.0, 0.0, 0.0 ]
# 下面就用这个里面的参数,也可以试一下自己的yaml参数
occupied_thresh: 0.1
free_thresh: 0.05
negate: 0
结果:
用github里自带的栅格地图进行规划:
用自己的点云导出的栅格地图进行规划,也能成功 :
点云生成栅格地图可以看我的上一篇文章:
无人机避障——4D毫米波雷达从PCD点云到二维栅格地图-CSDN博客
测试成功!
无人机跟无人车只是模型不一样,道理一样。
接下来就是将代码如何读取pgm文件并将其建立无人机能够识别障碍这块代码进行详细的分析 !!!。