amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
楼主: wangjt1988

不思带你【从零开始】做四轴--软件/硬件/上位机--随时更新

  [复制链接]
 楼主| 发表于 2013-3-31 20:15:07 | 显示全部楼层
cuiliang1984 发表于 2013-3-31 19:31
楼主能不能共享一下MDK版本的工程文件呢?

MDK的刚开始写
发表于 2013-4-1 10:17:06 | 显示全部楼层
求更新啊。。。。。。。。。每天关注中
 楼主| 发表于 2013-4-1 12:09:54 来自手机 | 显示全部楼层
这几天忙着找房子租房子,有时间马上更新……过两天还要搬家……麻烦
发表于 2013-4-1 14:10:44 | 显示全部楼层
必须支持了
发表于 2013-4-1 14:34:34 | 显示全部楼层
顶楼主哦,先把毕设解决马上跟上你啦。
 楼主| 发表于 2013-4-1 20:01:03 | 显示全部楼层
今天抽出点时间,再跟大家聊一聊.
其实如果把教程前面的东西消化了,到现在应该已经可以得到自己的传感器读数和简单的姿态数据了,今天就里面的细节问题聊一聊吧.
做飞控,最重要的应该要属传感器读数的准确性和姿态的算法了,之前讲了加速度和陀螺仪传感器,希望大家在睡觉前可以闭上眼想象一下,这俩传感器怎么配合才合适,构思一下算法,这里的构思,只要一个大题思路就行,不可能在脑子里就把程序一句句写好吧。。。
有个问题,我们什么时候去读传感器呢?我觉得这样看两个情况,一:系统速度够快,比如6050的采样周期是1ms,我的单片机在1ms里面可以完成数据读取、滤波、姿态计算、输出等计算过程,那么,我就可以使用定时器中断来触发读取,然后是依次滤波。。。。。二:系统不够快,有的飞控速度慢,1ms完成不了那么多任务,很多浮点运算对8位机确实任务有点重,那怎么办?那我们就循环读,什么时候完成计算过程了,什么时候读取传感器数据,并开始下一次计算过程,这样不浪费单片机的时间。
有点点调试经验,跟大家分享下,如果大家也和我用的单片机一样,都是stm32f103,想必大家在调试IIC的时候也遇到了各种各样的困难,确实,stm32的IIC是个很蛋疼的东西,当然,我是针对的硬件,模拟的还是很好用的。当时调试IIC,那可是尝试了各种方法,中断,dma,官方的cpal什么的,就一个字,不好用。。。。。当时都想外加个单片机负责IIC的读取了。。。。。如果大家要调试硬件的IIC,我有几个小经验,不能用变量观察窗口,并在IIC程序中设置断点,比方说我想看看SR1或者SR2寄存器什么状态呀,不要想了,不能这样,因为stm IIC相关寄存器很多都是读取后清零,大家用Jlink看寄存器,就相当于读取了,寄存器清零,不该清零的时候清零,后果很严重,IIC直接挂掉了。。。。。STM的模拟IIC还是很稳定的,相关程序请参考我的工程。

 楼主| 发表于 2013-4-1 20:07:43 | 显示全部楼层
现在假设大家已经得到了一下数据:
滤波后的加速度数据  AX,AY,AZ,陀螺仪数据:GX,GY,GZ,怎么用这些数据得到姿态?   
我的程序里面用的四元数,我就简单给大家讲讲用法,具体四元数的原理什么的,我的不懂。。。。。矩阵、旋转、空间、三维。。。。实在太。。
IMUupdate(GX,GY,GZ,AX,AY,AZ);
这个函数的调用在control。c 里面,大家可以看一下,只要把加速度和陀螺仪的相关数据,传进这个函数就可以了,就这么简单。
这个函数可以根据我们传递进去的传感器数据,计算表示姿态的四元数,计算出了 四元数怎么用呢?请看程序末尾:
Q_ANGLE.Pitch  = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3; // pitch
Q_ANGLE.Rool = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3; // roll
这两句话就是根据四元数,计算表示飞机姿态的欧拉角。
有了欧拉角,就可以方便的用于控制了。
听说四元数可以直接参与控制,我还不懂是怎么回事,有懂的大神还请解释解释啊,大家一起学习一下。
发表于 2013-4-1 22:23:44 | 显示全部楼层
wangjt1988 发表于 2013-4-1 20:07
现在假设大家已经得到了一下数据:
滤波后的加速度数据  AX,AY,AZ,陀螺仪数据:GX,GY,GZ,怎么用这些数据 ...

