【发布时间】: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消息。