PIXHAWK添加自定义消息存储到SD卡

2023-05-16

        四旋翼调试阶段总会出现很多难以预见的现象,这时为了找到所出问题的原因,就需要获得原始相关数据进行分析,pixhawk代码提供了记录飞行日志的功能,能够将飞行中的重要数据存入SD卡中,并有相应的软件画出曲线分析数据。

         目前pixhawk官方开发指导网站上介绍的是Logging功能的用法,没有提到sdlog2,而代码中默认启动的是sdlog2这个应用,所以添加新的日志需要按照sdlog2的方式添加,通过阅读源码尝试,总结出添加新的日志数据的步骤如下:

1.     定义要记录的数据结构体

在src/modules/sdlog2目录下找到sdlog2_messages.h头文件,仿照文件中其他数据结构体的写法,添加自己的结构体。如:

#define LOG_ALT_MSG 62

struct log_ALT_s

{

       floatdistance;

       boolstatus;

};

其中数字代表标号,按顺序排即可;结构体中变量个数按照自己需求添加,不一定要和某个uorb主题内的变量完全相同。

2.     将新定义日志结构添加到消息列表中

同样在上一步的文件中进行操作。在文件末尾找到log_formats数组,仿照格式添加上一步定义的结构体。如:

LOG_FORMAT(ALT, ”fB” , ”Alt , state” ),

其中ALT,Alt,state均为读取日志曲线时对应曲线的标号。

fB代表结构体中数据的类型,对应关系如下图

                         

3.     定义日志数据缓冲区及日志变量

在src/modules/sdlog2目录下找到sdlog2.c文件,在buf联合体的末尾(约1186行)中新增所订阅某个主题的数据。如订阅超声波数据:

struct sonar_distance_s sonar;

缓冲变量用于存储某个主题的所有数据,因此要在此文件的起始位置包含所订阅主题的头文件。

在sdlog.2文件中body结构体的末尾(约1233行)新增待记录数据的变量。如:

struct log_ALT_s log_SONAR;

这个变量用于保存所要写入SD卡的数据。

在sdlog.2文件中subs结构体的末尾(约1296行)新增对所记录主题的订阅,并在结构体外赋初值。如:

int sonar_sub;

subs.sonar_sub = -1;

实现对超声波数据的订阅以及赋值。

4.     新数据转移

这一步将某个主题更新后的数据保存到自定义的数据结构体中。在sdlog.2文件末尾(如2290左右空白处)仿照其他主题的方式增加代码:

if(copy_if_updated(ORB_ID(sonar_distance),&subs.sonar_sub, &buf.sonar))

{

       log_msg.msg_type=LOG_ALT_MSG;

       log_msg.body.log_SONAR.distance=buf.sonar.distance[0]/100.0f;

       log_msg.body.log_SONAR.status=buf.sonar.status[0];

       LOGBUFFER_WRITE_AND_COUNT(ALT);

}

这段代码将缓冲区中所保存的更新后的某主题的数据转移到自定义结构体中用于写入SD卡,可以选择性的保存需要的数据,因此正如第1步所说,自定义数据结构体内的变量个数并不一定如所订阅主题一样,依自己需求而定,可以是主题内的部分变量。

下图为存入SD卡中的超声波数据,红色为测量的距离值,绿色为超声波返回的状态信息。


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