深入浅出,先看了你的程序再看讲解,很好懂。
发表于 2013-4-7 22:54:16 | 显示全部楼层
关注楼主中,我也是用的STM32f103主控,正在研究姿态控制算法,晃得厉害
发表于 2013-4-8 10:13:26 | 显示全部楼层
支持楼主
发表于 2013-4-8 21:53:05 | 显示全部楼层

.

本帖最后由 济南电子爱好者 于 2013-4-8 22:09 编辑

佩服楼主的开源,楼主软硬通吃啊,我也是软件和硬件都会点,但确实比楼主差远了.我下位机用的ARM9 调试程序差不多写有一半了,上位机用的C# ,这个完成了80%
发表于 2013-4-8 22:21:49 | 显示全部楼层
好东西,收藏了
 楼主| 发表于 2013-4-8 22:38:30 来自手机 | 显示全部楼层
济南电子爱好者 发表于 2013-4-8 21:53
佩服楼主的开源,楼主软硬通吃啊,我也是软件和硬件都会点,但确实比楼主差远了.我下位机用的ARM9 调试程序差 ...

我也试过c#   速度貌似不够快   放弃了
 楼主| 发表于 2013-4-8 22:39:16 来自手机 | 显示全部楼层
济南电子爱好者 发表于 2013-4-8 21:53
佩服楼主的开源,楼主软硬通吃啊,我也是软件和硬件都会点,但确实比楼主差远了.我下位机用的ARM9 调试程序差 ...

截个图看看界面啊   c#做的好看
发表于 2013-4-10 14:40:31 | 显示全部楼层
wangjt1988 发表于 2013-4-8 22:39
截个图看看界面啊   c#做的好看

我只是简单做了个控件平台,接收摇杆信息,实时视频传输.还在完善中.
发表于 2013-4-17 17:22:52 | 显示全部楼层
学习了,最近正在做MPU6050
发表于 2013-4-17 19:33:11 | 显示全部楼层
学习,准备DIY
 楼主| 发表于 2013-4-17 21:04:22 来自手机 | 显示全部楼层
唉  搬了家   没网了……不方便更新   对不住大家
发表于 2013-4-18 12:40:53 | 显示全部楼层
wangjt1988 发表于 2013-4-17 21:04
唉  搬了家   没网了……不方便更新   对不住大家

呵呵,太客气了
凡事就怕坚持二字,我就坚持来顶贴。
发表于 2013-4-18 21:41:30 | 显示全部楼层
楼主的四轴做得很不错,严重关注中~~~支持楼主~~~~~~~~~~~~~~
发表于 2013-4-18 22:57:27 | 显示全部楼层
标记,有空看
发表于 2013-4-20 14:19:57 | 显示全部楼层
继续顶楼主
发表于 2013-4-21 17:07:04 | 显示全部楼层
楼主共享一下MDK的工程文件吧
发表于 2013-4-21 21:53:58 | 显示全部楼层
LZ伟大,开始四轴之路,慢慢学习
 楼主| 发表于 2013-4-22 09:06:12 来自手机 | 显示全部楼层
sunky@feeling 发表于 2013-4-21 17:07
楼主共享一下MDK的工程文件吧

mdk的还在写…
发表于 2013-4-22 10:12:11 | 显示全部楼层
楼主的淘宝店怎么关闭了
发表于 2013-4-22 10:26:27 | 显示全部楼层
顶,关注!
发表于 2013-4-22 16:35:49 | 显示全部楼层
好像好复杂。
发表于 2013-4-22 18:48:36 | 显示全部楼层
wangjt1988 发表于 2013-3-18 18:44
额,帖子已经不能编辑了,只能在回复里贴了......
第一步LED驱动好了,下一步做点什么呢?就来驱动下串口吧,串 ...

我想问一下楼主,学习STM32只要学好库就行了吗?楼主会寄存器操作吗???
发表于 2013-4-23 21:58:26 | 显示全部楼层
wangjt1988 发表于 2013-4-22 09:06
mdk的还在写…

请问下楼主MPU6050这类加速度传感器,在PCB设计时需要放在飞行器的轴线上么?如果不在,调试起来是不是比较麻烦呢?
发表于 2013-4-23 23:12:59 | 显示全部楼层
顶!关注
 楼主| 发表于 2013-4-23 23:37:12 来自手机 | 显示全部楼层
