Beispiel #1
0
void FlightControl::calibrateGyro() {
	int16_t gz = 0;
	LowPassFilter glp(100);
	for(uint8_t i=0;i<100;i++) {
		delay(1);
		gz = glp.filter(AccelGyro.getRotationZ());
	}
	gyroBias = gz;
}
Beispiel #2
0
void initialize()
{
    int q[zhongqunshu1][1],s=1;
    float xx[zhongqunshu1][1];//生成的glp用x储存
    int h[1]={1};//生成向量
    zuiyougeti=new individual;//最优个体的生成
    zhongqunshu=200;//种群数量
    nowpop=new individual[zhongqunshu1];//当代
    newpop=new individual[zhongqunshu1];//新一代
    maxgen=150;//最大代数
    gen=0;//起始代
    lchrom=22;//基因数量的初始化
    mysrand(time(0));//随机数种子
    a[0]=seed;//随机数种子
    //对最优个体的初始化
    zuiyougeti->geti=0;
    zuiyougeti->fitness=0;
    zuiyougeti->shiyingdu=0;
    //
    glp(zhongqunshu,s,h,q,xx);
    //for(int i=0;i<zhongqunshu1;i++)//产生初始种群
    //{
    //  for(int j=0;j<s;j++)
    // {
    //  nowpop[i].geti=zuobianjie+(youbianjie-zuobianjie)*xx[i][j];
    // }
    //}
    for(int i=0;i<zhongqunshu1;i++)//产生初始种群
    {
        nowpop[i].geti=zuobianjie+(youbianjie-(zuobianjie))*ran1(a);
    }
    //nowpop[0].geti=999;//////////////////////////
    guanjiancanshujisuan();
    jingyingbaoliu(); //精英保留的实现
    guanjiancanshujisuan();//计算shiyingdu,根据shiyingdu计算sumshiyingdu,对shiyingdu进行尺度变换变成fitness,根据fitness计算sumfitness,avefitness,maxfitness
}