ردیابی مسیر با فیلتر کالمن با متلب به همراه داکیومنت
در این پست پروژه ردیابی مسیر با فیلتر کالمن با متلب به همراه داکیومنت را به صورت رایگان آماده کرده ایم که امیدواریم مورد استفاده و رضایت شما کاربران عزیز قرار گیرد. تمامی خطوط برنامه به فارسی کامنت گذاری شده است.
در برنامه ردیابی مسیر با فیلتر کالمن ، فیلتری اعمال شده است که مسیری را برای آغاز حرکت از زمین با سرعت زاویه ۴۰ درجه آغاز می کند و این همان قسمت قرمز رنگ است که در تصویر بالا مشاهده می فرمائید.
سپس دماغه به جهت تشخیص یک شی از دماغه یا شبیه سازی اندازه گیری دماغه ، اعمال شده است. بعد از آن نویز گوسین به طور تصادفی که اعداد تصادفی برای توزیع گوسین با انحراف استاندارد سیگما میدهد، تولید شده و فیلتر کالمن به آن اعمال شده است.
فیلتر کالمن ، تخمین حالت های سیستم در زمان به کمک یک سری اطلاعات در رابطه با مدل را میدهد. در پروژه ردیابی مسیر با فیلتر کالمن ، اطلاعات شامل حرکت آزاد در جهت افقی و حرکت شتاب در جهت عمودی می باشند. قابل ذکر است که شتاب ثابت می باشد. بدنه کلی نیز با مکان (x,y) و سرعت (vx,vy) و شتاب عمودی ay توصیف می شود.
در ادامه، فیلم و تصویر خروجی دیگر، و دانلود رایگان پروژه ردیابی مسیر با فیلتر کالمن با متلب به همراه داکیومنت فراهم شده است.
کدهای برنامه ردیابی مسیر با فیلتر کالمن با توضیحات:
clc; clear; close all; % آماده سازی متلب برای اجرا - پاک کردن نوشته ها در خط فرمان، پاک کردن % فرامین در محیط کاری و بستن همه پنجره های از قبل باز al=40*pi/180; % زاویه سرعت در آغاز کار v0=10; % سرعت اولیه g=9.8; % ثابت گرانش vx=v0*cos(al); vy=v0*sin(al); % سرعت اولیه در محور ایکس و وای x=0; y=0; % مکان اولیه در محور ایکس و وای dt=0.02; % گام زمانی sgx=0.02; % سیگمای ایکس sgy=0.02; % سیگمای وای % در زیر تولید مسیر اصلی تعریف شده است xa=[]; % مختصات ایکس ذخیره می گردد ya=[]; % مختصات وای ذخیره می شود vxa=[]; % اجزای ایکس سرعت ذخیره می شود vya=[]; % اجزای وای سرعت ذخیره می شود ta=[]; % در اینجا زمان ذخیره می گردد xna=[]; % محل ذخیره دماغه مختصات ایکس yna=[]; % محل ذخیره دماغه مختصات وای t=0; % زمان شروع برای ردیابی مسیر % در زیر حلقه بی نهایت استفاده شده است while 1 xa=[xa x]; ya=[ya y]; vxa=[vxa vx]; vya=[vya vy]; ta=[ta t]; xna=[xna x+sgx*randn]; yna=[yna y+sgy*randn]; % در دو خط بالا نویز گاوسیان اعمال می شود if y<0 break end % شرط بالا به منظور بازگشت به سطح می باشد و سپس توقف حرکت % با توجه به مسیرهای یافت شده و ردیابی شهد نیاز به بروز رسانی می باشد x=x+vx*dt; % vx~(x(k+1)-x(k))/dt => x(k+1)~x(k)+vx*dt y=y+vy*dt; vy=vy-g*dt; t=t+dt; % دقت شود که % vx % تغییر نمی کند end % رسم خروجی بخش های بالا figure; plot(xna,yna,'b-'); xlabel('x, m'); ylabel('y, m'); legend('real curve','noised curve'); % در بخش زیر فیلتر کالمن اعمال شده است R=[sgx^2 ۰ ۰ sgy^2]; % ماتریس کواریانس برای دماغه ایکس و وای H=[1 0 0 0 0; ۰ ۰ ۱ ۰ ۰]; % ماتریس مشاهده ای F=[ 1 dt 0 ۰ ۰ ۰ ۱ ۰ ۰ ۰ ۰ ۰ ۱ dt 0 ۰ ۰ ۰ ۱ dt ۰ ۰ ۰ ۰ ۱ ]; % ماتریس انتقال حالت P=eye(5); % میزان اولیه ماتریس پی I=eye(5); % ماتریس واحد xc=[xna(1) ۰ yna(1) ۰ ۰]; % حدس مقدار اولیه تخمین بردار حالت برای ایکس و وای برای دریافت موقعیت اولیه % دماغه ها که برای % vx , vy , ay % صفر می باشد z=[xna yna]; % مشاهده ماتریس حالت xca=xc; % داده های % xc % در % xca % ذخیره می شوند % در حلقه زیر شمارنده حلقه است که آغاز آن از گام دوم اجرایی است - منظور % زمانی است که فیلتر کالمن به آن اعمال می شود nc=2; for t=ta(2:end) Ps=F*P*F'; K=Ps*H'*(H*Ps*H'+R)^(-1); xc=F*xc+K*(z(:,nc)-H*F*xc); P=(I-K*H)*Ps*(I-K*H)'+K*R*K'; xca=[xca xc]; nc=nc+1; end % رسم با مسیر که روی آن فیلتر کالمن اعمال شده است hold on; plot(xca(1,:),xca(3,:),'r-','linewidth',2); legend('noised','filtered'); title('trajectory'); % رسم گراف سرعت در پنجره ای جداگانه figure; plot(ta,xca(2,:),'r-','linewidth',2); hold on; plot(ta,vxa,'r--'); plot(ta,xca(4,:),'b-','linewidth',2); plot(ta,vya,'b--'); xlabel('time, s'); legend('filtered vx','original vx','filtered vy','original vy'); title('velocities');
تصویر خروجی ۲:
مشاهده ویدئو در این باره
سلام اگه مقاله این پروژرو هم دارید لطفا تو سایت بزارید دستتون درد نکنه .