【PX4-AutoPilot教程-TIPS】PX4中MAVLink话题频率修改

news2024/11/26 14:48:21

PX4中MAVLink话题频率修改

    • 方法一:使用QGC地面站通过命令行解释器MAVLink Shell修改话题频率
    • 方法二:使用SD卡中的命令脚本文件修改话题频率
    • 方法三:通过修改PX4飞控固件源码修改话题频率

环境:

PX4 :1.13.0

方法一:使用QGC地面站通过命令行解释器MAVLink Shell修改话题频率

连接PX4飞控后,打开QGC地面站,进入【Analyze Tools】,选择【MAVLink 检测】界面。

在这里插入图片描述

切换到【MAVLink 控制台】界面,输入以下指令修改话题频率。

mavlink stream -d /dev/ttyACM0 -s BATTERY_STATUS -r 100

在这里插入图片描述

其中,-d参数指定串口设备名称,-s参数指定话题名称,-r参数指定频率。

/dev/ttyACM0为USB接口,具体修改哪个接口需要根据实际情况修改,比如USART1对应的串口设备名称是/dev/ttyS0USART1不一定对应TELEM 1,这个是在default.px4board文件中有相关的定义。

CONFIG_BOARD_SERIAL_GPS1="/dev/ttyS0"
CONFIG_BOARD_SERIAL_GPS2="/dev/ttyS1"
CONFIG_BOARD_SERIAL_TEL1="/dev/ttyS2"
CONFIG_BOARD_SERIAL_TEL2="/dev/ttyS3"
CONFIG_BOARD_SERIAL_RC="/dev/ttyS4"
CONFIG_BOARD_SERIAL_TEL3="/dev/ttyS5"
CONFIG_BOARD_SERIAL_TEL4="/dev/ttyS6"

BATTERY_STATUS为【MAVLink 检测】界面中的话题名称。

之后可以再次查看【MAVLink 检测】界面,可以看到BATTERY_STATUS话题的频率已经修改为100Hz。

在这里插入图片描述

发送频率同时受飞控硬件条件和数据链路带宽限制,实际频率不一定能达到设定值。

使用这种方法在飞控重启后会恢复成默认速率,需要重新设置。

方法二:使用SD卡中的命令脚本文件修改话题频率

在SD卡根目录下创建/etc/extras.txt文件,编辑加入以下内容:

mavlink start -d /dev/ttyACM0 -b 921600
mavlink stream -d /dev/ttyACM0 -s BATTERY_STATUS -r 100

这样做相当于在每次启动飞控时执行修改话题频率的命令,将SD卡插回飞控。

之后可以查看【MAVLink 检测】界面,可以看到BATTERY_STATUS话题的频率已经修改为100Hz。

在这里插入图片描述

注意,飞控上电后,USB接口只有接入电脑或机载电脑后才启动,飞控先启动再接入USB接口,将导致在执行该脚本文件时指令执行失败,设置发送频率不成功。而串口无论是否接入设备会直接启动。

方法三:通过修改PX4飞控固件源码修改话题频率

修改/src/modules/mavlink文件目录下mavlink_main.cpp文件。

使用USB获取话题数据修改MAVLINK_MODE_CONFIG下的设置,找到对应的话题名称,后面对应的数字为预设发送频率。

