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)
client = airsim.MultirotorClient(),连接AirSim函数值给client,
client.confirmConnection()确认是否连接成功,成功之后会print
Connected!
Client Ver:1 (Min Req: 1), Server Ver:1 (Min Req: 1)
可以用来判断AirSIm连接是否成功。
# get control
client.enableApiControl(True)
# release control
client.enableApiControl(False)
API权限获取和释放,默认没有API权限,是在遥控器手柄的。
关于isApiControlEnabled 现在还没弄明白怎么个用法,好像Airsim库里也没有定义这个函数啊
官方这么说
官方这么说
client.armDisarm(True) # 解锁
client.armDisarm(False) # 上锁
解锁控制旋翼转动,上锁停转。
client.takeoffAsync().join() # 起飞
client.landAsync().join() # 降落
Asyn “异步接口”,一般以Asyn为结尾的函数会立即返回,就算任务没有执行完毕,函数也会立即返回值,那么程序就可以接着执行下去不用等待,这里如果就会导致无人机还没起飞就直接降落,如果需要等待,在函数后边加.join()即可。
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
moveToZAsync(z, velocity) 是高度控制 API
client.moveToZAsync(-3, 1).join()是1m/s飞到3m高度
moveToPositionAsync(x, y, z, velocity) 是水平位置控制 API