野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: 低调的华丽

STM32运用之自平衡小车的卡尔曼算法封装-申请加精

  [复制链接]
发表于 2016-4-14 23:18:38 | 显示全部楼层
弟弟顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
回复 支持 反对

使用道具 举报

发表于 2016-4-15 11:42:47 | 显示全部楼层
目前就是两个参数难以确定 R Q
回复 支持 反对

使用道具 举报

发表于 2016-4-15 11:44:33 | 显示全部楼层
非常感谢,想请教下卡尔曼滤波的两个参数R和Q是怎么整定出来的
回复 支持 反对

使用道具 举报

发表于 2016-4-15 14:39:05 | 显示全部楼层
谢谢分享,学习学习。。。
回复 支持 反对

使用道具 举报

发表于 2016-4-15 16:08:06 | 显示全部楼层
下来学习,谢谢分享
回复 支持 反对

使用道具 举报

发表于 2016-4-19 16:05:47 | 显示全部楼层
6666,好帖子,
回复 支持 反对

使用道具 举报

发表于 2016-4-19 16:25:35 | 显示全部楼层
卡尔曼滤波从来没弄过,学习学习
回复 支持 反对

使用道具 举报

发表于 2016-4-19 16:57:24 | 显示全部楼层
谢楼主  谢大神
回复 支持 反对

使用道具 举报

发表于 2016-4-19 16:57:45 | 显示全部楼层
谢楼主  谢大神
回复 支持 反对

使用道具 举报

发表于 2016-4-19 17:23:12 | 显示全部楼层
好帖,前排浏览
回复 支持 反对

使用道具 举报

发表于 2016-4-19 18:02:36 | 显示全部楼层
先看看,学习学习
回复 支持 反对

使用道具 举报

发表于 2016-4-21 10:00:07 | 显示全部楼层
/**
  ******************************************************************************
  * @file    PID_Control.c
  * @author  willieon
  * @version V0.1
  * @date    January-2015
  * @brief   PID控制算法函数代码
  *        
  *
  ******************************************************************************
  **/

#include "PID_Control.h"
#include "math.h"

/*************************************************************************************
*        名    称: double PIDCalc( PID *pp, double NextPoint ,double SepLimit)
*        功    能: PID控制运算
*        入口参数: PID *pp  - 定义的运算所需变量的结构体
*                           NextPoint - 负反馈输入值
*                           SepLimit  - 积分分离上限
*        出口参数: 返回PID控制量
*        说    明: 默认不进行积分分离,如果用户需要使用积分分离,需在PID_Control.h中
*                                将 #define IF_THE_INTEGRAL_SEPARATION  0  改为
*                            #define IF_THE_INTEGRAL_SEPARATION  1
*        调用方法: 进行积分分离时入口参数为3个,具体方法如下:
*                                PID PIDControlStruct ;   //定义PID运算结构体
*                                PIDInit(50, 0.24, 0.04, 0.2, &PIDControlStruct);//结构体初始化,注意&符号不能省
*                                ControlData = PIDCalc(ReadData, 200, &PIDControlStruct);   //控制量 = PIDCalc(反馈值,积分分离上限,PID运算结构体)
*
***************************************************************************************
*/

#if IF_THE_INTEGRAL_SEPARATION

double PIDCalc(double NextPoint ,double SepLimit, PID *pp)
{
        double dError, Error,Flag;   
        Error = pp->SetPoint - NextPoint;         // 偏差
        if(abs(Error) > SepLimit)        //当偏差大于分离上限积分分离
        {
                Flag = 0;
        }
        else       //当偏差小于分离上限,积分项不分离
        {
                Flag = 1;
                pp->SumError += Error;         // 积分  
        }
        dError = pp->LastError - pp->PrevError;         // 当前微分
        pp->PrevError = pp->LastError;
        pp->LastError = Error;  
        return (
                pp->Proportion                *                Error                 // 比例项
                + Flag * pp->Integral        *                pp->SumError         // 积分项
                + pp->Derivative                *                dError                 // 微分项
                );
}

#else

double PIDCalc( double NextPoint, PID *pp)
{  
        double dError, Error;   
        Error = pp->SetPoint - NextPoint;                         // 偏差
        pp->SumError += Error;                                        // 积分  
        dError = pp->LastError - pp->PrevError;                // 当前微分
        pp->PrevError = pp->LastError;
        pp->LastError = Error;  
        return (pp->Proportion        *        Error                // 比例项
                + pp->Integral                *        pp->SumError         // 积分项
                + pp->Derivative        *        dError         // 微分项
                );
}

#endif


/*************************************************************************************
*        名    称: double PIDCalc( PID *pp, double NextPoint ,double SepLimit)
*        功    能: PID初始化设定
*        入口参数: PID *pp  - 定义的运算所需变量的结构体
*                           SetPoint - 设定的目标值
*                           Proportion,Integral ,Derivative - P,I,D系数
*        出口参数: 无
*        说    明:        
*        调用方法:  PID PIDControlStruct ;   //定义PID运算结构体
*                                PIDInit(50, 0.24, 0.04, 0.2, &PIDControlStruct);//结构体初始化,注意&符号不能省
*                                因为函数需要传入一个指针,需要对结构体取首地址传给指针
*
***************************************************************************************
*/


void PIDInit (double SetPoint, double Proportion, double Integral, double Derivative, PID *pp)
{  
        pp -> SetPoint = SetPoint; // 设定目标 Desired Value   
        pp -> Proportion = Proportion; // 比例常数 Proportional Const
        pp -> Integral = Integral; // 积分常数 Integral Const
        pp -> Derivative = Derivative; // 微分常数 Derivative Const   
        pp -> LastError = 0; // Error[-1]
        pp -> PrevError = 0; // Error[-2]
        pp -> SumError = 0; // Sums of Errors

        //memset ( pp,0,sizeof(struct PID));   //need include "string.h"
}
回复 支持 反对

