5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
查看: 11579|回复: 71
打印 上一主题 下一主题

把MWC改造成Naza,简单易上手

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-14 18:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 AngelEyes 于 2013-1-17 17:55 编辑

调过MWC的同学都知道挺折腾,玩过Naza的同学都知道很傻瓜。是否能把MWC做得傻瓜化,让新手可以直接上手,不用折腾。根据我们的理解和深入分析,觉得这是可行的,为此我们将发这个改造计划。所有代码都将采用GPL协议开源化,感兴趣的同学可以加入哦。

MWC飞控的飞行效果是很不错的,但就是比较难配置。编译配置MWC时,需要C语言基础(至少要懂宏是啥)。国内关于WMC的文档也比较匮乏,所以还需要懂点米文才能搞定。

让我们看一下MWC的编译配置过程:
1、在代码中注释一些宏来控制你所选择的飞行器类型、传感器类型,修改电机怠速油门、遥控器最大/最新油门等
2、编译烧录到Arduino中
3、打开MWC的配置程序进行配置

配置程序的界面十分丰富,全部操作显示都堆在一张界面中了。但这会让初次接触MWC的人像个丈二和尚般摸不着头脑,界面中的东西都是些什么啊。你不得不费些功夫认真研究,最后终于弄明白了大部分内容,可“PID”是什么呢?面对“PID”配置,很折腾人,都不如何下手配置,头大。即使有幸你的飞行器稳飞了,PID你搞明白了么?还有一点,很不合理:飞行器类型的选择是在编译MWC代码之前就选择的,而不是在配置程序中选择。

           
         MWC的配置程序界面

而Naza的配置程序,界面友好,简单易用,配置时压根就没有PID这个概念,普通用户完全在15分钟之内就能搞定Naza的配置,顺利起飞。(大疆要付我们广告费了)如果MWC配置程序像Naza般友好点,岂不亲民点?

MWC有一点也很让人讨厌:每次上电后,你都要通过电脑或android手机上的配置程序,检查遥控器的横滚(roll)、俯仰(pitch),航向(yaw)通道的输出中值是否为1500。不是的话,需要调到1500。如果控是天6的级别的,就杯具了,每次飞,都要折腾半天调试控的摇杆的中值,好像设置deadband能帮下忙。但这点始终不不合理:凭什么中指非要为1500,普通用户对中值1500有概念吗?如果通过检验出遥控器的各通道的范围值,让飞控自动判断出中值,岂不简单省事?

MWC项目的发起者的初衷是让飞控在稳定的情况下成本尽量的低,所以很多硬件都是可选的,最简化的MWC只需要aduinio+陀螺仪传感器。MWC中有相当一部分代码是针对不同传感器而加的。如果只支持某一款特定的陀螺仪和加速计,那么MWC的代码将大幅简化。

以前刚开始接触MWC时,挺意外的,代码文件那么少。几乎每个代码文件都跟一个硬件模块对应,作用正如其名。下图是MWC的代码文件:


总体研究了下MWC的代码,代码量本身不多,也还算易懂,所以改造MWC是可行的。如果能搞出更好的飞控算法的话,那就可以说是完全脱胎换骨了。


MWC本身的配置程序的代码更少了,在windows,就一个java文件:

配置程序是使用艺术家语言Processing写的。这语言用于开简单的GUI程序还算能胜任,写复杂点的GUI程序就有点吃力了。所以新的配置程序将使用C++和Qt来开发。

目标

