pymavlink简单使用

2023-10-24 06:52
文章标签 简单 使用 pymavlink

本文主要是介绍pymavlink简单使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境

windows10 + python3.11 + pymavlink2.4.40

工具

虚拟串口工具 Virtual Serial Port Driver 6.9
串口/网络调试助手 sscom5.13.1.exe

串口通信

  1. 虚拟串口 COM1, COM2
    在这里插入图片描述

  2. 调试助手连接COM2
    在这里插入图片描述

  3. pymavlink连接COM1

from pymavlink import mavutil
import timeconnect = mavutil.mavlink_connection('COM1', source_system=1, source_component=2)target_system = connect.target_system
target_component = connect.target_componentmission_request_list_message = connect.mav.mission_request_list_encode(target_system, target_component)
# 发送mavlink消息
count = 10
while count > 0:connect.mav.send(mission_request_list_message)count -= 1time.sleep(1)
  1. COM2收到COM1的消息
    在这里插入图片描述

UDP通信

  1. 调试助手建立UDP连接
    在这里插入图片描述

  2. pymavlink使用UDP发送消息到指定ip和端口

from pymavlink import mavutil
import timeconnect = mavutil.mavlink_connection('udpout:127.0.0.1:8000', source_system=1, source_component=2)
# connect = mavutil.mavlink_connection('udpbcast:127.0.0.1:8000', source_system=1, source_component=2)
target_system = connect.target_system
target_component = connect.target_componentmission_request_list_message = connect.mav.mission_request_list_encode(target_system, target_component)
# 发送mavlink消息
count = 10
while count > 0:connect.mav.send(mission_request_list_message)count -= 1time.sleep(1)
  1. 调试助手收到消息
    在这里插入图片描述

使用pymavlink建立udp连接后接收消息

from pymavlink import mavutilconnect = mavutil.mavlink_connection('udpin:127.0.0.1:10000', source_system=1, source_component=2)while True:msg = connect.recv_match(blocking=True)# print(list(msg.data))print(msg.get_type())
  1. 发送消息
    在这里插入图片描述
  2. 接收消息
    在这里插入图片描述

心跳包

connect.mav.heartbeat_send(mavutil.mavlink.MAV_TYPE_ONBOARD_CONTROLLER,mavutil.mavlink.MAV_AUTOPILOT_INVALID, 0, 0, 0)
FE 09 00 01 02 00 00 00 00 00 12 08 00 00 03 03 F5

解析 GLOBAL_POSITION_INT

  1. 使用网络调试助手通过串口连接pixhawk,得到一条mavlink消息
FE 1C 0A 01 01 21 0B 45 01 00 00 00 00 00 00 00 00 00 92 13 00 00 9E 26 00 00 00 00 02 00 1B 00 97 0A 72 9B

十六进制21对应十进制33
2. 在mavlink官网查看#33的消息结构
在这里插入图片描述

  1. 使用pymavlink接收消息并解析
    4.1 源码
from pymavlink import mavutil
import time
connect = mavutil.mavlink_connection('udpin:127.0.0.1:10000', source_system=1, source_component=1)while True:msg = connect.recv_match(blocking=True)print(msg.get_type())print(msg.get_fieldnames())print(type(msg))print(msg.time_boot_ms)print("******")print(msg.lat)print(msg.lon)print(msg.alt)print(msg.relative_alt)print("-------")print(msg.vx)print(msg.vy)print(msg.vz)print(msg.hdg)

4.2 结果
在这里插入图片描述

解析 ATTITUDE

在这里插入图片描述
报文:

FE 1C 1F 01 01 1E 08 46 01 00 41 87 66 3C 19 BC 26 3C DB 4C F2 3E 48 24 B3 38 20 9C 55 B9 9E 57 41 38 C6 84 

解析代码

while True:msg = connect.recv_match(blocking=True)print(msg.get_type())print(msg.get_fieldnames())print(msg.roll)print(msg.pitch)print(msg.yaw)

结果:
在这里插入图片描述

