【问题标题】:How to set GUIDED_NOGPS mode with Arducopter on Dronekit?如何在 Dronekit 上使用 Arducopter 设置 GUIDED_NOGPS 模式?
【发布时间】:2017-04-14 21:16:21
【问题描述】:

如何命令 Arducopter 进入guided_nogps 模式?我计划在 gps 被拒绝的环境中操作,尽管其他帖子表明这可以通过guided-nogps 实现,但我看不到如何设置该模式。使用 Dronekit (python) vehicle.mode = VehicleMode("Guided_NoGPS") 返回一个错误,表明没有这种模式。

Mavlink 也拒绝承认该模式。

我的设置是运行 Arducopter 的 Pixhawk 和 Raspberry Pi 伴侣。固件是 v3.5 dev,而 DroneKit-SITL 上的固件是 v3.4(我为此编译了自己的 v3.4 二进制文件)。

其他一切都很好(例如通过 set_attitude_target 进行控制,感谢这篇文章How to set copters Attitude via DroneKit -- SET_ATTITUDE_TARGET not working) - 我只需要能够进入室内!

另外 - 在 Arducopter v3.4 Controlling movement without GPS 发布之前,我确实在这篇文章中注意到可能需要光流传感器。这个要求实现了吗?

再次感谢!

欢迎所有建议。

感谢 Squilter 的帮助。我创建了一个改变飞行模式的函数(20):

def set_mode(flightmode):
# create the MAV_CMD_DO_SET_MODE command
msg = vehicle.message_factory.command_long_encode(
    0, 0,    # target system, target component
    mavutil.mavlink.MAV_CMD_DO_SET_MODE, #command
    0, #confirmation
    flightmode,
    0, 0, 0, 0, 0, 0 )
# send command to vehicle
vehicle.send_mavlink(msg)

消息被正确接收但不成功(返回结果 3)。我不确定的一件事是参数 2,规范表明它是特定于平台的。我把 0 放在了,因为我不确定如何处理 Arducopter。

再次,欢迎任何建议,非常感谢!

【问题讨论】:

  • 不幸的是,这与 mavlink 设备不一致。一些设备通过将 MAV_CMD_DO_SET_MODE 打包到 command_long 中来更改其模式。但是,对于 ArduCopter,您必须发送 SET_MODE 消息。

标签: dronekit-python dronekit


【解决方案1】:

我知道这个问题有点老了,但我已经找到了答案。更新您安装的 MAVProxy 和 PyMAVLink。

pip install -U pymavlink mavproxy

DroneKit 将自动安装它们的旧版本,而没有可用的新模式。你想要 PyMAVLink >= 2.2.4MAVProxy >= 1.6.1。

【讨论】:

    【解决方案2】:

    尝试将模式设置为 20。这是模式的内部表示。看起来dronekit-python 还不知道这个。

    正常引导模式需要光流,而不是guided_nogps。但是,guided_nogps 不允许发送速度或位置请求,只能发送角度。

    【讨论】:

    • 谢谢。我尝试将模式设置为 20。控制台给出了正确的 command_ack 代码,但结果是 3,我相信这意味着它不成功。这是我的功能:
    • 我会在上面添加我的函数。
    最近更新 更多