前言
之前我寫了一篇關(guān)于無人機(jī)硬件架構(gòu)的博客,接下來我繼續(xù)寫關(guān)于軟件架構(gòu)的。
什么是軟件?百度百科里面軟件的定義是“按照特定順序組織的計算機(jī)數(shù)據(jù)和指令的集合”,在這里我們只需要理解為程序即可,也就是說我們的軟件,是運(yùn)行在計算機(jī)(不論是Intel還是AMD亦或者是ARM單片機(jī),都可以叫計算機(jī))的程序代碼,大家在學(xué)習(xí)C++或者Python等語言的時候,書寫的一個個小程序就是軟件,我們在這里不對軟件和程序進(jìn)行嚴(yán)格區(qū)分,在博客里面認(rèn)為程序就是軟件。
PX4
大家可能都聽說過px4,pixhawk,apm等詞,但是無法進(jìn)行一個嚴(yán)格的區(qū)分,在這里我就跟大家詳細(xì)說明一下。
飛控
pixhawk,雷迅這些都是飛控,飛控是硬件,相當(dāng)于人的小腦,用來維持人的身體穩(wěn)定運(yùn)動,但是如果只有一個沒有活力的小腦,人也沒辦法實(shí)現(xiàn)身體的穩(wěn)定運(yùn)動,什么是沒有活力的小腦呢?就好比說只有一個小腦組織,里面沒有神經(jīng)信號的正確傳輸方式,那么人也是肯定沒辦法進(jìn)行運(yùn)動,所以人想穩(wěn)定運(yùn)動,第一個要有小腦等器官組織的完好結(jié)構(gòu),第二個要有正確的信號傳輸處理方式。
飛控其實(shí)就是小腦的器官組織,PX4/Ardupilot是運(yùn)行在上面的軟件程序,也就是進(jìn)行信號處理和傳遞的方式。其實(shí)飛控本質(zhì)上就是一個定制的單片機(jī),集成了一系列無人機(jī)飛行可能用到的模塊,如imu等,就如同你的小腦集成了一系列的神經(jīng)元和用來實(shí)現(xiàn)身體運(yùn)動的細(xì)胞組織(比如說某些細(xì)胞可以感受加速度,從而你有了失重感),但是這是不夠的,我們要讓小腦有活力,也就是讓飛控運(yùn)作起來
程序
PX4/Ardupolit就是專門用在飛控上的程序。
我們想讓飛控可以運(yùn)作,就需要往里面添加程序,一個很復(fù)雜的程序,可以接受各種信息,而且可以感知無人機(jī)運(yùn)動狀態(tài),然后控制電機(jī)的運(yùn)作,甚至還有其他更復(fù)雜的功能,我們以px4為例,px4項目是以C/C++語言寫的一個程序,里面有很多文件,有進(jìn)行遙控信號解析的,有進(jìn)行通信的,有控制電機(jī)的,有感知運(yùn)動姿態(tài)的,而且還會多線程運(yùn)作,這樣才可以實(shí)現(xiàn)無人機(jī)的穩(wěn)定飛行和信息處理。
總結(jié)
飛控(如pixhawk系列,雷迅系列等等)就是一個專門設(shè)計的單片機(jī),px4就是一套與之搭配的飛行控制程序,前者是肉體,后者是靈魂,沒有肉體的靈魂無處可依,沒有靈魂的肉體不過行尸走肉,也就是說沒有飛控程序的飛控沒辦法讓無人機(jī)起飛,沒有飛控硬件的程序也只能是空中樓閣。
機(jī)載電腦與自主智能
我們只有小腦是不夠的,還要有大腦,這樣才可以進(jìn)行思考——如無人機(jī)的目標(biāo)檢測,自主避障等,但是單片機(jī)的計算能力明顯不夠,所以我們一般是在無人機(jī)上安裝一個電腦來實(shí)現(xiàn)決策,大家可能好奇,電腦一般都很大,怎么裝到無人機(jī)上?當(dāng)然我們這里指的是這種電腦
這種電腦小而且重量不大,足夠放在無人機(jī)上,而且性能很不錯,通過部署算法就可以讓無人機(jī)具備智能,我們將其叫做上位機(jī)或者機(jī)載電腦文章來源:http://www.zghlxwxcb.cn/news/detail-482157.html
上位機(jī)功能
我們都知道大腦是進(jìn)行思考決策的地方(也可能是大腦皮層,但是不要在意這些細(xì)節(jié)),我們的上位機(jī)就是一個大腦,其中部署的算法(或者說運(yùn)行的程序)就是大腦所思考的東西,比如說我們可以在里面安排目標(biāo)檢測算法,讓無人機(jī)可以識別目標(biāo),也可以安裝自主導(dǎo)航算法,可以讓無人機(jī)實(shí)現(xiàn)自主避障
這個流程是這樣的文章來源地址http://www.zghlxwxcb.cn/news/detail-482157.html
- 上位機(jī)里面有一個完整的算法,如自主避障算法
- 飛控里面有正常的飛控程序
- 飛控和上位機(jī)之間通過數(shù)據(jù)線連接,具備數(shù)據(jù)傳輸?shù)幕A(chǔ)
- 飛控進(jìn)行一些設(shè)置(這個后面會講),使得飛控可以接受上位機(jī)控制
- 上位機(jī)運(yùn)行特殊的程序,可以給無人機(jī)發(fā)送信號
- 上位機(jī)運(yùn)行程序(包括通信程序和自主避障程序),控制無人機(jī)飛行
軟件整體架構(gòu)
到了這里,關(guān)于第一章 無人機(jī)入門(二)軟件架構(gòu)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!