cattrace 发表于 2013-4-23 21:58
请问下楼主MPU6050这类加速度传感器,在PCB设计时需要放在飞行器的轴线上么?如果不在,调试起来是不是比 ...

不会太影响,只是数据会稍微不准些…应该问题不大
发表于 2013-4-24 11:02:14 | 显示全部楼层
wangjt1988 发表于 2013-4-23 23:37
不会太影响,只是数据会稍微不准些…应该问题不大

谢谢老板
发表于 2013-4-24 11:17:40 | 显示全部楼层
绝对福利啊 支持下 持续关注!
发表于 2013-4-24 11:56:37 | 显示全部楼层
关注
发表于 2013-4-29 19:22:30 | 显示全部楼层
很好很强大
发表于 2013-5-3 15:38:45 | 显示全部楼层
顶顶
发表于 2013-5-4 09:29:51 | 显示全部楼层
好帖,楼主能不能顺便介绍下板子的设计呢?
发表于 2013-5-4 10:10:24 | 显示全部楼层
此贴必火,我也打算加入玩四轴行列
发表于 2013-5-4 20:51:23 | 显示全部楼层
wangjt1988 发表于 2013-4-22 09:06
mdk的还在写…

期待茶大的MDK啊!
 楼主| 发表于 2013-5-4 23:11:45 来自手机 | 显示全部楼层
紫竹人士 发表于 2013-4-22 18:48
我想问一下楼主,学习STM32只要学好库就行了吗?楼主会寄存器操作吗??? ...

先学习库的    想用寄存器了,可以参考库函数,修改下就可以了
 楼主| 发表于 2013-5-4 23:13:19 来自手机 | 显示全部楼层
angrybulb 发表于 2013-5-4 09:29
好帖,楼主能不能顺便介绍下板子的设计呢?

外形看个人喜好了,电路画对了,应该就没啥问题
 楼主| 发表于 2013-5-4 23:13:37 来自手机 | 显示全部楼层
pentong 发表于 2013-5-4 10:10
此贴必火,我也打算加入玩四轴行列

热烈欢迎
 楼主| 发表于 2013-5-4 23:14:09 来自手机 | 显示全部楼层
171823356 发表于 2013-5-4 20:51
期待茶大的MDK啊!

等忙完这段时间完善下就给大家
发表于 2013-5-11 22:54:01 | 显示全部楼层
wangjt1988 发表于 2013-3-21 20:14
可能一个模块一个模块的讲有些啰嗦,而且这些模块的使用方法网上也有很多教程,我以后就不在说这个了.大家有 ...

讲的通俗易懂,赞同你的观点,也知道为什么MPU6050为什么既要用加速度计又要用陀螺仪了!
发表于 2013-5-11 23:05:56 | 显示全部楼层
wangjt1988 发表于 2013-4-1 12:09
这几天忙着找房子租房子,有时间马上更新……过两天还要搬家……麻烦

楼主找房子干嘛?刚刚工作吗?
发表于 2013-5-12 00:02:35 | 显示全部楼层
不用卡尔曼滤波的飞控也能飞的这样好?强烈关注,下了看看是怎么实现的。
发表于 2013-5-12 00:36:36 | 显示全部楼层
楼主,能让我参考一下你的上位机软件源代码吗? 如果你需要什么资料、元件、源码,或者莫元、美元交换都行。
发表于 2013-5-15 18:27:51 | 显示全部楼层
wangjt1988 发表于 2013-3-18 20:36
有人让我解释一下我程序里面PID计算的过程,这里就插一节吧,就是介绍下我的PID,当然,还很不完善,后期肯定还 ...

你这里的rool_i -= PID_RP.I * Q_ANGLE.Rool;  为什么是减 而不是叫求原理啊11
 楼主| 发表于 2013-5-15 21:45:11 | 显示全部楼层
chenjy 发表于 2013-5-15 18:27
你这里的rool_i -= PID_RP.I * Q_ANGLE.Rool;  为什么是减 而不是叫求原理啊11

和角度的正方向有关,在进行电机pwm输出时如果反向一下,这里就可以加了
 楼主| 发表于 2013-5-15 21:47:18 | 显示全部楼层
