久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 27689|回復: 51
打印 上一主題 下一主題
收起左側

基于STM32的四軸無人機源代碼(PID算法、姿態解算、卡爾曼濾波與OLED顯示)

  [復制鏈接]
跳轉到指定樓層
樓主
ID:231984 發表于 2018-5-11 15:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
此代碼支持STM32所有系列,實現的功能有:OLED顯示、PID算法、姿態解算、卡爾曼濾波算法對數據整合、MPU6050、HMC磁力計、MS5611氣壓計、NRF24L01、GPS定位、超聲波定高,親測可以用,喜歡研究無人機的朋友可以參考一下此代碼
使用keli5編程

本代碼純屬作者周寒宇個人編寫,雖然有參考開源的代碼,但是移植也很辛苦
希望參考學習的同學能夠學到內容和代碼風格
本代碼支持STM32所有系列
參考來源:匿名科創、智能車部分代碼、正點原子以及一些其他的開源代碼
功能:OLED顯示、PID算法、姿態解算、卡爾曼濾波算法對數據整合、MPU6050、HMC磁力計、MS5611氣壓計、
NRF24L01、GPS定位、超聲波定高

后期更新部分:光流傳感器視覺定位(加強室內無外部信號情況下的懸停功能)、攝像頭圖像采集。

有同學優化了代碼的請發我一份


單片機源程序如下:
  1. /**************************
  2. @作者:周寒宇
  3. @大學:中南大學
  4. @目的:自制飛控板飛控代碼
  5. @效果:穩定
  6. ************************/
  7. #include "sys.h"
  8. #include "delay.h"
  9. #include "usart.h"
  10. #include "mpu6050.h"
  11. #include "hmc5883l.h"
  12. #include "timer.h"
  13. #include "led.h"
  14. #include "i2c.h"
  15. #include "Moto.h"
  16. #include "Control.h"
  17. #include "PWM_Capture.h"
  18. #include "ms5611.h"
  19. #include "nrf24l01.h"
  20. #include "hcsr04.h"
  21. #include "beep.h"
  22. #include "GPS.h"
  23. #include "oled.h"
  24. extern uint32_t time3_cnt;
  25. extern u8 FlyMode;
  26. extern uint8_t Attitude;


  27. int main(void)
  28. {       

  29.         u8 i;
  30.         delay_init();                     //延時函數初始化          
  31.         NVIC_Configuration();          //設置NVIC中斷分組3:3位搶占優先級,3位響應優先級
  32.         Control_Init();                                                                                                                                                                                                                   
  33.         IIC_Init();
  34.         LED_Init();
  35.         PWM_Capture_Init(0xFFFF,71);  //1MHZ計數
  36.         delay_ms(100);           //上電延時
  37.         MPU6050_Init();
  38.         HMC5883L_Init();
  39.         HCSR04_Init();
  40.         // GPS_Init();
  41.          //UART3_Init(9600);
  42.          //OLED_Init();
  43.         TIM2_PWM_Init(1999,71); //周期2MS頻率500HZ 計數頻率1MHZ         計數到20000為20MS
  44.         TIM5_Int_Init(499,71);//1Mhz的計數頻率,計數到500為0.5ms
  45.         TIM7_Int_Init(0xFFFF,71);//1Mhz的計數頻率,1us時間度量
  46.         TIM3_Int_Init(499,71);
  47.         for(i=0;i<6;i++)        delay_ms(1000);                 //等待姿態穩定
  48.         Moto_Init();
  49.         delay_ms(1000);       
  50.         delay_ms(1000);       
  51.         delay_ms(1000);       
  52.         delay_ms(1000);       
  53.         delay_ms(1000);       
  54.         while(1)
  55.         {
  56.                 if(time3_cnt<=2000)//10sec
  57.                 {                 HCSR04_Run(); //更新頻率30HZ
  58.                                 Get_Attitude();                //姿態計算
  59.                                 FlyMode=1;
  60.                                 Fly_Control();//阻尼爬升                               
  61.                
  62.                 }
  63.                 if(2000<time3_cnt&&time3_cnt<=6000)//10sec-30sec
  64.                 {                   HCSR04_Run(); //更新頻率30HZ
  65.                                 Get_Attitude();                //姿態計算
  66.                                 FlyMode=2;//飛行                       
  67.                                 Fly_Control();                               
  68.                 }
  69.                 if(6000<time3_cnt&&time3_cnt<=8000)//30sec-40sec
  70.                 {                HCSR04_Run(); //更新頻率30HZ
  71.                                 Get_Attitude();                //姿態計算
  72.                                 FlyMode=3;//飛行                       
  73.                                 Fly_Control();                               
  74.                 }
  75.                   break;
  76.        
  77.         }
  78. }


