이번역페이지는최신내용을담고있지않습니다。최신내용을영문으로보려면여기를클릭하십시오。
이예제에서는仿真金宝app软件에서시변칼만필터를사용하여선형시스템의상태를추정하는방법을보여줍니다。控制系统工具箱라이브러리에서卡尔曼滤波器블록을사용하여잡음이있는위치측정값(예:GPS센서측정값)을기반으로지상차량의위치와속도를추정합니다。칼만필터의플랜트모델은시변잡음특성을갖습니다。
북쪽과동쪽방향에서지상차량의위치와속도를추정하려고합니다。차량은2차원공간에서아무제약없이자유롭게이동할수있습니다。차량뿐아니라모든물체에사용할수있는다목적내비게이션및위치추적시스템을설계합니다。
및는원점으로부터차량의동쪽및북쪽위치이고는동쪽에서차량방향이며는차량의조향각입니다。는연속시간변수입니다。
金宝app仿真软件모델은두가지주요부분,즉차량모델과칼만필터로구성됩니다。이에대해서는다음섹션에서자세히설명합니다。
open_system (“ctrlKalmanNavigationExample”);
추적하는차량은다음과같은간단한점질량(质点)모델로표현됩니다。
여기서차량상태는다음과같습니다。
차량파라미터는다음과같습니다。
제어입력은다음과같습니다。
이모델의종방향역학에서는구름저항(滚动阻力)을무시합니다。이모델의횡방향역학에서는원하는조향각에즉시도달할수있는것으로가정하며요(偏航)관성모멘트를무시합니다。
차량모델은ctrlKalmanNavigationExample /车辆模型
서브시스템에구현되어있습니다。이仿金宝app真软件모델의ctrlKalmanNavigationExample/速度和方向跟踪
서브시스템에는차량의원하는방향과속도를추종하기위한두개의π제어기가포함되어있습니다。따라서차량에다양한기동조건을지정하여칼만필터의성능을테스트할수있습니다。
칼만필터는선형모델을기반으로미지의관심변수를추정하는알고리즘입니다。이선형모델은모델초기조건뿐아니라알려진모델입력과알수없는모델입력에대한응답으로시간에따른추정된변수의변화를설명합니다。이예제에서는다음과같은파라미터/변수를추정합니다。
여기서각각은다음을나타냅니다。
항은미분연산자가아니라속도를나타냅니다。은이산시간인덱스입니다。칼만필터에사용되는모델의형식은다음과같습니다。
여기서는상태벡터,는측정값,는공정잡음,는측정잡음입니다。칼만필터는및가평균0,알려진분산,,인독립적인확률변수라고가정합니다。여기서A、G、C행렬은다음과같으며
입니다。
와G의세번째행은동쪽속도를임의보행으로모델링합니다().실세계에서위치는연속시간변수이며시간에따른속도의적분입니다().와G의첫번째행은이운동학적관계에대한이산근삿값을나타냅니다().와G의두번째및네번째행은북쪽속도와위치간의동일한관계를나타냅니다。
C행렬은위치측정값만사용할수있음을나타냅니다。GPS와같은위치센서는1 hz의샘플레이트에서이러한측정값을제공합니다。측정잡음의분산R행인렬은으로지정됩니다。R은스칼라로지정되므로卡尔曼滤波器블록은행렬R이대각행렬이고대각선요소는50이며y와호환되는차원을갖는것으로가정합니다。측정잡음이가우스분포이면R = 50은위치측정값이동쪽과북쪽방향의실제위치로부터이내의거리에속할확률이68%라는의미입니다。그러나칼만필터의경우이가정은불필요합니다。
의요소는차량속도가하나의샘플시간Ts에얼마나변화할수있는지를나타냅니다。공정잡w음의분산인问행렬은시변으로선택되었습니다。이것은속도가크면의일반적인값은더작다는직관을반영합니다。예를들어,0 m / s에서로10 m / s올리는것10 m / s이에서로20 m / s올리는것보다쉽습니다。구체적으로,다음과같이추정된북쪽및동쪽속도와포화함수를사용하여Q [n]을생성합니다。
问의대각선요소는추정된속도의제곱에반비례하는w의분산을모델링합니다。Q포화함수는가너무크거나너무작지않도록방지합니다。250은계수일반차량의0 ~ 5,5 ~ 10,10 ~ 15日,15 ~ 20,20 ~ 25米/秒가속시간데이터에최소제곱피팅을사용하여구한것입니다。대각선问에대한선택은북쪽과동쪽방향의속도변화가상관관계가없다고단순하게가정했음을나타냅니다。
卡尔曼滤波器的블록은仿真软件의金宝app控制系统工具箱
라이브러리에있습니다。이블록은또한系统辨识工具箱/估计
라이브러리에도있습니다。이산시간상태추정에대해블록파라미터를구성합니다。다음필터설정파라미터를지정합니다。
시간영역:이산시간。이옵션을선택하면이산시간상태를추정할수있습니다。
현재측정값y [n]을사용하여xhat [n]향상체크박스를선택합니다。그러면이산시간칼만필터의”현재추정기”변형이구현됩니다。이옵션은추정정확도를향상시키며느린샘플시간에더유용합니다。반면,계산비용이증가합니다。또한이칼만필터변형에는직접피드스루가있으며이는칼만필터가어떤지연도포함되지않은피드백루프에사용되는경우대수루프를발생시킵니다(피드백루프자체에도직접피드스루가있음)。대수루프는시뮬레이션속도에도영향을미칠수있습니다。
옵션탭을클릭하여블록인포트및아웃포트옵션을설정합니다。
입력포트u추가체크박스를선택취소합니다。플랜트모델에알려진입력이없습니다。
상태추정오차의공분산Z출력체크박스를선택합니다。Z행렬은필터의상태추정값에대한신뢰성정보를제공합니다。
모델파라미터를클릭하여플랜트모델및잡음특성을지정합니다。
모델소스:개별A, B, C, D행렬。
一个: A .행렬은이예제의앞부분에서정의되었습니다。
C: C . C행렬은이예제의앞부분에서정의되었습니다。
초기추정값소스:대화상자
초기상태x [0]:0
.이값은t = 0에서위치및속도추정값의초기추측값이0임을나타냅니다。
상태추정오차의공분산P [0]:10
.초기추측값x[0]과실제값간의오차는표준편차가인확률변수라고가정합니다。
G행렬및H행렬사용(디폴트값:G =我및H = 0)체크박스를선택하여디폴트가아닌G행렬을지정합니다。
G: G G행렬은이예제의앞부분에서정의되었습니다。
H:0
.공정잡음은卡尔曼滤波器블록에들어가는측정값y에영향을미치지않습니다。
시불변问체크박스를선택취소합니다。问행렬은시변행렬이며블록인포트问를통해제공됩니다。이설정으로인해블록은시변칼만필터를사용합니다。이옵션을선택하면시불변칼만필터를사용할수있습니다。시불변칼만필터는이문제에대해성능은약간떨어지지만설계가더쉽고계산비용이낮습니다。
R: r .측정잡음의공분산입니다。R행렬은이예제의앞부분에서정의되었습니다。
N:0
.공정잡음과측정잡음간에상관관계가없다고가정합니다。
샘플시간(상속된경우1): Ts。이예제의앞부분에서정의되었습니다。
차량이다음과같이기동하는시나리오를시뮬레이션하여칼만필터의성능을테스트합니다。
t = 0에서차량위치는,이고정지상태입니다。
25米/秒동쪽방향으로로가속합니다。t = 50年代에서5 m / s로감속합니다。
t = 100年代에서북쪽으로방향을돌려20 m / s로가속합니다。
t = 200年代에서다시서쪽으로방향을돌립니다。25米/秒로가속합니다。
15 m / s t = 260年代에서로감속하고일정한속도로180도방향을돌립니다。
金宝app仿真软件모델을시뮬레이션합니다。차량위치의실제값,측정된값,칼만필터추정값을플로팅합니다。
sim卡(“ctrlKalmanNavigationExample”);图;%绘制结果,用实线连接数据点。情节(x (: 1) x (:, 2),“软”,...(: 1), y (:, 2),“gd”,...xhat (: 1), xhat (:, 2),“罗”,...“线型”,“- - -”);标题(“位置”);包含(“东[m]”);ylabel (“北[m]”);传奇(“实际”,“测量”,“卡尔曼滤波器估计”,“位置”,“最佳”);轴紧;
측정된위치와실제위치간의오차및칼만필터추정값과실제위치간의오차는다음과같습니다。
%东方位置测量误差[m]n_xe = y (: 1) - x (: 1);%北位置测量误差[m]n_xn = y (:, 2) - x (:, 2);%卡尔曼滤波东位置误差[m]e_xe = xhat (: 1) - x (: 1);%卡尔曼滤波北位置误差[m]e_xn = xhat (:, 2) - x (:, 2);图;%东方位置误差次要情节(2,1,1);情节(t, n_xe‘g’t e_xe“r”);ylabel ('位置误差-东[m]');包含(“时间[s]”);传奇(sprintf (“量:% .3f”规范(n_xe 1) /元素个数(n_xe)), sprintf (“卡尔曼f。:% .3f”规范(e_xe 1) /元素个数(e_xe)));轴紧;%北位置误差次要情节(2,1,2);情节(t、y (:, 2) - x (:, 2),‘g’t xhat (:, 2) - x (:, 2),“r”);ylabel ('位置误差-北[m]');包含(“时间[s]”);传奇(sprintf (“量:% .3f”规范(n_xn 1) /元素个数(n_xn)), sprintf (“卡尔曼f: % .3f”规范(e_xn 1) /元素个数(e_xn)));轴紧;
플롯범례는데이터점의개수로정규화된위치측정값과추정오차(및)를표시합니다。칼만필터추정값이원시측정값보다오차가약25%적습니다。
동쪽방향의실제속도와칼만필터추정값은아래그림의위쪽플롯에표시되어있습니다。아래쪽플롯은추정오차를표시합니다。
e_ve = xhat (:, 3) - x (:, 3);% [m/s]卡尔曼滤波东速度误差e_vn = xhat (:, 4) - x (:, 4);% [m/s]卡尔曼滤波北速度误差图;%东向速度及其估计次要情节(2,1,1);情节(t) x (:, 3),“b”t xhat (:, 3),“r”);ylabel (“速度-东[m]”);包含(“时间[s]”);传奇(“实际”,卡尔曼滤波器的,“位置”,“最佳”);轴紧;次要情节(2,1,2);%估计误差情节(t, e_ve“r”);ylabel (“速度误差-东[m]”);包含(“时间[s]”);传奇(sprintf (“卡尔曼滤波器:% .3f”规范(e_ve 1) /元素个数(e_ve)));轴紧;
오차플롯의범례는데이터점의개수로정규화된동쪽속도추정오차을표시합니다。
칼만필터의속도추정값이실제속도의추세를정확하게추종합니다。차량이높은속도로이동하면잡음수준이감소합니다。Q이는행렬의설계와부합합니다。t = 50年代및t = 200年代에두개의큰스파이크가있습니다。이시점은각각자동차가갑자기감속하고급히방향을돌린시간입니다。Q이순간의속도변화는행렬입력을기반으로하는칼만필터의예측값보다훨씬큽니다。몇번의시간스텝후에는필터의추정값이실제속도를따라잡습니다。
金宝app仿真软件에서卡尔曼滤波器블록을사용하여차량의위치와속도를추정했습니다。이모델의공정잡음동특성은시간에따라변화했습니다。다양한차량기동과무작위로생성된측정잡음을시뮬레이션하여필터성능을확인했습니다。칼만필터를통해차량의위치측정값을향상시키고속도추정값을얻을수있었습니다。
bdclose (“ctrlKalmanNavigationExample”);