PIXHAWK添加自定义消息存储到SD卡 的相关文章

  • Pixhawk之姿态解算篇(4)_补充篇

    一 开篇 大家期待已久的第四篇来了 xff0c 但是本篇可能比较水啊 见谅 首先 xff0c 上一周没有什么收获 xff0c 虽然看了不少的论文 xff0c 但是却没有什么质的飞越 看的论文都是关于姿态解算的 xff0c 用的算法大部分也都
  • pixhawk px4 添加自定义mavlink消息

    首先添加一个 uORB topic xff0c 然后添加一个 mavlink 解析程序 xff0c 这将会将一个输入的 mavlink 消息解析并传入 uORB topic 中 注 xff1a 本例程 xff0c nsh仍然看不到消息 xf
  • pixhawk飞控板添加额外pwm输出通道控制开伞或舵机转动实现功能

    学习大佬的文章 xff0c 贴图来用 https blog csdn net dai93 article details 89852241 这是输出流的大致示意 如果在飞控需要控制单独的舵机 xff0c 可以自定义一个pwm通道输出 xff
  • Pixhawk ulog飞行日志分析

    在python下安装pyulog xff0c 在 ulog文件目录下输入ulog2csv即可将ulog转化为csv形式输出 ulog文件的保存时间 43 8即为飞行实际的时间 timestamp为时间戳 xff0c 除以10 6后单位为秒
  • Mavros读取PixHawk硬件的IMU数据

    Ubuntu18 04 读取PixHawk硬件的IMU数据 实现方式 使用mavros话题读取到Pixhawk飞控的IMU数据 实现步骤 安装ros 检查是否安装cmake xff08 未安装根据提示安装 xff09 cmake span
  • APM、PIXHAWK、PX4的关系

    摘自 xff1a https bbs amovlab com forum php mod 61 viewthread amp tid 61 1202 amp extra 61 page 3D1 Pixhawk PX4 APM傻傻分不清 xf
  • Pixhawk之姿态控制篇(1)_源码算法分析(超级有料)

    摘自 xff1a https blog csdn net qq 21842557 article details 51439171 Pixhawk之姿态控制篇 xff08 1 xff09 源码算法分析 xff08 超级有料 xff09 20
  • 我发现GAAS,阿木的SLAM无人机,XTDrone都是用的pixhawk !

    我发现 xff0c 七月的GAAS xff0c 阿木的SLAM无人机 xff0c 还有这个开课吧的智能无人机的课 xff0c 这三个都是用的pixhawk飞控 xff0c 对不对 xff0c 没有一个去用上面自己写的简单飞控啥的没有 xff
  • pixhawk的offboard模式其实是和定高(AltHold) 定点(loiter) 这些模式平级的一个模式

    pixhawk的offboard模式其实是和定高 xff08 AltHold 定点 loiter 这些模式平级的一个模式 所以也是可以通过遥控器进入offboard模式的 不是什么特别的东西 https blog csdn net msq1
  • Pixhawk学习1——CMakeList.txt的解析

    在PX4的工程文件中 xff0c src modules下是具体的飞控代码 里面主要包含了传感器采集 姿态结算 姿态控制 xff0c 位置结算 位置控制等程序模块 在进行二次开发时 xff0c 需要添加的模块也是在这个文件夹里 每个文件夹里
  • pixhawk ulg转csv

    ulg是目前最新版px4固件生成的log格式 xff0c 下载最新版的flightplot即可对内部数据进行预览分析 xff0c flightplot中支持部分函数和运算符操作 xff0c 但对带 数据的操作不支持 xff0c 如需要对某些
  • pixhawk飞控小车倒车_Pixhawk 系列

    Pixhawk 系列 Pixhawk opens new window is an independent open hardware project providing readily available low cost and hig
  • PX4/PixHawk无人机飞控应用开发

    最近做的一个国防背景的field UAV项目 xff0c 细节不能多谈 xff0c 简单写点技术体会 1 PX4 Pixhawk飞控软件架构简介 PX4是目前最流行的开源飞控板之一 PX4的软件系统实际上就是一个firmware xff0c
  • pixhawk mc_pos_control.cpp源码解读

    好久没跟新blog了 xff0c 这段时期边调试边看程序 xff0c 所以有点慢 要开始着手调试了 这篇blog是顺着上一篇pixhawk 整体架构的认识写的 xff0c 接下来看程序的话 xff0c 打算把各个功能模块理解一遍 xff0c
  • 【Pixhawk】注册一个字符型驱动设备

    最近学习Pixhawk的SPI xff0c 本以为PX4是STM32单片机而已 xff0c 写个SPI驱动应该很简单 但是当我看到mpu9250的那些cpp文件 xff0c 我一下就蒙了 由于PX4用的NUTTX系统 xff0c 类似Lin
  • F450机架 Pixhawk飞控实现自动避障(2019.11.29)

    之前进行无人机项目 xff0c 实现避障 巡航 定点 航拍等功能 xff0c 项目结束 xff0c 在这里进行分享经验 xff0c 项目所用器件为自己使用的 xff0c 仅供参考 xff0c 实际实现须结合自己实际情况 1 传感器选择 权盛
  • Pixhawk-信息流浅解析

    根深方能叶茂 在等待的日子里 xff0c 刻苦读书 xff0c 谦卑做人 xff0c 养得深根 xff0c 日后才能枝叶茂盛 Better 根爷 之前我们已经谈到系统框架 xff0c 之前谈到了定制自己功能的两部 xff1a 添加模块和修改
  • win7下 pixhawk (ardupilot) 的编译

    前几天都在搞pixhawk源码编译问题 xff0c 什么在window下用Console或者eclipse xff0c 还是在Ubuntu下 xff0c 都做了 xff0c 而且把 mk文件都看了 xff0c 结果还是有bug 总结一下三种
  • pixhawk px4 commander.cpp

    对于复杂的函数 xff0c 要做的就是看函数的输入是什么 来自哪里 xff0c 经过处理后得到什么 给谁用 xff0c 这样就可以把程序逻辑理清 中间的分析就是看函数如何处理的 span class hljs keyword extern
  • 树莓派3B使用mavlink串口连接PIXHAWK_V5

    参考网址 xff1a http ardupilot org dev docs raspberry pi via mavlink html https dev px4 io en robotics dronekit html https do