case MAVLINK_MODE_CONFIG: // USB
		// Note: streams requiring low latency come first
		configure_stream_local("TIMESYNC", 10.0f);
		configure_stream_local("CAMERA_TRIGGER", unlimited_rate);
		configure_stream_local("LOCAL_POSITION_NED", 30.0f);
		configure_stream_local("DISTANCE_SENSOR", 10.0f);
		configure_stream_local("MOUNT_ORIENTATION", 10.0f);
		configure_stream_local("ODOMETRY", 30.0f);

		configure_stream_local("ACTUATOR_CONTROL_TARGET0", 30.0f);
		configure_stream_local("ADSB_VEHICLE", unlimited_rate);
		configure_stream_local("ALTITUDE", 10.0f);
		configure_stream_local("ATTITUDE", 50.0f);
		configure_stream_local("ATTITUDE_QUATERNION", 50.0f);
		configure_stream_local("ATTITUDE_TARGET", 8.0f);
		configure_stream_local("BATTERY_STATUS", 0.5f);
		configure_stream_local("CAMERA_IMAGE_CAPTURED", unlimited_rate);
		configure_stream_local("COLLISION", unlimited_rate);
		configure_stream_local("EFI_STATUS", 10.0f);
		configure_stream_local("ESC_INFO", 10.0f);
		configure_stream_local("ESC_STATUS", 10.0f);
		configure_stream_local("ESTIMATOR_STATUS", 5.0f);
		configure_stream_local("EXTENDED_SYS_STATE", 2.0f);
		configure_stream_local("GLOBAL_POSITION_INT", 10.0f);
		configure_stream_local("GPS2_RAW", unlimited_rate);
		configure_stream_local("GPS_GLOBAL_ORIGIN", 1.0f);
		configure_stream_local("GPS_RAW_INT", unlimited_rate);
		configure_stream_local("GPS_STATUS", 1.0f);
		configure_stream_local("HIGHRES_IMU", 50.0f);
		configure_stream_local("HOME_POSITION", 0.5f);
		configure_stream_local("HYGROMETER_SENSOR", 1.0f);
		configure_stream_local("MAG_CAL_REPORT", 1.0f);
		configure_stream_local("MANUAL_CONTROL", 5.0f);
		configure_stream_local("NAV_CONTROLLER_OUTPUT", 10.0f);
		configure_stream_local("OPTICAL_FLOW_RAD", 10.0f);
		configure_stream_local("ORBIT_EXECUTION_STATUS", 5.0f);
		configure_stream_local("PING", 1.0f);
		configure_stream_local("POSITION_TARGET_GLOBAL_INT", 10.0f);
		configure_stream_local("RAW_RPM", 5.0f);
		configure_stream_local("RC_CHANNELS", 10.0f);
		configure_stream_local("SCALED_IMU", 25.0f);
		configure_stream_local("SCALED_IMU2", 25.0f);
		configure_stream_local("SCALED_IMU3", 25.0f);
		configure_stream_local("SERVO_OUTPUT_RAW_0", 20.0f);
		configure_stream_local("SERVO_OUTPUT_RAW_1", 20.0f);
		configure_stream_local("SYS_STATUS", 1.0f);
		configure_stream_local("SYSTEM_TIME", 1.0f);
		configure_stream_local("UTM_GLOBAL_POSITION", 1.0f);
		configure_stream_local("VFR_HUD", 20.0f);
		configure_stream_local("VIBRATION", 2.5f);
		configure_stream_local("WIND_COV", 10.0f);

使用串口获取话题数据修改MAVLINK_MODE_ONBOARD下的设置,找到对应的话题名称,后面对应的数字为预设发送频率。

