MAV_CMD_DO_MOUNT_CONTROL (205)

Number Field Name Type Units Values Description
param1 Pitch float °(角度) 俯仰角
param2 Roll float °(角度) 横滚角
param3 Yaw float °(角度) 偏航角
param7 MAV_MOUNT_MODE 云台模式

MAV_MOUNT_MODE 为2时启动由MAVLink发送的 P/R/Y 角度控制。
当param1、param2、param3均为0时复位
返回消息:COMMAND_ACK
返回值 command 205 执行命令id
返回值 result 0或4 0:执行成功,4:执行失败

python测试脚本

import time
from pymavlink import mavutil
from datetime import datetime

# 获取当前时间(毫秒级)
def get_current_millis():
    return int(time.time() * 1000)

# 连接无人机(UDP端口14550)
master = mavutil.mavlink_connection('udpin:0.0.0.0:14550')
print("等待无人机心跳...")
master.wait_heartbeat()
print("无人机已连接,开始发送云台控制命令")

# 云台控制参数设置
# 参数说明:
#   param1: 横滚角度 (0.0~1.0, 0.5=中立)
#   param2: 俯仰角度 (0.0~1.0, 0.5=中立)
#   param3: 偏航角度 (0.0~1.0, 0.5=中立)
#   param4: 模式 (0=无模式, 1=锁定, 2=跟踪)
#   param5: 方向 (0=无, 1=上, 2=下, 3=左, 4=右)
#   param6: 未使用
roll = 0   # 云台横滚中立位置
pitch = 20  # 云台俯仰中立位置
yaw = 0    # 云台偏航中立位置
mode = 0     # 无模式(直接控制角度)
direction = 0  # 无方向

# 发送云台控制命令
send_time = get_current_millis()
print(f"[{send_time}] 发送云台控制命令: roll={roll}, pitch={pitch}, yaw={yaw}, mode={mode}")

master.mav.command_long_send(
    master.target_system,
    master.target_component,  # 云台通常使用组件ID 2 (MAV_COMPONENT_MOUNT)
    mavutil.mavlink.MAV_CMD_DO_MOUNT_CONTROL,
    0,
    pitch,      # param1
    roll,     # param2
    yaw,       # param3
    0,      # param4
    0, # param5
    0,       # param6 (未使用)
    2
)

# 等待 COMMAND_ACK 响应(超时5秒)
print("等待云台控制命令响应...")
ack = master.recv_match(
    type='COMMAND_ACK',
    blocking=True,
    timeout=5.0
)

if ack:
    ack_time = get_current_millis()
    delay = ack_time - send_time
    print(f"[{ack_time}] 收到命令应答 (MAV_CMD_DO_MOUNT_CONTROL)")
    print(f" 命令ID: {ack.command}, 结果: {ack.result}, 延迟: {delay}ms")
else:
    print(f"[{get_current_millis()}] 超时:未收到云台控制命令应答")

print("云台控制命令发送完成")

执行结果



作者:admin  创建时间:2024-09-14 16:14
最后编辑:sfd  更新时间:2026-04-02 15:24