本發(fā)明涉及航空技術(shù)領(lǐng)域,特別涉及一種飛行仿真方法及裝置。
背景技術(shù):
現(xiàn)有的飛行器飛行仿真模擬技術(shù)基于飛行器的非線性建模,但由于飛行器在空間運(yùn)動有六個自由度,其系統(tǒng)龐大、結(jié)構(gòu)復(fù)雜、氣動數(shù)據(jù)多,所以建立完整的六自由度全量飛行器模型比較困難,算法過于復(fù)雜,導(dǎo)致運(yùn)行速度慢。若要提高算法速度則以犧牲飛行器模擬的真實(shí)感為代價(jià),使得飛行姿態(tài)不夠平穩(wěn)等,雖然運(yùn)行速度提高了,但是卻降低了飛行器模擬的真實(shí)感。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種飛行仿真方法及裝置,用于提供一種兼顧運(yùn)算速度與仿真模擬真實(shí)感的飛行仿真方式。
本發(fā)明實(shí)施例第一方面提供一種飛行仿真方法,包括:
獲得飛行仿真的初始化參數(shù),所述初始化參數(shù)包括飛行器的運(yùn)動性能參數(shù)以及目標(biāo)位置;
獲得所述飛行器在第一時刻的第一飛行參數(shù),所述第一飛行參數(shù)包括所述飛行器在所述第一時刻的第一位置以及第一運(yùn)動參數(shù);
判斷所述第一位置與所述目標(biāo)位置的偏差是否不大于偏差閾值;
若所述第一位置與所述目標(biāo)位置的偏差大于所述偏差閾值,根據(jù)所述第一飛行參數(shù)以及所述初始化參數(shù)確定所述飛行器從所述第一位置飛向所述目標(biāo)位置的飛行狀態(tài),所述飛行狀態(tài)包括平飛狀態(tài)、左旋狀態(tài)以及右旋狀態(tài);
根據(jù)所述第一飛行參數(shù)、所述初始化參數(shù)以及所述飛行狀態(tài)確定所述飛行器在所述第一時刻的預(yù)設(shè)時間間隔之后的第二時刻的第二位置;
判斷所述第二位置與所述目標(biāo)位置的偏差是否不大于偏差閾值;
在所述第二位置與所述目標(biāo)位置的偏差不大于所述偏差閾值時,結(jié)束飛行仿真。
在第一方面一些設(shè)計(jì)中,所述第一運(yùn)動參數(shù)包括所述飛行器在第一時刻的第一偏航角;
所述根據(jù)所述第一飛行參數(shù)以及所述初始化參數(shù)確定所述飛行器的飛行狀態(tài),包括:
根據(jù)所述飛行器在所述第一時刻的第一位置以及所述目標(biāo)位置確定所述飛行器從所述第一位置飛向所述目標(biāo)位置時的目標(biāo)偏航角;
確定所述第一偏航角順時針轉(zhuǎn)動到所述目標(biāo)偏航角的第一角度,以及所述第一偏航角逆時針轉(zhuǎn)動到所述目標(biāo)偏航角的第二角度;
在所述第一角度等于所述第二角度時,確定所述飛行器的飛行狀態(tài)為平飛狀態(tài);
在所述第一角度大于所述第二角度時,確定所述飛行器的飛行狀態(tài)為右旋狀態(tài);
在所述第一角度小于所述第二角度時,確定所述飛行器的飛行狀態(tài)為左旋狀態(tài)。
在第一方面一些設(shè)計(jì)中,所述第一飛行參數(shù)還包括所述飛行器在第一時刻的第一速度;所述初始化參數(shù)還包括所述飛行器的目標(biāo)速度,所述運(yùn)動性能參數(shù)包括爬升率的絕對值;
所述根據(jù)所述第一飛行參數(shù)、所述目標(biāo)飛行參數(shù)以及所述飛行狀態(tài)確定所述飛行器在所述第一時刻的預(yù)設(shè)時間間隔之后的第二時刻的第二位置,包括:
根據(jù)所述第一速度、所述目標(biāo)速度以及所述加速度的絕對值確定所述飛行器從所述第一位置飛向所述目標(biāo)位置時的飛行加速度;
根據(jù)所述第一位置、所述目標(biāo)位置以及所述爬升率的絕對值確定所述飛行器從所述第一位置飛向所述目標(biāo)位置時的飛行爬升率;
在所述飛行狀態(tài)為平飛狀態(tài)時,根據(jù)以下公式確定所述第二位置:
px2=px1+vt·t·cos(θcur_head);
py2=py1+vt·t·sin(θcur_head);
pz2=pz1+t·γcdr;
vt=v1+α·t,ifvdest≠v1;
vt=v1,ifvdest=v1;
其中,(px1,py1,pz1)為所述第一位置的坐標(biāo)、(px2,py2,pz2)為所述第二位置的坐標(biāo),θcur_head為所述目標(biāo)偏航角,v1為所述第一速度、vdest為所述目標(biāo)速度,α為所述飛行加速度,γcdr為所述飛行爬升率,t為所述第一時刻與第二時刻的時間間隔。
在第一方面一些設(shè)計(jì)中,所述初始化參數(shù)還包括所述飛行器的轉(zhuǎn)彎速率;
所述根據(jù)所述第一飛行參數(shù)、所述目標(biāo)飛行參數(shù)以及所述飛行狀態(tài)確定所述飛行器在所述第一時刻的預(yù)設(shè)時間間隔之后的第二時刻的第二位置,包括:
在所述飛行狀態(tài)為左旋時,根據(jù)以下公式確定所述第二位置:
px2=px1+rturn·cos(θ′curhead);
py2=py1+rturn·sin(θ′cur_head);
pz2=pz1+t·γcdr;
其中,g為重力加速度,γturn為所述轉(zhuǎn)彎速率。
在第一方面一些設(shè)計(jì)中,所述初始化參數(shù)還包括所述飛行器的轉(zhuǎn)彎速率;
所述根據(jù)所述第一飛行參數(shù)、所述目標(biāo)飛行參數(shù)以及所述飛行狀態(tài)確定所述飛行器在所述第一時刻的預(yù)設(shè)時間間隔之后的第二時刻的第二位置,包括:
在所述飛行狀態(tài)為右旋時,根據(jù)以下公式確定所述第二位置:
px2=px1+rturn·cos(θ′curhead);
py2=py1+rturn·sin(θ′cur_head);
pz2=pz1+t·γcdr;
其中,g為重力加速度,γturn為所述轉(zhuǎn)彎速率。
在第一方面一些設(shè)計(jì)中,所述偏差閾值為rturn。
本發(fā)明實(shí)施例第二方面提供一種飛行仿真裝置,包括:
第一獲得模塊,用于獲得飛行仿真的初始化參數(shù),所述初始化參數(shù)包括飛行器的運(yùn)動性能參數(shù)以及目標(biāo)位置;
第二獲得模塊,用于獲得所述飛行器在第一時刻的第一飛行參數(shù),所述第一飛行參數(shù)包括所述飛行器在所述第一時刻的第一位置以及第一運(yùn)動參數(shù);
第一判斷模塊,用于判斷所述第一位置與所述目標(biāo)位置的偏差是否不大于偏差閾值;
確定模塊,用于在所述第一位置與所述目標(biāo)位置的偏差大于所述偏差閾值時,根據(jù)所述第一飛行參數(shù)以及所述初始化參數(shù)確定所述飛行器從所述第一位置飛向所述目標(biāo)位置的飛行狀態(tài),所述飛行狀態(tài)包括平飛狀態(tài)、左旋狀態(tài)以及右旋狀態(tài);根據(jù)所述第一飛行參數(shù)、所述初始化參數(shù)以及所述飛行狀態(tài)確定所述飛行器在所述第一時刻的預(yù)設(shè)時間間隔之后的第二時刻的第二位置;
第二判斷模塊,用于判斷所述第二位置與所述目標(biāo)位置的偏差是否不大于偏差閾值;
結(jié)束模塊,用于在所述第二位置與所述目標(biāo)位置的偏差不大于所述偏差閾值時,結(jié)束飛行仿真。
在第二方面一些設(shè)計(jì)中,所述第一運(yùn)動參數(shù)包括所述飛行器在第一時刻的第一偏航角;
所述確定模塊用于:
根據(jù)所述飛行器在所述第一時刻的第一位置以及所述目標(biāo)位置確定所述飛行器從所述第一位置飛向所述目標(biāo)位置時的目標(biāo)偏航角;
確定所述第一偏航角順時針轉(zhuǎn)動到所述目標(biāo)偏航角的第一角度,以及所述第一偏航角逆時針轉(zhuǎn)動到所述目標(biāo)偏航角的第二角度;
在所述第一角度等于所述第二角度時,確定所述飛行器的飛行狀態(tài)為平飛狀態(tài);
在所述第一角度大于所述第二角度時,確定所述飛行器的飛行狀態(tài)為右旋狀態(tài);
在所述第一角度小于所述第二角度時,確定所述飛行器的飛行狀態(tài)為左旋狀態(tài)。
在第二方面一些設(shè)計(jì)中,所述第一飛行參數(shù)還包括所述飛行器在第一時刻的第一速度、第一俯仰角、第一滾轉(zhuǎn)角;所述初始化參數(shù)還包括所述飛行器的目標(biāo)速度,所述運(yùn)動性能參數(shù)包括爬升率的絕對值;
所述確定模塊用于:
根據(jù)所述第一速度、所述目標(biāo)速度以及所述加速度的絕對值確定所述飛行器從所述第一位置飛向所述目標(biāo)位置時的飛行加速度;
根據(jù)所述第一位置、所述目標(biāo)位置以及所述爬升率的絕對值確定所述飛行器從所述第一位置飛向所述目標(biāo)位置時的飛行爬升率;
在所述飛行狀態(tài)為平飛狀態(tài)時,根據(jù)以下公式確定所述第二位置:
px2=px1+vt·t·cos(θcur_head);
py2=py1+vt·t·sin(θcur_head);
pz2=pz1+t·γcdr;
vt=v1+α·t,ifvdest≠v1;
vt=v1,ifvdest=v1;
其中,(px1,py1,pz1)為所述第一位置的坐標(biāo)、(px2,py2,pz2)為所述第二位置的坐標(biāo),θcur_head為所述目標(biāo)偏航角,v1為所述第一速度、vdest為所述目標(biāo)速度,α為所述飛行加速度,γcdr為所述飛行爬升率,t為所述第一時刻與第二時刻的時間間隔。
在第二方面一些設(shè)計(jì)中,所述初始化參數(shù)還包括所述飛行器的轉(zhuǎn)彎速率;
所述確定模塊,用于:
在所述飛行狀態(tài)為左旋時,根據(jù)以下公式確定所述第二位置:
px2=px1+rturn·cos(θ′curhead);
py2=py1+rturn·sin(θ′cur_head);
pz2=pz1+t·γcdr;
其中,g為重力加速度,γturn為所述轉(zhuǎn)彎速率。
在第二方面一些設(shè)計(jì)中,所述初始化參數(shù)還包括所述飛行器的轉(zhuǎn)彎速率;
所述確定模塊,用于:
在所述飛行狀態(tài)為右旋時,根據(jù)以下公式確定所述第二位置:
px2=px1+rturn·cos(θ′curhead);
py2=py1+rturn·sin(θ′cur_head);
pz2=pz1+t·γcdr;
其中,g為重力加速度,γturn為所述轉(zhuǎn)彎速率。
在第二方面一些設(shè)計(jì)中,所述偏差閾值為rturn。
本發(fā)明實(shí)施例中提供的一個或多個技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點(diǎn):
本發(fā)明實(shí)施例中,確定飛行器處于平飛狀態(tài)、左旋狀態(tài)或右旋狀態(tài),然后根據(jù)飛行器的飛行狀態(tài)模擬飛行器的位置,兼顧運(yùn)算速度與仿真模擬真實(shí)感。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡要介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明實(shí)施例的一些實(shí)施例,對于本領(lǐng)域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例中飛行仿真方法的流程示意圖;
圖2為本發(fā)明實(shí)施例中飛行仿真裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面通過附圖以及具體實(shí)施例對本發(fā)明實(shí)施例技術(shù)方案做詳細(xì)的說明,應(yīng)當(dāng)理解本發(fā)明實(shí)施例以及實(shí)施例中的具體特征是對本發(fā)明實(shí)施例技術(shù)方案的詳細(xì)的說明,而不是對本發(fā)明實(shí)施例技術(shù)方案的限定,在不沖突的情況下,本發(fā)明實(shí)施例以及實(shí)施例中的技術(shù)特征可以相互組合。
圖1所示為本發(fā)明實(shí)施例的飛行仿真方法的流程示意圖,包括如下步驟:
步驟11,獲得飛行仿真的初始化參數(shù),初始化參數(shù)包括飛行器的運(yùn)動性能參數(shù)以及目標(biāo)位置。
運(yùn)動性能參數(shù)可以包括飛行加速度(標(biāo)量)、爬升率(標(biāo)量)、俯仰率(標(biāo)量)、滾轉(zhuǎn)率(標(biāo)量)以及轉(zhuǎn)彎速率中的至少一項(xiàng)。
步驟12,獲得飛行器在第一時刻的第一飛行參數(shù),第一飛行參數(shù)包括飛行器在第一時刻的第一位置以及第一運(yùn)動參數(shù)。
第一運(yùn)動參數(shù)可以包括飛行器在第一時刻的第一速度、第一位置以及飛行姿態(tài)等。飛行姿態(tài)可以用歐拉角(θhead1,θpitch1,θroll1)表示,其中,θhead1為第一時刻的第一偏航角,θpitch1為第一時刻的第一俯仰角,θroll1為第一時刻的第一滾轉(zhuǎn)角。
步驟13,判斷第一位置與目標(biāo)位置的偏差是否不大于偏差閾值。
該偏差閾值可以有多種實(shí)現(xiàn),如預(yù)設(shè)的距離值,又如飛行器的轉(zhuǎn)彎半徑。
步驟14,若第一位置與目標(biāo)位置的偏差大于偏差閾值,根據(jù)第一飛行參數(shù)以及初始化參數(shù)確定飛行器從第一位置飛向目標(biāo)位置的飛行狀態(tài),飛行狀態(tài)包括平飛狀態(tài)、左旋狀態(tài)以及右旋狀態(tài)。
首先,計(jì)算第一位置指向目標(biāo)位置的向量在水平面(xoy平面)的投影,及在x軸上的投影,兩投影間的夾角即為目標(biāo)偏航角。
然后,確定第一偏航角順時針轉(zhuǎn)動到目標(biāo)偏航角的第一角度,以及第一偏航角逆時針轉(zhuǎn)動到目標(biāo)偏航角的第二角度。
在第一角度等于第二角度時,確定飛行器的飛行狀態(tài)為平飛狀態(tài);在第一角度大于第二角度時,確定飛行器的飛行狀態(tài)為右旋狀態(tài);在第一角度小于第二角度時,確定飛行器的飛行狀態(tài)為左旋狀態(tài)。
步驟15,根據(jù)第一飛行參數(shù)、初始化參數(shù)以及飛行狀態(tài)確定飛行器在第一時刻的預(yù)設(shè)時間間隔之后的第二時刻的第二位置。
首先,由于運(yùn)動性能參數(shù)可以包括飛行加速度的標(biāo)量,可以根據(jù)當(dāng)前第一時刻的第一速度與目標(biāo)速度的大小差確定加速度的方向,進(jìn)而確定加速度。
當(dāng)目標(biāo)速度vdest大于當(dāng)前的第一速度v1時,飛行加速度α為+a,a為加速度的標(biāo)量;當(dāng)目標(biāo)速度vdest小于第一速度v1時時,飛行加速度α為-a;當(dāng)目標(biāo)速度vdest與第一速度v1時相等時,飛行加速度α為0,不用調(diào)整速度,飛行器勻速飛行。
然后,根據(jù)飛行加速度以及第一速度確定飛行器在距離第一時刻之后時長t的時刻的飛行速度vt,可以通過以下公式表示vt:
vt=v1+α·t,ifvdest≠v1;
vt=v1,ifvdest=v1;
然后,根據(jù)第一位置、目標(biāo)位置以及爬升率的絕對值(標(biāo)量)確定飛行器從第一位置飛向目標(biāo)位置時的飛行爬升率。
計(jì)算飛行器當(dāng)前飛行位置
在飛行狀態(tài)為平飛狀態(tài)時,根據(jù)以下公式確定第二位置:
px2=px1+vt·t·cos(θcur_head);
py2=py1+vt·t·sin(θcur_head);
pz2=pz1+t·γcdr;
vt=v1+α·t,ifvdest≠v1;
vt=v1,ifvdest=v1;
其中,(px1,py1,pz1)為第一位置的坐標(biāo)、(px2,py2,pz2)為第二位置的坐標(biāo),θcur_head為目標(biāo)偏航角,v1為第一速度、vdest為目標(biāo)速度,α為飛行加速度,γcdr為飛行爬升率,t為第一時刻與第二時刻的時間間隔。
而在飛行狀態(tài)為左旋時,根據(jù)以下公式確定第二位置:
px2=px1+rturn·cos(θ′curhead);
py2=py1+rturn·sin(θ′cur_head);
pz2=pz1+t·γcdr;
其中,g為重力加速度,γturn為轉(zhuǎn)彎速率。
在飛行狀態(tài)為右旋時,根據(jù)以下公式確定第二位置:
px2=px1+rturn·cos(θ′curhead);
py2=py1+rturn·sin(θ′cur_head);
pz2=pz1+t·γcdr;
步驟16,判斷第二位置與目標(biāo)位置的偏差是否不大于偏差閾值。
步驟17,在第二位置與目標(biāo)位置的偏差不大于偏差閾值時,結(jié)束飛行仿真。
若第二位置與目標(biāo)位置的偏差大于偏差閾值,則根據(jù)步驟12至步驟16的方法確定第二時刻的預(yù)設(shè)時間間隔后的第三時刻時飛行器的第三位置,并判斷第三位置與目標(biāo)位置的偏差是否不大于偏差閾值,重復(fù)上述過程,直至飛行器的位置與目標(biāo)位置的偏差不大于偏差閾值。
通過上述方案,確定飛行器處于平飛狀態(tài)、左旋狀態(tài)或右旋狀態(tài),然后根據(jù)飛行器的飛行狀態(tài)模擬飛行器的位置,兼顧運(yùn)算速度與仿真模擬真實(shí)感。
下面以具體實(shí)例對本發(fā)明實(shí)施例的方案進(jìn)行詳細(xì)說明。
步驟一,制定飛行器的飛行計(jì)劃,并初始化飛行器飛行參數(shù)。制定飛行器的飛行計(jì)劃為飛到點(diǎn)。需要初始化的飛行器飛行參數(shù)包括:飛行器的目標(biāo)飛行位置,目標(biāo)飛行速度(標(biāo)量),飛行加速度(標(biāo)量),爬升率(標(biāo)量),俯仰率(標(biāo)量),滾轉(zhuǎn)率(標(biāo)量),轉(zhuǎn)彎速率。
步驟二,在模擬開始后,系統(tǒng)一方面會取得用戶輸入信息,主要是飛行器的飛行加速度,爬升率,俯仰率,滾轉(zhuǎn)率,轉(zhuǎn)彎速率等;另一方面會取得上次模擬的輸出結(jié)果,主要是汽車的當(dāng)前飛行速度,當(dāng)前飛行位置,和當(dāng)前飛行姿態(tài)(歐拉角)等。
步驟三,結(jié)合步驟二所述的兩組信息,飛行器的目標(biāo)飛行位置
步驟四,判斷飛行器是否到達(dá)目標(biāo)飛行位置,用飛行器當(dāng)前飛行速度下的轉(zhuǎn)彎半徑來表示位置偏差閾值δp,位置偏差閾值δp的計(jì)算方法如下:
當(dāng)飛行器的當(dāng)前飛行位置與目標(biāo)飛行位置的距離小于該位置偏差閾值時,視為到達(dá)目標(biāo)飛行位置,即當(dāng)飛行器飛行參數(shù)滿足如下計(jì)算公式時,視為飛行器到達(dá)目標(biāo)飛行位置。若不滿足,則執(zhí)行步驟三。
其中,g為重力加速度,這也符合實(shí)際中的飛行器飛行狀態(tài),通常讓飛行器飛行到點(diǎn),是指讓該飛行器飛行到該點(diǎn)所在的某一指定大小區(qū)域內(nèi)。
步驟五,計(jì)算飛行器飛行狀態(tài):
首先,計(jì)算飛行器的目標(biāo)飛行速度vdest與當(dāng)前飛行速度vcur的速度差,判斷飛行加速度α為正值(加速)或負(fù)值(減速):當(dāng)目標(biāo)飛行速度vdest大于當(dāng)前飛行速度vcur時,加速度為正;反之,加速度為負(fù)。
然后,利用飛行器當(dāng)前飛行位置指向目標(biāo)飛行位置的向量,判斷飛行器的爬升率γcdr為正值(上升)或負(fù)值(下降),俯仰率γpitch為正值或負(fù)值,滾轉(zhuǎn)率γroll為正值或負(fù)值,及計(jì)算飛行器的目標(biāo)俯仰角和目標(biāo)偏航角,判斷飛行器的飛行狀態(tài)(平飛、左旋或右旋)。
爬升率的計(jì)算方法為:計(jì)算飛行器當(dāng)前飛行位置
目標(biāo)俯仰角的計(jì)算方法為:利用飛行器的當(dāng)前飛行速度vcur,和飛行器的爬升率γcdr,計(jì)算飛行器的目標(biāo)俯仰角,用θdest_pitch表示,計(jì)算方式如下:
此方法保證了飛行爬升或下降過程的平滑性,更接近真實(shí)飛行姿態(tài)。
俯仰率的計(jì)算方法為:計(jì)算飛行器目標(biāo)俯仰角θdest_pitch與當(dāng)前俯仰角θcur_pitch的角度差。如果角度差為正,則俯仰率為正值(γpitch=γpitch),反之,俯仰率為負(fù)值(γpitch=-γpitch)。
目標(biāo)偏航角的計(jì)算方法為:計(jì)算飛行器當(dāng)前飛行位置指向目標(biāo)飛行位置的向量在xoy平面的投影,及在x軸上的投影,兩投影間的夾角即為目標(biāo)偏航角,用θdest_head表示,計(jì)算公式如下:
然后,確定飛行器的飛行狀態(tài)為平飛狀態(tài)、左旋狀態(tài)還是右旋狀態(tài),以及確定目標(biāo)滾轉(zhuǎn)角。確定方法如下:首先計(jì)算從當(dāng)前偏航角
然后,計(jì)算t時間后飛行器的飛行速度:當(dāng)目標(biāo)飛行速度vdest大于當(dāng)前飛行速度vcur時;飛行加速度α為正(α=α),當(dāng)目標(biāo)飛行速度vdest小于當(dāng)前飛行速度vcur時,飛行加速度α為負(fù)(α=-α);當(dāng)標(biāo)飛行速度vdest與當(dāng)前飛行速度vcur相等時,不用調(diào)整速度,飛行器勻速飛行。因此有如下計(jì)算公式:
v′cur=vcur+α·t,ifvdest≠vcur
v=cur=vcur,ifvdest=vcur
然后,根據(jù)飛行器的不同飛行狀態(tài)(平飛、左旋或右旋)計(jì)算t時間后飛行器的飛行位置及飛行姿態(tài)(歐拉角)。為了使飛行器飛行姿態(tài)更逼真,時間間隔t可以設(shè)置的較短,例如1s。
飛行器的飛行狀態(tài)為平飛狀態(tài)時,時間間隔t后,飛行器的飛行位置
飛行器的歐拉角(飛行姿態(tài))的計(jì)算方式如下:
偏航角:θ′cur_head=θcur_head,
俯仰角:θ′cur_pitch=θcur_pitch+γpitch·tuntilθcur_pitch=θdest_pitch,
滾轉(zhuǎn)角:θ′cur_roll=θcur_roll+γroll·tuntilθcur_roll=θdest_roll
飛行器左旋或右旋飛行狀態(tài)下,時間間隔t后飛行器的飛行位置及飛行偏航角與飛行器的轉(zhuǎn)彎半徑有關(guān),首先計(jì)算飛行器的轉(zhuǎn)彎半徑rturn如下:
將飛行器在xoy平面的飛行看作是飛行器沿著以轉(zhuǎn)彎半徑rturn為半徑,與x軸成θcur_head夾角的向量為切線的圓做圓弧運(yùn)動。圓弧的圓心pcenter(pcenter_x,pcenter_y)的計(jì)算方法如下:
飛行器的飛行狀態(tài)為左旋狀態(tài)時,
飛行器的飛行狀態(tài)為右旋狀態(tài)時,
偏航角的改變用如下公式計(jì)算:
則間隔時間t后飛行器的飛行位置計(jì)算方式如下:
其中,飛行器的飛行狀態(tài)為左旋狀態(tài)時,
飛行器的飛行狀態(tài)為右旋狀態(tài)時,
時間間隔t后飛行器的歐拉角計(jì)算方法如下:
飛行器的飛行狀態(tài)為左旋狀態(tài)時,
飛行器的飛行狀態(tài)為右旋狀態(tài)時,
俯仰角與滾轉(zhuǎn)角計(jì)算方法與平飛狀態(tài)下一致。
然后,獲取飛行器當(dāng)前飛行位置
圖2所示為本發(fā)明實(shí)施例的飛行仿真裝置,包括:
第一獲得模塊21,用于獲得飛行仿真的初始化參數(shù),初始化參數(shù)包括飛行器的運(yùn)動性能參數(shù)以及目標(biāo)位置;
第二獲得模塊22,用于獲得飛行器在第一時刻的第一飛行參數(shù),第一飛行參數(shù)包括飛行器在第一時刻的第一位置以及第一運(yùn)動參數(shù);
第一判斷模塊23,用于判斷第一位置與目標(biāo)位置的偏差是否不大于偏差閾值;
確定模塊24,用于在第一位置與目標(biāo)位置的偏差大于偏差閾值時,根據(jù)第一飛行參數(shù)以及初始化參數(shù)確定飛行器從第一位置飛向目標(biāo)位置的飛行狀態(tài),飛行狀態(tài)包括平飛狀態(tài)、左旋狀態(tài)以及右旋狀態(tài);根據(jù)第一飛行參數(shù)、初始化參數(shù)以及飛行狀態(tài)確定飛行器在第一時刻的預(yù)設(shè)時間間隔之后的第二時刻的第二位置;
第二判斷模塊25,用于判斷第二位置與目標(biāo)位置的偏差是否不大于偏差閾值;
結(jié)束模塊26,用于在第二位置與目標(biāo)位置的偏差不大于偏差閾值時,結(jié)束飛行仿真。
作為一種可選的方式,第一運(yùn)動參數(shù)包括飛行器在第一時刻的第一偏航角;
確定模塊24用于:
根據(jù)飛行器在第一時刻的第一位置以及目標(biāo)位置確定飛行器從第一位置飛向目標(biāo)位置時的目標(biāo)偏航角;
確定第一偏航角順時針轉(zhuǎn)動到目標(biāo)偏航角的第一角度,以及第一偏航角逆時針轉(zhuǎn)動到目標(biāo)偏航角的第二角度;
在第一角度等于第二角度時,確定飛行器的飛行狀態(tài)為平飛狀態(tài);
在第一角度大于第二角度時,確定飛行器的飛行狀態(tài)為右旋狀態(tài);
在第一角度小于第二角度時,確定飛行器的飛行狀態(tài)為左旋狀態(tài)。
作為一種可選的方式,第一飛行參數(shù)還包括飛行器在第一時刻的第一速度;初始化參數(shù)還包括飛行器的目標(biāo)速度,運(yùn)動性能參數(shù)包括爬升率的絕對值;
確定模塊24用于:
根據(jù)第一速度、目標(biāo)速度以及加速度的絕對值確定飛行器從第一位置飛向目標(biāo)位置時的飛行加速度;
根據(jù)第一位置、目標(biāo)位置以及爬升率的絕對值確定飛行器從第一位置飛向目標(biāo)位置時的飛行爬升率;
在飛行狀態(tài)為平飛狀態(tài)時,根據(jù)以下公式確定第二位置:
px2=px1+vt·t·cos(θcur_head);
py2=py1+vt·t·sin(θcur_head);
pz2=pz1+t·γcdr;
vt=v1+α·tifvdest≠v1;
vt=v1ifvdest=v1;
其中,(px1,py1,pz1)為第一位置的坐標(biāo)、(px2,py2,pz2)為第二位置的坐標(biāo),θcur_head為目標(biāo)偏航角,v1為第一速度、vdest為目標(biāo)速度,α為飛行加速度,γcdr為飛行爬升率,t為第一時刻與第二時刻的時間間隔。
作為一種可選的方式,初始化參數(shù)還包括飛行器的轉(zhuǎn)彎速率;
確定模塊24,用于:
在飛行狀態(tài)為左旋時,根據(jù)以下公式確定第二位置:
px2=px1+rturn·cos(θ′curhead);
py2=py1+rturn·sin(θ′cur_head);
pz2=pz1+t·γcdr;
其中,g為重力加速度,γturn為轉(zhuǎn)彎速率。
作為一種可選的方式,初始化參數(shù)還包括飛行器的轉(zhuǎn)彎速率;
確定模塊24,用于:
在飛行狀態(tài)為右旋時,根據(jù)以下公式確定第二位置:
px2=px1+rturn·cos(θ′curhead);
py2=py1+rturn·sin(θ′cur_head);
pz2=pz1+t·γcdr;
其中,g為重力加速度,γturn為轉(zhuǎn)彎速率。
作為一種可選的方式,偏差閾值為轉(zhuǎn)彎半徑rturn。
上述裝置的實(shí)現(xiàn)方式可以參照圖1所示的方法的實(shí)現(xiàn)方式,在此不予重復(fù)。
本發(fā)明實(shí)施例中提供的一個或多個技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點(diǎn):
本發(fā)明實(shí)施例提供了一種飛行器的飛行軌跡仿真模擬方法。該方法通過設(shè)定時間間隔,計(jì)算每隔一定時間間隔的飛行器位置和姿態(tài)。在計(jì)算飛行器的飛行位置和飛行姿態(tài)(歐拉角)時,分為了飛行器平飛和旋轉(zhuǎn)(左旋或右旋)兩種狀態(tài),使飛行器的飛行更具真實(shí)感。此方法克服了現(xiàn)有飛行器飛行模擬方法中運(yùn)行速度與飛行模擬真實(shí)感不能很好兼容的問題,既保證了算法的簡潔性與運(yùn)算速度,又能保證盡可能接近現(xiàn)實(shí)中飛行器的飛行特性。且本發(fā)明實(shí)施例方法適用于游戲領(lǐng)域、仿真訓(xùn)練領(lǐng)域、仿真作戰(zhàn)系統(tǒng)等各種需要飛行器飛行模擬技術(shù)的領(lǐng)域中,具有通用性。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明實(shí)施例的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明實(shí)施例可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明實(shí)施例可采用在一個或多個其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明實(shí)施例是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明實(shí)施例進(jìn)行各種改動和變型而不脫離本發(fā)明實(shí)施例的精神和范圍。這樣,倘若本發(fā)明實(shí)施例的這些修改和變型屬于本發(fā)明實(shí)施例權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明實(shí)施例也意圖包含這些改動和變型在內(nèi)。