OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
12
返回列表 发新帖

开源一个自己做的小四旋翼工程,会有相关讲解

[复制链接]

0

主题

7

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2014-10-26
在线时间
2 小时
发表于 2015-2-2 20:54:33 | 显示全部楼层
正点原子逻辑分析仪DL16劲爆上市
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2012-10-27
在线时间
1 小时
发表于 2015-2-2 22:34:57 | 显示全部楼层
回复 支持 反对

使用道具 举报

2

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
484
金钱
484
注册时间
2014-9-5
在线时间
179 小时
发表于 2015-2-9 13:54:54 | 显示全部楼层
想问下,那个角度公式反切 arctag在stm32程序什么写的,貌似没有三角函数的例程调用。
回复 支持 反对

使用道具 举报

14

主题

225

帖子

3

精华

高级会员

Rank: 4

积分
623
金钱
623
注册时间
2014-7-8
在线时间
26 小时
 楼主| 发表于 2015-2-9 17:59:23 | 显示全部楼层
回复【53楼】Elmo:
---------------------------------
有哦,加入math。h的头文件然后加入atan2(分子,分母);
回复 支持 反对

使用道具 举报

46

主题

329

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1544
金钱
1544
注册时间
2012-4-9
在线时间
80 小时
发表于 2015-2-9 20:34:00 | 显示全部楼层
回复【33楼】syhx8262516:
---------------------------------
对于传感器类型的LGA,BGA类型芯片,最好别用风枪吹,我之前就是用风枪吹一个ADXL345的片子,就吹坏了,平放着的x度数居然几十甚至上百,yz没读数,校准也没用。
STM32
回复 支持 反对

使用道具 举报

2

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
484
金钱
484
注册时间
2014-9-5
在线时间
179 小时
发表于 2015-2-10 13:23:24 | 显示全部楼层
回复【54楼】2013的弹子球:
---------------------------------
你的程序是加math.h吗?加math.h算比较费时吧。
回复 支持 反对

使用道具 举报

头像被屏蔽

263

主题

455

帖子

1

精华

禁止访问

积分
1212
金钱
1212
注册时间
2011-9-25
在线时间
12 小时
发表于 2015-2-10 17:59:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

14

主题

225

帖子

3

精华

高级会员

Rank: 4

积分
623
金钱
623
注册时间
2014-7-8
在线时间
26 小时
 楼主| 发表于 2015-2-11 08:39:34 | 显示全部楼层
回复【56楼】Elmo:
---------------------------------
额。。你要自己泰勒展开不拦你,这结算频率上千
回复 支持 反对

使用道具 举报

14

主题

225

帖子

3

精华

高级会员

Rank: 4

积分
623
金钱
623
注册时间
2014-7-8
在线时间
26 小时
 楼主| 发表于 2015-2-11 08:41:36 | 显示全部楼层
回复【56楼】Elmo:
---------------------------------
float _atan2f(float y, float x) {
    uint8_t sx, sy;
    if(y == 0) {
        if (x >= 0) return (0);
        else        return (-PI);
    }
    if(x == 0) {
        if(y >= 0)  return( I / 2);
        else        return(-PI / 2);
    }
    
    sx = sy = 0;
    if (x < 0) {
        x = -x;
        sx = 1;
    }
    if (y < 0) {
        y = -y;
        sy = 1;
    }
    
    if (x == y) {
        y = I / 4;
    } else {
        uint8_t mode;
        if (x > y) {
            y = y / x;
            mode = 0;
        } else {
            y = x / y;
            mode = 1;
        }
        x = y * y;
        y *= 1.0f -
             x * (0.333332062f -         // 这几个数能获得较高的精度
             x * (0.199462891f -
             x * 0.083332539f));
        if (mode != 0) {
            y = (PI / 2) - y;
        }
    }
    
    if(sx != 0) y = I - y;
    if(sy != 0) y = -y;
   
    return (y)
}
这是别人写的
回复 支持 反对

使用道具 举报