復制代碼

所有資料51hei提供下載:
四軸飛控代碼(周寒宇).rar (438.35 KB, 下載次數: 1322)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏49 分享淘帖 頂6 踩
回復

使用道具 舉報

來自 2#
ID:319344 發表于 2020-3-26 10:36 | 只看該作者
這無人機真是夠難學的,我就簡單分析試著了解一下就用了一天半的時間,同樣是從工作原理,系統結構,程序的設計思想,具體的程序設計思路四個方面試圖了解一下。首先說明一下,只是我的理解,和樓主的代碼實現流程是不一樣的。

飛行原理:轉速差會推動其向一個方向飛行,有四種飛行方式:上下飛行(垂直運動,如懸停狀態時,4個電機同時提高轉速,就會升高),前后飛行(俯仰運動,如后方電機轉速大于前方,就會往前飛),左右飛行(滾轉運動,如左側電機轉速大于右側,就會往右飛),左右轉向(偏航運動,如逆時針轉動的M1,M3轉速大于順時針轉動的M2,M4,就會右轉向)。
四軸飛行為了抵消螺旋槳的自旋,相隔的漿旋轉方向是不一樣的,適合順時針轉的叫正槳,適合逆時針轉的是反槳,正反槳的風都是往下吹的。
有兩種飛行姿態,+型和X型,區別是:①電機擺放角度不同(將+型四個電機順時針旋轉45°就是X型),②“前后/左右”飛行時需控制的電機數量不同(+型前后左右每個方位相當于只有一個電機,X型前后左右每個方位相當于都是兩個電機)X型對于飛行姿態控制更好。

可能表述不夠清楚,可以結合下面這篇文章理解
https://blog.csdn.net/qq_27270029/article/details/79877022
沒玩過四旋翼,看看這個文章多少能理解些概念
https://blog.csdn.net/msdnwolaile/article/details/51525245

系統結構:遙控器,飛行器。
遙控器:采集(按鍵,油門桿,方向桿的動作)控制(數據傳輸 和OLED顯示)
飛行器:采集(MPU5060加速度,陀螺儀,HMC磁力定方位(飛行姿態感測),超聲波定高,MS5611氣壓定高(兩者互補),GPS定位點(返回點定位),NRF24L01遙控數據通信)處理(PID算法,姿態解算,卡爾曼濾波算法對數據整合)控制(PID控制算法,控制電調來控制電機轉速)
https://v.youku.com/v_show/id_XM ... t.13141534.2_1.d1_2

程序設計思想:
從結果往過程去分析。使用角度:當按順序打開遙控器和飛行器的電源后,先進行對頻(NRF24L01的2.4GHz數據通信(遙控器的指令,飛行器的數據),遙控和飛行器的配對)然后地磁校準(定方位,為了前后左右飛行),再GPS收星(定位點,讓飛行器自動返航),再解鎖電機,緩推油門(否則好像可能會炸機),使它起飛,然后就是各種操作了。
在飛行過程中,需要融合三軸加速度計和三軸陀螺儀(MPU5060)及磁力計(HMC5883L)的數據進行姿態解算(此時會用到卡爾曼濾波算法),陀螺儀知道“我們轉了個身”,加速計知道“我們又向前走了幾米”,而磁力計知道“我們是向西方向”的。 然后通過PID控制算法(PID飛行控制算法能有效對飛行器的姿態和位置跟蹤進行有效控制),PWM波輸出,通過‘電調(電機驅動模塊)’來控制電機轉速。
高度在3米內,使用超聲波(HCSR04)測高,否則用氣壓計(MS5611)測高,OLED在遙控器上,可能會顯示飛行高度。

