PX4避障和轨迹规划(3DVFH*)

2023-05-16

采用伴侣计算机(Companion Computer)的方案,通过使用mavros的obstacle_distance插件订阅/mavros/obstacle/send话题,进而通过local_planner本地轨迹规划器实现局部路径规划。

参考如下链接:

官方说明:

Collision Prevention | PX4 User Guide

知乎上面搜的:

【px4】PX4/avoidance

PX4官方避障策略代码(基于ROS运行):

PX4/PX4-Avoidance

这里需要在mavros外部控制策略条件下,添加障碍物感知节点,并将/scan话题重映射到/mavros/obstacle/send这里

以下issue是关于如何添加LaserScan节点到mavros的(暂时不推荐使用,目前问题还未解决):

mapping LaserScan to obstacle_distance mavlink message · Issue #1082 · mavlink/mavros

注意:查看数据是否成功显示,可以通过查看mavlink数据流中的obstacle_distance对应的内容。

关于地面站是否能获得到障碍物距离信息相关问题:

mavros通过伴侣计算机发送的mavlink数据流传输对应的信息与第三方传感器直接通过串口连接到飞控的原理不完全一样,硬件通过串口连接到飞控是直接发送距离对应的信息,由飞控完成从距离信息到mavlink数据流的转换,而通过伴侣计算机发送的mavlink数据流则可以被飞控直接识别,因此地面站可以通过上述两种方式感知到障碍物距离信息。

关于Offboard模式下的避障策略相关问题:

Obstacle Avoidance | PX4 User Guide

硬件上机测试参考如下链接:

已知相关问题:

  1. 仿真的launch启动文件对应的px4_config.yaml路径不正确,需要手动改到avoidance对应的目录下。(代码更新后该路径已正确)

  2. D435跟官方提供的aeroD415启动文件一样,可以直接用这个D415的启动文件启动。(这个启动脚本不需要手动输入相机的序列号)

  3. 官方声明中提到的generate_launchfile.sh.deprecated这个脚本已经被废弃,但是该脚本生成的启动文件仍然能正常运行(不明白官方为什么要废弃该脚本)。

  4. avoidance避障节点启动的标志是在地面站上看到avoidance node is up信息(新版地面站点击左上角的绿色或黄色标志即可看到avoidance节点是否正常运行)。

  5. 深度相机安装方向为前方,无人机只能往相机视野范围内移动,因此飞机在mission/offboard模式下只能朝前方移动或者是偏航。其他方向无障碍物信息,飞机不可移动,摇杆操作滚转/后退均无效。具体查看障碍物信息可通过查看/mavros/obstacle/send信息。
    参考如下说明:

    it depends on the field of view of your sensors, at which angles do you get sensor coverage? And how is the data reported, e.g do you get one value per sensor at each timestep or do you actually get a range scan per sensor (and what would be the resolution of that).
    
    But as an example:
    I assume you have 6 sensors with fov 10deg, which all report one value per timestep. sensor 1 is located to the front of the drone and they are evenly spaced.
    
    then you should fill the message as follows:
    msg.frame = MAV_FRAME_BODY_FRD
    msg.increment = 10 (degrees, resolution)
    msg. angle_offset = -5 (degrees to shift, such the the fov of the first sensor is centered to the front of the drone)
    msg.distances = [data1, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX
    data2, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    data3, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    data4, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    data5, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    data6, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX]
    
    put UINT16_MAX where you do not have any sensor coverage. The drone will refuse to fly these directions
    msg.
    
  6. 关于TF坐标相关ERROR解决办法
    错误描述如下所示:

    TF Buffer: could not retrieve requested transform from buffer, unregistered
    

    issue链接如下:

    TF Buffer error when launching local_planer · Issue #471 · PX4/PX4-Avoidance

    解决办法如下:默认配置文件对应的fcu_url为127.0.0.1:14550,这里需要修改为/dev/ttyTHS2:921600
    如果该ERROR持续显示,一定要检查机载电脑与飞控连接情况。

  7. realsense t265和d435脚本合并问题
    avoidance节点调用的为rs_rgbd.launch,该脚本包含了realsense相机启动文件和相关的点云信息的调用。vision_to_mavros节点调用的是rs_t265.launch脚本,这两个脚本同时运行的时候会报错realsense_camera_manager,导致一个节点意外终止。
    解决办法:采用tools文件夹下的generate_launchfile.sh.deprecated脚本手动生成对应的配置文件,之后在配置文件中手动添加T265位姿对应的相关内容。(该做法虽然官方不推荐,但到目前为止官方并未说明如何修改已有的配置文件)

  8. USB3.0与GPS等机载设备干扰问题
    使用USB2.0或2.1的HUB或线缆,防止产生干扰。

  9. 飞行器当前视深度相机检测到障碍物时,飞行器只能操作高度、前进,和YAW。

  10. 避障系统提供途中关闭节点的功能,具体怎么做有待进一步查询。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PX4避障和轨迹规划(3DVFH*) 的相关文章

  • 【面试】嵌入式C语言题目整理

    面试 嵌入式C语言题目整理 描述内存四区 内存四区分为 xff1a 代码区 静态区 堆区 栈区 代码区就是用来存放代码的 静态区用来存放全局变量 静态变量 常量 xff08 字符串常量 const修饰的全局变量 xff09 堆区中的内存是由
  • 【总线】IIC学习笔记

    总线 IIC学习笔记 参考链接IIC总线介绍IIC总线时序1 空闲信号2 启动信号与停止信号3 数据的有效性4 应答信号5 七位地址传输 IIC读写过程 xff08 AT24C02举例 xff09 IIC读过程IIC写过程 正点原子IIC驱
  • 树莓派下载及安装PyCharm软件

    运行 PyCharm 需要 Java 环境 xff0c 如果树莓派上还没有安装过 JRE xff0c 可以使用以下命令安装即可 xff1a sudo apt install default jre y PyCharm 有专业版和社区版 专业
  • QT 建立透明背景图像QPixmap

    列将下面背景透明图片1转变成图片2 图1 图2 span class hljs preprocessor include 34 mainwindow h 34 span span class hljs preprocessor includ
  • putty 登录出现Network error: connection time out 解决方案

    今天用putty登录我的linux主机 出现Networkerror connection time out 然后我从linux系统上登录 xff0c 当是没法联网 xff0c pingwww baidu com 则提示 xff1a pin
  • 大端字节序与小端字节序的转换

    逐步加深对字节操作的理解 xff0c 记录一下大端字节序与小端字节序的转换 xff0c 开发环境是vs2010 xff0c 项目类型是控制台输出程序 xff0c 下面是代码实现 xff1a span class token comment
  • c++面试常见问题总结

    近来在面试的过程 xff0c 发现面试官在c 43 43 方面总是喜欢问及的一些相关问题总结 xff0c 当时没怎么答出来 xff0c 或者是答的不怎么全面 xff0c 故而查询相关资料总结下 后面实际工作会进行实时更新信息 lt 一 gt
  • Prometheus(普罗米修斯)架构及原理

    prometheus架构图 xff1a 如上 xff0c prometheus 采集数据的主要方式是 server 通过http请求去 主动拉取 数据 要完成以上需求 xff0c 必须满足以下条件 xff1a server必须知道各种 ex
  • mujoco强化学习模拟环境的安装(windows10)

    最近在学强化学习 xff0c 学长推荐用mujoco来做仿真环境 原本我是想照着教程安装的 结果最近mujoco被DeepMind收购了 xff0c 现在是开源的 xff0c 许多安装步骤都不太一样了 xff0c 所以我就写了这篇安装教程
  • Apple苹果寻物Airtag真实模型拆解及复现stp文件

    Apple苹果寻物Airtag真实模型拆解及复现stp文件 Airtag拆解复现对比 xff1a 欢迎下载stp结构源文件 xff0c 文件可编辑 xff0c 文件下载链接 xff1a https download csdn net dow
  • 使用STM32CubeMX 配置ADC+DAC(DMA)感受

    STM32CubeMX使用感受 开篇先说一下个人使用STM32CubeMX的感受 xff0c 第一点的感受就是STM32CubeMX加速了开发流程 xff0c ST官方的库写的很好 xff0c 在使用之前 xff0c 开发流程一般是打开如正
  • 订单系统设计 —— 重复下单

    一 重复原因 造成重复下单的原因有很多 xff0c 比如用户重复提交 网络超时导致的重试 xff08 网关超时重试 RPC超时重试 xff0c 以及前端超时重试等 xff09 xff0c 下单请求的整个链路都可能造成重复 xff0c 大致可
  • 额温枪查表算法

    目前额温枪这个东西特别火 xff0c 所以大家都在搞这个事情 xff0c 那我也来蹭个热度吧 大概的工作原理 xff1a 热电堆传感器 gt ADC gt MCU gt LCD显示 其实原理很简单 xff0c 那比较麻烦的事情就是温度补偿和
  • ESP32-IDF 使用VSCODE添加自己的头文件后无法找到的问题

    最近在学习esp32 xff0c 使用VSCODE进行开发 今天在添加自己的项目文件 xff0c 编译后 xff0c 系统提示找不到头文件 xff0c 找了很久 xff0c 最终在大佬同事的帮助下才解决 xff0c 这里记录一下 情况一 x
  • VMWARE安装VM TOOLS后依旧无法拖拉文件的解决方法

    utuntu版本 xff0c 18 04 5 安装虚拟机后又安装了vm tools 并且所有能配置的都配置了 但是依旧无法实现文件的拖拽 这些都配置了 xff0c 还是不行 命令安装vmtools时系统提示 open vm tools pa
  • windows bat脚本学习一(基础指令)

    1 pause 暂停批处理的执行并在屏幕上显示 34 请按任意键继续 34 例如 xff1a 改脚本执行结果为 xff1a 2 echo 显示指令 xff0c 会把需要显示的内容展示出来 例如 结果为 xff1a 3 echo off 在此
  • 常见导航坐标系定义

    常见坐标系 在导航系统中有几种常见的坐标系 xff1a 大地坐标系 xff0c 地心惯性参考系 xff0c 地心地固参考系 xff0c 切平面坐标系 xff0c 随体坐标系 其中大地坐标系和地心惯性参考系是非加速参考系 xff0c 不随地球
  • FreeRTOS学习一(简介)

    1 什么是FreeRTOS RTOS从名字上可以分为free和RTOS两部分 free是免费的意思 xff0c RTOS全称是Real Time Operation System xff0c 译为实时操作系统 那FreeRTOS的意思就是
  • FreeRTOS学习五(信号量)

    信号量是操作系统中重要的一部分 xff0c 信号量一般用来进行资源管理和任务同步 信号量分为二值信号量 计数型信号量 互斥信号量 不同信号量的应用场景也不同 xff0c 但是有些应用场景是可以互换着使用的 信号量简介 信号量常常用于控制对共
  • FreeRTOS学习七(事件标志组)

    RTOS中可以通过信号量来完成同步 xff0c 但是信号量只能与单个的事件或任务进行同步 有时某个任务可能会需要与多个事件或任务进行同步 xff0c 此时信号量就无法满足要求了 事件标志组就排上了用场 事件位 xff08 事件标志 xff0

