久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
基于STM32的四軸無人機源代碼(PID算法、姿態(tài)解算、卡爾曼濾波與OLED顯示)
[打印本頁]
作者:
gaohan130
時間:
2018-5-11 15:08
標題:
基于STM32的四軸無人機源代碼(PID算法、姿態(tài)解算、卡爾曼濾波與OLED顯示)
此代碼支持STM32所有系列,實現(xiàn)的功能有:OLED顯示、PID算法、姿態(tài)解算、卡爾曼濾波算法對數(shù)據(jù)整合、MPU6050、HMC磁力計、MS5611氣壓計、NRF24L01、GPS定位、超聲波定高,親測可以用,喜歡研究無人機的朋友可以參考一下此代碼
使用keli5編程
本代碼純屬作者周寒宇個人編寫,雖然有參考開源的代碼,但是移植也很辛苦
希望參考學習的同學能夠學到內(nèi)容和代碼風格
本代碼支持STM32所有系列
參考來源:匿名科創(chuàng)、智能車部分代碼、正點原子以及一些其他的開源代碼
功能:OLED顯示、PID算法、姿態(tài)解算、卡爾曼濾波算法對數(shù)據(jù)整合、MPU6050、HMC磁力計、MS5611氣壓計、
NRF24L01、GPS定位、超聲波定高
后期更新部分:光流傳感器視覺定位(加強室內(nèi)無外部信號情況下的懸停功能)、攝像頭圖像采集。
有同學優(yōu)化了代碼的請發(fā)我一份
單片機源程序如下:
/**************************
@作者:周寒宇
@大學:中南大學
@目的:自制飛控板飛控代碼
@效果:穩(wěn)定
************************/
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "mpu6050.h"
#include "hmc5883l.h"
#include "timer.h"
#include "led.h"
#include "i2c.h"
#include "Moto.h"
#include "Control.h"
#include "PWM_Capture.h"
#include "ms5611.h"
#include "nrf24l01.h"
#include "hcsr04.h"
#include "beep.h"
#include "GPS.h"
#include "oled.h"
extern uint32_t time3_cnt;
extern u8 FlyMode;
extern uint8_t Attitude;
int main(void)
{
u8 i;
delay_init(); //延時函數(shù)初始化
NVIC_Configuration(); //設置NVIC中斷分組3:3位搶占優(yōu)先級,3位響應優(yōu)先級
Control_Init();
IIC_Init();
LED_Init();
PWM_Capture_Init(0xFFFF,71); //1MHZ計數(shù)
delay_ms(100); //上電延時
MPU6050_Init();
HMC5883L_Init();
HCSR04_Init();
// GPS_Init();
//UART3_Init(9600);
//OLED_Init();
TIM2_PWM_Init(1999,71); //周期2MS頻率500HZ 計數(shù)頻率1MHZ 計數(shù)到20000為20MS
TIM5_Int_Init(499,71);//1Mhz的計數(shù)頻率,計數(shù)到500為0.5ms
TIM7_Int_Init(0xFFFF,71);//1Mhz的計數(shù)頻率,1us時間度量
TIM3_Int_Init(499,71);
for(i=0;i<6;i++) delay_ms(1000); //等待姿態(tài)穩(wěn)定
Moto_Init();
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
while(1)
{
if(time3_cnt<=2000)//10sec
{ HCSR04_Run(); //更新頻率30HZ
Get_Attitude(); //姿態(tài)計算
FlyMode=1;
Fly_Control();//阻尼爬升
}
if(2000<time3_cnt&&time3_cnt<=6000)//10sec-30sec
{ HCSR04_Run(); //更新頻率30HZ
Get_Attitude(); //姿態(tài)計算
FlyMode=2;//飛行
Fly_Control();
}
if(6000<time3_cnt&&time3_cnt<=8000)//30sec-40sec
{ HCSR04_Run(); //更新頻率30HZ
Get_Attitude(); //姿態(tài)計算
FlyMode=3;//飛行
Fly_Control();
}
break;
}
}
復制代碼
所有資料51hei提供下載:
四軸飛控代碼(周寒宇).rar
(438.35 KB, 下載次數(shù): 1322)
2018-5-12 04:18 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
冬天的野狼
時間:
2018-5-13 17:09
很牛了,有沒有電路圖等資料呢?如果能開源那可以分享共同提高
作者:
P小四哥
時間:
2018-8-15 21:34
感謝樓主
作者:
DylanMingan
時間:
2018-8-19 23:13
太感謝lge
作者:
123DUAN
時間:
2018-8-20 15:51
新人拜訪~可惜黑幣不夠啊
作者:
NPC-1024
時間:
2018-8-20 18:01
感謝,對飛控有興趣,下載來看看。
作者:
xode
時間:
2018-8-21 17:47
謝謝分享
作者:
zxgpy
時間:
2018-8-22 16:14
謝謝大神分享!!!
作者:
kanwoe
時間:
2018-8-27 12:44
感謝樓主的分享!
作者:
JIANGJING520
時間:
2018-11-30 17:11
感謝感謝,最近在研究這個
作者:
feiyi26
時間:
2018-12-4 19:53
感謝感謝,我也在研究這個
作者:
feiyi26
時間:
2018-12-4 20:16
有沒有電路圖等資料呢
作者:
1113634577
時間:
2018-12-27 18:02
這莫大程序工程,是很繁瑣辛苦
作者:
610930444
時間:
2019-1-3 09:22
謝謝分享
作者:
Ye_tian
時間:
2019-1-7 19:43
感覺很牛
作者:
zhlip
時間:
2019-1-7 21:53
不錯
作者:
1539703473
時間:
2019-3-13 10:44
多謝,6666
作者:
叢林狼
時間:
2019-4-24 00:27
謝謝分享
作者:
sjh7366
時間:
2019-4-24 18:55
感謝樓主
作者:
Gerald-C
時間:
2019-4-25 07:14
感謝樓主,好人一生平安
作者:
tarchen
時間:
2019-4-27 10:05
高手,大大的支持。
作者:
private80
時間:
2019-6-11 00:50
感謝版主的無私,本人學習了
作者:
get
時間:
2019-6-12 20:14
真的非常感謝
作者:
初出茅廬111
時間:
2019-6-14 09:36
非常感謝分享
作者:
田裕中
時間:
2019-6-14 19:09
有沒有PCB呢?大神
作者:
cat9975
時間:
2019-6-15 11:06
感謝樓主的分享!
作者:
QSM980405
時間:
2019-6-16 15:32
感謝樓主的分享。
作者:
班班班
時間:
2019-6-17 12:25
冬天的野狼 發(fā)表于 2018-5-13 17:09
很牛了,有沒有電路圖等資料呢?如果能開源那可以分享共同提高
你好,這篇帖子里的程序可以分享一下嗎
作者:
mcu_mpu
時間:
2019-6-24 16:05
好東西,想完下無人機。
作者:
Flyyyy
時間:
2019-7-11 20:06
感謝樓主分享
作者:
ailinyi
時間:
2019-7-12 17:15
很好的例子
作者:
snf
時間:
2019-7-14 16:48
謝謝分享
作者:
小蘇ka
時間:
2019-7-20 19:12
感謝分享!!
作者:
鵬博士PBs
時間:
2019-7-21 10:15
可以分享一下電路圖嗎 或者PCB板圖之類的也行啊
作者:
wyman188
時間:
2019-7-25 14:45
謝謝分享
!!!
作者:
qq646926493
時間:
2019-8-6 22:19
謝謝分享~~~
作者:
cl813814519
時間:
2019-8-9 10:48
感謝作者分享
作者:
FMCH
時間:
2019-10-19 09:26
很全面,感謝分享
作者:
iiia
時間:
2019-11-11 16:53
很想看一看樓主的理解
作者:
384448010
時間:
2019-11-29 18:54
有沒有遙控的啊
作者:
incendiary
時間:
2019-12-6 16:55
謝謝分享
作者:
F-8
時間:
2020-3-21 19:49
謝謝樓主的分享
作者:
wenzedong
時間:
2020-3-26 10:36
這無人機真是夠難學的,我就簡單分析試著了解一下就用了一天半的時間,同樣是從工作原理,系統(tǒng)結構,程序的設計思想,具體的程序設計思路四個方面試圖了解一下。首先說明一下,只是我的理解,和樓主的代碼實現(xiàn)流程是不一樣的。
飛行原理:轉速差會推動其向一個方向飛行,有四種飛行方式:上下飛行(垂直運動,如懸停狀態(tài)時,4個電機同時提高轉速,就會升高),前后飛行(俯仰運動,如后方電機轉速大于前方,就會往前飛),左右飛行(滾轉運動,如左側電機轉速大于右側,就會往右飛),左右轉向(偏航運動,如逆時針轉動的M1,M3轉速大于順時針轉動的M2,M4,就會右轉向)。
四軸飛行為了抵消螺旋槳的自旋,相隔的漿旋轉方向是不一樣的,適合順時針轉的叫正槳,適合逆時針轉的是反槳,正反槳的風都是往下吹的。
有兩種飛行姿態(tài),+型和X型,區(qū)別是:①電機擺放角度不同(將+型四個電機順時針旋轉45°就是X型),②“前后/左右”飛行時需控制的電機數(shù)量不同(+型前后左右每個方位相當于只有一個電機,X型前后左右每個方位相當于都是兩個電機)X型對于飛行姿態(tài)控制更好。
可能表述不夠清楚,可以結合下面這篇文章理解
https://blog.csdn.net/qq_27270029/article/details/79877022
沒玩過四旋翼,看看這個文章多少能理解些概念
https://blog.csdn.net/msdnwolaile/article/details/51525245
系統(tǒng)結構:遙控器,飛行器。
遙控器:采集(按鍵,油門桿,方向桿的動作)控制(數(shù)據(jù)傳輸 和OLED顯示)
飛行器:采集(MPU5060加速度,陀螺儀,HMC磁力定方位(飛行姿態(tài)感測),超聲波定高,MS5611氣壓定高(兩者互補),GPS定位點(返回點定位),NRF24L01遙控數(shù)據(jù)通信)處理(PID算法,姿態(tài)解算,卡爾曼濾波算法對數(shù)據(jù)整合)控制(PID控制算法,控制電調(diào)來控制電機轉速)
https://v.youku.com/v_show/id_XM ... t.13141534.2_1.d1_2
程序設計思想:
從結果往過程去分析。使用角度:當按順序打開遙控器和飛行器的電源后,先進行對頻(NRF24L01的2.4GHz數(shù)據(jù)通信(遙控器的指令,飛行器的數(shù)據(jù)),遙控和飛行器的配對)然后地磁校準(定方位,為了前后左右飛行),再GPS收星(定位點,讓飛行器自動返航),再解鎖電機,緩推油門(否則好像可能會炸機),使它起飛,然后就是各種操作了。
在飛行過程中,需要融合三軸加速度計和三軸陀螺儀(MPU5060)及磁力計(HMC5883L)的數(shù)據(jù)進行姿態(tài)解算(此時會用到卡爾曼濾波算法),陀螺儀知道“我們轉了個身”,加速計知道“我們又向前走了幾米”,而磁力計知道“我們是向西方向”的。 然后通過PID控制算法(PID飛行控制算法能有效對飛行器的姿態(tài)和位置跟蹤進行有效控制),PWM波輸出,通過‘電調(diào)(電機驅動模塊)’來控制電機轉速。
高度在3米內(nèi),使用超聲波(HCSR04)測高,否則用氣壓計(MS5611)測高,OLED在遙控器上,可能會顯示飛行高度。
具體程序設計思路:
首先,關于NRF24L01, OLED,BEEP都沒有用到(通過查看初始化函數(shù)),也就表示沒有遙控器的功能,GPS沒有用到,說明就是沒有返航功能。沒有遙控器控制,就是能飛起來,然后應該對飛行器的飛行姿態(tài)來說好控制了很多。功能就是圍繞姿態(tài)解算和PID飛行控制為核心的,飛個幾十秒后落下。關于樓主的代碼,沒有功能說明注釋,沒有實現(xiàn)步驟注釋,沒有使用單片機某些資源的作用注釋,總的來說,注釋太少,再加上本人水平不高,看得一頭霧水。
關于為什么樓主介紹的和代碼不一致,我的理解是這樣的:樓主完成此項目用時較長,且沒有使用版本管理,每過一段時間就保存一個版本,最后都不知道哪個是最新版本,每個版本都實現(xiàn)了哪些細節(jié)了,因為疫情,再次接觸的時候都過了快兩個月了,雖然自己寫的但都快忘差不多了,不過好在主要實現(xiàn)的函數(shù)都在main里,查看main文件修改日期確定哪個是最新版本,再加上注釋還算詳盡,補救了回來。
兩點注釋:
卡爾曼濾波:需要對陀螺儀和加速度傳感器所測得的數(shù)據(jù)進行綜合和校正,而均值濾波,很難滿足精度和實時性上的要求,通過卡爾曼濾波將加速度傳感器和陀螺儀的數(shù)據(jù)進行融合,在計算實時姿態(tài)時很好地抑制了噪聲的干擾作用,以提高測量精度。
PID飛行控制算法:對四旋翼的控制包括姿態(tài)控制(內(nèi)環(huán)控制)和位置控制(外環(huán)控制),外環(huán)控制,解算出為了到達預定的位置期望的姿態(tài)角,該期望的姿態(tài)角作為內(nèi)環(huán)控制器的輸入。PID飛行控制算法能有效對飛行器的姿態(tài)和位置跟蹤進行有效控制。
作者:
weskyfly
時間:
2020-4-2 17:54
代碼很不錯,多謝樓主分享。
作者:
QEQWE123
時間:
2020-5-21 14:26
有原理圖PCB嗎大佬
作者:
gameguy
時間:
2020-5-28 15:36
感謝分享
作者:
1804889557
時間:
2020-9-18 12:33
有個毛的卡爾曼,別一天到晚扯淡好吧
作者:
流浪深圳
時間:
2020-9-22 10:02
能全部整合,牛逼啊
作者:
kiccleaf
時間:
2020-11-22 11:40
分享快樂,學習一下源碼
作者:
IITSUKI
時間:
2020-12-4 20:04
剛剛看了六軸的,不懂來看一下四軸的
作者:
iYoutudou
時間:
2021-2-4 12:29
同求電路原理圖,我準備自己再做一版stm32
作者:
gmlipv123
時間:
2021-10-16 10:48
最近在研究無人機控制算法優(yōu)化,希望能和各位前輩學習學習。
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
香蕉91
|
91性高湖久久久久久久久_久久99
|
久久久久久久久综合
|
亚洲精品欧洲
|
久久久久久久久99精品
|
91免费入口
|
av毛片
|
国产精品视频一二三区
|
成人在线视频一区
|
免费在线观看一区二区
|
久久免费精彩视频
|
午夜合集
|
中文字幕视频在线观看
|
一区二区三区四区国产
|
亚洲一区综合
|
欧美1页
|
国产a视频
|
欧美另类日韩
|
国产成人免费视频网站高清观看视频
|
欧美成人精品
|
亚洲欧洲成人av每日更新
|
aaaaaaa片毛片免费观看
|
av在线免费网站
|
国产一区二区三区高清
|
成人在线观看免费
|
亚洲网在线
|
天天曰天天干
|
欧亚av在线
|
超碰97av
|
亚洲精品久久国产高清情趣图文
|
999国产视频
|
欧美日韩国产一区二区三区
|
日韩a在线
|
一二区成人影院电影网
|
夜夜爽99久久国产综合精品女不卡
|
精品一区二区三区在线观看国产
|
伊人春色在线
|
日韩欧美国产精品
|
日日摸日日添日日躁av
|
九九热这里只有精品在线观看
|
亚洲小视频在线播放
|