具體程序設計思路:
首先,關于NRF24L01, OLED,BEEP都沒有用到(通過查看初始化函數),也就表示沒有遙控器的功能,GPS沒有用到,說明就是沒有返航功能。沒有遙控器控制,就是能飛起來,然后應該對飛行器的飛行姿態來說好控制了很多。功能就是圍繞姿態解算和PID飛行控制為核心的,飛個幾十秒后落下。關于樓主的代碼,沒有功能說明注釋,沒有實現步驟注釋,沒有使用單片機某些資源的作用注釋,總的來說,注釋太少,再加上本人水平不高,看得一頭霧水。
關于為什么樓主介紹的和代碼不一致,我的理解是這樣的:樓主完成此項目用時較長,且沒有使用版本管理,每過一段時間就保存一個版本,最后都不知道哪個是最新版本,每個版本都實現了哪些細節了,因為疫情,再次接觸的時候都過了快兩個月了,雖然自己寫的但都快忘差不多了,不過好在主要實現的函數都在main里,查看main文件修改日期確定哪個是最新版本,再加上注釋還算詳盡,補救了回來。

兩點注釋:
卡爾曼濾波:需要對陀螺儀和加速度傳感器所測得的數據進行綜合和校正,而均值濾波,很難滿足精度和實時性上的要求,通過卡爾曼濾波將加速度傳感器和陀螺儀的數據進行融合,在計算實時姿態時很好地抑制了噪聲的干擾作用,以提高測量精度。

PID飛行控制算法:對四旋翼的控制包括姿態控制(內環控制)和位置控制(外環控制),外環控制,解算出為了到達預定的位置期望的姿態角,該期望的姿態角作為內環控制器的輸入。PID飛行控制算法能有效對飛行器的姿態和位置跟蹤進行有效控制。
回復

使用道具 舉報

板凳
ID:325642 發表于 2018-5-13 17:09 | 只看該作者
很牛了,有沒有電路圖等資料呢?如果能開源那可以分享共同提高
回復

使用道具 舉報

地板
ID:231800 發表于 2018-8-15 21:34 | 只看該作者
感謝樓主
回復

使用道具 舉報

5#
ID:255293 發表于 2018-8-19 23:13 | 只看該作者
太感謝lge
回復

使用道具 舉報

6#
ID:388177 發表于 2018-8-20 15:51 | 只看該作者
新人拜訪~可惜黑幣不夠啊
回復

使用道具 舉報

7#
ID:371423 發表于 2018-8-20 18:01 | 只看該作者
感謝,對飛控有興趣,下載來看看。
回復

使用道具 舉報

8#
ID:337376 發表于 2018-8-21 17:47 | 只看該作者
謝謝分享
回復

使用道具 舉報

9#
ID:15104 發表于 2018-8-22 16:14 | 只看該作者
謝謝大神分享!!
回復

使用道具 舉報

10#
ID:69829 發表于 2018-8-27 12:44 | 只看該作者
感謝樓主的分享!
回復

使用道具 舉報

11#
ID:405372 發表于 2018-11-30 17:11 | 只看該作者
感謝感謝,最近在研究這個
回復

使用道具 舉報

12#
ID:439525 發表于 2018-12-4 19:53 | 只看該作者
感謝感謝,我也在研究這個
回復

使用道具 舉報

13#
ID:439525 發表于 2018-12-4 20:16 | 只看該作者
有沒有電路圖等資料呢
回復

使用道具 舉報

14#
ID:371527 發表于 2018-12-27 18:02 | 只看該作者
這莫大程序工程,是很繁瑣辛苦
回復

使用道具 舉報

15#
ID:437716 發表于 2019-1-3 09:22 | 只看該作者
謝謝分享
回復

使用道具 舉報

16#
ID:464057 發表于 2019-1-7 19:43 | 只看該作者
感覺很牛
回復

使用道具 舉報

17#
ID:318672 發表于 2019-1-7 21:53 來自手機 | 只看該作者
不錯
回復

使用道具 舉報

18#
ID:429276 發表于 2019-3-13 10:44 | 只看該作者
多謝,6666
回復

使用道具 舉報

19#
ID:516859 發表于 2019-4-24 00:27 來自手機 | 只看該作者
謝謝分享
回復

使用道具 舉報

20#
ID:349598 發表于 2019-4-24 18:55 | 只看該作者
感謝樓主
回復

使用道具 舉報