2

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
484
金钱
484
注册时间
2014-9-5
在线时间
179 小时
发表于 2015-2-12 16:27:45 | 显示全部楼层
哦谢谢楼主回答,y *= 1.0f -  x * (0.333332062f -    x * (0.199462891f -   x * 0.083332539f)); 看到了是采用三级展开项。
这段是math.c里面的吗,还是从其它地方来的,还有其它sin cos 吗,发给我s_syx@163.com好吗?
回复 支持 反对

使用道具 举报

6

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2013-3-9
在线时间
18 小时
发表于 2015-2-16 13:38:49 | 显示全部楼层
楼主你好,不知道你现在做得怎么样了,作为大二学生能做到这个确实相当不错了,我大二的时候只是用STM32做了一个平衡车,你贴出来的代码两年前在阿莫上看到过,不过当时我没有特别懂,看了楼主的帖子算是彻底理解了,最近打算做个大四轴,由于涉及浮点运算,所以打算采用STM32F4的单片机做,打算用MPU9250,用F450的架子,磁力计会不会受到太大干扰呢,关于姿态解算,欧拉角的方法存在奇点,大部分都用四元数法,另外楼主有没有尝试用卡尔曼滤波去做呢
回复 支持 反对

使用道具 举报

6

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2013-3-9
在线时间
18 小时
发表于 2015-2-16 15:16:44 | 显示全部楼层
另外楼主可以加强一下控制理论的学习,四轴飞行器要稳定,最好是用智能控制算法来做,以抵制模型变化和干扰因素
回复 支持 反对

使用道具 举报

6

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2013-3-9
在线时间
18 小时
发表于 2015-2-16 17:38:52 | 显示全部楼层
对卡尔曼滤波在四旋翼上的想法,一是通过欧拉角的方法计算出姿态,并且认为这个姿态就是测量值,然后进行卡尔曼滤波,二是直接用四元数的方法求出的姿态角作为卡尔曼滤波的测量值(这样测量值已经相对精确,认为测量噪声较小),再用卡尔曼滤波器(因为卡尔曼滤波器属于最优估计)进一步优化,这样会不会效果更好,且不存在奇点。
回复 支持 反对

使用道具 举报

14

主题

225

帖子

3

精华

高级会员

Rank: 4

积分
623
金钱
623
注册时间
2014-7-8
在线时间
26 小时
 楼主| 发表于 2015-2-16 22:37:06 | 显示全部楼层
回复【61楼】东东bh:
---------------------------------
奥,学长好,正在学习matlab在做EKF还有UKF。。对于这种强非线性系统。。普通的卡尔曼肯定是不行的。。正在学习中。。至于那几个参数最近也是实际仿真了才知道,普通的卡尔曼滤波,卡尔曼增益跟初始那个方差阵的选取很有关系,它跟本就测量值无关,其实就是个互补滤波,卡尔曼增益迭代到最后就是个定值(不排除我程序有误),实际用32算也是这样,网上那些说的K什么会自动变化就是扯淡。
不过能够通过方差阵的精确选择得到最优解,但是如果不能得到精确的噪声还不如就用互补滤波,但是这里算法进行改进,至于控制。。。我们还没学最基本的自控,目前那本书我也只看了时域部分。。还没有那么高端。。然后目前代码也不过改成串级PID,也只是大概了解原理,甚至调串级参数都不太会调。
回复 支持 反对

使用道具 举报

14

主题

225

帖子

3

精华

高级会员

Rank: 4

积分
623
金钱
623
注册时间
2014-7-8
在线时间
26 小时
 楼主| 发表于 2015-2-16 23:31:48 | 显示全部楼层
回复【63楼】东东bh:
---------------------------------
看到的方案基本都是融合的四元数。。。话说。。如果你要控制的话好像都要换算成欧拉角啊。。。。。还是有奇点啊。。还有关于这个奇点我一直不是很明白,按常用的算法,在俯仰角正负90度时会出现另外两个角求解时为0除以0,还有偏航在90度也会出现分母为0的情况。。这个就是起点么。。听说是能够直接通过四元数直接作为控制器的输入信号的。。。。。。
回复 支持 反对

