无名飞控姿态解算和控制

本文介绍了一个无人机控制系统中的加速度计与磁力计校准流程,包括通过特定飞行姿态触发校准模式、使用指示灯提示当前校准状态、以及利用DMA进行数据传输等关键技术实现。

回到TIME.c进入Accel_Calibration_Check();//加速度标定检测

定义:

uint8_t flight_direction=6;
uint8_t Accel_Calibration_Flag=0;//加速度计校准模式
uint8_t Accel_Calibration_Finished[6]={0,0,0,0,0,0};//对应面校准完成标志位
uint8_t Accel_Calibration_All_Finished=0;//6面校准全部校准完成标志位
uint16_t Accel_Calibration_Makesure_Cnt=0;
uint16_t Accel_flight_direction_cnt=0;
void Accel_Calibration_Check(void)
{
   uint16_t  i=0;
   if(Throttle_Control==1000&&Yaw_Control>=80&&Roll_Control<=-40&&Pitch_Control>=40)
   {
      Accel_Calibration_Makesure_Cnt++;
   }
   if(Throttle_Control==1000
      &&Yaw_Control>=80
        &&Roll_Control<=-40
          &&Pitch_Control>=40
            &&Accel_Calibration_Makesure_Cnt>=200*3)//持续三秒
  {
      Bling_Mode=1;
      Accel_Calibration_Flag=1;//加速度校准模式
      Cal_Flag=0;
      Bling_Set(&Light_1,1000,100,0.5,0,GPIOC,GPIO_Pin_4,1);
      Bling_Set(&Light_2,1000,100,0.5,0,GPIOC,GPIO_Pin_5,1);
      Bling_Set(&Light_3,1000,100,0.5,0,GPIOC,GPIO_Pin_10,1);
      flight_direction=6;
      Accel_Calibration_All_Finished=0;//全部校准完成标志位清零
      Accel_Calibration_Makesure_Cnt=0;
      for(i=0;i<6;i++)
      {
        Accel_Calibration_Finished[i]=0;//对应面标志位清零
        acce_sample[i].x=0; //清空对应面的加速度计量
        acce_sample[i].y=0; //清空对应面的加速度计量
        acce_sample[i].z=0; //清空对应面的加速度计量
      }
      Page_Number=10;//OLED加速度计矫正页面
      Reset_Mag_Calibartion(1);
  }

  if(Accel_Calibration_Flag==1)
  {
     if(Throttle_Control==1000&&Yaw_Control<=-80&&Roll_Control==0&&Pitch_Control==0)
     {
       Accel_flight_direction_cnt++;
       if(Accel_flight_direction_cnt>=4*25)//100ms
         flight_direction=0;

     }
     else if(Throttle_Control==1000&&Yaw_Control==0&&Roll_Control>=40&&Pitch_Control==0)
     {
       Accel_flight_direction_cnt++;
       if(Accel_flight_direction_cnt>=4*25)//100ms
         flight_direction=1;
     }
     else if(Throttle_Control==1000&&Yaw_Control==0&&Roll_Control<=-40&&Pitch_Control==0)
     {
       Accel_flight_direction_cnt++;
       if(Accel_flight_direction_cnt>=4*25)//100ms
         flight_direction=2;
     }
     else if(Throttle_Control==1000&&Yaw_Control==0&&Roll_Control==0&&Pitch_Control>=40)
     {
       Accel_flight_direction_cnt++;
       if(Accel_flight_direction_cnt>=4*25)//100ms
         flight_direction=3;
     }
     else if(Throttle_Control==1000&&Yaw_Control==0&&Roll_Control==0&&Pitch_Control<=-40)
     {
       Accel_flight_direction_cnt++;
       if(Accel_flight_direction_cnt>=4*25)//100ms
         flight_direction=4;
     }
     else if(Throttle_Control==1000&&Yaw_Control>80&&Roll_Control==0&&Pitch_Control==0)
     {
       Accel_flight_direction_cnt++;
       if(Accel_flight_direction_cnt>=4*25)//100ms
       flight_direction=5;
     }
     else
     {
       Accel_flight_direction_cnt/=2;
     }

   if(Accel_flight_direction_cnt>=200)  Accel_flight_direction_cnt=0;

 }

}

