# 404APD **Repository Path**: mortyliu/UESTC_404APD ## Basic Information - **Project Name**: 404APD - **Description**: No description available - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: release - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 1 - **Created**: 2021-03-23 - **Last Updated**: 2023-01-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 文件结构 2021.9.1 ### Hardware design 1. 控制逻辑板设计: ./Hardware_design/KICAD_project/upper_board 2. 四轴飞行器功率板设计:./Hardware_design/KICAD_project/batt_board ![输入图片说明](https://gitee.com/mortyliu/UESTC_404APD/raw/release/pic_src/IMG_1676.JPG "在这里输入图片标题") ### Software design #### MCU Level ![输入图片说明](https://gitee.com/mortyliu/UESTC_404APD/raw/aef06eab5c6bbd6ee87917d0f44e7f8f24c9fee5/pic_src/404controller.svg "在这里输入图片标题") 目前设计将MCU level 的架构设计为4层 1. Control level: 将会执行上层通过ROS 协议下发的控制信息以及逆运动学控制以及平台自身的远程控制和稳定任务。 1. planning: 上层下发的trajectory planning message 2. gesture control: robot status control 2. Message level: 通过适配ROS的协议,message level 将会通过串口/spi/can 与上位算法平台和配置平台通讯。 3. Middle ware(图上由笔误): 移植了部分第三方库和适配了freertos. 为全局提供任务调度\中断管理\外设以及传感器服务 4. BSP:提供硬件驱动和MCU内部的特性驱动 #### upper computer level 上位机设计 ![输入图片说明](https://gitee.com/mortyliu/UESTC_404APD/raw/aef06eab5c6bbd6ee87917d0f44e7f8f24c9fee5/pic_src/404APD_tool_kit.svg "在这里输入图片标题") 1. IMU Config tool: 为了应对低成本IMU需要不同的校准系数,使用上位机对这些参数进行配置对于用户和未来的开发更加友好 2. Status Display: 实时提供当前参数下的系统状态,通过3D模型展示当前姿态解算以及传感器数据 3. Receiver Config tool: 调正系统对于接收机信号的响应程度。 4. PID Config tool: 调整PID参数 5. ESC config tool: 调整电机响应力度以及电机最大转速 6. Data wave graph: 将系统中用户关心的数据通过折线图实时展示 ### 2021.4.1 Code: 目前还没有一个完整的工程架构(其实已经构思好了,只是最近实习比较忙,还没有来得及规范,然后提交上来) 当前的所有外设自检和初始化代码在以下连接库维护https://gitee.com/mortyliu/board-test 当所有传感器和外设正常启动,四个状态LED应该逐个点亮 Hardware_design: --------KICAD_project:upper_board 是单片机控制板工程 batt_board 是供电板工程 (工程使用Kicad开发,Kicad是一个开源的PCB设计软件,方便大家使用) --------data_sheet: 部分传感器的数据手册 Display_picture: 完成的实物图等后续开发进度的展示会在这里 目前需要: 我们需要一个对于硬件设计(x 我自己做了),特别是电调和大电流供电板设计很有经验的同学或者感兴趣的同学去完善我们的供电板(x 我自己做了,但是还有改进空间)。 对操作系统、IMU传感器、飞控系统、以及各种嵌入式功能开发感兴趣的同学欢迎加入我们。 需要的部分技能树: 1.Cmake(Makefile) 2.C 3.C++ 4.shell 脚本语言 5.git 基本操作 6.QT库(主要是面对上位机的开发) 7.电路设计常识 8.CAD软件 (不是必须的) 9.对操作系统有一定了解 10.有高数功底(Morty 因为现在数学功底差,导致IMU方向的算法无能为力(我已经数学入门了,power!),只能照搬别人的) !!!!!!!!!11.Last but not least!!!!! C++ 谷歌开发风格规范! 近期想法: 从做四轴飞行器开始,我的梦想就是到大疆联合实验室深造。所以从四月考完托福后,就开始着手看vSLAM 的内容,直到七月中旬,我算是把60-70%的数学坑填平了,来来回回李群和李代数 反复推演了六七遍,将ORB-SLAM1的论文看了四五遍,算是把大概结构理清楚了。 接着7月份我开始优化飞行控制器的硬件设计,以及重新学习了AHRS的相关内容,之前对于AHRS都是拿着别人的代码直接使用就完了,并没有深度去理解里面的数学原理(非线性优化,刚体运动学等)。这一次是将整个姿态解算的过程从论文到代码完全看了一遍,同时调通了所有的传感器,将算法适配到了404APD上。在这之后看了一些关于PID更深的研究,了解了一些模糊PID的内容和一些PID为基础的改进算法。个人认为可以在项目最后进行实现。 8月开始,我开始着手404APD上的RTOS的移植,其实Nuttx的移植已经想了大半年了,但是因为缺少相关的资料,感觉壁垒有一点高,一直没有去深度的做。半年后的8月,我再来看nuttx的kernel代码的时候,突然感觉茅塞顿开了(可能是这半年的实习对于嵌入式linux有了一些基本的了解),所以在这半个月中,我从头到尾阅读了nuttx的官方文档,目前感觉是可以开工移植了,目前预估的工作量为两周,也就是到9月1日,大部分的移植工作应该是可以完成了。 说到这还是说一句有的没的,关于为什么使用nuttx作为404APD的RTOS。 首先,Nuttx是一个类unix的RTOS,以及仿照linux内核设计。所以个人认为使用nuttx作为深度了解linux内核的第一步还是非常有价值的。其次,Nuttx最近的开发者会议中,大家的目标都是将nuttx和ROS结合,设计一个为机器人控制专门优化的MCU级RTOS,这个想法和我一开始的想法不谋而合,使用带ROS的嵌入式算力平台控制带ROS部分组件的nuttx,形成一个分布式的机器人系统。这样的结构将会让开发者更加专注于自己的层级。 最后,Nuttx在国内算比较小众的RTOS,相关资料比较缺乏,如果能够将自己的移植过程留下完整的文档,对于中文开发者将会提供不少的帮助,同时也为后面想要继续完善404APD的开发者铺平一些道路。 eMail: Aa1041827529@icloud.com (Morty.Liu 邮件请注明来意)