使用道具 举报

9

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2013-8-29
在线时间
3 小时
发表于 2015-2-17 11:58:36 | 显示全部楼层
同学 能给我一块板子吗
回复 支持 反对

使用道具 举报

14

主题

225

帖子

3

精华

高级会员

Rank: 4

积分
623
金钱
623
注册时间
2014-7-8
在线时间
26 小时
 楼主| 发表于 2015-2-17 13:58:06 | 显示全部楼层
回复【66楼】nye66:
---------------------------------
。。。好麻烦啊。。你自己到网上去买吧。。
回复 支持 反对

使用道具 举报

6

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2013-3-9
在线时间
18 小时
发表于 2015-2-17 14:53:01 | 显示全部楼层
回复【64楼】2013的弹子球:
---------------------------------
互补滤波是angle=k1*(angle+(w-zw)*dt)+k2*acc卡尔曼是X(k|k)= angle+(w-zw)*dt+Kg(k) (Z(k) - H X(k|k-1)) ,实际上卡尔曼应该算是误差积分,另外,自控里的东西最主要你要看下 时域和频域,根轨迹用的少,PID实际上就是频域矫正的方法,另外智能控制中简单一点的应该算是模糊控制了,其实并不困难,有兴趣可以看看,我不知道你串级控制具体怎么搞的,串级控制通常副回路要包含大扰动,并且只用比例控制,主回路用PI或PID控制,同时副回路速度一定要比主回路大,否则就是胖子追慢子,永远不稳定
回复 支持 反对

使用道具 举报

6

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2013-3-9
在线时间
18 小时
发表于 2015-2-17 15:05:30 | 显示全部楼层
回复【64楼】2013的弹子球:
---------------------------------
做EKF还有UKF你的非线性模型怎么构造呢,认为测量是三角函数?如果三角函数进行EKF的话误差会很大,还不如线性的效果
回复 支持 反对

使用道具 举报

6

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2013-3-9
在线时间
18 小时
发表于 2015-2-17 15:19:30 | 显示全部楼层
卡尔马滤波中的噪声系数,首先是R测量噪声协方差,实际上是可以直接测量得到,其次Q激励噪声,它是未知的,但可以优化,并且通常情况下矩阵K是式收敛的,并且可以离线计算,和观测值没有关系,可以直接离线迭代出收敛值,根据预估的Q所以可以离线出许多组K,然后进行在线滤波,在线时无需计算K,直接滤波,通过观察可以看出滤波效果,从而获得较为良好的Q值。
回复 支持 反对

使用道具 举报

6

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2013-3-9
在线时间
18 小时
发表于 2015-2-17 17:06:40 | 显示全部楼层
用欧拉角是如果出现奇点压根没有办法算出三个角度,而四元数如果出现转换欧拉角是反三角函数出现0时可以直接判断得出角度
if(t33==0)
 imu.euler.roll=XX;
else
 imu.euler.roll = atan2(t23,t33);
 imu.euler.pitch = -asin(t13);
if(t11==0)
 imu.euler.yaw=XX;
else
 imu.euler.yaw = atan2(t12,t11);
运算前作判断,是由运算得出,还是存在奇点,直接算出
回复 支持 反对

使用道具 举报

14

主题

225

帖子

3

精华

高级会员

Rank: 4

积分
623
金钱
623
注册时间
2014-7-8
在线时间
26 小时
 楼主| 发表于 2015-2-17 21:18:58 | 显示全部楼层
回复【70楼】东东bh:
---------------------------------
奥,Q和R,你说的R的算法是滑动平均滤波么。。极大似然。。两个参数都可以在线计算。。。看来你看了不少数据融合的·书啊,学习了,佩服佩服,关于EKF准备用四元数。。关于串级。。内环PI,外环P,目前是这个组合。。。APM国外的开源别人用的是外环角度环P,内环角速度PID,D加了个低通滤波,确实是比普通pid好,关于欧拉角,原来是这样。。。关于滤波还有控制啥的以实际为准吧,你也快快实践吧。。。还是先把四轴飞稳再说。我下学期要参加一个机器人比赛估计做大四等下下学期了。。。还有通过你我发现很多东西都还没记住没想明白谢谢。。
回复 支持 反对