随机推荐

  • 蓝牙学习二(连接和通讯简述)

    1 简介 蓝牙的通信是双向 的 xff0c 为了创建和维护一个BLE通信连接 xff0c 在蓝牙中引入了 角色 这一概念 xff0c 一个BLE设备不是主机 xff08 集中器 xff09 就是从机 xff08 外围设备 xff09 角色
  • 鸿蒙Hi3861学习十-Huawei LiteOS-M(消息队列)

    一 简介 消息队列 xff0c 是一种常用于任务间通信的数据结构 xff0c 实现了接收来自任务或中断的不固定长度的消息 xff0c 并根据不同的接口选择传递消息是否存放在自己空间 任务能够从队列里面读取消息 xff0c 当队列中的消息是空
  • 鸿蒙Hi3861学习十一-Huawei LiteOS-M(内存池)

    一 简介 LiteOS将内核与内存管理分开实现 xff0c 操作系统内核仅规定了必要的内存管理函数原型 xff0c 而不关心这些内存管理函数是如何实现的 LiteOS内存管理模块管理系统的内存资源 xff0c 包括 xff1a 初始化 分配
  • 鸿蒙Hi3861学习十二-Huawei LiteOS-M(osXX与LOS_XX)

    一 LOS XX是什么 LOS XX是LiteOS M或LiteOS A内核提供的接口 例如 xff1a LOS TaskCreate LOS TaskCreate LOS SemCreate等 因为LiteOS M和LiteOS A是针对
  • 关于单片机替代PLC的思考

    原理上看 xff0c PLC和单片机是一样的 只不过 xff0c PLC更贴近芯片的内部 xff0c 所用语言更接近数字逻辑控制 单片机 xff0c 接近于c了 更接近于一个方便阅读的语言 虽然 xff0c 我觉得逻辑电路实际上看着比程序语
  • message from server: “Host is not allowed to connect to this MySQL server“解决办法

    报错 message from server 34 Host AUTOBVT HN63F77 is not allowed to connect to this MySql server 解决方法 xff1a 1 改表法 可能是你的帐号不允
  • 无人机相关知识解读

    目录 1 什么是云台 xff1f 2 云台的工作原理 xff1f 3 无人机吊舱是什么 xff1f 4 什么是无人机 xff1f 5 无人机都有哪些 xff1f 6 什么是多旋翼无人机 xff1f 7 什么是直升机无人机 xff1f 8 什
  • 中断及pendSV

    1 概述 通过任务及任务切换一节读者已经了解了任务切换的详细过程 其实要实现任务切换的功能前面讲的还远远不够 因为 PSP的操作必须在特权模式下 而用户的程序是工作在线程模式下的 所以 用户要想实现任务的切换功能就必须想办法让CPU工作在特
  • 修改VScode中的git地址

    最近遇到一个问题 xff0c 复制了其他的项目但是项目中的git文件删除不了 xff08 没有权限 xff1b 解决办法如下 xff1a 先查看当前项目的Git地址 xff0c 查看是否是Git上的对应地址 xff1a git remote
  • Matlab与.m脚本文件没有关联,怎么破?

    最近安装了比较新版本的Matlab xff0c 遇到了这样的问题 xff1a 1 xff09 m脚本文件与Matlab没有关联 xff0c 鼠标右击 gt 打开方式中 xff0c 没有Matlab这一选项 xff1b 2 xff09 m脚本
  • 高质量嵌入式Linux C编程学习摘要

    1 多线程方面 1 xff09 pthread create 创建的线程默认情况下是非分离状态的线程 xff0c 如果修改线程的状态属性 xff0c 需要使用pthread attr getdatachstate 和pthread attr
  • mavros常用消息类型表

    mavros订阅消息 xff1a global position 订阅GPS数据 消息名称 xff1a mavros global position global 类型名称 xff1a sensor msgs NavSatFix h 类型所
  • Solidworks踩坑随笔

    Solidworks无法打开问题终极解决办法 网上流传的solidworks无法打开的解决办法有如下几种 xff1a 使用solidworks安装包自带的修复工具修复 缺点 xff1a 耗费时间长 xff0c 而且不一定能找到原来下载的安装
  • 大疆A3、N3、M100飞控ONBOARDSDK二次开发经验分享

    开发流程 步骤一 选择开发方式 先去大疆的开发者网站 xff08 https developer dji com xff09 看资料 xff0c 我选择的是ONBOARD SDK stm32 xff08 图一 xff09 步骤二 观看官方资
  • Boost库教程

    Boost库教程 1 Lexical Cast 用于高效文本格式转化 using boost lexical cast 例 xff1a 将A转换为string类型 lexical cast A 错误消息使用try catch 捕捉 异常名为
  • 软路由连接NAS做链路聚合

    软路由连接NAS做链路聚合 群晖NAS支持多种链路聚合方式 xff0c 如自适应负载平衡 IEEE 802 3ad动态Link Aggregation 平衡XOR等方式 xff0c 其中 xff0c IEEE 802 3ad动态Link A
  • 软路由网络部署配置

    软路由网络部署配置 一 作为交换机二 作为一级路由器三 作为旁路由模式一 xff1a 主路由开 DHPC 43 N1 关 DHPC 非全局 xff09 设置步骤 模式二 xff1a 主路由开 DHPC 43 N1 关DHPC 全局 方法一方
  • PX4 vision_to_mavros定位

    PX4官方给出以下做法从而使用intel realsense t265深度相机作为视觉估计的硬件选择 在这里我使用pixhawk 4和realsense t265以及Jetson TX2机载计算机以及benewake tfmini激光测高模
  • Top 50 有趣网站

    50 经典桌面 这个名叫东子的偏执狂不知花了多少 工夫 xff0c mydeskcity com的谌萘看锏 了40G xff0c 很多图片都是站长本人在国 外搜集后 xff0c 自己进行加工的作品 http www mydeskcity c
  • PX4避障和轨迹规划(3DVFH*)

    采用伴侣计算机 Companion Computer 的方案 xff0c 通过使用mavros的obstacle distance插件订阅 mavros obstacle send话题 xff0c 进而通过local planner本地轨迹