agnd 发表于 2013-5-12 00:36
楼主,能让我参考一下你的上位机软件源代码吗? 如果你需要什么资料、元件、源码,或者莫元、美元交换都行 ...

sorry,都是很简单的代码组合起来的,你如果有问题可以讨论
发表于 2013-5-16 19:15:19 | 显示全部楼层
wangjt1988 发表于 2013-5-15 21:47
sorry,都是很简单的代码组合起来的,你如果有问题可以讨论

只看该作者,把你写的东西都看了一遍,收获很多,谢谢了~
发表于 2013-5-16 19:21:09 | 显示全部楼层
支持下 加油
发表于 2013-5-18 11:14:11 | 显示全部楼层
mark~~~~~~~~~~
发表于 2013-5-18 11:45:23 | 显示全部楼层
支持 关注 学习
发表于 2013-5-18 17:57:30 | 显示全部楼层
wangjt1988 发表于 2013-5-15 21:47
sorry,都是很简单的代码组合起来的,你如果有问题可以讨论

没关系,我现在去找MAVlink协议的开源地面站软件了,下了qgroundcontrol和MissionPlanner用,就不自己写上位机了。
发表于 2013-5-18 19:28:14 | 显示全部楼层
坛子里大神真多
只可惜,现在没时间也没钱弄
偶尔来娱乐娱乐
发表于 2013-5-20 18:21:42 | 显示全部楼层
等着更新吧。。有点想玩这个
发表于 2013-5-26 01:27:54 | 显示全部楼层
之前说的3D功能在哪里呢
 楼主| 发表于 2013-5-26 16:40:20 | 显示全部楼层
rantingting 发表于 2013-5-26 01:27
之前说的3D功能在哪里呢


在这里

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2013-5-26 21:27:07 | 显示全部楼层
wangjt1988 发表于 2013-5-26 16:40
在这里

这个没有分享时吗  做的好漂亮啊
 楼主| 发表于 2013-5-26 22:24:12 | 显示全部楼层
rantingting 发表于 2013-5-26 21:27
这个没有分享时吗  做的好漂亮啊

很快就会分享啦,在"内测"
发表于 2013-5-27 10:17:31 | 显示全部楼层
wangjt1988 发表于 2013-5-26 22:24
很快就会分享啦,在"内测"

好的,耐心等待……
发表于 2013-5-27 11:26:29 | 显示全部楼层
  看到这个标题,想起了九把刀的 等一个人咖啡 的阿不思
发表于 2013-5-30 16:37:57 | 显示全部楼层
好帖留名,向茶大学习。
发表于 2013-5-30 16:41:58 | 显示全部楼层
学习了   
发表于 2013-5-30 20:28:28 | 显示全部楼层
楼主,说明视频看不见了!
发表于 2013-5-31 09:01:12 | 显示全部楼层
真是好啊,赞一个。
发表于 2013-6-3 13:12:47 | 显示全部楼层
貌似茶大大失踪了
发表于 2013-6-4 10:06:26 | 显示全部楼层
默默学习中。。。
发表于 2013-6-4 18:35:47 | 显示全部楼层
没事顶一顶
发表于 2013-6-4 22:53:46 | 显示全部楼层
茶不思吗?
发表于 2013-6-7 10:55:41 | 显示全部楼层
楼主 我又来顶啦 很喜欢楼主做的上位机 以前学过VB,不过几年没用过了 ,忘得差不多了
现在觉得delphi,C#不错,好像C#需要学的太多,打算学习delphi
要想做出LZ这样漂亮的界面 还有波形显示,3D显示  需要怎样学习  
推荐一下学习方法 和学习书籍资料吧
求指导

楼主QQ 940079007 还可以加人吗
怎么之前加你 一直没有回复呢
我再加一遍
发表于 2013-6-7 11:03:29 | 显示全部楼层
也求论坛其他上位机大神指点一下
发表于 2013-6-7 22:37:02 | 显示全部楼层
学习了,正在学习自己做四轴
 楼主| 发表于 2013-6-8 11:24:56 | 显示全部楼层
上周去杭州出差,这周又有任务......
发表于 2013-6-16 21:44:36 | 显示全部楼层
wangjt1988 发表于 2013-5-26 16:40
在这里