21#
ID:502122 發表于 2019-4-25 07:14 來自手機 | 只看該作者
感謝樓主,好人一生平安
回復

使用道具 舉報

22#
ID:228360 發表于 2019-4-27 10:05 | 只看該作者
高手,大大的支持。
回復

使用道具 舉報

23#
ID:108728 發表于 2019-6-11 00:50 | 只看該作者
感謝版主的無私,本人學習了
回復

使用道具 舉報

24#
ID:332931 發表于 2019-6-12 20:14 | 只看該作者
真的非常感謝
回復

使用道具 舉報

25#
ID:562340 發表于 2019-6-14 09:36 | 只看該作者
非常感謝分享
回復

使用道具 舉報

26#
ID:394949 發表于 2019-6-14 19:09 | 只看該作者
有沒有PCB呢?大神
回復

使用道具 舉報

27#
ID:561986 發表于 2019-6-15 11:06 | 只看該作者
感謝樓主的分享!
回復

使用道具 舉報

28#
ID:563554 發表于 2019-6-16 15:32 | 只看該作者
感謝樓主的分享。
回復

使用道具 舉報

29#
ID:564433 發表于 2019-6-17 12:25 | 只看該作者
冬天的野狼 發表于 2018-5-13 17:09
很牛了,有沒有電路圖等資料呢?如果能開源那可以分享共同提高

你好,這篇帖子里的程序可以分享一下嗎
回復

使用道具 舉報

30#
ID:324611 發表于 2019-6-24 16:05 | 只看該作者
好東西,想完下無人機。
回復

使用道具 舉報

31#
ID:392405 發表于 2019-7-11 20:06 | 只看該作者
感謝樓主分享
回復

使用道具 舉報

32#
ID:449111 發表于 2019-7-12 17:15 | 只看該作者
很好的例子
回復

使用道具 舉報

33#
ID:543162 發表于 2019-7-14 16:48 | 只看該作者
謝謝分享
回復

使用道具 舉報

34#
ID:529132 發表于 2019-7-20 19:12 | 只看該作者
感謝分享。
回復

使用道具 舉報

35#
ID:282095 發表于 2019-7-21 10:15 | 只看該作者
可以分享一下電路圖嗎 或者PCB板圖之類的也行啊
回復

使用道具 舉報

36#
ID:590265 發表于 2019-7-25 14:45 | 只看該作者
謝謝分享。!
回復

使用道具 舉報

37#
ID:459450 發表于 2019-8-6 22:19 | 只看該作者
謝謝分享~~~
回復

使用道具 舉報

38#
ID:513389 發表于 2019-8-9 10:48 | 只看該作者
感謝作者分享
回復

使用道具 舉報

39#
ID:604530 發表于 2019-10-19 09:26 | 只看該作者
很全面,感謝分享
回復

使用道具 舉報

40#
ID:639831 發表于 2019-11-11 16:53 | 只看該作者
很想看一看樓主的理解
回復

使用道具 舉報

41#
ID:399931 發表于 2019-11-29 18:54 | 只看該作者
有沒有遙控的啊
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 伊人伊人网 | 久久国产精品久久国产精品 | 亚洲精品一区在线 | 欧美在线视频免费 | 午夜爽爽爽男女免费观看影院 | 在线国产小视频 | 久视频在线 | 成人一区二区在线 | 最新av在线播放 | 狠狠干网站 | 91视频免费视频 | 亚洲国产高清高潮精品美女 | 欧美久久一区二区三区 | 国产精品日韩欧美一区二区三区 | 中文字幕久久精品 | 日日操日日舔 | 日韩视频区 | 国产精品有限公司 | 一区二区播放 | 国产在线高清 | 综合久久久久 | 久久精品视频91 | 日韩欧美大片 | 久久亚洲国产精品日日av夜夜 | 一级黄色大片 | 日韩在线小视频 | 精品一区二区在线观看 | 欧美成人精品激情在线观看 | 俺去俺来也www色官网cms | 国产一区二区三区在线看 | 找个黄色片| 在线观看国产wwwa级羞羞视频 | 99免费精品视频 | 国产精品精品久久久久久 | 一级片片 | 亚洲国产精品一区二区三区 | 国产99久久精品 | 日韩免费福利视频 | 久久久.com| 国产精久久久久久久妇剪断 | 玖玖精品视频 |