提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、AirSim提供了哪些和移动有关的API?
  • 二、用好`moveByVelocityZ()`
  • 总结

前言

为实现四旋翼在AirSim仿真环境中的自主飞行,需要掌握通过程序API控制四旋翼执行前进、升降、转向等基本动作的方法。本文即为探索该方法的过程总结。


一、AirSim提供了哪些和移动有关的API?

通过查看源代码client.py,发现提供了大量的API用于四旋翼的控制,如图:

但是,源代码中既没有函数的实现,也没有给出相对详细的注释。因此,现在的问题转化为:明确这些APIs的原理,学会使用这些APIs。

其中,moveByVelocity()有一些简短的参数说明,如下:

    def moveByVelocityAsync(self, vx, vy, vz, duration, drivetrain = DrivetrainType.MaxDegreeOfFreedom, yaw_mode = YawMode(), vehicle_name = ''):"""Args: 参数:vx (float): desired velocity in world (NED) X axis 世界坐标系下x轴方向,期望的速度vy (float): desired velocity in world (NED) Y axis 世界坐标系下y轴方向,期望的速度vz (float): desired velocity in world (NED) Z axis 世界坐标系下z轴方向,期望的速度duration (float): Desired amount of time (seconds), to send this command for 发送该指令 期望的时间?drivetrain (DrivetrainType, optional):yaw_mode (YawMode, optional):vehicle_name (str, optional): Name of the multirotor to send this command toReturns:msgpackrpc.future.Future: future. call .join() to wait for method to finish. Example: client.METHOD().join()"""return self.client.call_async('moveByVelocity', vx, vy, vz, duration, drivetrain, yaw_mode, vehicle_name)

很正常地,就会有个疑问,moveByVelocityZ()moveByVelocity()有什么区别呢?
Issue #880中,找到了答案,二者的主要区别在于:moveByVelocityZ()将海拔保持在固定的Z坐标上,即具有高度保持的能力。

PS. takeoff()的注释:

    def takeoffAsync(self, timeout_sec = 20, vehicle_name = ''):"""Takeoff vehicle to 3m above ground. Vehicle should not be moving when this API is used 四旋翼飞到距离地面3m的高度。当该API使用的时候,四旋翼不应该移动。Args:timeout_sec (int, optional): Timeout for the vehicle to reach desired altitudevehicle_name (str, optional): Name of the vehicle to send this command toReturns:msgpackrpc.future.Future: future. call .join() to wait for method to finish. Example: client.METHOD().join()"""return self.client.call_async('takeoff', timeout_sec, vehicle_name)

在issue中搜索moveByVelocityZ
controlling via Roll, pitch, yaw, throttle inputs
How to control the drone accurately?
write a function that will move the drone w.r.t its own referential?
Yaw and move continuously

二、用好moveByVelocityZ()

例子:

start = client.getMultirotorState().kinematics_estimated.positionvx = 3; vy = 3; z = start.z_val; duration = 6  # start.z_val
client.moveByVelocityZAsync(vx, vy, z, duration,airsim.DrivetrainType.ForwardOnly,airsim.YawMode(False,0.0)).join() # 2020-12-02 如何保持固定高度飞行?UE4中的世界坐标系是怎样的?

首先获取四旋翼的当前位置(用来设置z值),然后定义vxvyzduration,最后调用函数。其中,默认参数使用了ForwardOnlyYawMode(False,0.0)

总结

目前实现的四旋翼的移动控制还非常简单,只做简单的了解,后续结合具体路径进一步探讨移动控制。(20201205)