使用道具 举报

发表于 2016-4-21 10:28:35 | 显示全部楼层
顶顶顶顶顶顶顶顶顶顶顶顶顶
回复 支持 反对

使用道具 举报

发表于 2016-4-21 11:16:13 | 显示全部楼层
学习学习!!!!
回复

使用道具 举报

发表于 2016-4-21 12:39:59 | 显示全部楼层
谢谢 分享,顶顶
回复 支持 反对

使用道具 举报

发表于 2016-4-22 09:53:25 | 显示全部楼层
好资料,学习了。谢谢。
回复 支持 反对

使用道具 举报

发表于 2016-4-22 11:48:50 | 显示全部楼层
回复为看隐藏,学习了,
回复 支持 反对

使用道具 举报

发表于 2016-4-24 11:42:26 来自手机 | 显示全部楼层
学习了~~~~~~~
回复

使用道具 举报

发表于 2016-4-24 15:48:01 | 显示全部楼层
666666666666
回复 支持 反对

使用道具 举报

发表于 2016-4-25 10:08:36 | 显示全部楼层
zhichi 学习收藏了
回复 支持 反对

使用道具 举报

发表于 2016-4-25 11:45:13 | 显示全部楼层
学习,围观中
回复 支持 反对

使用道具 举报

发表于 2016-4-30 01:54:00 | 显示全部楼层
向楼主学习,学习
回复 支持 反对

使用道具 举报

发表于 2016-4-30 07:19:08 | 显示全部楼层
看看,向牛人学习学习!
回复 支持 反对

使用道具 举报

发表于 2016-4-30 09:48:35 | 显示全部楼层
6666666666
回复 支持 反对

使用道具 举报

发表于 2016-4-30 15:56:04 | 显示全部楼层
6666666666,卡尔曼滤波啊
回复 支持 反对

使用道具 举报

发表于 2016-4-30 21:26:58 | 显示全部楼层
我也要学习,正要用
回复 支持 反对

使用道具 举报

发表于 2016-5-1 15:50:52 | 显示全部楼层
学习学习!
回复

使用道具 举报

发表于 2016-5-1 15:51:33 | 显示全部楼层
学习学习!
回复

使用道具 举报

发表于 2016-5-2 02:02:19 | 显示全部楼层
平衡车好了么,效果咋样啊

回复 支持 反对

使用道具 举报

发表于 2016-5-2 09:01:26 | 显示全部楼层
111111111111
回复 支持 反对

使用道具 举报

发表于 2016-5-4 13:06:47 | 显示全部楼层
厉害,学习学习
回复 支持 反对

使用道具 举报

发表于 2016-5-4 23:31:13 | 显示全部楼层
很不错,顶一下
回复 支持 反对

使用道具 举报

发表于 2016-5-4 23:31:58 | 显示全部楼层
真的很不错,顶一下楼主,之前也一直在研究平衡小车,我也会去试一下啊
回复 支持 反对

使用道具 举报

发表于 2016-5-4 23:32:28 | 显示全部楼层
真的很不错,顶一下楼主,之前也一直在研究平衡小车,我也会去试一下啊
回复 支持 反对

使用道具 举报

发表于 2016-5-5 00:58:34 | 显示全部楼层
零死角玩转STM32
回复 支持 反对

使用道具 举报

发表于 2016-5-6 09:17:55 | 显示全部楼层
11111111111111111111
回复 支持 反对

使用道具 举报

发表于 2016-5-6 14:27:52 | 显示全部楼层
最近也在研究这个算法,学习学习
回复 支持 反对

使用道具 举报

发表于 2016-5-6 14:28:41 | 显示全部楼层
最近也在研究这个算法,学习学习
回复 支持 反对

使用道具 举报

发表于 2016-5-6 20:08:34 | 显示全部楼层
好东西呀!以前毕设就是做平衡车,但做得不好,这个资料应该很有帮助,谢谢!
回复 支持 反对

使用道具 举报

发表于 2016-5-10 10:47:11 | 显示全部楼层
帅气
回复

使用道具 举报

发表于 2016-5-10 10:47:39 | 显示全部楼层
帅气 谢谢楼主
回复 支持 反对

使用道具 举报

发表于 2016-5-10 14:47:45 | 显示全部楼层
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
回复 支持 反对

使用道具 举报

发表于 2016-5-13 21:26:33 | 显示全部楼层
在做飞控的,对这个蛮有兴趣的
回复 支持 反对

使用道具 举报

发表于 2016-5-13 22:42:37 | 显示全部楼层
11111111111111111111111111111111111111111111111
回复 支持 反对

使用道具 举报

发表于 2016-5-14 12:04:22 | 显示全部楼层
看看先啊!!!!!!!!
回复

使用道具 举报

发表于 2016-5-14 21:22:10 | 显示全部楼层
求教,学习
回复

使用道具 举报

发表于 2016-5-15 10:37:34 | 显示全部楼层
牛人的贴必须定
回复 支持 反对

使用道具 举报

发表于 2016-5-15 10:38:35 | 显示全部楼层
牛人的贴必须定
回复 支持 反对

使用道具 举报

发表于 2016-5-16 10:33:23 | 显示全部楼层
好东西   mark一下   日后学学
回复 支持 反对

使用道具 举报

发表于 2016-5-17 18:43:43 | 显示全部楼层
我看看 谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-12-4 01:31 , Processed in 0.048372 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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