首页 > 其他分享 >无人机避障——使用三维PCD点云生成的2D栅格地图PGM做路径规划

无人机避障——使用三维PCD点云生成的2D栅格地图PGM做路径规划

时间:2024-10-31 10:18:39浏览次数:3  
标签:astar hy Hybrid 2D 栅格 避障 nvidia Xavier

        着重介绍通过对三维 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文件并将其建立无人机能够识别障碍这块代码进行详细的分析 !!!。

标签:astar,hy,Hybrid,2D,栅格,避障,nvidia,Xavier
From: https://blog.csdn.net/weixin_45390670/article/details/143331809

相关文章

  • YOLOv6-4.0部分代码阅读笔记-iou2d_calculator.py
    iou2d_calculator.pyyolov6\assigners\iou2d_calculator.py目录iou2d_calculator.py1.所需的库和模块2.defcast_tensor_type(x,scale=1.,dtype=None): 3.deffp16_clamp(x,min=None,max=None): 4.defiou2d_calculator(bboxes1,bboxes2,mode='iou',is_align......
  • Qt开发:如何使用QPainter进行2D图形的绘制
    文章目录一、QPainter简介二、如何使用QPainter绘图三、QPainter的绘图区域四、QPainter的常用方法五、QPen的主要功能和属性六、QBrush的主要功能和属性七、QFont的主要功能和属性一、QPainter简介QPainter是Qt框架中的一个强大的绘图类,用于在各种设备上进行2D......
  • YOLOv8改进 | Conv篇 | 2024最新Kolmogorov-Arnold网络架构下的KANConv(包含九种不同类
    一、本文介绍本文给大家带来的改进机制是2024最新的,Kolmogorov-Arnold网络(ConvolutionalKANs),这种架构旨在将Kolmogorov-Arnold网络(KANs)的非线性激活函数整合到卷积层中,从而替代传统卷积神经网络(CNNs)的线性变换。与标准的卷积神经网络(CNN)相比,KANConv层引入了更多的参数,因......
  • ubuntu环境安装街机风格的太空飞船游戏(2D飞机射击游戏)游戏——Chromium_B.S.U.
    相关:https://en.wikipedia.org/wiki/Chromium_B.S.U.https://manpages.ubuntu.com/manpages/focal/en/man6/chromium-bsu.6.htmlhttps://launchpad.net/ubuntu/+source/chromium-bsu今天突然发现原来在ubuntu系统下面可以快速简单的安装《雷电》(街机风格的太空飞船游戏)游......
  • ESP32 使用 MAX98357 调用ESP-A2DP库播放蓝牙音乐
    ESP32-A2DP 库github链接:https://github.com/pschatzmann/ESP32-A2DP 硬件:ESP32+MAX989357+喇叭代码:(注意将其中的I2S引脚定义为自己的MAX98357相连接的引脚)最佳实践:在VSCode的PlatformIO的Library,查找ESP32-A2DP,然后将其安装进工程中。 #include"ESP_I2S.h"......
  • 题解:CF722D Generating Sets
    涉及知识点:set。解题思路每次让列表中最大的元素缩小两倍,保证答案最优。如果当前的元素缩小成$0$就直接跳出循环,输出这个序列。由于序列需要支持插入、删除以及找最大值,所以这个序列可以用set来维护。代码#include<bits/stdc++.h>#defineintlonglong#definell......
  • 明解c语言入门篇练习4-2do语句延伸
    明解c语言练习4-2我们可以看到题目:编写一段程序,像右面这样读取两个整数的值,然后计算出他们之间所有整数的和。上次我发了一段这个练习4-2的代码可以看一下#include<stdio.h>intmain(void){  inta,b,max,min;  intsum=0;  printf("请输入两个整数:......
  • M68LC302CAF20VCT,MMC2107CFCPU33,MC9S12UF32PUM,S9S12DJ12F1MPVEMCF52235CVM60MAC7121MA
    NXPSemiconductors公司的产品和技术还广泛应用于安全和身份验证领域,包括智能卡、支付系统、身份识别和生物识别技术。此外,该公司还在电源管理、射频技术和传感器领域拥有丰富的经验和专业知识。恩智浦的产品不仅提供高性能和创新的解决方案,还致力于保证产品的安全性。NXPSem......
  • 将NC栅格表示时间维度的数据提取出来的方法
      本文介绍基于Python语言,逐一读取大量.nc格式的多时相栅格文件,导出其中所具有的全部时间信息的方法。  .nc是NetCDF(NetworkCommonDataForm)文件的扩展名,表示一种常用的科学数据存储格式。NetCDF是一种自描述的、可移植的二进制文件格式,用于存储科学和工程领域的大型数据集......
  • Springboot计算机毕业设计城市轨道交通线路查询p2df3
    Springboot计算机毕业设计城本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能:用户,站点信息,交通线路,周边类型,周边信息开题报告内容一、研究背景随着城市化进程的加速,城市轨道交通系统作为城市交......