我希望我的直升机能够在特定高度恢复发射,现在我正在运行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
参数的方法,它默认运行15米。
答案 0 :(得分: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)
不起作用。
答案 1 :(得分:0)
设置RTL高度的方法是通过参数。 如果您希望它以相同的高度返回,请将参数设置为0。
vehicle.parameters['RTL_ALT'] = 0
vehicle.mode = VehicleMode("RTL")
看看文档。 http://ardupilot.org/copter/docs/parameters.html#rtl-alt-rtl-altitude