AirSim无人机起飞降落、线性位置控制及速度控制代码
一、起飞降落代码
import airsim
# connect to the AirSim simulator
client = airsim.MultirotorClient()
client.confirmConnection()
# get control
client.enableApiControl(True)
# unlock
client.armDisarm(True)
# Async methods returns Future. Call join() to wait for task to complete.
client.takeoffAsync().join()
client.landAsync().join()
# lock
client.armDisarm(False)
# release control
client.enableApiControl(False)
二、位置控制代码
import airsim
import time
# connect to the AirSim simulator
client = airsim.MultirotorClient()
client.enableApiControl(True) # get control
client.armDisarm(True) # unlock
client.takeoffAsync().join() # takeoff
# square flight
client.moveToZAsync(-3, 1).join() # 上升到3m高度
client.moveToPositionAsync(5, 0, -3, 1).join() # 飞到(5,0)点坐标
client.moveToPositionAsync(5, 5, -3, 1).join() # 飞到(5,5)点坐标
client.moveToPositionAsync(0, 5, -3, 1).join() # 飞到(0,5)点坐标
client.moveToPositionAsync(0, 0, -3, 1).join() # 回到(0,0)点坐标
client.landAsync().join() # land
client.armDisarm(False) # lock
client.enableApiControl(False) # release control
三、速度控制代码
import airsim
import time
client = airsim.MultirotorClient() # connect to the AirSim simulator
client.enableApiControl(True) # 获取控制权
client.armDisarm(True) # 解锁
client.takeoffAsync().join() # 第一阶段:起飞
client.moveToZAsync(-3, 1).join() # 第二阶段:上升到3米高度
# 飞正方形
client.moveByVelocityZAsync(1, 0, -3, 5).join() # 第三阶段:以1m/s速度向前飞5秒钟
client.moveByVelocityZAsync(0, 1, -3, 5).join() # 第三阶段:以1m/s速度向右飞5秒钟
client.moveByVelocityZAsync(-1, 0, -3, 5).join() # 第三阶段:以1m/s速度向后飞5秒钟
client.moveByVelocityZAsync(0, -1, -3, 5).join() # 第三阶段:以1m/s速度向左飞5秒钟
# client.moveByVelocityZAsync(10, 0, -3, 5).join()
# client.moveByVelocityZAsync(0, 10, -3, 5).join()
# client.moveByVelocityZAsync(-10, 0, -3, 5).join()
# client.moveByVelocityZAsync(0, -10, -3, 5).join()
# 悬停 2 秒钟
client.hoverAsync().join() # 第四阶段:悬停2秒钟
time.sleep(2)
client.landAsync().join() # 第五阶段:降落
client.armDisarm(False) # 上锁
client.enableApiControl(False) # 释放控制权