目录

PX4/APM/飞控的学习笔记前言-Cxm_chen_taifu的博客-CSDN博客开始了 开始了终于有时间可以学习飞控了此文章是用来当目录,我会持续更新我的学习之旅,希望能对各位有所帮助如果有错误的地方还请各位大佬不吝赐教,可以在评论区回复相关问题来交流。此帖持续更新...https://blog.csdn.net/chen_taifu/article/details/122115245?spm=1001.2014.3001.5502在前一章我们说了如何在飞控中添加自己的代码让他跑起来,这一章我们要添加自己的负载设备从而实现和飞控之间的通信。具体作用看自己需要什么功能,飞行控制,飞机状态读取等都可以实现。

首先一个完整的功能最好是具备有自己的架构我们这边可以先看一下其他的例程,还是4.07版本的Apm源码

librariesAP_Devo_Telem 这个例程

我们直接展示一波传统复制粘贴这个文件夹 改个名叫AP_Flycontrol 并且吧 .cpp和.h  文件也同样改名,放进去 librariesAP_Flycontrol

librariesAP_FlycontrolAP_Flycontrol.h        具体功能看注释

/*2022/2/13
@CHENxiaomingming
e-mail:2210138207@qq.com*/
#pragma once#include <AP_HAL/AP_HAL.h>
#include <AP_AHRS/AP_AHRS.h>
#include <AP_SerialManager/AP_SerialManager.h>class AP_Flycontrol{
public:AP_Flycontrol();void uart(void);bool updata();
private:};

然后是cpp文件 librariesAP_FlycontrolAP_Flycontrol.cpp

/*2022/2/13
@CHENxiaomingming
e-mail:2210138207@qq.com功能:
通信协议
数据校验成功 地面站显示 data ok
*/#include <stdio.h>
#include <GCS_MAVLink/GCS.h>    //地面站
#include "AP_Flycontrol.h"extern const AP_HAL::HAL& hal;//重置数据和串口
AP_Flycontrol::AP_Flycontrol(void)
{;
}
//串口配置
void AP_Flycontrol::uart(void)
{          hal.uartD->begin(9600);//hal.uartD->print("uart set ok");    //串口设置成功gcs().send_text(MAV_SEVERITY_CRITICAL,  //地面站消息发送"uart set ok");
}//数据更新
bool AP_Flycontrol::updata()
{//uart();uint8_t _uart_data;uint8_t _flag = 0;int16_t i;uint8_t scope = hal.uartD->available();     //check if any bytes are waitingfor(i = 0; i < scope; i++){_uart_data = hal.uartD->read();     //获取当前数据switch (_flag){case 0:if (_uart_data == 0x52)_flag = 1;break;case 1:if (_uart_data == 0x31)_flag = 2;break;case 2:gcs().send_text(MAV_SEVERITY_CRITICAL,"data ok");_flag = 0;return 1;break;default:_flag = 0;break;}}return 0;
}

里面有牵扯到一些串口函数 不清楚的可以去官网看 然后自己试试

UARTs and the Console — Dev documentationhttps://ardupilot.org/dev/docs/learning-ardupilot-uarts-and-the-console.html

后面代码过长我就直接截图吧

然后就是第一章节的内容啦  ArduCopterCopter.h

声明函数

指向类

ArduCopterCopter.cpp

最后运行调试的过程中我遇见了很多问题

包括了Initialising APM  地面站报错阿一大堆

都是因为线程的配置 和串口问题 和资源占用 一定要注意占用过高很可能导致未知问题出现

因为他每次都是重新执行这个线程 在ArduCoptersystem.cpp这里面  处理的只需要执行一次的数据

在void Copter::init_ardupilot() 飞控初始化里面

最后就是 一定要吧自己写的模块添加进ArduCopterwscript这一点很重要,很重呀否则就会

undefined reference to 这个卡了我两天

#!/usr/bin/env python
# encoding: utf-8def build(bld):vehicle = bld.path.namebld.ap_stlib(name=vehicle + '_libs',ap_vehicle=vehicle,ap_libraries=bld.ap_common_vehicle_libraries() + ['AC_AttitudeControl','AC_InputManager','AC_PrecLand','AC_Sprayer','AC_Autorotation','AC_WPNav','AP_Camera','AP_IRLock','AP_InertialNav','AP_Motors','AP_RCMapper','AP_Avoidance','AP_AdvancedFailsafe','AP_SmartRTL','AP_Stats','AP_Beacon','AP_Arming','AP_WheelEncoder','AP_Winch','AP_Follow','AP_Devo_Telem','AP_OSD','AC_AutoTune','AP_KDECAN','AP_Flycontrol',    //添加到这里],)bld.ap_program(program_name='arducopter',program_groups=['bin', 'copter'],use=vehicle + '_libs',defines=['FRAME_CONFIG=MULTICOPTER_FRAME'],)bld.ap_program(program_name='arducopter-heli',program_groups=['bin', 'heli'],use=vehicle + '_libs',defines=['FRAME_CONFIG=HELI_FRAME'],)

