ardupilot之mavlink消息--从飞控发出--单向

2023-05-16

飞控采用mavlink消息进行数据的传输。普遍说法是,现有的mavlink消息几乎已经涵盖了所有你的能想象到的内容,完全可以覆盖多处需求。 无奈科研总是要定义一些新鲜玩意 ,所以总是有无法完全满足需求,需要自定义消息的时候。

  1. mavlink 消息的创建,首先在common.xml文件中找到对应的message部分,在common.xml文件的最后部分, 对应复制一个message消息,修改对应的消息ID,消息名称,消息内容,然后编译即可,生成对应的.h文件,对应的.h文件在 build/XXX/libraries/GCS_Mavlink/.../common/下面,对应的默认生成名字为 mavlink_msg_XXX.h
  2. 对应默认生成的 mavlink_msg_XXX.h 中主要包含有如下几个函数
    mavlink_msg_XXX_pack( )
    mavlink_msg_XXX_pack_chan( )
    mavlink_msg_XXX_encode( )
    mavlink_msg_XXX_encode_chan( )
    mavlink_msg_XXX_send( )
    mavlink_msg_XXX_send_struct( )
    其中常用的是mavlink_msg_XXX_send()
  3. 但是地面站中是无法显示自己定义的mavlink消息的,初步认为地面站要显示自己定义的mavlink消息,需要修改地面站源码。那么只能修改现有的mavlink消息了…
  4. 一个比较重要的函数是
    在文件gcs_common.h下面 GCS_MAVLINK::try_send_message( )
    switch(id){
    添加 case XXX: 以及相应的语句
    . 但是在case中添加自定义的消息却不会被发送出去。暂时没有找到相应原因。因此,综合上述3,4,选择修改现有的Mavlink消息
  5. 考虑到要发送的消息中含有float数据类型,选择修改attitude_quaternion消息, 如下图所示:
    在这里插入图片描述
    并且将上述函数同attitude 的mavlink消息放在同一个case 下面。从mission planner地面站中可以看到对应的消息已经出现
    在这里插入图片描述
  6. 由于dronekit 自带的vehicle属性中没有对 ATTITUDE_QUATERNION 消息的订阅,所以需要参照 dronekit 官网完成对 该 mavlink消息的添加监听工作。其对应的代码如下:
import time

from dronekit import Vehicle, connect
import numpy as np

class RawQuaternion(object):
    def __init__(self, time_boot_us=None, q1=None, q2=None, q3=None, q4=None, rollspeed=None, pitchspeed=None, yawspeed=None, off=None ):
        self.time_boot_us = time_boot_us
        self.q1 = q1
        self.q2 = q2
        self.q3 = q3
        self.q4 = q4
        self.rollspeed = rollspeed
        self.pitchspeed = pitchspeed
        self.yawspeed = yawspeed
        self.off = off

class Myvehicle(Vehicle):
    def __init__(self, *args):
        super(Myvehicle, self).__init__(*args)

        self._raw_quaternion = RawQuaternion()
        @self.on_message('ATTITUDE_QUATERNION')
        def listener(self, name, message):
            self._raw_quaternion.time_boot_us = message.time_boot_ms
            self._raw_quaternion.q1 = message.q1
            self._raw_quaternion.q2 = message.q2
            self._raw_quaternion.q3 = message.q3
            self._raw_quaternion.q4 = message.q4
            self._raw_quaternion.rollspeed = message.rollspeed
            self._raw_quaternion.pitchspeed = message.pitchspeed
            self._raw_quaternion.yawspeed = message.yawspeed
            self._raw_quaternion.off = message.repr_offset_q
            self.notify_attribute_listeners('attitude_quaternion',self._raw_quaternion)

    @property
    def raw_quaternion(self):
        quaternion_np = np.array([self._raw_quaternion.q1,self._raw_quaternion.q2,self._raw_quaternion.q3,self._raw_quaternion.q4])
        return quaternion_np

    @property
    def raw_anglespeed(self):
        anglespeed_np = np.array([self._raw_quaternion.rollspeed, self._raw_quaternion.pitchspeed, self._raw_quaternion.yawspeed])
        return anglespeed_np

vehicle1=connect('127.0.0.1:14551',wait_ready=True, vehicle_class= Myvehicle)
while True:
    time.sleep(0.5)
    print(vehicle1.raw_quaternion, end="")
    print(vehicle1.raw_anglespeed)

其代码显示结果如下:
在这里插入图片描述
至此可以在python中显示自己需要发送的数据了。

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

ardupilot之mavlink消息--从飞控发出--单向 的相关文章

  • 【无人机开发】通讯协议MavLink详解

    1 MAVLink简介 MAVLink xff08 Micro Air Vehicle Link xff0c 微型空中飞行器链路通讯协议 xff09 是无人飞行器与地面站 xff08 Ground Control Station xff0c
  • wifi数传组网之精简mavlink

    1 无人机集群测绘在同一地点同一时间采集一片区域的多光谱数据 xff0c 经过后期的处理可得到该区域的植被生长情况 xff0c 本文就是讨论和测试利用wifi数传组网的机制实现多台的无人机集群 xff0c 组网内的无人机能够单独的进行控制
  • 无人机ADS-B模块 (兼容Px4、ardupilot、极致飞控)拒绝黑飞,耗子尾汁!

    近年来 xff0c 无人机等低空飞行器成为很多玩家的新 玩具 xff0c 但是绝大多数飞行器都属于 黑飞 xff0c 就是没有民航管理部门的适航许可 也没有相关部门颁发的驾驶执照的 2018年2月7日 xff0c 河北省唐山市古冶区公安分局
  • px4 mavlink消息自定义及其发送

    在px4源码中自定义消息 xff0c 并发送主要有以下三个大步骤 xff1a 一 自定义mavlink消息 1 在myMessage XML文件中自定义消息 xff08 注意消息ID不要与原有的重复 xff09 具体消息ID可参考这里 2
  • QGC通过网络连接飞控(树莓派+ROS桥接MavLink)

    1 为树莓派刷ubuntu 因为无界面的ubuntu在连接无线 设置自动登录等方面的设置比较复杂 我经过各种百度尝试后 均没有成功 所以我放弃了 转而又刷了ubuntu mate 带界面 然后连接了无线 设置了自动登录 静态IP 自此树莓派
  • 【C/C++/QT/ 移植/导入Mavlink V2.0/Mavlink V1.0教程】

    提示 xff1a 本文针对的实例是Mavlink V2 0版本 xff0c Mavlink V1 0版本其实也是类似的的步骤 xff0c 选择的mavlink库不一样而已 官方链接放在此 xff1a Install MAVLink MAVL
  • Ardupilot SITL(Software in the Loop)软件仿真

    参考 xff1a http ardupilot org dev docs sitl native on windows html sitl native on windows 第一步 xff1a 下载MAVProxy 第二步 xff1a 下
  • QuadPlane (VTOL)——ArduPilot——流程梳理

    版权声明 xff1a 本文为博主原创博文 xff0c 未经允许不得转载 xff0c 若要转载 xff0c 请说明出处并给出博文链接
  • MAVLINK 请求参数和接收参数

    if decodeState 61 61 1 之后是放在mavlink消息解析后面 请求返回参数配置列表 void MavDebug on pushButton 3 clicked mavlink message t msg mavlink
  • MAVLink认识、使用、自定义

    对mavlink的认识 MAVLink是针对小型飞行器 xff08 MAV xff09 的一个lightweight header only message marshalling library 由头文件构成的信息编组库 它被封装成C结构
  • 在ubuntu上安装mavlink-router

    版本说明 xff1a ubuntu 20 0 04 mavlink router 2 为了安装mavlink router 需要预先安装一些依赖库 xff1a autoconf libtool python future python3 f
  • px4自定义mavlink收不到消息的问题

    px4版本1 12稳定版 最近在做px4二次开发相关工作 按照网上的一些教程自定义了一个mavlink消息用来控制无人机 按照教程里面的单独开了一个xml来定义消息 最后生成的消息在px4端通过流传输的方式自己写的客户端可以收到消息 但是客
  • ardupilot之添加mavlink消息

    本文是这篇文章的复现 xff1a http www sohu com a 213599378 175233 一 mavlink分析 Mavlink 的全称是Micro Air Vehicle link xff0c pixhawk把它作为与地
  • uORB和MAVLink通讯例程

    uORB uORB 是一种异步 publish subscribe 的消息传递 API xff0c 用于进程或者线程间通信 IPC 添加新的Topic xff08 主题 xff09 在msg 目录下创建一个新的 msg文件 xff0c 并将
  • ardupilot的libraries之PID

    在源码的libraries中 xff0c 有两个关于PID的源文件文件夹 xff0c 一个叫AC PID xff0c 另一个是PID AC PID中又细分为AC HELI PID AC P和AC PID xff0c 这里我们只讨论AC PI
  • MISSION_MAVLINK

    上传航点的mavlink包 MISSION ITEM 39 Message encoding a mission item This message is emitted to announce the presence of a miss
  • 配置Ardupilot环境4--------Ubuntu 安装eclipse

    1 资源准备 这个的要求不是太清楚 xff0c 反正我是随便下的版本 xff0c 成功配置 下载JDK 选择dk 8u172 linux x64 tar gz 下载Eclipse 选择Eclipse IDE for Java Develop
  • ArduPilot之开源代码框架

    ArduPilot之开源代码框架 1 系统框架2 工程框架2 1 工程目录2 2 代码组成2 3 运行流程 4 硬件传感器总线4 1 I2C4 2 SPI4 3 UART4 4 CAN 5 软件设计概念6 总结7 参考资料 在研读ArduP
  • mavlink模块中接收offboard模式下的mavlink消息流

  • Ardupilot笔记:Rover auto模式下的执行流程

    先从mode auto cpp的update 开始分析 流程如图 xff1a 进入函数update 后会执行函数navigate to waypoint mode auto cpp span class token keyword void

随机推荐

  • 聊一聊那些应该了解的大佬(飞控,人工智能方向)

    写在前面的话 xff1a 以下内容与图片大多来自于网络 xff0c 如有侵权 xff0c 请告知我进行修改 部分评论仅为个人观点 xff0c 无人机方面大牛很多 xff0c 无法一一评说 xff0c 在此随意发挥 也欢迎各位看官补充完善 R
  • ArduPilot+mavros+gazebo+QGC联合仿真初体验

    首先给出最终效果图 xff1a 实现内容与PX4官网代码功能类似 xff0c 四旋翼飞机自动起飞至2 5m高度 xff0c 悬停一定时间 xff0c 然后自主降落 记录如下几个需要注意的地方 xff1a 一共使用到三个文件夹 xff0c 其
  • ArduPilot姿态控制方法解析---(倾转分离)

    先给出一些预备知识 xff1a 欧拉角 xff1a 即所谓的Roll Pitch Yaw 而事实上 xff0c 根据其定义 xff0c 欧拉角的具有不同的表示 存在先绕哪个轴 xff0c 后绕哪个轴转的差别 xff08 将旋转分解成绕三个轴
  • C中main函数解析

    参考链接 main函数不同写法 以下为main函数的6种不同写法 xff1a span class token function main span span class token punctuation span span class
  • ArduPilot姿态环控制-----传感器初始化

    参考链接 xff1a https blog csdn net lixiaoweimashixiao article details 80540295 首先我们假定从void AP Vehicle setup 开始 xff0c 这里是飞控所有
  • ArduPilot飞行前检查——PreArm解析

    ArduPilot飞行前检查 主要包括两个部分 1 初始化中遥控器输入检查 xff1b 2 1Hz解锁前检查 附 xff1a 显示地面站信息 参考文章 xff1a Ardupilot Pre Arm安全检查程序分析 1 初始化中遥控器输入检
  • ROS_PX4_gazebo学习记录

    在官方程序上 xff08 PX4 wiki上为offboard起飞到2m高度 xff09 进行更改 xff0c 实现首先起飞到固定点 xff08 x 61 1 y 61 2 z 61 5 然后按照给定角度飞行 补充 xff1a 最终实现效果
  • Rospy初次使用记录-定点飞行

    由于接触到pytorch xff0c 所以用python完成与ROS的通信 xff0c 下面例子为从程序中摘出来的一部分 xff0c 用到了ROS消息的订阅与发布 xff0c 服务的通信 xff0c 可以作为参考使用 xff1a span
  • 四旋翼飞行器数学模型

    最近接触到四旋翼无人机的位置控制方法 xff0c 就又了解了一下四旋翼飞机的数学模型 xff0c 现总结如下 xff1a 位置环 xff08 均定义在惯性坐标系下 xff09 P
  • 基于ROS与optitrack的四旋翼飞机开发流程

    本文将一些注意点记录下来 xff0c 适合于开发调试 xff1a 目前只是分段调试通了 xff0c 带后续联合开发的时候在来补充还有没有什么注意点 xff08 过程也算麻烦 xff0c 也算不麻烦 xff09 xff1b xff32 xff
  • ROS_调试(三) 打印输出

    ROS INFO 采用类似C语言的形式 ROS DEBUG ROS DEBUG STREAM 采用类似C 43 43 语言的形式打印 ROS DEBUG STREAM NAMED ROS DEBUG STREAM THROTTLE NAME
  • px4调试bug--添加mavlink_log_info信息

    写在前面的话 有一阵子没有看px4的代码了 由于项目和论文的需要 又要接触这个 其中又遇到一些新的问题 找到了一些新的解决方法 故在此记录一下 总是在几种飞控代码之间跳来跳去 没有认真研究一个 有点遗憾 PX4的代码调试还没有找到什么好的方
  • APM,PX4之开源协议

    APM代码设计的是GPLv3协议 xff0c PX4代码采用的是BSD协议 从上图可以看出 xff0c ardupilot的代码是允许别人修改 xff0c 但是修改之后必须开源且采用相同的许可证书 而PX4代码则是允许别人修改 xff0c
  • C语言实现mavlink库与px4通信仿真

    参照网址 http mavlink io en mavgen c 首先从github上下载对应的C uart interface example 对应的github仓库网址为https github com mavlink c uart i
  • RK3308--8声道改成双声道+录音增益

    改为双声道 修改dts文件 相关路径 xff1a Y hxy RK3308 sdk 1 5 kernel arch arm64 boot dts rockchipY hxy RK3308 sdk 1 5 kernel Documentati
  • Flightmare install 安装指南

    flightmare 是ETH推出的一个用于gazebo仿真 xff0c 强化学习训练的平台 xff0c 并在github上公开了其源代码 本文主要记录在配置环境过程中出现的问题 github网址链接 https github com uz
  • matlab发送mavlink消息

    主要介绍了通过matlab脚本实现UDP发送mavlink消息 xff0c 为后面matlab计算 xff0c 与Optitrack联合调试 xff0c 控制无人机做准备 示例演示效果链接为 matlab通过UDP协议发送mavlink消息
  • apm-ros-optitrack初步尝试

    本文记录采用ArduPilot固件 xff0c 室内optitrack环境下飞行实现中遇到的一些问题 在apm mavros仿真中 xff0c 总是出现mavros state 显示 not connected 在实际的操作中 xff0c
  • APM代码调试知识点汇总

    由于项目的需要 xff0c 对ardupilot的源码进行二次开发 本文记录在二次开发中遇到的问题以及注意事项 xff1a CUAV V5 实测 apm 串口 xff0c 对于姿态数据的发送和接收在200Hz的时候 xff0c 是没有问题的
  • ardupilot之mavlink消息--从飞控发出--单向

    飞控采用mavlink消息进行数据的传输 普遍说法是 xff0c 现有的mavlink消息几乎已经涵盖了所有你的能想象到的内容 xff0c 完全可以覆盖多处需求 无奈科研总是要定义一些新鲜玩意 xff0c 所以总是有无法完全满足需求 xff