如何通过 DroneKit 设置直升机姿态 -- SET_ATTITUDE_TARGET 不工作

How to set copters Attitude via DroneKit -- SET_ATTITUDE_TARGET not working

我的 Dronekit 可以与 SITL sim 一起正常工作,但是对于我的项目,我希望能够控制直升机的姿态。显然我可以在 ALT_HOLD 模式下通过 RC over ride 来做到这一点,但我不喜欢这种方法。

我一直在尝试使用 Mavlink 消息 SET_ATTITUDE_TARGET (#82),但是当我将消息发送到 sim 时,没有任何反应。我已经能够设置速度和位置,并且工作正常。

这是我的函数:

def att_msg_mode():
    print "=========== Building Message"
    veh1.mode = VehicleMode("ALT_HOLD")
    msg = veh1.message_factory.set_attitude_target_encode(
    0,
    0,                #target system
    0,                #target component
    0b11100010,       #type mask
    [.9438,0,0,.17364], #q
    0,                #body roll rate
    0,                #body pitch rate
    0,                #body yaw rate
    0)                #thrust
    time.sleep(1)
    veh1.send_mavlink(msg)
    veh1.flush()
    print "=========== Message Sent"

有人能帮帮我吗?

无法直接设置姿态,因为直升机在引导模式或自动模式下都不支持该命令mode/missions)。 supported commands in guided mode is here and AUTO commands here 的列表。

你可以做的是 set the yaw. Another (hacky) approach that may work is setting the ROI 因为这会将相机(通常是整辆车)对准目标。

这听起来像是一个合理的要求 - 也许 create a request 解释为什么这对你有用?

SET_ATTITUDE_TARGET现已实现,将与ArduCopter 3.4一起发布

SET_ATTITUDE_TARGET is now available to be used in guided_mode。 您甚至可以使用 mavproxy 态度命令对其进行测试。