随机推荐

  • 本地项目(vscode)和码云建立连接,及常用git命令

    本地Git和线上关联 xff1a 权限设置 G码云 设置 SSH公钥 公钥管理电脑桌面点击右键进入Git Bash Here对照链接输入指令绑定邮箱 xff1a https gitee com help articles 4181 arti
  • 解决android studio 控制台乱码

    双击shift键 xff0c 输入vmoption xff0c 选择Edit Custom CM Options 如果没有配置过 xff0c 就会弹出窗口问是否创建配置文件 xff0c 点击Create xff0c 输入 Dfile enc
  • 无人机学习笔记

    硬件 首先从硬件开始说起把 xff0c 气压计 陀螺仪 磁力计 xff0c 这三个不用说肯定是必备的 xff0c 后面由于开发的需要还添加了激光测距 xff0c 以及光流 但是在开发过程中遇到了很多问题 xff0c 一个一个来说 气压计 气
  • 解决KEIL中ARM编译器不能编译的问题

    keil编译器出现问题 xff0c 根据提示意思就是ARM编译器选择不对的问题 Target 39 Printf 39 uses ARM Compiler 39 V5 06 update 6 build 750 39 which is no
  • linux 内核中strstr函数 功能

    在内核代码中看到strstr函数 xff1a mode 61 strstr boot command line 34 D 34 应该是一个字符串处理函数 xff0c 使用man命令查看下给出如下解释 xff1a SYNOPSIS inclu
  • KPI异常检测资料汇总

    文章目录 0 综述类1 KPI异常检测1 1 经典模型1 1 1 Donut 基于VAE的周期性无监督KPI异常检测1 1 1 1 论文解读1 1 1 2 源码分析 1 12 MAD 基于GANs的时间序列数据多元异常检测 1 2 行业落地
  • jupyter notebook:使用argparse包存在的问题及解决

    argparse模块 argparse是python用于解析命令行参数和选项的标准模块 导入argparse包 span class hljs keyword import span argparse 遇到的问题 parser 61 arg
  • Qt C++和Java相互调用

    Qt C 43 43 和Java相互调用 1 C 43 43 调用Java Test h span class token keyword class span span class token class name Test span s
  • 单片机HAL库使用HAL_UART_Receive_IT

    前言 由于本人第一次尝试开发单片机 xff0c 要实现的功能是信息转发 xff0c 需要调用HAL库方法 xff0c 中断接受信息转发给FPGA xff0c 这里没有用到DMA方式所以不做赘述 xff0c 特此记录分享希望帮到你们 发送信息
  • VLC播放gstreamer pipeline rtp流

    一 xff1a Gstreamer 下载gstreamer 编译等自行百度 pipeline命令 硬编码输出rtp gst launch 1 0 e videotestsrc 34 video x raw format 61 I420 wi
  • 【unity】Multiple plugins with the same name '...'解决方案

    Multiple plugins with the same name 39 ulua 39 found at 39 Assets Plugins uLua 1 22 x86 64 ulua dll 39 and 39 Assets Plu
  • CMAKE 环境变量

    CMAKE CXX FLAGS CMAKE C FLAGS 在cmake脚本中 xff0c 设置编译选项有两种方式 xff1a 1 1 add compile options命令 add compile options命令添加的编译选项是针
  • Gstreamer常见pipeline命令 - 持续更新中

    解码 xff1a xff08 根据码流类型自适应创建相应解码器 xff09 gst launch 1 0 filesrc location 61 home user DCIM Camera VID 20201001 103749 mov q
  • ubuntu18.04 安装包提示没有可安装候选

    sudo apt get install gcc 正在读取软件包列表 完成 正在分析软件包的依赖关系树 正在读取状态信息 完成 没有可用的软件包 gcc xff0c 但是它被其它的软件包引用了 这可能意味着这个缺失的软件包可能已被废弃 xf
  • D435在ROS下的使用

    本人电脑Ubuntu16 04 Ros 为kinetic D435可以用的ros源码下载地址 https github com intel ros realsense releases一定要仔细查看每一个版本基于的sdk的版本号 D435的
  • 在ros下使用D435出现问题ResourceNotFound: realsense2_camera

    在launch的文件内运行roslaunch rs rgbd launch出现错误 xff1a ResourceNotFound realsense2 camera 或运行 roslaunch realsense2 camera rs rg
  • 在ROS中发布IMU数据

    本文主要是来发布sensor msgs Imu类型的消息 xff0c 其中 xff29 xff2d xff55 的数据为虚拟的 xff11 xff0e 在自己的工作空间中创建ros程序包 这个包依靠std msgs roscpp rospy
  • 控制理论学习资料

    DR CAN 傅里叶分析之掐死教程 xff08 完整版 xff09 更新于2014 06 06
  • 卡尔曼滤波原理二:扩展卡尔曼

    1 理论部分 上一篇介绍了线性卡尔曼滤波器 xff0c 当系统为线性高斯模型时 xff0c 滤波器能给出最优的估计 xff0c 但是实际系统总是存在不同程度的非线性 xff0c 如平方 三角关系 开方等 对于非线性系统 xff0c 可以采用
  • PIXHAWK添加自定义消息存储到SD卡

    四旋翼调试阶段总会出现很多难以预见的现象 xff0c 这时为了找到所出问题的原因 xff0c 就需要获得原始相关数据进行分析 xff0c pixhawk代码提供了记录飞行日志的功能 xff0c 能够将飞行中的重要数据存入SD卡中 xff0c