0

我希望我的直升机返回到特定高度发射,现在我在 ArduPilot SITL 上运行一切。首先我尝试使用 simple_goto()

vehicle.commands.download()
vehicle.commands.wait_ready()
finish_location = deepcopy(vehicle.home_location)
finish_location.alt = flight_altitude
vehicle.simple_goto(finish_location)

simple_goto() 适用于其他位置,但是当我使用 vehicle.home_location 时,它会导致直升机下降到高度 -7.5m。更重要的是直升机只是下降,它不会飞到finish_location。

所以我尝试使用 RTL 模式

self.vehicle.mode = VehicleMode("RTL")

它工作得很好,但我找不到将 RTL 高度设置为所需flight_altitude参数的方法,它以默认 15m 运行。

4

2 回答 2

0

下面的代码工作正常。

vehicle.commands.download()
vehicle.commands.wait_ready()
target_location = LocationGlobalRelative(0, 0, 0)
target_location.lat = vehicle.home_location.lat
target_location.lon = vehicle.home_location.lon
target_location.alt = target_altitude

我还是不明白为什么

vehicle.commands.download()
vehicle.commands.wait_ready()
finish_location = deepcopy(vehicle.home_location)
finish_location.alt = flight_altitude
vehicle.simple_goto(finish_location)

不起作用。

于 2016-06-30T14:53:25.227 回答
0

设置 RTL 高度的方法是通过参数。如果您希望它以相同的高度返回,请将参数设置为 0。

vehicle.parameters['RTL_ALT'] = 0
vehicle.mode = VehicleMode("RTL")

看看文档。 http://ardupilot.org/copter/docs/parameters.html#rtl-alt-rtl-altitude

于 2016-09-27T18:18:17.610 回答