PX4开发中遇到的一些问题和解决方法

2023-05-16

文章目录

  • 前言
  • 正文
    • 1. 仿真出现 FCU: Preflight Fail: Accel #0 uncalibrated等错误
    • 2.添加mavlink数据发送or提高数据发送频率
    • 3.PX4在不同硬件下的RC输入
    • 4.PX4 参数自定义
    • 5.电机输出顺序
    • 6. pixhawk硬件中,PX4不支持的部分
    • 7.PX4仿真出现raise OsNotDetected
    • 8. 删除gazebo一些没用的model path


前言

该博客主要记录PX4开发中遇到的一些问题以及解决方法,作为自己的笔记保留下来,每有新问题都会作记录,实时更新。


正文

在这里插入图片描述


1. 仿真出现 FCU: Preflight Fail: Accel #0 uncalibrated等错误

其实也不止这种错误,只要你发现仿真后,出现各种飞控初始化数据类型的报错(其他例子FCU: Preflight Fail: Baro Sensor #0 missing;takeoff altitude low …)。那我们都可以尝试输入下列命令,见电脑存储的仿真参数清空。然后我们再重新启动仿真,那么大概率问题就解决了。

rm ~/.ros/eeprom/parameters*
rm -rf ~/.ros/sitl*

2.添加mavlink数据发送or提高数据发送频率

在PX4与机载电脑通讯时,采用的是mavlink协议的数据,有时我们需要一些特定的数据,或者对其发布频率有要求。举个例子:在VINS使用飞控IMU数据时,我们需要ATTITUDE_QUATERNIONHIGHRES_IMU的数据达到200hz。得益于PX4架构的先进性,我们可以用如下方法简单的实现。

取出飞控SD卡,插入读卡器,使用电脑在该SD卡中创建etc文件夹。在该文件夹下,我们创建extras.txt文件,在里面输入如下内容(这一部是要提高飞控mavlink传输的频率,用于VINS,如果不更改其默认频率只有50hz,在VINS里是不够用的)

mavlink stream -d /dev/ttyACM0 -s ATTITUDE_QUATERNION -r 200
mavlink stream -d /dev/ttyACM0 -s HIGHRES_IMU -r 200

mavlink作为PX4中的一个顶层应用,它的具体用法,我们可以进入MAVLink console来查看:
在这里插入图片描述

当然需要注意的是上述设置输出的对应硬件设备是USB口。如果需要其他的设备输出那么我们需要注意设备名正确。

PX4中的usb和串口的设备名称,可以从硬件手册以及启动脚本中得到,如下图所示:

# start MAVLink on the USB port
mavlink start -d /dev/ttyACM0

在这里插入图片描述所以如果我们想使用别的端口输出相应的数据,只要更改正确的device 名称即可,for example:

mavlink stream -d /dev/ttyS1 -s ATTITUDE_QUATERNION -r 50

这样以来TELEM1口就可以输出ATTITUDE_QUATERNION的数据了,没有设置前是不会有的。不过需要的注意的一点是,TELEM1默认的baudrate为57600,传输速率为1200,这样的速度实际是不够的,其后果就是ATTITUDE_QUATERNIONHIGHRES_IMU的发布频率会远低于50hz,大概就只有15hz左右。

对此我们需要作如下参数修改,提高通信速度(注意!我这里的修改是针对TELEM1的,其串口的类似)

parametersvuluemeaning
SER_TEL1_BAUD115200波特率设置
MAV_0_RATE0自动调整为当前baudrate理论最大传输速度的一半

最后需要说明的是,如果没有什么特别情况,飞控与机载电脑的连接还是最推荐用usb口连接,在PX4中usb对应的设备名称为/dev/tyyACM0,作为更高级的接口,它的传输速度和稳定性都高于一般的串口。而且对usb的虚拟串口进行连接时,其baudrate是可以自适应的,你随便给个baudrate都可以连接,不用去修改飞控参数。

3.PX4在不同硬件下的RC输入

最近再用两款硬件,一个是pixhawk4 mini,一个是cuav的nano。然后发现sbus信号不管插nano的sbus信号口,还是插入RC口都是可以识别信号的。结果在pixhawk4 mini下就只能在sbus口下插入可以识别,标注的那个ppm口就不行了。其实这看起来并没有什么,根据接口的标识这是理所应当的。不过,我还是很好奇为啥。于是我去看了看硬件的原理的图,pixhawk4 mini的原理图没有,但是nano的原理图很清楚:
在这里插入图片描述可以看到,RC_IN的接口在连线上与PPM和SBUS的接在了一起,所以RC口就成为了一个多用的信号接口。想来pixhawk4 mini的硬件设计必然没有这个连接,所以就各司其职,没有啥关系了。不过顺便一提的是在ardupilot的代码中,是可以采用电平信号的捕捉,只用一个引脚就实现所有输入信号的识别。

老实说这里这样的设计其实对用户并不太重要,只要能识别输入就ok了,不过好奇心又让我费了一些时间。

4.PX4 参数自定义

eg:

/**
 * Roll P gain
 *
 * Roll proportional gain, i.e. desired angular speed in rad/s for error 1 rad.
 *
 * @min 0.0
 * @max 12
 * @decimal 2
 * @increment 0.1
 * @group Multicopter Attitude Control
 */
PARAM_DEFINE_FLOAT(MC_ROLL_P, 6.5f); //so 6.5f? what does it mean? the default vuale? I guess so

定义的函数中,第一个为参数名称(地面显示出来的名称),第二个为默认参数(int类型参数值后面不用跟f,float类型的需要跟f)。

5.电机输出顺序

对于四旋翼而言,目前穿越机是非常流行的,相应的硬件也是非常的丰富和便宜。这对于我们搭建自己的四旋翼无人机来进行研究是非常方便的。不过对于4IN1电调来说,它的电机顺序定义一般是betaflight的顺序和PX4不太一样。如下图所示,左边是betaflight的默认顺序,右边是PX4的默认顺序。但是PX4中我们可以修改参数来很快的适配,装飞控的时候可以直接把4IN1的电调按照它的信号线序和飞控的main_out线序一一对应即可(即电调信号1对应飞控main输出1,电调信号2对应飞控main输出2…)而不用自己去看PX4机型输出的定义来手动完成整个对应关系了。
在这里插入图片描述 在这里插入图片描述

在这里插入图片描述

6. pixhawk硬件中,PX4不支持的部分

最近在学习和实践PX4代码中的混控器部分,找到了一些好帖子,兴致冲冲的跟着做,最后发现==“AUX"==没有按照我在sd卡里设置的混空器那样去执行。找了一晚上原因,终于!我在官方手册的nano的说明部分发现了下图。啊这!如果这几个引脚不是取名为A1,A2,A3的话,我想我可能早就察觉到了不对劲了,这实在太坑了,记录一下,避免以后再犯这样的错误!那么同样pixhawk4 mini 上面的4个cap口,PX4目前也是不能用的了。这样一看ardupilot果然是猛呀,支持的功能确实是多。
在这里插入图片描述

7.PX4仿真出现raise OsNotDetected

gazebo会出现不识别系统的提示,如下所示:

raise OsNotDetected("Could not detect OS, tried %s" % attempted)
rospkg.os_detect.OsNotDetected: Could not detect OS, tried ['zorin', 'windows', 'nixos', 'clearlinux', 'ubuntu', 'slackware', 'rocky', 'rhel', 'qnx', 'pop', 'osx', 'sailfishos', 'tizen', 'oracle', 'opensuse', 'opensuse', 'opensuse', 'opensuse', 'opensuse', 'openembedded', 'neon', 'mx', 'mint', 'linaro', 'gentoo', 'funtoo', 'freebsd', 'fedora', 'elementary', 'elementary', 'debian', 'cygwin', 'euleros', 'centos', 'manjaro', 'buildroot', 'arch', 'amazon', 'alpine', 'almalinux']

但是由于这部分报错的提示终端中并没有以红色打印出来,而是常规的字体颜色,这导致很容易让人忽略这个关键信息。一般发生这种情况还会伴随着下图所示的报错提示:
在这里插入图片描述这次检查一下:/etc/lsb-release,你会惊讶地发现怎么变成了Kylin?我明明是ubuntu呀?那么很有可能是你最近安装的一些.deb是来自于kylin的,比如微信。

DISTRIB_ID=Kylin
DISTRIB_RELEASE=V10
DISTRIB_CODENAME=kylin
DISTRIB_DESCRIPTION="Kylin V10 SP1"
DISTRIB_KYLIN_RELEASE=V10
DISTRIB_VERSION_TYPE=enterprise
DISTRIB_VERSION_MODE=normal

那么我们将他们更改成如下内容并保存(我这里是18.04.6)

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.6 LTS"

然后重启电脑即可生效

8. 删除gazebo一些没用的model path

在~/.gazebo/gui.ini文件中删除内容后,重新打开gazebo即可

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

PX4开发中遇到的一些问题和解决方法 的相关文章

  • Visualizing and Understanding Convolutional Networks

    Matthew D Zeiler xff0c Rob Fergus Visualizing and Understanding Convolutional Networks CVPR2014 论文下载 推荐一篇比较好的blog xff1a
  • 对极几何基本概念

    对极几何 xff08 Epipolar Geometry xff09 描述的是两幅视图之间的内在射影关系 xff0c 与外部场景无关 xff0c 只依赖于摄像机内参数和这两幅试图之间的的相对姿态 什么是对极几何粗略概念对极几何相关的一个重要
  • Python·Win10通过Anaconda安装python和Jupyter(python2.7为例)

    Python Win10通过Anaconda安装python和Jupyter xff08 python2 7为例 xff09 标签 xff08 空格分隔 xff09 xff1a 软件安装 管理 使用 Python 本文主要讨论如何利用Ana
  • Ubuntu14.04安装build-essential失败,包依赖问题如何解决?

    正在读取软件包列表 完成 正在分析软件包的依赖关系树 正在读取状态信息 完成 有一些软件包无法被安装 如果您用的是 unstable 发行版 xff0c 这也许是 因为系统无法达到您要求的状态造成的 该版本中可能会有一些您需要的软件 包尚未
  • 最优化理论·非线性最小二乘

    最优化理论 非线性最小二乘 标签 xff08 空格分隔 xff09 xff1a 数学 非线性最小二乘问题是椭圆拟合中最易遇到的优化问题 xff0c 本文主要对非线性二乘的基本分析做简单介绍 1 什么是最小二乘问题 目标函数能够写为m个函数平
  • 所有线段的交点-初级篇

    所有线段的交点 初级篇 标签 xff08 空格分隔 xff09 xff1a 计算机视觉 图形学 所有线段的交点 初级篇 参考 xff1a 计算几何 算法与应用 邓俊辉 译 清华大学出版社 本文以一个小例子介绍如何计算所有线段交点 xff0c
  • 服务器docker使用

    这篇文章是我给自己的一个记录 xff0c 有些名词可能写的不专业 xff0c 请见谅 docker里面有两个概念 xff0c 一个是镜像 xff0c 一个是容器 镜像可以看做是类 xff0c 容器就是类的实例 在学院的服务器上 xff0c
  • MPC模型预测控制

    这篇主要讲一下模型预测控制 xff0c 如果对PID控制了解的同学 xff0c 那效果更好 如果不了解PID控制 xff0c 还是熟悉下比较好 模型预测控制 xff0c 顾名思义 xff0c 基于模型 xff0c 预测未来 xff0c 进行
  • MPC自学资料总结

    1 书籍 xff1a 无人驾驶车辆模型预测控制 2 视频 xff1a https ww2 mathworks cn videos understanding model predictive control part 1 why use m
  • [授权发表]基于 VNCServer + noVNC 构建 Docker 桌面系统

    by Falcon of TinyLab org 2015 05 02 最初发表 xff1a 泰晓科技 聚焦嵌入式 Linux xff0c 追本溯源 xff0c 见微知著 xff01 原文链接 xff1a 基于 VNCServer 43 n
  • 【c语言】字符串输出方式 | API仿真

    创作不易 xff0c 本篇文章如果帮助到了你 xff0c 还请点赞 关注支持一下 gt x16966 lt 主页专栏有更多知识 xff0c 如有疑问欢迎大家指正讨论 xff0c 共同进步 xff01 给大家跳段街舞感谢支持 xff01 c语
  • 【c语言】结构体详解 | 结构体数组/指针

    创作不易 xff0c 本篇文章如果帮助到了你 xff0c 还请点赞 关注支持一下 gt x16966 lt 主页专栏有更多知识 xff0c 如有疑问欢迎大家指正讨论 xff0c 共同进步 xff01 x1f525 c语言系列专栏 xff1a
  • stm32F4系列学习笔记1: keil使用

    一 在keil的find功能中有几个find options xff0c 查了一下 xff0c 这几个find options的意思是 1 Match case 区分大小写 2 Regular expression 正则表达式 3 Matc
  • STM32F4系列学习笔记2:IO相关

    一 寄存器说明 xff1a STM32F4 GPIO最多有9组 xff0c 从GPIOA GPIOI xff0c 每组IO有16个Pin xff0c STM32F407有7组 xff0c 所以一共有7 16 61 112个引脚 xff0c
  • 树莓派Ubuntu20.04创建虚拟内存文件并设置开机自动启用

    目录 一 检查有没有虚拟内存 二 创建虚拟内存文件并设置权限 三 设置并激活虚拟内存文件 四 设置开机自动启用虚拟内存 五 重启后检测虚拟内存是否正常启用 一 检查有没有虚拟内存 树莓派Ubuntu20 04默认没有虚拟内存 xff0c 可
  • 如何配置 QEMU 虚拟机网络

    关于 QEMU 的网络策略 QEMU 提供 4 种网络通信方法 xff0c 它们分别是 xff1a User mode stack xff1a 用户协议栈方式 xff0c 这种方式的大概原理是在 QEMU 进程中实现一个协议栈 xff0c
  • Pygame库的使用-1 初识Pygame

    本文参考链接如下 xff1a 1 https zhuanlan zhihu com p 1366649502 https www bilibili com video BV1bE411p7Ue from 61 search amp seid
  • 电机知识入门 有刷 | 无刷

    一 总述 直流电动机按结构及工作原理可划分为无刷直流电机 BLDC电机 和有刷直流电机 BDC电机 二 差异 BDC是Brushed DC Motor的缩写 xff0c BLDC是Brushless DC Motor的缩写BLDC电机 直流
  • PCB设计1 模块间的隔离

    想要给板子的各个部分进行电气隔离 xff0c 比如电源转压之后的各个电压12V 5V 3 3V 和用电的设备之间进行隔离 xff0c 本来的想法是用2pin的跳线帽 xff0c 但是在参考了一些资料之后 xff0c 对2pin跳线帽有了一个
  • Ubuntu18.04 更改apt-get 的时候会访问的软件源列表

    像这样 xff0c 每次在sudo apt get update的时候会有很多访问的软件源列表 xff0c 但是有的时候自己安装了一些软件比如说nordvpn xff0c 这样的时候就会自动的为我们增加apt get的源 xff0c 但是往

随机推荐

  • 安装油猴插件解决chatgpt报错问题

    转载自Github Daily公众号 Something went wrong If this issue persists please contact usthrough our help center at help openai c
  • Ubuntu18.04安装Elevation_Map并测试

    参考 elevation mapping at master ANYbotics elevation mapping GitHub 安装elevation mapping与traversability estimation elevatio
  • Vue:button按钮的点击

    调用 xff1a lt button class 61 34 toast 34 v on click 61 34 addEvent 34 gt toast gt lt button gt script lt script gt export
  • Vslam方案+源码,轻松搞定视觉slam

    原创 xff1a 涛涛CV 涛涛CV 今天 关注涛涛CV xff0c 设为星标 xff0c 更新不错过 VSLAM方案 目前基于视觉的SLAM技术有多种组合形式 xff08 见下表 xff09 方案 特点 TOF 成本高 xff0c 分辨率
  • 图解字节序大小端、比特序大小端

    先建立几个常识 xff1a 一般机器的字节序大小端和比特序大小端是一致的 人类阅读时 xff0c 从左向右进行阅读 xff0c 所以先看到数字的高位 xff0c 最后才能看到数字的低位 所以 xff0c 人类的阅读顺序 xff0c 天然是大
  • C++为什么要学习STL和Boost库

    最近一年我电话面试了数十位 C 43 43 应聘者 xff0c 惯用的暖场问题是 工作中使用过 STL 的哪些组件 xff1f 使用过 Boost 的哪些组件 xff1f 得到的答案大多集中在 vector map 和 shared ptr
  • 树莓派raspberry bullseye扩大虚拟内存

    之前用Ubuntu20 04的时候遇到很多bug xff0c 比如sudo apt update能用但图形界面却提示wifi不可用 xff0c 图形界面卡顿刷新黑屏 xff0c 图形界面没法使用硬件加速 xff0c 以及进入图形界面后无法使
  • 查看新增串口、USB设备

    注意 xff1a 虚拟机环境下的ubuntu默认情况下是不能自动识别的 xff0c 需要在虚拟机窗口右下角点击 34 Prolific USB Serial Controller 34 xff0c 然后选择 34 Connect Disco
  • ROS入门保姆级教程:7-ROS话题通信实现2:自定义消息类型(msg)

    ROS入门往期 xff1a ROS入门保姆级教程 xff1a 1 hello world初体验 ROS入门保姆级教程 xff1a 2 VScode中使用ROS ROS入门保姆级教程 xff1a 3 ROS文件系统 ROS入门保姆级教程 xf
  • Proteus仿真时报错:[SPICE] Too many iterations without convergence

    一 问题 xff1a 在利用Proteus仿真时 xff0c 经常会遇到 SPICE Too many iterations without convergence xff08 太多没有收敛的迭代 xff09 这个提示 xff0c 致使仿真
  • Android.bp编译提示ninja: error: unknown target ‘MODULES-IN-xxx‘终极指南

    Android bp编译提示ninja error unknown target 39 MODULES IN xxx 终极指南 Android bp系列博客 Android bp你真的了解吗 Android bp入门指南之Android m
  • 转折点----------我的IT梦

    干IT这一行快6年了 从来没有留下任何属于自己的一些所谓的阅历 时常去逛逛同行前辈们的空间 总能看到他们留下的心得体会 实则令人羡慕 xff0c 或者自己的卑微 xff0c 或者实在没什么体会 xff0c 写出来会丢人现眼 只是默默的去感受
  • 有了这份程序员面试指南,你离大厂Offer还远吗?| 附推荐书籍

    点击上方蓝色字体 xff0c 关注我 一个在阿里云打工的清华学渣 图by 石头 64 长白山 关于作者 xff1a 程序猿石头 ID tangleithu xff0c 现任阿里巴巴技术专家 xff0c 清华学渣 xff0c 前大疆后端 Le
  • 记录一次harbor的镜像扫描和更新

    前提 已经部署好harbor 192 168 14 16 项目名称 harbor 1 在harbor服务器拉取centos源镜像 root localhost docker pull centos Using default tag lat
  • 关于pixhawk硬件IMU和compass那点事儿

    文章目录 前言一 IMU和compass是什么 xff1f 二 导航坐标系与机体坐标系三 安装IMU xff0c compasss四 hwdef中设置IMU xff0c compass朝向总结 前言 继上一篇讲解了pixhawk的硬件组成
  • ubuntu下ardupilot编译环境搭建与仿真

    文章目录 前言一 ardupilot 源码下载二 编译环境建立仿真经验教训坑1坑2 参考 前言 虽然怒飞老师给出了详细的windows下的开发环境的搭建教程 但是对于开发者而言 xff0c 最好的系统环境还是在Linux系统下 xff0c
  • Ubuntu下MissionPlanner的安装

    文章目录 前言一 安装mono二 下载并使用MissionPlanner三 创建快捷脚本 前言 众所周知 xff0c QGC地面站外观更加好看 xff0c 开发上也是采用跨平台的Qt 在ubuntu上安装十分方便 但是我还是更喜欢用Miss
  • Nmap详解

    Nmap简介 Nmap也就是Network Mapper xff0c 网络发现 xff08 Network Discovery xff09 和安全审计 xff0c 是一款网络连接端扫描软件 xff0c 用来扫描网上电脑开放的网络连接端 确定
  • PX4 自定义bootloader生成

    本文主要是记录一下自己在这方面的学习 xff0c 方便以后回顾 xff0c 也希望对其他朋友有用 本着不重复造轮子的精神 xff0c 这里引文不在复制粘贴 xff0c 直接给出链接 生成bootloader的两种方式 以STM32H7作为主
  • PX4开发中遇到的一些问题和解决方法

    文章目录 前言正文1 仿真出现 FCU Preflight Fail Accel 0 uncalibrated等错误2 添加mavlink数据发送or提高数据发送频率3 PX4在不同硬件下的RC输入4 PX4 参数自定义5 电机输出顺序6