最后编译 和烧录

校验成功

Apm飞控学习笔记之添加我的设备或单片机串口通信-Cxm相关推荐

  1. Apm飞控学习笔记之添加我的飞行模式-Cxm

    目录 PX4/APM/飞控的学习笔记前言-Cxm_chen_taifu的博客-CSDN博客开始了 开始了终于有时间可以学习飞控了此文章是用来当目录,我会持续更新我的学习之旅,希望能对各位有所帮助如果有 ...

  2. Apm飞控学习笔记-姿态控制-Cxm

    目录 PX4/APM/飞控的学习笔记前言-Cxm_chen_taifu的博客-CSDN博客开始了 开始了终于有时间可以学习飞控了此文章是用来当目录,我会持续更新我的学习之旅,希望能对各位有所帮助如果有 ...

  3. Apm飞控学习笔记之悬停loiter模式-Cxm

    文章汇集 PX4/APM/飞控的学习笔记前言-Cxm_CHENxiaomingming的博客-CSDN博客_apm和px4哪个好 前言 时隔一段时间又开始琢磨APM飞控了,在上一篇中写了姿态控制,经过 ...

  4. Apm飞控学习笔记之如何添加自己的功能-Cxm

    目录: PX4/APM/飞控的学习笔记前言-Cxm_chen_taifu的博客-CSDN博客开始了 开始了终于有时间可以学习飞控了此文章是用来当目录,我会持续更新我的学习之旅,希望能对各位有所帮助如果 ...

  5. APM飞控学习笔记——自动模式下一分钟自动降落

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.自动模式简介 二.添加自动降落功能 1.飞控主循环调用逻辑 2.功能添加 总结 前言 APM是一款功能齐全的开源多 ...

  6. 第一篇——APM飞控学习笔记

    关于什么是APM? 可能有很多玩航模或者是向我这样混迹于实验室的垃圾佬(bushi)看到过这个玩意--->>> 从狭义上来说,这个就是APM开源飞控. APM又叫ArduPilot- ...

  7. Apm飞控学习笔记之-RC_Channel遥控器数据获取-Cxm

    前言 这一篇分析APM的遥控器数据获取 ArduCopter\Copter.cpp中rc_loop遥控器线程 const AP_Scheduler::Task Copter::scheduler_ta ...

  8. 基于tiva的匿名飞控学习笔记(1)

    基于tiva的匿名飞控学习笔记(1) 开关状态任务 遥控器数据处理任务 数传数据交换 延时存储任务 开关状态任务 匿名飞控的开关状态任务为函数Swtich_State_Task(u8 dT_ms),定 ...

  9. APM飞控学习之路:1 无人机的分类与发展

    "旧时王谢堂前燕,飞入寻常百姓家".无人机也像那堂前燕,从以前为军事所专属,负责侦查和战斗,飞入民用领域,在航拍.植保.快递.救灾.巡检.拍摄等行业大显身手,无人机+的应用遍地开花 ...

最新文章

  1. 复习计算机网络基础 day8--传输层
  2. Struts2中采用Json返回List对象数据为空解决方案
  3. Hibernate+Spring整合使用二级缓存
  4. java调用本地shell_java通过ProcessBuilder执行本地shell命令 获取ip配置信息
  5. 2017-2018-1 20155320第十周课下作业-IPC
  6. Java基础知识(二)之控制语句
  7. hsv白色h值是多少_ShaderToy系列:HSV
  8. java免费游戏,java – 分配免费游戏
  9. 设计讨论:设计什么样的框架?
  10. 【渝粤教育】国家开放大学2018年春季 0538-21T社区护理 参考试题
  11. python北风网培训班视频
  12. jacob转pdf linux,Java 使用jacob实现doc转pdf(附带其他方法分析)
  13. Spring MVC 详细信息讲解资料
  14. Neyman-Pearson 奈曼-皮尔逊决策分析
  15. 数据准确性和模型准确性
  16. python如何开发网站_如何用Python写一个小网站?
  17. python如何读取二进制文件为图片_Python二进制文件读取并转换
  18. 刚入行java程序员VS 3年以上java程序员,太形象了,哈哈哈~·~
  19. c语言中预处理都有哪些类型,c语言中预处理命令都有哪些
  20. MT6853(联发科技天玑 720 )核心板支持5G北斗

热门文章

  1. Office365 - 如何找回永久删除的Email
  2. 2009年“五一”假期市民旅游指南
  3. Javaweb day05
  4. 有哪些网络安全漏洞存在呢
  5. Debian/ubuntu 显示屏幕校准
  6. 分享 10 个前端开发者需要知道的 JS 技巧
  7. php7.>=3 环境重新安装libzip
  8. Ubuntu 截图快捷键 gnome-screenshot 使用
  9. Citrix 桌面云 XenApp_XenDesktop_7.15 部署系列(四)安装Delivery Controller和许可证服务器
  10. php防止挂马执行exec,防患于未然:如何防止论坛被挂马