case MAVLINK_MODE_ONBOARD:
		// Note: streams requiring low latency come first
		configure_stream_local("TIMESYNC", 10.0f);
		configure_stream_local("CAMERA_TRIGGER", unlimited_rate);
		configure_stream_local("HIGHRES_IMU", 50.0f);
		configure_stream_local("LOCAL_POSITION_NED", 30.0f);
		configure_stream_local("ATTITUDE", 100.0f);
		configure_stream_local("ALTITUDE", 10.0f);
		configure_stream_local("DISTANCE_SENSOR", 10.0f);
		configure_stream_local("ESC_INFO", 10.0f);
		configure_stream_local("ESC_STATUS", 10.0f);
		configure_stream_local("MOUNT_ORIENTATION", 10.0f);
		configure_stream_local("OBSTACLE_DISTANCE", 10.0f);
		configure_stream_local("ODOMETRY", 30.0f);

		configure_stream_local("ACTUATOR_CONTROL_TARGET0", 10.0f);
		configure_stream_local("ADSB_VEHICLE", unlimited_rate);
		configure_stream_local("ATTITUDE_QUATERNION", 50.0f);
		configure_stream_local("ATTITUDE_TARGET", 10.0f);
		configure_stream_local("BATTERY_STATUS", 0.5f);
		configure_stream_local("CAMERA_IMAGE_CAPTURED", unlimited_rate);
		configure_stream_local("COLLISION", unlimited_rate);
		configure_stream_local("EFI_STATUS", 2.0f);
		configure_stream_local("ESTIMATOR_STATUS", 1.0f);
		configure_stream_local("EXTENDED_SYS_STATE", 5.0f);
		configure_stream_local("GIMBAL_DEVICE_ATTITUDE_STATUS", 1.0f);
		configure_stream_local("GIMBAL_DEVICE_SET_ATTITUDE", 5.0f);
		configure_stream_local("GIMBAL_MANAGER_STATUS", 0.5f);
		configure_stream_local("GLOBAL_POSITION_INT", 50.0f);
		configure_stream_local("GPS2_RAW", unlimited_rate);
		configure_stream_local("GPS_GLOBAL_ORIGIN", 1.0f);
		configure_stream_local("GPS_RAW_INT", unlimited_rate);
		configure_stream_local("GPS_STATUS", 1.0f);
		configure_stream_local("HOME_POSITION", 0.5f);
		configure_stream_local("HYGROMETER_SENSOR", 1.0f);
		configure_stream_local("NAV_CONTROLLER_OUTPUT", 10.0f);
		configure_stream_local("OPTICAL_FLOW_RAD", 10.0f);
		configure_stream_local("ORBIT_EXECUTION_STATUS", 5.0f);
		configure_stream_local("PING", 1.0f);
		configure_stream_local("POSITION_TARGET_GLOBAL_INT", 10.0f);
		configure_stream_local("POSITION_TARGET_LOCAL_NED", 10.0f);
		configure_stream_local("RAW_RPM", 5.0f);
		configure_stream_local("RC_CHANNELS", 20.0f);
		configure_stream_local("SERVO_OUTPUT_RAW_0", 10.0f);
		configure_stream_local("SYS_STATUS", 5.0f);
		configure_stream_local("SYSTEM_TIME", 1.0f);
		configure_stream_local("TRAJECTORY_REPRESENTATION_WAYPOINTS", 5.0f);
		configure_stream_local("UTM_GLOBAL_POSITION", 1.0f);
		configure_stream_local("VFR_HUD", 10.0f);
		configure_stream_local("VIBRATION", 0.5f);
		configure_stream_local("WIND_COV", 10.0f);

这里修改的是ONBOARD模式下的预设发送频率,所以在QGC地面站中配置MAVlink模式时也需将相关的MAVlink端口模式配置为ONBOARD,如下图所示。

在这里插入图片描述

修改好预设发送频率后,重新编译飞控固件并烧录至飞控板,重新连接QGC地面站,即可看到修改后的数据发送频率。


参考资料:

PX4 Mavros Topic 消息频率修改

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2124644.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SOP流程制定:vioovi ECRS工时分析软件的智慧引领

在现代制造业中,标准化操作流程(SOP)已成为提升生产效率、确保产品质量、降低运营成本的关键要素。SOP不仅为生产活动提供了明确的指导,还促进了企业管理的规范化和精细化。然而,如何科学、高效地制定SOP流程&#xff…

CISC 和 RISC 架构的对比

