PX4 vision_to_mavros定位(西电一本科生写的)

2023-05-16

西电一位本科生大佬写的

有一点他的看法和我的看法相同,阿木用的vision_to_mavros是改动过的。

转载自:https://zhuanlan.zhihu.com/p/372034028

PX4 vision_to_mavros定位

Phillweston

Phillweston

无人机爱好者

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](Visual Intertial Odometry (VIO))

[](【8-12】树莓派部署t265+px4飞控实现无人机视觉定位_知行-CSDN博客)

rviz查看轨迹相关参数:

[thien94/vision_to_mavros](thien94/vision_to_mavros)

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

1. On host computer, open up rviz: `rosrun rviz rviz`.

2. Add `[Path](nav_msgs/Path Documentation)`, 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](PX4/PX4-ECL)

该仓库的说明文件如下:

[Using the ECL EKF | PX4 User Guide](Using the ECL EKF)

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

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

注意:

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。

举例:

```bash

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](No Position data from ODOMETRY. · Issue #15627 · PX4/PX4-Autopilot)

[Odometry not showing up in PX4 when using Visual Interial Odometry (VIO)](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](thien94/vision_to_mavros)

2. t265模块速度信息错误

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

```bash

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

```

问题原因:

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

[SLAM Error Realsense T265 · Issue #1090 · IntelRealSense/realsense-ros](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](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 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 位置控制模式 自稳模式 手动
  • 飞行机器人(七)仿真平台XTDrone + PX4编译

    0 编译PX4固件 参考仿真平台基础配置教程 xff08 中文详细教程 xff09 仿真平台基础配置 语雀 yuque com https www yuque com xtdrone manual cn basic config 按照教程
  • 关于PX4中的高度若干问题

    飞行的高度是如何测量的 xff1f 地面的高度和海平面的高度差别很大 xff0c 飞控又是如何有效判别进行降落的 xff1f 这是我脑子里的疑问 搜索的一圈发现很少有人讨论这方面的问题 xff0c 于是本次我就直接看一下源代码 xff0c
  • PX4代码学习系列博客(6)——offboard模式位置控制代码分析

    分析offboard模式的代码需要用到以下几个模块 local position estimator mavlink mc pos control mc att control mixer 程序数据走向 mavlink 一般的offboar
  • px4 avoidance笔记

    最近在用px4官方的avoidance代码跑硬件避障 xff0c 官方介绍了只要生成符合sensor msgs PointCloud2点云信息就能使用 xff0c 因此为了应用长基线双目 xff0c 没有使用realsense的相机 xff
  • mavros中的一些坑

    固件 xff1a px4 控制 xff1a 通过对mavros发布mavros setpoint raw local话题控制无人机飞行 获取飞机的ENU坐标系坐标有两个话题 xff1a mavros global position loca
  • PX4模块设计之一:SITL & HITL模拟框架

    PX4模块设计之一 xff1a SITL amp HITL模拟框架 1 模拟框架1 1 SITL模拟框架1 2 HITL模拟框架 2 模拟器类型3 MAVLink API4 总结 基于PX4开源软件框架简明简介的框架设计 xff0c 逐步分
  • PX4模块设计之十一:Built-In框架

    PX4模块设计之十一 xff1a Built In框架 1 Nuttx Built In框架2 PX4 Built In框架2 1 NSH Built In关联文件2 2 NSH Built In关联文件生成2 3 NSH Built In
  • PX4模块设计之二十三:自定义FlightTask

    PX4模块设计之二十三 xff1a 自定义FlightTask Step1 创建飞行模式文件夹Step2 创建飞行模式源代码和CMakeLists txt文件Step3 更新CMakeLists txt文件Step4 更新FlightTas
  • PX4模块设计之四十六:dataman模块

    PX4模块设计之四十六 xff1a dataman模块 1 dataman模块简介2 模块入口函数dataman main3 dataman模块重要函数3 1 start3 2 stop3 3 status3 4 task main 4 A
  • px4_simple_example和uorb机制

    px4 simple app PX4 Autopilot src exampes px4 simple app xff0c 这个程序是用c语言调用orb API和poll机制订阅和发布通讯数据 xff0c 但是这个例子并不是既有接收又有发送
  • px4仿真无法起飞问题(Failsafe enabled: no datalink)

    报错信息 问题描述 xff1a 使用JMAVSim和gazebo仿真px4起飞时报错如下 xff1a WARN commander Failsafe enabled no datalink 说不安全 解决方法 打开QGC 就可以起飞了
  • px4下载指定版本的固件、git用法

    https hub fastgit org PX4 PX4 Autopilot git describe tag 查看当前版本号 git tag l 查看所有版本 xff0c 也就是打个tag git checkout v1 9 1 跳转到
  • PX4 OffBoard Control

    终于还是走上了这一步 xff0c 对飞控下手 xff0c 可以说是一张白纸了 记录一下学习的过程方便以后的查阅 目录 一 ubuntu18 04配置px4编译环境及mavros环境 二 PX4的OffBoard控制 1 搭建功能包 2 编写
  • PX4飞控的PPM接收机

    xff08 一 xff09 原理图 xff1a PX4飞控的PPM输入捕获由协处理器完成 xff0c 接在A8引脚 xff0c 对应Timer1的通道1 xff08 二 xff09 PPM协议 xff1a PPM的每一帧数据间隔为20ms
  • 大神浅谈无人机飞控软件设计 系统性总结

    写在前面 深感自己对飞控软件 算法的知识点过于杂乱 很久没有进行系统的总结了 因此决定写几篇文章记录一些飞控开发过程的知识点 主要是针对一些软件 算法部分进行讨论 如内容有错误 欢迎指出 1 飞控软件的基本模块 无人机能够飞行主要是依靠传感
  • 使用或不使用 NI Vision 从二进制缓冲区/文件创建 LabVIEW IMAQ 图像

    假设您有一个表示二维图像的二进制缓冲区或文件 如何使用 LabVIEW 将二进制数据转换为 IMAQ 图像以便进一步处理 借助 NI 视觉 对于 LabVIEW 用户已安装 NI 视觉库的人 有一些 VI 允许从 2D 数组复制 IMAQ
  • 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
  • 使用Python的工业视觉相机[关闭]

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

随机推荐