这篇关于pymavlink简单使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/273447

相关文章

springboot3.x使用@NacosValue无法获取配置信息的解决过程

《springboot3.x使用@NacosValue无法获取配置信息的解决过程》在SpringBoot3.x中升级Nacos依赖后,使用@NacosValue无法动态获取配置,通过引入SpringC... 目录一、python问题描述二、解决方案总结一、问题描述springboot从2android.x

SpringBoot整合AOP及使用案例实战

《SpringBoot整合AOP及使用案例实战》本文详细介绍了SpringAOP中的切入点表达式,重点讲解了execution表达式的语法和用法,通过案例实战,展示了AOP的基本使用、结合自定义注解以... 目录一、 引入依赖二、切入点表达式详解三、案例实战1. AOP基本使用2. AOP结合自定义注解3.

Python中Request的安装以及简单的使用方法图文教程

《Python中Request的安装以及简单的使用方法图文教程》python里的request库经常被用于进行网络爬虫,想要学习网络爬虫的同学必须得安装request这个第三方库,:本文主要介绍P... 目录1.Requests 安装cmd 窗口安装为pycharm安装在pycharm设置中为项目安装req

使用Python将PDF表格自动提取并写入Word文档表格

《使用Python将PDF表格自动提取并写入Word文档表格》在实际办公与数据处理场景中,PDF文件里的表格往往无法直接复制到Word中,本文将介绍如何使用Python从PDF文件中提取表格数据,并将... 目录引言1. 加载 PDF 文件并准备 Word 文档2. 提取 PDF 表格并创建 Word 表格

使用Python实现局域网远程监控电脑屏幕的方法

《使用Python实现局域网远程监控电脑屏幕的方法》文章介绍了两种使用Python在局域网内实现远程监控电脑屏幕的方法,方法一使用mss和socket,方法二使用PyAutoGUI和Flask,每种方... 目录方法一:使用mss和socket实现屏幕共享服务端(被监控端)客户端(监控端)方法二:使用PyA

Python使用Matplotlib和Seaborn绘制常用图表的技巧

《Python使用Matplotlib和Seaborn绘制常用图表的技巧》Python作为数据科学领域的明星语言,拥有强大且丰富的可视化库,其中最著名的莫过于Matplotlib和Seaborn,本篇... 目录1. 引言:数据可视化的力量2. 前置知识与环境准备2.1. 必备知识2.2. 安装所需库2.3

SpringBoot简单整合ElasticSearch实践

《SpringBoot简单整合ElasticSearch实践》Elasticsearch支持结构化和非结构化数据检索,通过索引创建和倒排索引文档,提高搜索效率,它基于Lucene封装,分为索引库、类型... 目录一:ElasticSearch支持对结构化和非结构化的数据进行检索二:ES的核心概念Index:

Python数据验证神器Pydantic库的使用和实践中的避坑指南

《Python数据验证神器Pydantic库的使用和实践中的避坑指南》Pydantic是一个用于数据验证和设置的库,可以显著简化API接口开发,文章通过一个实际案例,展示了Pydantic如何在生产环... 目录1️⃣ 崩溃时刻:当你的API接口又双叒崩了!2️⃣ 神兵天降:3行代码解决验证难题3️⃣ 深度

Linux内核定时器使用及说明

《Linux内核定时器使用及说明》文章详细介绍了Linux内核定时器的特性、核心数据结构、时间相关转换函数以及操作API,通过示例展示了如何编写和使用定时器,包括按键消抖的应用... 目录1.linux内核定时器特征2.Linux内核定时器核心数据结构3.Linux内核时间相关转换函数4.Linux内核定时

python中的flask_sqlalchemy的使用及示例详解

《python中的flask_sqlalchemy的使用及示例详解》文章主要介绍了在使用SQLAlchemy创建模型实例时,通过元类动态创建实例的方式,并说明了如何在实例化时执行__init__方法,... 目录@orm.reconstructorSQLAlchemy的回滚关联其他模型数据库基本操作将数据添