APM飞控中有很多种方式可以改变飞行模式。其中最常见的为遥控器切换和地面站切换两种方式。

下面以遥控器切换为例详解飞行模式切换逻辑。

APM遥控器切换飞行模式的源代码在RC_Channel.cpp文件中的RC_Channel_Copter::do_aux_function_change_mode()函数中。

const bool success = copter.set_mode()调用Copter::set_mode()函数,在set_mode()函数中调用mode_from_mode_num()函数进行预切换。new_flightmode不会立即切换到新模式,而是会根据新模式所需的设备状态判断是否要切换过去。

如果以上内容检查通过了,则退出旧模式。设置新模式,即切换成功。

将flightmode父类指针指向新的子类,在Copter::fast_loop()函数中以400Hz的频率调用flightmode->run()。

因此,每种飞行模式的运行频率都是400Hz。

APM 飞行模式切换--源码详解相关推荐

  1. 【Live555】live555源码详解(九):ServerMediaSession、ServerMediaSubsession、live555MediaServer

    [Live555]live555源码详解系列笔记 继承协作关系图 下面红色表示本博客将要介绍的三个类所在的位置: ServerMediaSession.ServerMediaSubsession.Dy ...

  2. 【Live555】live555源码详解系列笔记

    [Live555]liveMedia下载.配置.编译.安装.基本概念 [Live555]live555源码详解(一):BasicUsageEnvironment.UsageEnvironment [L ...

  3. 【Live555】live555源码详解(八):testRTSPClient

    [Live555]live555源码详解系列笔记 继承协作关系图 下面红色表示本博客将要介绍的testRTSPClient实现的三个类所在的位置: ourRTSPClient.StreamClient ...

  4. 【Live555】live555源码详解(七):GenericMediaServer、RTSPServer、RTSPClient

    [Live555]live555源码详解系列笔记 继承协作关系图 下面红色表示本博客将要介绍的三个类所在的位置: GenericMediaServer.RTSPServer.RTSPClient 14 ...

  5. 【Live555】live555源码详解(六):FramedSource、RTPSource、RTPSink

    [Live555]live555源码详解系列笔记 继承协作关系图 下面红色表示本博客将要介绍的三个类所在的位置: FramedSource.RTPSource.RTPSink 11.FramedSou ...

  6. 【Live555】live555源码详解(五):MediaSource、MediaSink、MediaSession、MediaSubsession

    [Live555]live555源码详解系列笔记 继承协作关系图 下面红色表示本博客将要介绍的四个类所在的位置: MediaSource.MediaSink.MediaSession.MediaSub ...

  7. 【Live555】live555源码详解(四):Medium媒体基础类

    [Live555]live555源码详解系列笔记 7.Media Medai所依赖关系图 依赖Medai关系图 Media和UsageEnvironment关联图

  8. 【Live555】live555源码详解(二):BasicHashTable、DelayQueue、HandlerSet

    [Live555]live555源码详解系列笔记 3.BasicHashTable 哈希表 协作图: 3.1 BasicHashTable BasicHashTable 继承自 HashTable 重 ...

  9. 【Live555】live555源码详解(一):BasicUsageEnvironment、UsageEnvironment

    [Live555]live555源码详解系列笔记 类关系图 1.UsageEnvironment 详解 1.1 BasicUsageEnvironment BasicUsageEnvironment ...

最新文章

  1. 重磅!AI Top 30+案例评选正式启动
  2. 【数字信号处理】基本序列 ( 正弦序列 | 数字角频率 ω | 模拟角频率 Ω | 数字频率 f | 模拟频率 f0 | 采样频率 Fs | 采样周期 T )
  3. vgg11/13/16/19-pytorch实现
  4. 数据结构-js实现栈和队列
  5. 3rd 逻辑运算符的基本用法
  6. android math类,GitHub - Zihin/MathModeling-Android
  7. CUDA C编程权威指南 第七章 调整指令级原语
  8. 解决 GiWiFi 普通用户无客户端无法登入
  9. red5 + java+flex free download_Flex 4 +Red5 流媒体使用研究2——Flex4的VideoPlayer控件应用...
  10. Robot Framework自动化测试(一)---第一个脚本
  11. 文件创建失败 无法继续下载_iOS更新失败了怎么办?教你如何排除故障解决问题...
  12. 电力行业适合学习的开源软件
  13. 基于opencv的图片文字识别实战
  14. [DP]hdu5234
  15. 将学生信息按照总分排名然后分别保存较高的几位和较低的几位学生信息到两个不同的文件
  16. kafka topic消息分配partition规则
  17. OpenCV-Python学习 <三> 颜色空间及其转换
  18. 11GR2 中的常见 RMAN 问题
  19. 基于html5+Java+MySQL的健身俱乐部网站设计与实现 文档+任务书+开题报告+答辩PPt+项目源码及数据库文件
  20. 射灯安装方法图解_射灯安装方法及安装注意事项介绍

热门文章

  1. 磨房@杭州第3届西湖环山50KM大型徒步活动纪念
  2. 深入剖析Netty之定时任务实现
  3. 国内android开发之墙痛,Android面试题-机型适配之痛,例如三星、小米、华为、魅族等。...
  4. uni-app转小程序ios video不生效+视频播放不了、黑屏问题
  5. 二次判别分析(QDA)和Python实现
  6. usb接口多少钱_新款本田CRV正式上市,落地价多少钱?
  7. centos7installan安装postgresql9.6,解决重音不敏感”排序规则,以及扩展pgcrypto函数
  8. 如果你没读懂《骇客帝国》
  9. C#远程服务器返回错误: (500) 内部服务器错误
  10. 纳豆的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告