LynxFly科研小四轴横空出世,开源,F4,WIFI --(转)
首先是一大堆的感谢,太多人的帮助,感谢不完了…………首先要说明,这个PCB工程的出现要感谢论坛上的台湾大哥 john800422 开源了自己的飞控板的工程文件,我这样的没啥基础的小弟们才能学会如何制板,也才能开发出这套F4的飞控。要感谢论坛上第一个做wifi小四轴的小哥,那小哥确实花了好多功夫才把RTT自带的那个基本没法用的wifi驱动移植上来的……要不是那小哥后来蒸发了,我怎么想买他的板子都买不到,也许我也就不会做这个小四轴了…………wifi部分基本是参照这小哥的思路来的,虽然这小哥没提供多少资料,但是在我从新移植的过程中却在网络上各处搜到了这小哥当时移植驱动留下的足迹,确实非常困难,感谢这小哥之前一年多的辛勤付出。飞控程序继续沿用我之前的“山猫飞控”,鉴于硬件的增强,算法相应参数也做了适当的调整,性能提高了不少。感谢俊哥提供了最初的算法支持,无雪大神传授惯导经验,猴哥等人讨论控制算法,嘉哥条哥拓哥……………………果然感谢不完了…………
本次更新废除了几乎全部的商业软件和代码(操作系统由uCIII换成了RTT,上位机全部使用java开发,3D引擎图表引擎摇杆驱动均为开源协议),整个飞控从此严格遵守GPLv2协议,使用该代码的人需要开源自己的相关代码。
好了,开始介绍我的LynxFly吧~
该飞机面向有科研和强烈学习意向的小伙伴们使用,如果只是想玩的话你肯定不会喜欢这套四轴的,主要设计思想是提供一个高性能的控制和姿态算法验证平台,因此牺牲了许多“玩”的性能,却大幅的提高了通信和运算的能力。该机可以承载很大的通信数据量,通信部分我已经做了多线程时线程安全的考虑,可以随意的printf给上位机,完全不用自己考虑线程安全和数据胡乱穿插的问题(还没测试过最大能承载多大的数据量,但是实时发送存储飞控数据已经足够了)。最关键的是中央最优越的地理位置被一颗螺丝孔霸占了……这是做控制算法的人所必须的,连接万向节测试控制效果。上下位机软件的开发遵循“最简,方便修改”的原则,实现了大多数的功能,但是没有把程序写到“很大很复杂”,这样使用我程序的小伙伴们就可以非常方便的找到核心代码并按照自己的需求进行更改。
硬件:
为了更好的兼容台湾大哥 john800422以后的硬件和代码,电路连线未做大幅更改,仅将按键换了IO口。
主控:STM32F405RGT6
传感器: MPU9150+ms5611
通信: 完全的wifi通信 WM-G-MR-09
锂电充电:TP4056
SD卡: 支持
USB:支持 但目前没有驱动,仅提供充电
遥控方式: 航模手柄(接收机会超重,不建议使用),电脑USB游戏手柄,android手机(2.3以上可以遥控,4.0以上支持多点触控遥控)
电池: 300mah航模1s动力锂电池
电机驱动:MOS管驱动,带续流与匹配电容(没有试验条件暂时没法确定匹配电容的容量)
电机: 716空心杯电机 配46mm桨
重量: 含电池39.3g 不含电池30.4g
最大特点: 中央螺丝孔设计,可以连接转杆和万向节,方便进行控制和姿态算法的测试。
软件:
下位机:RT-Thread实时开源操作系统,UDP wifi通信,山猫飞控,SWD编程,不支持无线下载固件。
上位机:JAVA上位机,可接主流各种游戏手柄,强实时的3D姿态显示,飞控各种数据实时图表显示,自动记录并保存为excel格式。
android上位机:目前只提供虚拟摇杆的控制方式,3D姿态显示和体感控制暂时没有时间开发。
飞控算法:
导航:梯度法的全姿态姿态解算,200Hz姿态输出,仿DMP的自动陀螺0飘校准,磁阻融合姿态可以使用,但在室内环境下变化实在太大,会影响整体的姿态而被我暂时关闭了。有简单的惯导空间位移输出,但在简单的校准情况下漂移异常严重,仅空间速度勉强可用。在使用无雪大神的椭球拟合矫正加计和磁阻以后可以实现能用的空间位移输出,但是由于是付费软件的关系没有加到我的代码中,真的有需求的话可以找无雪大神购买。
控制:目前仅提供位置式PID的姿态控制 100Hz控制,以及单轴的自适应控制(原因见以前文章),稳定性上肯定是不如wmc的小四轴的(比如兔斯基),但是可以更好的理解控制的内涵而被我固执的保留了下来……飞机自带在线系统辨识的代码,可以提供几组在“最优参数范围”内的位置式PID参数供大家使用,所以该飞机只适合有科研和强烈学习意向的小伙伴们使用,如果只是想玩的话你肯定不会喜欢这套四轴的。
图片位~~~~~~~~~~~~~
视频位:
http://v.youku.com/v_show/id_XNjM2MDMwMzky.html
http://v.youku.com/v_show/id_XNjM1MjMyMTIw.html
http://v.youku.com/v_show/id_XNjM1MjM0MjQ4.html
本人不是专业做四旋翼的,现在研究生工作非常忙,不会大规模的卖东西,当然有强烈需求的话欢迎与我联系~我自然会开源我的代码的,有兴趣有时间的欢迎自己按照图纸制作。作为学生,最希望的还是能够得到更多的交流和知识,特别欢迎大家与我探讨导航和控制算法。扣扣 巴斯六舅三思六舅
下位机代码: http://download.csdn.net/detail/lynx2/6602901
百度网盘全部开源资料下载: http://pan.baidu.com/s/1oZBDM 电路工程文件:http://pan.baidu.com/s/1gSPbw
LynxFly科研小四轴横空出世,开源,F4,WIFI --(转)的更多相关文章
- 微信小程序商城开源项目,Weixin-App-Shop 1.0 版本正式发布!!!
微信小程序商城开源项目,Weixin-App-Shop 1.0 版本正式发布 Weixin-App-Shop 是捷微团队开发的微信小程序商城开源项目,涵盖了微信商城的全部功能,能够快速发布简单易用的小 ...
- 用Vue.js开发微信小程序:开源框架mpvue解析
前言 mpvue 是一款使用 Vue.js 开发微信小程序的前端框架.使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为 H5 和小程序提供了代码复用的能力.如果想将 H5 项目改造为小程 ...
- 手把手教你制作微信小程序,开源、免费、快速搞定
最近做了个"罗孚传车"的小程序 一时兴起,做了一个小程序,将个人收集的同汽车相关的行业资讯和学习资料,分享到小程序中,既作为历史资料保存,又提供给更多的人学习和了解,还能装一下:) ...
- 基于WeChat的消息存储备份、远程控制、小功能项目开源分享计划
WeChat+ 关于该项目 起源 该项目的起因是一个比较程(老)序(油)猿(条)的理由,有一天我发现我下班时间比较早,有点尴尬,但是又不想没事干还坐在公司,那么如何解决我的问题呢,初步想法是远程控制电 ...
- 微信小程序代码开源啦
想学习如何使用mpvue开发微信小程序吗? 想知道微信消息推送如何实现吗? 想知道如何用springboot开发小程序后台吗? 看这里就全都有了.耗时一个月打造的微信小程序:PSN折扣助手前后端所有源 ...
- 即兴小探华为开源行业领先大数据虚拟化引擎openLooKeng
@ 目录 概述 定义 背景 特点 架构 关键技术 应用场景 安装 单台部署 集群部署 命令行接口 连接器 MySQL连接器 ClickHouse连接器 概述 定义 openLooKeng 官网地址 h ...
- 面试利器!字节跳动2021年Android程序员面试指导小册已开源
整份手册分为两个部分,分别是:Java部分.Android部分.数据结构与算法篇.字节跳动2020年全年面试题总结篇! 每个知识点都有左侧导航书签页,看的时候十分方便,由于内容较多,这里就截取一部分图 ...
- 伴随ListView、RecyclerView、ScrollView滚动滑入滑出小图标--第三方开源--FloatingActionButton
FloatingActionButton在github上的项目主页是:https://github.com/makovkastar/FloatingActionButton 它的依赖包NineOldA ...
- 小程序官网CMS开源项目出炉,Weixin-App-CMS 1.0 版本正式发布
Weixin-App-CMS 是捷微团队开发的微信小程序CMS开源项目,涵盖了微网站的基本功能,能够快速发布简单易用的小程序网站.采用工具“微信web开发”上传小程序,即可快速体验发布体验小程序网站. ...
随机推荐
- MikroTik RouterOS使用U盘安装提示FATAL ERROR: no CD-ROM found Press ENTER to reboot的问题解决
1.首先说明这个ROS是不能使用U盘安装的,无论你怎么修改都无法实现 2.还是老老实实的刻录iso关盘,或者挂载硬盘到虚拟机上进行安装.又或者使用netinstall进行安装. 3.别去找国外的方法, ...
- spring集成kafka
一.添加依赖项 compile 'org.springframework.kafka:spring-kafka:1.2.2.RELEASE' 二.发消息(生产者) 2.1 xml配置 <?xml ...
- redis 写磁盘出错 Can’t save in background: fork: Cannot allocate memory (转)
查看 Redis 日志 发现系统在频繁报错: [26641] 18 Dec 04:02:14 * 1 changes in 900 seconds. Saving… [26641] 18 Dec 04 ...
- Revit API封装一个通用函数“过名称找元素”
感觉这个函数不错.通过这种方式寻找元素经常需要用到. ) { ]; } // cannot find it. return null; ...
- 在ASP.NET Web API中使用OData的Action和Function
本篇体验OData的Action和Function功能.上下文信息参考"ASP.NET Web API基于OData的增删改查,以及处理实体间关系".在本文之前,我存在的疑惑包括: ...
- require.js 简洁入门
原文地址:http://blog.sae.sina.com.cn/archives/4382 前言 提到require.js大多数人会说提到模块化开发,AMD等等,其实require.js并没有这么多 ...
- clientX, clientY,offsetX, offsetY,screenX, screenY, x, y
clientX, clientY是鼠标当前相对于网页的位置,当鼠标位于页面左上角时clientX=0, clientY=0: offsetX, offsetY是鼠标当前相对于网页中的某一区域的位置,当 ...
- 【mybatis】【mysql】mybatis查询mysql,group by分组查询报错:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column
mybatis查询mysql,group by分组查询报错:Expression #1 of SELECT list is not in GROUP BY clause and contains no ...
- HDU 4888 Redraw Beautiful Drawings 网络流 建图
题意: 给定n, m, k 以下n个整数 a[n] 以下m个整数 b[n] 用数字[0,k]构造一个n*m的矩阵 若有唯一解则输出这个矩阵.若有多解输出Not Unique,若无解输出Impossib ...
- python测试开发django-19.admin后台自定义显示
前言 django的admin后台默认显示的内容很少,只显示了表的相关信息,查看字段内容需点开详情才能查看,不是很直观. 在admin.py文件里面是可以自定义相关的展示内容的,也可以添加搜索框,快速 ...