OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8043|回复: 6

开源云台的一些代码,有看懂的大神,可以给我详细解释下吗?谢谢

[复制链接]

4

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2016-4-1
在线时间
43 小时
发表于 2016-6-15 09:32:23 | 显示全部楼层 |阅读模式
20金钱
本帖最后由 greenHands 于 2016-6-15 17:40 编辑

//这下面的函数看不懂
void engineProcess(void)
{
        LEDon;      
        DEBUG_LEDoff;
        while(ConfigMode==1){TimerOff();}//Configuration loop         
        MPU6050_ACC_get(); //Getting Accelerometer data   
        acc_roll_angle = -(atan2(accADC_x, accADC_z))+(configData[11]-50.00)*0.0035;   
        acc_pitch_angle= +(atan2(accADC_y, accADC_z));                                                                   
        MPU6050_Gyro_get();                                                                                                               
        acc_roll_angle_vid = ((acc_roll_angle_vid  * 99.00)+ acc_roll_angle ) / 100.00;            <--这样做的用途是什么?   
        acc_pitch_angle_vid= ((acc_pitch_angle_vid * 99.00)+ acc_pitch_angle) / 100.00;                    
        sinus        = sinusas[(int)(rc4)];                                                                                                     
        cosinus        = sinusas[90-(int)(rc4)];                                                                                   
        ROLL =- gyroADC_z * sinus + gyroADC_y * cosinus;
        roll_angle = (roll_angle + ROLL * dt) + 0.0002 * (acc_roll_angle_vid-roll_angle);         
        //ROLL=-gyroADC_z*sinus+gyroADC_y*cosinus;        
        pitch_angle_true = ((pitch_angle_true + gyroADC_x * dt) + 0.0002 * (acc_pitch_angle_vid - pitch_angle_true)); //Pitch Horizon
        sukimas = sukimas + gyroADC_x * dt;
        rc4_avg = ((rc4_avg * 499.00) + (rc4)) / 500.00;                                
        pitch_angle = pitch_angle_true - rc4_avg / 57.3;               
        pitch_angle_correction = pitch_angle * 50.0;                        
        if(pitch_angle_correction >   1.0){                pitch_angle_correction =   1.0;        }
        if(pitch_angle_correction < -1.0){                pitch_angle_correction = -1.0;        }
        pitch_setpoint = pitch_setpoint + pitch_angle_correction;  
        roll_angle_correction = roll_angle * 50.0;                                //roll
        if(roll_angle_correction >   1.0){                roll_angle_correction =   1.0;                }
        if(roll_angle_correction < -1.0){                roll_angle_correction = -1.0;                }
        roll_setpoint = roll_setpoint + roll_angle_correction;                     
        if(tim_conf == 0)
        {
                //rewrite that thing;        
                Timer1_Config();
                Timer8_Config();
                Timer5_Config();
                Timer4_Config();
                tim_conf = 1;
                TIM_Cmd(TIM5, ENABLE);
                TIM_CtrlPWMOutputs(TIM5, ENABLE);
                for (n=1 ; n<4 ; n++);                                                                                 
                TIM_Cmd(TIM4, ENABLE);
                TIM_CtrlPWMOutputs(TIM4, ENABLE);
        }
        pitch_PID();//Pitch axis pid               
        roll_PID(); //Roll axis pid
        printcounter++; //Print data to UART        
        if (printcounter>=50)
        {
                printcounter=0;
        }
        stop=0;
        LEDoff;               
        watchcounter=0;        
}
------

最佳答案

查看完整内容[请看2#楼]

csdn有我上传的bgc和evvgc的源码,比较清晰,可以自己搜一下。
马上要毕业,抓紧学习
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2016-7-8
在线时间
0 小时
发表于 2016-6-15 09:32:24 | 显示全部楼层
csdn有我上传的bgc和evvgc的源码,比较清晰,可以自己搜一下。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-6-15 20:44:39 | 显示全部楼层
问作者。。。
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2016-7-8
在线时间
0 小时
发表于 2016-7-8 19:36:56 | 显示全部楼层
感觉像是evvgc的代码,读取MPU6050数据,然后求欧拉角(atan2部分,不是严格意义上的欧拉角),vid是进行低通滤波,true是一阶互补滤波,然后pid控制
回复

使用道具 举报

45

主题

99

帖子

1

精华

高级会员

Rank: 4

积分
539
金钱
539
注册时间
2015-7-24
在线时间
89 小时
发表于 2016-8-31 23:57:11 | 显示全部楼层
这个云台算法我都研究透了,正要把玩一下
我的淘宝小店 shop113369282.taobao.com
回复

使用道具 举报

0

主题

0

帖子

0

精华

新手入门

积分
1
金钱
1
注册时间
2024-6-1
在线时间
0 小时
发表于 2016-9-1 10:44:08 | 显示全部楼层
zacy2011 发表于 2016-6-15 09:32
csdn有我上传的bgc和evvgc的源码,比较清晰,可以自己搜一下。

csdn上面的我下下来打不开,请问你能给我一份源码吗?995006390@qq.com
回复

使用道具 举报

2

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2014-12-3
在线时间
14 小时
发表于 2016-12-22 21:00:32 | 显示全部楼层
关注一下,希望有人有文档类的原理性解释
程序不想抄
我是菜鸟
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-26 11:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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