整个过程可以看做有三个部分组成

第一个if判断用来计数

if(Throttle_Control==1000&&Yaw_Control>=80&&Roll_Contro
开源飞控:支持气压计、超声波定高、户外GPS定点、定速巡航,部分视频链接如下: 无名飞控暴力测试 无名飞控江边定点(长时间) 无名飞控定高作死测试 无名飞控加速度计6面校准与融合简单讲 无名飞控源码整体框架介绍初步 无名飞控(上)锁与遥控器简单设置 无名科创自研飞控平台,经过武汉科技大学连续四届研究生师兄们参考国内外主流飞控(APM、Pixhawk、Autoquad、MWC、CC3D、无穷开、ANO、Light等)的法与整体框架的进行深入学习基础上,经过软、硬件的精心设计,继承与发展,目前飞控整体功能相对完善,主要功能有:姿态自稳、超声波、气压计定高,户外GPS定点,GPS模式下定速巡航等功能,涵盖飞控学习主要核心法: 1、四旋翼的传感器滤波(针对传感器不同使用情况:姿态、惯导、控制、传感器矫正等)分别采用窗口滑动滤波、不同截止频率的巴特沃斯数字低通滤波器);2、姿态(互补滤波、梯度下降法等);3、惯性导航(经典回路反馈法即APM三阶段互补滤波,单观测器的卡尔曼滤波,双观测量的卡尔曼滤波,观测传感器延时修正处理等); 4、控制法(经典PID控制、前馈控制、自抗扰控制ADRC)等。 无名科创团队的发展: 多旋翼飞行器飞行控制系统(简称飞控)是我们团队历届主研项目,团队13年即开始第一代飞控的研究,从最开始的小四轴,到后来的多旋翼飞控,经历N个版本改进,经历无数次断桨、射桨、炸机,一步一步完善与改进,整合除了目前我们这款对外开源的飞控。团队历来贡献者均就职于无人机公司做法相关工作。目前我们的飞控更加完善,更加稳定,更加适合学习,主要核心代码自写率达到百分之90以上,代码基本上是逐行注释,整个飞控框架清晰明了,模块化封装规范,方便大家学习与二次开发。由于作者目前仍然在校,主研项目仍为飞控,个人时间比较多,可大家一同交流学习。我们的服务宗旨是:打造国内功能最多、性能最好、成本最低、可玩性最强的开源飞控学习平台。帮助大家以最小的代价、最大的获得感、最快的速度学习飞控相关法,顺利完成进阶逆袭!!! 团队主要成员优快云开源技术博客汇总 ,充分展现我们开源共享、共同进步的创客精神,不废话了,直接上图: 部分技术博客截图: 无名科创开源飞控:独家首创10轴IMU组合:MPU6050(加速度计、陀螺仪)+IST8310(DJI同款磁力计)+SPL06-001(歌尔高精度气压计、媲美MS5611),MCU:STM32F103RCT6,这是一款强大的飞控,主频72Mhz,flash 256K,板载10 Axis传感器,3轴陀螺,3轴加速度,3轴磁罗盘,高精度气压计。适合新手学习无刷飞控,更适合玩家做多种拓展二次开发,飞控预留多个串口,可外接各种附加设备,已实现超声波定高、气压计定高、GPS定点等功能,代码完全开源。 无名科创开源飞控学习平台: 1、飞控板与IMU分离式设计 2、采用3D打印的IMU气压防护罩 3、软件调试支持主流IAR、Keil两款编译器 4、支持多家上位机与地面站,方便调试
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值