AirSIm相关API记录

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
关于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

def moveToPositionAsync(
self, 
x, 
y, 
z, 
velocity,
timeout_sec = 3e+38,
drivetrain = DrivetrainType.MaxDegreeOfFreedom, 
yaw_mode = YawMode(),
lookahead = -1, 
adaptive_lookahead = 1, 
vehicle_name = ''):
return self.client.call_async('moveToPosition', x, y, z, velocity, timeout_sec, drivetrain, yaw_mode, lookahead, adaptive_lookahead, vehicle_name)

timeout_sec超时时间,默认3e+38,
drivetrain是飞行朝向模式,

class DrivetrainType:
    MaxDegreeOfFreedom = 0
    ForwardOnly = 1

yaw_mode是偏航角模式

class YawMode(MsgpackMixin):
    is_rate = True
    yaw_or_rate = 0.0
    def __init__(self, is_rate = True, yaw_or_rate = 0.0):
        self.is_rate = is_rate
        self.yaw_or_rate = yaw_or_rate

类 YawMode有两个属性is_rate和yaw_or_rate,两个都要设置,但是要注意不能和前边drivetrain参数冲突,MaxDegreeOfFreedom是自己设置飞行朝向模式,这时候可以自由选择YawMode的两个参数,ForwardOnly时始终根据速度方向偏航,此时YawMode的第一个参数is_rate只能是False,意思是选择了速度方向偏航,就不能再选择按照固定的角速度偏转,否则无法成功飞行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Karsowe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值