哈哈,看着不错啊!!!LZ继续更啊!!!
发表于 2013-6-16 21:57:46 | 显示全部楼层
顶一个,交流一下
发表于 2013-6-17 12:18:28 | 显示全部楼层
好贴啊,学习了。
发表于 2013-6-27 22:36:51 | 显示全部楼层
强顶啊,,我的也要慢慢开始啦 啊
发表于 2013-6-29 21:26:27 | 显示全部楼层
会心一顶
发表于 2013-6-30 21:33:11 | 显示全部楼层
只要没看懂,就要顶
 楼主| 发表于 2013-7-1 21:04:22 | 显示全部楼层
灵魂重新 发表于 2013-6-30 21:33
只要没看懂,就要顶

谢谢帮顶,最近较忙,新套件也在准备,好了继续更新
发表于 2013-7-2 13:37:07 | 显示全部楼层
严重支持~~
发表于 2013-7-2 20:07:46 | 显示全部楼层
茶大 继续回来混阿莫了?
 楼主| 发表于 2013-7-2 21:09:42 来自手机 | 显示全部楼层
灵魂重新 发表于 2013-7-2 20:07
茶大 继续回来混阿莫了?

是的   工作最忙的时间过去了    不能放下自己的爱好啊
发表于 2013-7-3 09:45:36 | 显示全部楼层
早上起来水一贴
发表于 2013-7-4 22:54:59 | 显示全部楼层
wangjt1988 发表于 2013-7-1 21:04
谢谢帮顶,最近较忙,新套件也在准备,好了继续更新

楼主出套件么?有的话我想来一套啊
发表于 2013-7-5 00:50:56 | 显示全部楼层
顶!!
 楼主| 发表于 2013-7-5 01:07:50 来自手机 | 显示全部楼层
jeep130 发表于 2013-7-4 22:54
楼主出套件么?有的话我想来一套啊

套件很快了   就这两周了    这次是焊接好的板子    不用大家焊接芯片了
发表于 2013-7-14 22:26:15 | 显示全部楼层
mark 四轴
发表于 2013-7-15 07:21:26 | 显示全部楼层
本帖最后由 am_diy 于 2013-7-15 07:23 编辑
wangjt1988 发表于 2013-3-18 20:36
有人让我解释一下我程序里面PID计算的过程,这里就插一节吧,就是介绍下我的PID,当然,还很不完善,后期肯定还 ...


茶大,请教一下,代码里面这部份为何要做清零判断?
第二,代码中0.1这个值是如何得来的?为什么要取值0.1?
if(Q_ANGLE.Rool>-0.1 && Q_ANGLE.Rool<0.1)   判断I是否需要清零
        {                                                                           
                rool_i = 0;
        }
 楼主| 发表于 2013-7-15 09:25:31 来自手机 | 显示全部楼层
am_diy 发表于 2013-7-15 07:21
茶大,请教一下,代码里面这部份为何要做清零判断?
第二,代码中0.1这个值是如何得来的?为什么要取值0. ...

原来想的是防止超调,因为积分项只有当角度到达相反方向才能减少,后来仔细想想并不能简单清零    还要优化
发表于 2013-7-15 09:51:39 | 显示全部楼层
期待楼主的分享,顶起!
发表于 2013-7-15 10:47:35 | 显示全部楼层
等我忙完这阵子。。我也向茶大学习学习。。
 楼主| 发表于 2013-7-15 15:58:25 来自手机 | 显示全部楼层
莫佛 发表于 2013-7-15 10:47
等我忙完这阵子。。我也向茶大学习学习。。

欢迎啊   一起来玩才有意思    现在已经有不少人了
发表于 2013-7-15 19:30:50 | 显示全部楼层
imu的流程是不是这样:加速度读取->滤波(kalman,互补或者平滑滤波)->四元素法——>转换欧拉角
 楼主| 发表于 2013-7-15 20:05:38 | 显示全部楼层
greato1 发表于 2013-7-15 19:30
imu的流程是不是这样:加速度读取->滤波(kalman,互补或者平滑滤波)->四元素法——>转换欧拉角 ...

恩   是的
发表于 2013-7-16 15:28:10 | 显示全部楼层
那么也就是说陀螺仪的角速度是不需要平滑的?只需要积分就可以了,是这样的吗?
发表于 2013-7-16 15:29:14 | 显示全部楼层
看来有必要向应用程序进军了。看到楼主的上位机。顿悟。
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 粤ICP备09047143号 )

GMT+8, 2017-11-20 13:50

阿莫电子论坛, 原"中国电子开发网"

© 2004-2016 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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