PX4 vision_to_mavros定位

2023-05-16

PX4官方给出以下做法从而使用intel realsense t265深度相机作为视觉估计的硬件选择。

在这里我使用pixhawk 4和realsense t265以及Jetson TX2机载计算机以及benewake tfmini激光测高模块作为室内自主飞行无人机的硬件。

采用Ardupilot官方推荐的vision_to_mavros功能包配置

无人机的双目相机的摄像头朝向正前方,可以将slam融合的高度位姿信息作为EKF2的高度估计信息,具体修改EKF2_HGT_MODE参数为Vision。

我参考以下链接从而配置飞控的相关参数:

Visual Intertial Odometry (VIO) | PX4 User Guide

rviz查看轨迹相关参数:

thien94/vision_to_mavros

rviz可视化坐标具体方法如下:

  1. On host computer, open up rviz: rosrun rviz rviz.
  2. Add [Path](http://docs.ros.org/api/nav_msgs/html/msg/Path.html), topic name: /body_frame/path to rviz.
  3. Change Fixed Frame to target_frame_id, in the case of Realsense T265: camera_odom_frame.

关于EKF姿态解算的部分可以参考PX4官方的PX4-ECL仓库:

PX4/PX4-ECL

该仓库的说明文件如下:

Using the ECL EKF | PX4 User Guide

关于T265坐标转换相关问题:

*把T265定点过程中的坐标变换彻底弄清楚(包含vision_to_mavros代码分析)px4_command T265定点过程的坐标系转换也理清_诗筱涵的博客-CSDN博客

注意:

  1. 需要安装realsense的驱动(realsense-ros暂时不需要),这里推荐采用二进制包的方式安装,运行t265_all_nodes.launch脚本之前需要先执行驱动中的一个脚本来创建udev设备驱动规则,也可参考上文中的链接配置。总之,不配置设备驱动规则的话很可能会导致调用设备的时候因为权限等问题报错。

  2. vision_to_mavros一定注意realsense设备的安装方向,默认安装方向是竖直向下的,如果需要更改安装方向,一定要在launch文件中修改参数,确保坐标系方向不会错。

  3. 运行t265_all_nodes.launch脚本会同时启动mavros脚本,不需要单独启动mavros脚本了。

  4. 启动脚本默认采用USB连接飞控串口,如使用TX2的串口连接飞控的时候,一定要手动指定fcu_url为/dev/ttyTHS2:921600。
    举例:

    roslaunch vision_to_mavros t265_all_nodes.launch fcu_url:="/dev/ttyTHS2:921600"
    
  5. 该脚本的目的在于:替代传统的通过GPS或光流的方式获得融合EKF姿态数据的方法。飞行模式需要为position/offboard/mission模式下才能使用T265输出的位姿信息,设置错误会导致PreArm检查失败无法起飞。

  6. 默认的apm.launch需要修改为px4.launch

已知问题:

  1. 使用PX4官方说明中的Auterion/VIO代码会导致odometry消息无法发布
    地面站上面看不到对应的mavlink消息

    错误issue如下:

    No Position data from ODOMETRY. · Issue #15627 · PX4/PX4-Autopilot

    Odometry not showing up in PX4 when using Visual Interial Odometry (VIO)

    解决方案:
    降级PX4固件版本到1.10之后重新运行代码即可(不要降级)

    该问题已有更好的解决办法:使用Ardupilot固件提供的vision_to_mavros代码,launch启动文件中的px4.launch修改为apm.launch

    下载链接如下:

    thien94/vision_to_mavros

  2. t265模块速度信息错误

    错误发生于无人机大角度机动飞行时,或环境光线不足导致特征点跟踪丢失时,终端会报错,信息如下

    WARNING [......] (tm-device.cpp:1289) SLAM_ERROR Speed
    

    问题原因:

    PX4 v1.10.1 EKF2 GPS and VIO issues · Issue #15014 · PX4/PX4-Autopilot

    SLAM Error Realsense T265 · Issue #1090 · IntelRealSense/realsense-ros

    T265 linear velocity to /mavros/vision_speed/speed_twist_cov · Issue #18 · thien94/vision_to_mavros

    解决方案:
    (临时办法)AID_MASK采用位置信息融合而不是速度信息融合,设置EKF2_AID_MASK为24
    添加ros节点融合飞控Imu信息:这里采用EKF滤波与数据融合的方法(有待进一步解决)

  3. T265 VIO信息与PX4Flow光流信息融合

    Ekf2 T265 and Px4flow fusion

    修改EKF2_AID_MASK参数即可

  4. 阿木实验室的VIO版本无人机使用了该vision_to_mavros模块,但是有几个代码参数发生了变化

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

PX4 vision_to_mavros定位 的相关文章

  • PX4位置控制offboard模式说明

    offboard模式的开发及应用 一 px4固件的模式 px4固件支持10几种飞行模式 xff0c 从代码结构上分析 xff0c 分为基本模式 自定义模式和自定义子模式 1 基本模式 基本模式又分为 xff0c 位置控制模式 自稳模式 手动
  • 关于PX4中的高度若干问题

    飞行的高度是如何测量的 xff1f 地面的高度和海平面的高度差别很大 xff0c 飞控又是如何有效判别进行降落的 xff1f 这是我脑子里的疑问 搜索的一圈发现很少有人讨论这方面的问题 xff0c 于是本次我就直接看一下源代码 xff0c
  • PX4+Offboard模式+代码控制无人机起飞(Gazebo)

    参考PX4自动驾驶用户指南 https docs px4 io main zh ros mavros offboard cpp html 我的另一篇博客写了 键盘控制PX4无人机飞行 PX4无人机 键盘控制飞行代码 可以先借鉴本篇博客 xf
  • PX4无人机 - 键盘控制飞行代码

    PX4无人机 键盘控制飞行代码 仿真效果 实机效果 由于图片限制5M以内 xff0c 只能上传一小段了 xff0c 整段视频请点击链接 Pixhawk 6c 无人机 键盘控制无人机 Offboard模式 核心 xff1a 发布 mavros
  • px4源码编译指南

    px4源码编译指南 强烈推荐大家去看官网的英文文档 xff0c 国内的博客杂七杂八 xff0c 官网的中文也很久没有更新 xff0c 这几天自己踩了很多坑 xff0c 写个教程希望能帮助到大家 xff08 本文选用平台是pixhawk1 1
  • 初学PX4之环境搭建

    文章转自 xff1a http www jianshu com p 36dac548106b 前言 前段时间linux崩溃了 xff0c 桌面进去后只有背景 xff0c 折腾好久没搞定 xff0c 为了节省时间索性重装了系统 xff0c 同
  • mavros中的一些坑

    固件 xff1a px4 控制 xff1a 通过对mavros发布mavros setpoint raw local话题控制无人机飞行 获取飞机的ENU坐标系坐标有两个话题 xff1a mavros global position loca
  • PX4 ---- Mixer

    文章目录 Mixer 混合控制 作用输入输出装载混控文件MAVROS代码解析总结示例MAINAUX Mixer 混合控制 作用 经过位置控制和姿态控制后 xff0c 控制量通过 actuator controls发布 xff0c 其中 co
  • PX4 -- EKF2

    文章目录 EKF2参数高度估计Range Finder滤波 单变量更新单变量更新对多变量的影响 EKF2 参数 EKF2 中有一类 GATE 参数 当测量值在 VAR GATE 范围内才会更新值 高度估计 四种高度控制方法 xff1a 气压
  • PX4模块设计之三:自定义uORB消息

    PX4模块设计之三 xff1a 自定义uORB消息 1 新增自定义uORB消息步骤2 应用ext hello world消息示例3 编译执行结果4 参考资料 基于PX4开源软件框架简明简介和PX4模块设计之二 xff1a uORB消息代理
  • PX4模块设计之六:PX4-Fast RTPS(DDS)简介

    64 TOC PX4模块设计之六 xff1a PX4 Fast RTPS DDS 简介 基于PX4开源软件框架简明简介的框架设计 xff0c 逐步分析内部模块功能设计 PX4 Fast RTPS DDS 具有实时发布 订阅uORB消息接口
  • PX4模块设计之九:PX4飞行模式简介

    PX4模块设计之九 xff1a PX4飞行模式简介 关于模式的探讨1 需求角度1 1 多旋翼 MC multi copter 1 1 1 RC控制模式1 1 1 1 Position Mode1 1 1 2 Altitude Mode1 1
  • PX4模块设计之三十四:ControlAllocator模块

    PX4模块设计之三十四 xff1a ControlAllocator模块 1 ControlAllocator模块简介2 模块入口函数2 1 主入口control allocator main2 2 自定义子命令custom command
  • PX4模块设计之四十六:dataman模块

    PX4模块设计之四十六 xff1a dataman模块 1 dataman模块简介2 模块入口函数dataman main3 dataman模块重要函数3 1 start3 2 stop3 3 status3 4 task main 4 A
  • PX4软件在环仿真注意点

    注 xff1a 最新内容参考PX4 user guide 点击此处 PX4下载指定版本代码和刷固件的三种方式 点击此处 PX4sitl固件编译方法 点击此处 PX4开发指南 点击此处 PX4无人机仿真 Gazebo 点击此处 px4仿真 知
  • PX4 OffBoard Control

    终于还是走上了这一步 xff0c 对飞控下手 xff0c 可以说是一张白纸了 记录一下学习的过程方便以后的查阅 目录 一 ubuntu18 04配置px4编译环境及mavros环境 二 PX4的OffBoard控制 1 搭建功能包 2 编写
  • 步骤三:PX4,Mavros的下载安装及代码测试

    1 安装Mavros sudo apt install ros melodic mavros ros melodic mavros extras 2 安装Mavros相关的 geographiclib dataset 此处已经加了ghpro
  • 如何在 Tracker 事件中获取 android 人脸检测器的当前帧(作为位图)?

    我有标准的 com google android gms vision Trackerexample在我的 Android 设备上成功运行 现在我需要对图像进行后处理以找到当前脸部的虹膜 该虹膜已在跟踪器的事件方法中通知 那么 如何获得与我
  • 具有立体 3D 重建功能的 OpenCV

    假设我计划使用 OpenCV 使用立体方法进行 3D 重建 并且我没有任何特殊的立体相机 只有网络摄像头 1 如何使用一组网络摄像头构建廉价的立体声设置 2 是否可以使用网络摄像头拍摄两个图像并使用 openCV API 将它们转换为立体图
  • 使用Python的工业视觉相机[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐

  • 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激光测高模