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
最后编辑:sfd 更新时间:2026-04-02 15:24