研究 RISC 架构优缺点的最简单方法是将其与其前身进行对比: CISC(复杂指令集计算机)架构。 内存中的两个数字相乘 右图表示一台普通计算机的存储方案。 主存储器被划分为编号从(行)1:(列&…

RAG系统的7个检索指标:信息检索任务准确性评估指南

大型语言模型(LLMs)作为一种生成式AI技术,在近两年内获得了显著的关注和应用。但是在实际部署中,LLMs的知识局限性和幻觉问题仍然是一个挑战。检索增强生成(Retrieval Augmented Generation,RAG&#xff09…

好网站包含哪些方面

好网站通常在多个方面都表现出色,包括但不限于设计、内容、导航、性能和互动性。下面将详细介绍这些方面。 首先,设计是一个网站吸引用户的第一印象。一个好的网站设计应该是清晰、直观、美观,并且符合用户体验原则。页面布局应该合理&#x…

Spire.PDF for .NET【文档操作】演示:创比较 PDF 文档

PDF 已成为跨不同平台共享和保存文档的标准格式,在专业和个人环境中都发挥着无处不在的作用。但是,创建高质量的 PDF 文档需要多次检查和修订。在这种情况下,了解如何有效地比较 PDF 文件并找出它们的差异变得至关重要,这使文档编…

【Go】Go语言基本语法--注释、变量、常量

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

Memfire Cloud使用技巧:让开发更简单,更高效

在软件开发的世界里,Memfire Cloud就像是一位隐形的助手,它悄无声息地帮助开发者们解决了一个又一个难题。如果你还在为搭建服务、开发API接口而头疼,那么Memfire Cloud无疑是你的救星。今天,我们就来聊聊如何使用Memfire Cloud&a…

面试官:v-if和v-for的优先级是什么?

一、作用 v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 true值的时候被渲染 v-for 指令基于一个数组来渲染一个列表。v-for 指令需要使用 item in items 形式的特殊语法,其中 items 是源数据数组或者对象,而 item 则是被迭代的…

【人工智能学习笔记】4_4 深度学习基础之生成对抗网络

生成对抗网络(Generative Adversarial Network, GAN) 一种深度学习模型,通过判别模型(Discriminative Model)和生成模型(Generative Model)的相互博弈学习,生成接近真实数据的数据分…

Rust程序结构与代码注释

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com) Rust编程与项目实战_夏天又到了的博客-CSDN博客 3.1 Rust程序结构 我们从一个最简单的程序入手,来观察一个Rust的程序结…

Express框架中的res

中间件由两部分组成,中间件方法和请求处理函数; 中间件方法由express提供,负责拦截请求,请求处理函数由开发人员提供,负责处理请求; app.get(‘请求路径’,‘处理函数’); //接收并处理get请求 app.post(‘请求路径’,‘处理函数’); //接收并处理post请求 可以对同一个请求…

盘点ai可以变现的3大生意,看看你猜到了几个?

一、做动物ai视频,通过流量变现 最近各个视频平台都很火的猫meme,不仅在各个蓝v账号混的风生水起,也是很多文旅的爆款密码。 有很多个人账号也会做比如动物跳舞,做饭的视频,通过流量收入和接广告来变现。 ** 二、小说…

【OJ刷题】双指针问题

这里是阿川的博客,祝您变得更强 ✨ 个人主页:在线OJ的阿川 💖文章专栏:OJ刷题入门到进阶 🌏代码仓库: 写在开头 现在您看到的是我的结论或想法,但在这背后凝结了大量的思考、经验和讨论 目录 1…

【NOI-题解】1272. 郭远摘苹果1274. 求各个科目成绩的平均分1275. 输出杨辉三角的前N行1496. 地雷数量求解

文章目录 一、前言二、问题问题:1272. 郭远摘苹果问题:1274. 求各个科目成绩的平均分问题:1275. 输出杨辉三角的前N行问题:1496. 地雷数量求解 三、感谢 一、前言 欢迎关注本专栏《C从零基础到信奥赛入门级(CSP-J&…

《旧衣服的销路在哪里》

在当今社会,随着人们生活水平的不断提高,衣物的更新换代速度愈发加快,大量的旧衣服亟待处理,旧衣服回收市场由此应运而生,且发展态势日益蓬勃。 旧衣服回收的类型丰富多样。从材质上区分,有柔软的棉质、透…

从代理协议的角度出发:解锁住宅代理

在各类代理中,代理协议扮演着至关重要的角色,它规定了代理运作的规则和要求。和其他代理相同,住宅代理也依赖于多种代理协议来处理不同类型的流量。在本文中,我们将深入研究HTTP和HTTPS代理的工作原理,比较它们的差异&…

IDC基础学习笔记

一、数据中心介绍 1、数据中心级别划分: 2、数据中心结构: 3、IT系统组成 二、数据中心硬件知识 1、服务器组件 服务器的正面接口: 服务器的反面接口: (1)CPU CPU定义:中央处理器&#xff08…

【信创】统信UOS图形界面登录闪退的解决方法

原文链接:【信创】统信UOS图形界面登录闪退的解决方法 Hello,大家好啊!今天给大家带来一篇关于统信UOS 1070桌面操作系统中,图形界面登录时出现闪退或输入正确的用户名和密码后又跳转回登录界面问题的解决方法的文章。这种问题可能…

JAVA基础:抽象类,接口,instanceof,类关系,克隆

1 JDK中的包 JDK JRE 开发工具集(javac.exe) JRE JVM java类库 JVM java 虚拟机 jdk中自带了许多的包(类) , 常用的有 java.lang 该包中的类,不需要引用,可以直接使用。 例如&#xff1…

关于axios同步获取数据的问题

axios同步获取数据 Axios介绍问题代码修改 总结 Axios介绍 Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 X…