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 time

connect = mavutil.mavlink_connection('COM1', source_system=1, source_component=2)

target_system = connect.target_system
target_component = connect.target_component

mission_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 -= 1
    time.sleep(1)

  1. COM2收到COM1的消息
    在这里插入图片描述

UDP通信

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

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

from pymavlink import mavutil
import time

connect = 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_component

mission_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 -= 1
    time.sleep(1)

  1. 调试助手收到消息
    在这里插入图片描述

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

from pymavlink import mavutil

connect = 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)

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

计算航向角俯仰角横滚角

if id == MAVLINK_MSG_ID_VFR_HUD:
    print('heading: ', msg.heading)
elif id == MAVLINK_MSG_ID_ATTITUDE:
    print("roll: ", msg.roll*57.2958)
    print("pitch: ", msg.pitch*57.2958)
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用 pymavlink.js 库来处理 Mavlink 消息,你可以按照以下步骤进行操作: 1. 下载和安装 pymavlink.js 库。你可以从 pymavlink.js 的 GitHub 存储库中获取最新的库文件。将库文件下载到你的项目目录中,并确保它们可供 JavaScript 引擎访问。 2. 在你的 HTML 文件中引入 pymavlink.js 库。在 `<head>` 标签或 `<body>` 标签中添加以下行: ```html <script src="path/to/pymavlink.js"></script> ``` 请确保 `path/to/pymavlink.js` 是正确的路径,指向你下载和保存 pymavlink.js 库文件的位置。 3. 创建一个 JavaScript 文件,并在该文件中编写处理 Mavlink 消息的代码。在这个文件中,你可以使用 pymavlink.js 提供的 API 来建立连接、发送和接收 Mavlink 消息。 4. 在你的 JavaScript 代码中,首先创建一个 Mavlink 实例。你可以使用 `new MAVLink()` 来创建一个实例,并传递所需的参数,比如通信协议、波特率等。 5. 使用实例的 `connect()` 方法来建立与 Mavlink 设备的连接。你需要提供设备的地址和端口作为参数。 6. 在成功建立连接后,你可以使用 `send()` 方法发送 Mavlink 消息到设备。你需要传递消息的系统 ID、组件 ID 和消息内容。 7. 使用实例的 `on()` 方法来监听和处理接收到的 Mavlink 消息。你可以指定要监听的消息类型,并在回调函数中进行处理。 这些步骤只是一个简单的示例,具体的使用方法和 API 可能会有所不同。建议你参考 pymavlink.js 的文档和示例代码,以获取更详细的用法和示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值