热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【UAV】高度控制代码分析

文章目录代码分析MotorControl()控制流程图代码分析MotorControl()casePROCESS_31:{int16_tthr_temp;这里的定高标志在Mo


文章目录

  • 代码分析
    • MotorControl()
  • 控制流程图


代码分析


MotorControl()

case PROCESS_31:
{int16_t thr_temp;// 这里的定高标志在 Mode_Controller 中通过对按键的判定进行更改// height_lock 为 1 时标志进入定高飞行模型if(ALL_flag.height_lock) // 定高模式下 油门遥杆作为调整高度使用 {thr_temp &#61; pidHeightRate.out &#43; (Remote.thr -1000); // 输出给电机的是定高输出值}// 这里&#xff0c;定高比不定高多增加了一个高度内环速度的输出 pidHeightRate.outelse // 正常飞行状态&#xff0c;油门正常使用{thr_temp &#61; Remote.thr - 1000; // 输出给电机的是油门输出值}if(Remote.thr<1020) // 油门太低了&#xff0c;则限制输出 不然飞机乱转 {MOTOR1 &#61; MOTOR2 &#61; MOTOR3 &#61; MOTOR4 &#61; 0;break;}// thr_temp 用来给出电机的基础转速// 之后再增加上外环 pidRateX.out 等来控制姿态MOTOR1 &#61; MOTOR2 &#61; MOTOR3 &#61; MOTOR4 &#61; LIMIT(thr_temp,0,900); // 留100给姿态控制MOTOR1 &#43;&#61; &#43; pidRateX.out - pidRateY.out - pidRateZ.out; // 姿态输出分配给各个电机的控制量MOTOR2 &#43;&#61; &#43; pidRateX.out &#43; pidRateY.out &#43; pidRateZ.out; //MOTOR3 &#43;&#61; - pidRateX.out &#43; pidRateY.out - pidRateZ.out; //MOTOR4 &#43;&#61; - pidRateX.out - pidRateY.out &#43; pidRateZ.out; //
}
break;

控制流程图

在这里插入图片描述


推荐阅读
  • 本文基于Java官方文档进行了适当修改,旨在介绍如何实现一个能够同时处理多个客户端请求的服务端程序。在前文中,我们探讨了单客户端访问的服务端实现,而本篇将深入讲解多客户端环境下的服务端设计与实现。 ... [详细]
  • 在尝试加载支持推送通知的iOS应用程序的Ad Hoc构建时,遇到了‘no valid aps-environment entitlement found for application’的错误提示。本文将探讨此错误的原因及多种可能的解决方案。 ... [详细]
  • 本文详细介绍了如何使用C#实现不同类型的系统服务账户(如Windows服务、计划任务和IIS应用池)的密码重置方法。 ... [详细]
  • 函子(Functor)是函数式编程中的一个重要概念,它不仅是一个特殊的容器,还提供了一种优雅的方式来处理值和函数。本文将详细介绍函子的基本概念及其在函数式编程中的应用,包括如何通过函子控制副作用、处理异常以及进行异步操作。 ... [详细]
  • 本文探讨了如何将个人经历,特别是非传统的职业路径,转化为职业生涯中的优势。通过作者的亲身经历,展示了舞蹈生涯对商业思维的影响。 ... [详细]
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • 本文将从基础概念入手,详细探讨SpringMVC框架中DispatcherServlet如何通过HandlerMapping进行请求分发,以及其背后的源码实现细节。 ... [详细]
  • 本文详细介绍了如何在Windows操作系统中配置和使用Lex(Flex)与Yacc(Bison),包括软件的下载、安装以及通过示例验证其正确性的步骤。 ... [详细]
  • 在尝试使用 Android 发送 SOAP 请求时遇到错误,服务器返回 '无法处理请求' 的信息,并指出某个值不能为 null。本文探讨了可能的原因及解决方案。 ... [详细]
  • 在将 Android Studio 从 3.0 升级到 3.1 版本后,遇到项目无法正常编译的问题,具体错误信息为:org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:processDemoProductDebugResources'。 ... [详细]
  • 在Qt框架中,信号与槽机制是一种独特的组件间通信方式。本文探讨了这一机制相较于传统的C风格回调函数所具有的优势,并分析了其潜在的不足之处。 ... [详细]
  • 本文详细介绍了`android.os.Binder.getCallingPid()`方法的功能和应用场景,并提供了多个实际的代码示例。通过这些示例,开发者可以更好地理解如何在不同的开发场景中使用该方法。 ... [详细]
  • 如何高效解决Android应用ANR问题?
    本文介绍了ANR(应用程序无响应)的基本概念、常见原因及其解决方案,并提供了实用的工具和技巧帮助开发者快速定位和解决ANR问题,提高应用的用户体验。 ... [详细]
  • 本文介绍了一个使用Spring框架和Quartz调度器实现每周定时调用Web服务获取数据的小项目。通过详细配置Spring XML文件,展示了如何设置定时任务以及解决可能遇到的自动注入问题。 ... [详细]
  • GLiHT数据介绍
    GLiHT数据介绍 ... [详细]
author-avatar
敬昇文军3546
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有