一、简化配置程序
(1)友好界面,简单易用,普通用户就能轻松上手
(2)无需调PID(不是说使用一个固定的PID值 而是给PID包个上层封装 让PID的一堆参数不可见 简化调校 或者让飞控自己学习调整PID
(3)实现遥控器摇杆的范围值校验,免去遥控器的中值校准必须到1500的弊病,实现中值自动校准
(4)配置界面中就可以选择飞行器的类型

二、改造MWC主控程序
(1)配置程序改了,飞控本身要配合作相应修改
(2)只针对特定的陀螺仪和传感器
(3)优化飞控算法(可能)

三、开发制造专用飞控板和电源/状态显示模式模块。
物美价廉;
制作出改造后MWC的专用飞控板,飞控板会尽量的小,用外壳封装好,并预留以下接口:
(1)横滚(roll)、俯仰(pitch)、航向(yaw)、油门(Throttle)控制接口
(2)飞行模式控制接口
(3)两轴云台接口
(4)GPS接口
(5)电源和状态指示灯接口

电源/状态显示模式模块:
(1) 飞控状态指示灯
(2) 变压功能,能将2s~4s的电压降压到arduino能使用的电压,免去UBEC
(3) usb编程接口(这个可以没有 如果使用的是原生arduino 但感觉重新整个arduino兼容板本才是上策)

参与
全部代码遵循GPL协议,代码使用github.com的版本控制服务器进行控制,参与的同学分配相应的git服务器权限。有兴趣的同学请PM我。

开发语言及框架
Arduino、C语言、Qt、C++

回报
参与开源项目的同学根据贡献奖励T恤,记事本,MWC飞控,多轴飞行器。

我们的其他几个开源项目

重在掺和

欢迎继续阅读楼主其他信息

沙发
发表于 2013-1-14 18:19 | 只看该作者
简化了就不是MWC……
3
 楼主| 发表于 2013-1-14 18:34 | 只看该作者
selith 发表于 2013-1-14 18:19
简化了就不是MWC……

是的 就是这个意思  把mwc定型化
4
发表于 2013-1-14 18:46 | 只看该作者
AngelEyes 发表于 2013-1-14 18:34
是的 就是这个意思  把mwc定型化

也就是说把MWC作为内核,衍生出新的固件?
5
发表于 2013-1-14 18:55 | 只看该作者
看不懂
但是知道你是技术性模友  
6
发表于 2013-1-14 18:59 | 只看该作者
还是折腾自己专业吧,这只是娱乐
7
发表于 2013-1-14 19:01 | 只看该作者
本帖最后由 端木殿 于 2013-1-14 20:26 编辑

所有要求用当下的固件的上位机就能完成。。。

一、简化配置程序
(1)友好界面,简单易用,普通用户就能轻松上手  》》目前的还凑合
(2)无需调PID 》》一个pid通吃所有配置是不可能的 》》当下的默认能飞绝大多数。。但是无需调pid的要求完全不符合控制原理。。除非写一整套分析工具来自动模拟/调校...如果真的要便民。。那还不如研究出一些比较实用的调教方法
(3)实现遥控器摇杆的中值校准   》》从来没有遇到过这种情况。。遥控上面调整一次保存了就可以。。顺便。。有个东西叫做deadband
(4)配置界面中就可以选择飞行器的类型  》》stm32/baseflight即32位的移植版已经实现了


二、改造MWC主控程序:
(1)配合配置程序工作  》》???
(2)飞控上电后,默认的飞行模式的stable;可以通过遥控器的一个单独的通道控制飞行器的飞行模式的切换。飞行模式还是有两种:acro模式和stable模式。》现在默认想设置成什么都可以。。所有模式/功能不都是用aux切换么
(3)加入自动上锁功能; 》》条件性的自动上锁apm有。。主要防治坠机后误伤。。。 人工失误自残是另外一回事
(4)只针对特定的陀螺仪和传感器 》》意义?  目前最热门的也就mpu6k。。。特定的好处是可以专注代码/算法优化。。。通用性完全降低。。而且如果需要硬件升级?


三、开发制造专用飞控板和电源/状态显示模式模块。 》》??? i2c的led? telemetry?
物美价廉;
制作出改造后MWC的专用飞控板,飞控板会尽量的小,用外壳封装好,并预留以下接口:
(1)横滚(roll)控制接口
(2)俯仰(pitch)控制接口
(3)航向(yaw)控制接口
(4)飞行模式模式控制接口
(5)两轴云台接口
(6)GPS接口
(6)电源和状态指示灯接口
》》》以上全都是必备且已经有的吧。。。不需要油门吗?/飞行模式接口。。。apm限制只有一个通道调整飞行模式的设定还没被XXX够么

电源/状态显示模式模块:
(1) 飞控状态指示灯 》》1.飞行中什么都看不到。。除非再外接led
(2) 变压功能,能将2s~4s的电压降压到arduino能使用的电压 》》不是没有(ff/aiop/apm)。。而是真的需要吗? 不如设计一个外部带自恢复熔丝的bec和防倒装接口/放倒装电路
(3) usb编程接口 》》cli?

还有。。mwc说过n^n次。。 他们偏向branch而不是fork。。因为branch容易和master相互对比和引用从而更好的优化master版。。fork独立出去后一是很多时候需要从新接驳代码且相互引用性低

如果打算和某兔一样最后要自成一家就另说吧
8
发表于 2013-1-14 19:06 | 只看该作者
好多 学习
9
发表于 2013-1-14 19:10 | 只看该作者
对了~飞控自动加锁,MWC其实有的~解锁后,上油门,然后加锁,油门到最低,就自动加锁了~

我是这样改的~设一个通道专门加解锁(摇杆加解锁油门非最低无效所以设通道),解锁后>开舵量限制为90%>加锁>关闭舵量限制,即油门拉到最低时为1100,而飞控油门关闭值是1000,然后飞到空中,关闭舵量限制,飞完,降落时,油门拉到最低即自动加锁

至于模式~我想切换到acro,调速器总成不被允许此项操作,郁闷死了~PID调试无效,自稳以调速器总成为准,侧飞摇杆最大时,被调速器总成自动限制,想玩3D没法玩……虽然很稳……没法子,只能改调速器总成的固件了,郁闷到吐血的是那固件是基于RTLinux Pro,然后去问老师,老师说没事,可以改成ARMLinux……我再次郁闷~两个玩意,我都不擅长……只能啃书去了
10
发表于 2013-1-14 19:59 | 只看该作者
mwc
11
发表于 2013-1-14 20:23 | 只看该作者
楼主...我自己前一阵写了一个手柄控制mwc的程序..可以贡献一下.嘻嘻..不太成熟..但是至少对mwc的通讯协议还算了解...还有就是..假如用AIOP+飞越450仿大疆的架子+2212kv1000+1047的浆的话..默认参数就可以飞的很好..当然..我的机器是因为电机振动大调整了低通滤波器..但是现在默认参数飞的相当顺滑..
12
发表于 2013-1-14 20:27 | 只看该作者
13
发表于 2013-1-14 20:54 | 只看该作者
报名。。。
14
发表于 2013-1-14 21:02 ——“来自手机” | 只看该作者
支持折腾...
15
 楼主| 发表于 2013-1-14 22:06 | 只看该作者
selith 发表于 2013-1-14 18:46
也就是说把MWC作为内核,衍生出新的固件?

目标是让MWC是傻瓜化  简单易用  
当然如果能找到更好的飞控算法的话 那就可以说是完全脱胎换骨了
16
发表于 2013-1-14 22:07 | 只看该作者
端木殿 发表于 2013-1-14 19:01
所有要求用当下的固件的上位机就能完成。。。

赞同阁下说法。楼主如果要自成一家,还得多多了解MWC。
MWC 超越 Naza 是迟早的(可能需要硬件升级到STM32)。
17
 楼主| 发表于 2013-1-14 22:08 | 只看该作者
lanse2pty 发表于 2013-1-14 18:59
还是折腾自己专业吧,这只是娱乐

看你也是爱折腾的主  但也有喜欢简单的人在 不是吗
18
发表于 2013-1-14 22:35 | 只看该作者
现在ARDUINO架构最然我恶心的就是
更换机架类型需要重刷固件
APM MWC 海盗莫不如是
其他OK啦
MWC调参固件,汉化一下就便民了
19
 楼主| 发表于 2013-1-14 22:42 | 只看该作者
本帖最后由 AngelEyes 于 2013-1-14 22:45 编辑
端木殿 发表于 2013-1-14 19:01
所有要求用当下的固件的上位机就能完成。。。

一、简化配置程序
(1)友好界面,简单易用,普通用户就能轻松上手  》》目前的还凑合  》》够亲民吗?
(2)无需调PID 》》一个pid通吃所有配置是不可能的 》》当下的默认能飞绝大多数。。但是无需调pid的要求完全不符合控制原理。。除非写一整套分析工具来自动模拟/调校...如果真的要便民。。那还不如研究出一些比较实用的调教方法  》》不是用一个PID通杀全部飞行器,这样做明显不合理。是给PID做上层包装,简化PID的设置。
(3)实现遥控器摇杆的中值校准   》》从来没有遇到过这种情况。。遥控上面调整一次保存了就可以。。顺便。。有个东西叫做deadband
》》deadband我知道的,我们做的iphone遥控器都有deadband。一次保存了就可以,但前提是你既要懂deadband,又要知道中值是1500。
一般用户哪有中值1500us这个概念。如果实现遥控器摇杆的中值手动校准,让飞控自行知道遥控器的中值就方便了。
(4)配置界面中就可以选择飞行器的类型  》》stm32/baseflight即32位的移植版已经实现了》》值得看下


二、改造MWC主控程序:
(1)配合配置程序工作  》》???》》配置程序都改了,MWC不该做相应调整么?
(2)飞控上电后,默认的飞行模式的stable;可以通过遥控器的一个单独的通道控制飞行器的飞行模式的切换。飞行模式还是有两种:acro模式和stable模式。》现在默认想设置成什么都可以。。所有模式/功能不都是用aux切换么 》》有就不改了
(3)加入自动上锁功能; 》》条件性的自动上锁apm有。。主要防治坠机后误伤。。。 人工失误自残是另外一回事 》》如果我们对待每一件事物都必须没分每秒都异常小心,那生活就没乐趣了。减少失误最好的方法是减少失误的机会。
(4)只针对特定的陀螺仪和传感器 》》意义?  目前最热门的也就mpu6k。。。特定的好处是可以专注代码/算法优化。。。通用性完全降低。。而且如果需要硬件升级?》》也可以支持一堆传感器,然后在配置程序中给出一对传感器型号让用户选择,对于简单化有必要吗?如若选择性价比最高的传感器,不是简单了。如果传感器要升级,这操作还不够简单么?


三、开发制造专用飞控板和电源/状态显示模式模块。 》》??? i2c的led? telemetry?  》》UBEC的替代品;arduino是5v供电,而用的电池是2s、3s或4s。
物美价廉;
制作出改造后MWC的专用飞控板,飞控板会尽量的小,用外壳封装好,并预留以下接口:
(1)横滚(roll)控制接口
(2)俯仰(pitch)控制接口
(3)航向(yaw)控制接口
(4)飞行模式模式控制接口
(5)两轴云台接口
(6)GPS接口
(6)电源和状态指示灯接口
》》》以上全都是必备且已经有的吧。。。不需要油门吗?/飞行模式接口。。。apm限制只有一个通道调整飞行模式的设定还没被XXX够么
》》》忘加油门了 必备  飞行控制接口不XXX的话  默认是stable

电源/状态显示模式模块:
(1) 飞控状态指示灯 》》1.飞行中什么都看不到。。除非再外接led  》》可以考虑再接个蜂鸣器,有个指示灯总感觉比较爽,不知状态的话,不合理,飞机又不是始终在天上飞,刚上电后,如果检测到有毛病,给个提示不好么?
(2) 变压功能,能将2s~4s的电压降压到arduino能使用的电压 》》不是没有(ff/aiop/apm)。。而是真的需要吗? 不如设计一个外部带自恢复熔丝的bec和防倒装接口/放倒装电路  》》》UBEC的替代品 简化设计
(3) usb编程接口 》》cli? 》》这个可以没有 如果使用的是原生arduino板
20
 楼主| 发表于 2013-1-14 22:55 | 只看该作者
selith 发表于 2013-1-14 19:10
对了~飞控自动加锁,MWC其实有的~解锁后,上油门,然后加锁,油门到最低,就自动加锁了~

我是这样改的 ...

“飞控自动加锁,MWC其实有的~解锁后,上油门,然后加锁,油门到最低,就自动加锁了” 学习了,但这样的上锁方式不够智能,油门降到5%一下3秒后自动上锁 多好  
如果有自动校验遥控器的通道值输出范围  油门拉到最低时为1100“”还不上锁的杯具就不会发生了  因为校验后 飞控就知道遥控器的油门通道最低值是1100而非1000

”至于模式~我想切换到acro,调速器总成不被允许此项操作,郁闷死了~PID调试无效,自稳以调速器总成为准,侧飞摇杆最大时,被调速器总成自动限制,想玩3D没法玩……虽然很稳……没法子,只能改调速器总成的固件了,郁闷到吐血的是那固件是基于RTLinux Pro,然后去问老师,老师说没事,可以改成ARMLinux……我再次郁闷~两个玩意,我都不擅长……只能啃书去了“  云里雾里 求教
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /1 下一条

快速回复 返回顶部 返回列表