【AirSim】05.四旋翼的简单动作指令相关推荐

  1. 【空心杯四旋翼TinyLeaf】四旋翼基础

    目录 四旋翼构型 简单力学分析 什么是欧拉角 几个自由度 螺旋桨 空心杯电机 脉冲宽度调制(PWM)技术 控制初探 Visio,CAD和Solidworks画图是在太累了,接下来我会主要使用手绘来配图 ...

  2. JSP简单练习-JSP动作指令

    JSP动作指令在JSP程序设计中经常会用到,与JSP指令不同,它将影响JSP运行是的功能! 1.include动作指令: include动作指令用来在JSP页面中动态包含一个文件,这样包含页面程序与被 ...

  3. JSP的三六九四七(三大指令、六大标签、九大内置对象、四大作用域、七个动作指令)

    JSP的基本构成:HTML文件+Java片断+JSP标签 三大指令:page指令.include指令.taglib指令. page指令: 1.language属性:设置当前页面中编写JSP脚本使用的语 ...

  4. 2017 年全国大学生电子设计竞赛试题——四旋翼自主飞行器探测跟踪系统(C 题)【本科组】2

    一.任务 设计并制作四旋翼自主飞行器探测跟踪系统,包括设计制作一架四旋翼自主飞行器,飞行器上安装一向下的激光笔:制作一辆可遥控小车作为信标. 飞行器飞行和小车运行区域俯视图和立体图分别如图 1 和图 ...

  5. 四旋翼无人机硬件,飞控,基站,NX

    四旋翼无人机硬件 一 总览 四旋翼无人机的硬件组成:无刷电机(4个):电子调速器(简称电调,4个,常见有好盈.中特威.新西达等品牌):螺旋桨(4个,需要2个正浆,2个反浆):飞控:电池(11.1v航模 ...

  6. 四旋翼无人机硬件基础

    四旋翼无人机硬件基础 材料分析 无刷电机 型号 转速 电子调速器 作用 规格 四轴专用电调? 电调编程? 螺旋桨 机制 规格 飞行控制器 原理 作用 四轴×字 四轴十字 电池 锂电池? 电池容量 电池 ...

  7. 四旋翼微型飞行器设计

    作者:红桃K 0 引言 微型飞行器(Micro Air Vehicle,简称MAV) 是20世纪90年代发展起来的一种新型飞行 器.根据美国国防高级研究计划局(DARPA) 的定义,微型飞行器的基本技 ...

  8. 小白带你入坑四旋翼无人机——物料篇

    之前就想写了,但是比赛挺忙,就搁置下来了,现在比完了刚好在记录一下. 就在一个月前,我真正开始了和四旋翼无人机打交道.当时,我还是一个小白,对无人机什么都不了解,而现在..我还是一个小白... 现在就 ...

  9. 启航篇——四旋翼飞行器之入坑两年心路历程和毕设总结

    笔者今年大四毕业,由于之前参加比赛及准备考研,没有时间总结这两年来做四旋翼飞行器的心得体会.现在借毕业设计这个契机,想把这件事做了,算是两年的收尾工作,也是个新的开始. 先从介绍这两年的经历开始吧.开 ...

最新文章

  1. android DrawerLayout 改变系统默认的灰色
  2. android tabhost --android UI 学习
  3. 关于权限系统的一些思考
  4. PLSQL乱码TNS-12557: protocol adapter not loadable解决
  5. kernel并发控制:自旋锁、互斥体、中断屏蔽
  6. dim private public static_PHP中const,static,public,private,protected的区别
  7. 1109. 航班预订统计
  8. 14天学会安卓开发(附PDF文档和全部示例代码)
  9. php阅读器开发,微信小程序阅读器的简单实例开发
  10. 野生前端的数据结构基础练习(3)——链表
  11. 最新免费计算机编程视频教程
  12. 实对称矩阵特征值按大小排序
  13. win10电脑chm文件打不开的解决方法
  14. CC2530单片机P1寄存器说明
  15. 夜间环境人脸识别_古蔺县小区人脸识别门禁系统方案_点击了解
  16. 一款APP从设计稿到切图过程全方位揭秘
  17. MySQL建表1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL
  18. Excel VBA - 操作文件
  19. 双机热备_磁盘阵列柜
  20. 选择灰盒安全测试工具,看准以下几点

热门文章

  1. python中123+5.0的执行结果_123+5.0的执行结果为()_学小易找答案
  2. 【新】使用setuptools打包Python项目
  3. 如何用php压缩html代码并输出
  4. 2022年 SecXOps 安全智能分析技术白皮书 附下载地址
  5. webpack中利用eslint对js进行代码格式检校
  6. Java安全之SnakeYaml反序列化分析
  7. Android状态机的简单理解
  8. SurfaceView实战打造农药钻石夺宝
  9. SpringBoot发送邮件(QQ邮箱、腾讯企业邮箱、网易邮箱、阿里云邮箱...)
  10. 获取股票历史数据和当前数据的API