使用道具 举报

头像被屏蔽

6168

主题

7036

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
19705
金钱
19705
注册时间
2012-12-27
在线时间
25 小时
发表于 2015-2-18 09:50:04 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
31
金钱
31
注册时间
2015-4-19
在线时间
1 小时
发表于 2015-4-19 14:50:23 | 显示全部楼层
碉堡了。看到代数就头疼
回复 支持 反对

使用道具 举报

86

主题

983

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1848
金钱
1848
注册时间
2013-4-15
在线时间
163 小时
发表于 2015-4-22 16:04:22 | 显示全部楼层
回复【24楼】2013的弹子球:
---------------------------------
牛逼
合肥-文盲
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2015-5-13
在线时间
1 小时
发表于 2015-5-13 21:06:58 | 显示全部楼层
楼主,请问是否读出磁力计的读数,目前卡在这一块,很郁闷!能否赐教!
回复 支持 反对

使用道具 举报

6

主题

279

帖子

0

精华

高级会员

Rank: 4

积分
750
金钱
750
注册时间
2015-3-27
在线时间
98 小时
发表于 2015-5-14 12:09:05 | 显示全部楼层
回复【76楼】chy1982_008:
---------------------------------
磁力计的读数要会IIC总线的和从机的通讯,你可以参考原子关于MPU6050的那个例子,里面有IIC读取MPU6050的一些函数(IIC的起始,停止,等待应答以及向某一从机读取某一寄存器的函数)。不过原子的这个例子是7bit(地址位)+1bit(读写位)的写法,所以HMC5883L的地址应该是)0x1E。磁力计读出来只是原始数据,还要经过公式才可以计算出航向角的。
回复 支持 反对

使用道具 举报

4

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2015-5-14
在线时间
11 小时
发表于 2015-5-19 18:04:46 | 显示全部楼层
版主,能聊聊吗,我也想做个四轴飞行器,但是不怎么会做,能教教么
小金科技工作室:https://shop72353947.taobao.com/?spm=a313o.7775905.1998679131.d0011.XKY4h0
回复 支持 反对

使用道具 举报

16

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2014-4-12
在线时间
0 小时
发表于 2015-5-23 15:11:15 | 显示全部楼层
楼主,你发的资料都特别赞!忍不住要表达我对你的赞美!
回复 支持 反对

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2015-5-22
在线时间
0 小时
发表于 2015-5-24 16:47:39 | 显示全部楼层
感谢分享了!!
回复 支持 反对

使用道具 举报

5

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2015-7-27
在线时间
3 小时
发表于 2015-7-27 16:44:06 | 显示全部楼层
回复【2楼】2013的弹子球:
---------------------------------额,这个用什么软件打开啊?
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2015-11-14
在线时间
0 小时
发表于 2015-11-14 18:08:15 | 显示全部楼层
楼主,忍不住要表达我对你的敬仰!
回复 支持 反对

使用道具 举报

8

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2015-3-25
在线时间
3 小时
发表于 2015-11-15 01:36:25 | 显示全部楼层
楼主还在吗 请问您还有  遥控器的 图吗  我想画个遥控器  但是无从下手啊
回复 支持 反对

使用道具 举报

0

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2015-5-12
在线时间
23 小时
发表于 2016-2-14 13:45:41 | 显示全部楼层
赞一个!
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2016-5-29
在线时间
4 小时
发表于 2016-7-18 13:26:49 | 显示全部楼层
顶一个
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2016-7-18
在线时间
5 小时
发表于 2016-7-19 10:06:13 | 显示全部楼层
     顶起
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2016-9-24
在线时间
0 小时
发表于 2016-9-24 13:28:09 | 显示全部楼层
啊啊啊啊啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 19:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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