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无人机 - 键盘控制飞行代码

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

    PX4飞控之PWM输出控制 多旋翼电调如好盈XRotor xff0c DJI通用电调等都支持PWM信号来传输控制信号 常用的400Hz电调信号对应周期2500us xff0c 一般使用高电平时间1000us 2000us为有效信号区间 xf
  • PX4模块设计之五:自定义MAVLink消息

    PX4模块设计之五 xff1a 自定义MAVLink消息 1 MAVLink Dialects1 1 PX4 Dialects1 2 Paprazzi Dialects1 3 MAVLink XML File Format 2 添加自定义M
  • 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模块设计之三十:Hysteresis类

    PX4模块设计之三十 xff1a Hysteresis类 1 Hysteresis类简介2 Hysteresis类成员变量介绍3 Hysteresis类迟滞逻辑4 Hysteresis类重要方法4 1 Hysteresis bool ini
  • PX4模块设计之三十一:ManualControl模块

    PX4模块设计之三十一 xff1a ManualControl模块 1 ManualControl模块简介2 模块入口函数2 1 主入口manual control main2 2 自定义子命令custom command 3 Manual
  • px4_simple_example和uorb机制

    px4 simple app PX4 Autopilot src exampes px4 simple app xff0c 这个程序是用c语言调用orb API和poll机制订阅和发布通讯数据 xff0c 但是这个例子并不是既有接收又有发送
  • Mavros Client md5sum Error

    ERROR Client mavros wants topic State to have datatype md5sum mavros msgs State 4048c9de2a16f4ae8e0538085ebf1b97 but our
  • Jetson Xavier NX安装Mavros

    Px4飞控通过USB线连接Jetson Xavier NX xff0c 如果需要进行软连接 xff0c 即通讯 xff0c 需要下载Mavros功能包 xff0c 并通过启动命令进行连接 安装Mavros sudo apt install
  • pixhawk px4 commander.cpp

    对于复杂的函数 xff0c 要做的就是看函数的输入是什么 来自哪里 xff0c 经过处理后得到什么 给谁用 xff0c 这样就可以把程序逻辑理清 中间的分析就是看函数如何处理的 span class hljs keyword extern
  • PX4飞控之自主返航(RTL)控制逻辑

    本文基于PX4飞控1 5 5版本 xff0c 分析导航模块中自护返航模式的控制逻辑和算法 自主返航模式和导航中的其他模式一样 xff0c 在Navigator main函数中一旦触发case vehicle status s NAVIGAT
  • PX4软件在环仿真注意点

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

    Range Finder 此处选用的是 Benewake 下的 Lidar 参数设置 General Configuration 除了官方的参数设置外 xff0c 我在 EKF2 中还找到了 EKF2 RNG AID 参数 xff0c 用来
  • 无人机PX4使用动捕系统mocap的位置实现控制+MAVROS

    动捕系统Optitrack xff0c 有很高的定位精度 xff0c 能够给无人机提供比较精确的位置信息 xff0c 因此如果实验室有条件 xff0c 都可以买一套动捕系统 动捕系统的原理 xff1a 光学式动作捕捉依靠一整套精密而复杂的光
  • 四、无人机知识笔记(初级:基本运动原理)

    笔记来源于 沈阳无距科技 工业级无人机的中国名片 编程外星人 目录 一 多旋翼直升机 二 基本飞行姿态 三 多旋翼飞行原理 四 反扭力与偏航运动 五 螺旋桨 六 有刷电机和无刷电机 七 电调与PWM信号 八 动力电池 九 遥控器 十 机架设
  • 大神浅谈无人机飞控软件设计 系统性总结

    写在前面 深感自己对飞控软件 算法的知识点过于杂乱 很久没有进行系统的总结了 因此决定写几篇文章记录一些飞控开发过程的知识点 主要是针对一些软件 算法部分进行讨论 如内容有错误 欢迎指出 1 飞控软件的基本模块 无人机能够飞行主要是依靠传感
  • 如何在 Tracker 事件中获取 android 人脸检测器的当前帧(作为位图)?

    我有标准的 com google android gms vision Trackerexample在我的 Android 设备上成功运行 现在我需要对图像进行后处理以找到当前脸部的虹膜 该虹膜已在跟踪器的事件方法中通知 那么 如何获得与我
  • Android Vision Api - 条码检测如何获取条码类型?

    我正在使用 AndroidGoogle Vision API 并创建了一个标准条形码阅读器 但我想检测读取什么类型 格式的条形码 i e CODE 39 CODE 128 QR Code ETC 有没有办法返回类型 Thanks 因为我没有
  • Microsoft 认知服务视觉 API ClientException 错误

    我正在尝试使用视觉认知服务来接收图像的描述 但我的代码总是抛出此异常 Exception Microsoft ProjectOxford Vision ClientException HResult 0x80131500 Origine

随机推荐

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