লেজার স্ক্যান + জ্ঞাত মানচিত্রের সাথে বর্ধিত কালম্যান ফিল্টার


10

আমি বর্তমানে বিদ্যালয়ের জন্য এমন একটি প্রকল্পে কাজ করছি যেখানে আমার একটি লেজার স্ক্যানার সহ একটি পয়েন্ট রোবটের জন্য বর্ধিত কালম্যান ফিল্টার প্রয়োগ করতে হবে। রোবটটি 0 ডিগ্রি টার্ন ব্যাসার্ধের সাথে ঘোরানো যেতে পারে এবং সামনে ড্রাইভ করতে পারে। সমস্ত গতিগুলি টুকরোজ লিনিয়ার (ড্রাইভ, ঘোরানো, ড্রাইভ)।

আমরা যে সিমুলেটরটি ব্যবহার করছি তা ত্বরণকে সমর্থন করে না, সমস্ত গতি তাত্ক্ষণিক।

আমাদের কাছে একটি পরিচিত মানচিত্র (পিএনজি চিত্র) রয়েছে যা আমাদের স্থানীয়করণ করতে হবে la লেজার স্ক্যানগুলি অনুকরণ করার জন্য আমরা চিত্রটিতে ট্রেস করতে পারি।

আমাদের এবং আমার অংশীদার যে গতি এবং সেন্সর মডেলগুলি আমাদের ব্যবহার করতে হবে সেগুলি সম্পর্কে কিছুটা বিভ্রান্ত।

এখনও অবধি আমরা রাজ্যটিকে ভেক্টর হিসাবে মডেলিং করছি ।(x,y,θ)

আমরা নীচে আপডেট সমীকরণ ব্যবহার করছি

void kalman::predict(const nav_msgs::Odometry msg){
    this->X[0] += linear * dt * cos( X[2] ); //x
    this->X[1] += linear * dt * sin( X[2] ); //y
    this->X[2] += angular * dt; //theta

    this->F(0,2) = -linear * dt * sin( X[2] ); //t+1 ?
    this->F(1,2) =  linear * dt * cos( X[2] ); //t+1 ?

    P = F * P * F.t() + Q;

    this->linear = msg.twist.twist.linear.x;
    this->angular = msg.twist.twist.angular.z;
    return;
}

আমরা ভেবেছিলাম যতক্ষণ না আমরা লক্ষ্য করেছি যে আমরা আরম্ভ করা ভুলে গিয়েছি Pএবং এটি শূন্য, তার মানে কোনও সংশোধন ঘটেনি until স্পষ্টতই আমাদের প্রচারটি খুব সঠিক ছিল কারণ আমরা এখনও সিস্টেমে শব্দের প্রবর্তন করি নি।

মোশন মডেলের জন্য আমরা নিম্নোক্ত ম্যাট্রিক্স এফ এর জন্য ব্যবহার করছি:

F=[10vΔtsin(θ)01vΔtcos(θ)001]

এটি আমাদের আপডেট সূত্রগুলির জ্যাকবিয়ান হিসাবে। এটা কি সঠিক?

সেন্সর মডেলটির জন্য আমরা রোবটগুলির , এবং অবস্থান এবং মানচিত্রে রে ট্রেসিংয়ের সীমাবদ্ধ পার্থক্য গ্রহণ করে জ্যাকবিয়ান (এইচ) এর কাছাকাছি যাচ্ছি । আমরা টিএর সাথে কথা বলেছি যারা বলেছিল যে এটি কাজ করবে তবে আমি এখনও এটির ব্যাপারে নিশ্চিত নই। আমাদের অধ্যাপক দূরে রয়েছেন তাই আমরা দুর্ভাগ্যক্রমে তাকে জিজ্ঞাসা করতে পারি না। আমরা সংশোধন পদক্ষেপে 3 লেজার পরিমাপ ব্যবহার করছি যাতে এইচটি 3x3।xyθ

পি। কীভাবে আরম্ভ করতে হবে তা অন্যান্য সমস্যাটি আমরা 1,10,100 চেষ্টা করেছি এবং যখন মানচিত্রটি কেবল 50x50 হয় তখন তারা সমস্ত মানচিত্রের বাইরে (-90, -70) এ রোবটটি রাখে।

আমাদের প্রকল্পের কোডটি এখানে পাওয়া যাবে: https://github.com/en4bz/kalman/blob/master/src/kalman.cpp

কোন পরামর্শ ব্যাপকভাবে প্রশংসা করা হয়।

সম্পাদনা করুন:

এই মুহুর্তে আমি বেসিক গতিবিধির শব্দকে স্থির করার জন্য ফিল্টারটি অর্জন করেছি তবে কোনও আসল গতিবিধি নেই। যত তাড়াতাড়ি রোবট ফিল্টারটি সরাতে শুরু করে তাড়াতাড়ি দ্রুত ডাইভারেজ করে মানচিত্র থেকে প্রস্থান করে।

উত্তর:


3
  • লেজার স্ক্যান এবং একটি পরিচিত মানচিত্রের ভিত্তিতে স্থানীয়করণের জন্য EKF ব্যবহার করা একটি খারাপ ধারণা এবং এটি কার্যকর হবে না কারণ EKF এর অন্যতম প্রধান অনুমান বৈধ নয়: পরিমাপের মডেলটি পৃথক নয়।

আমি মন্টি কার্লো লোকালাইজেশন (কণা ফিল্টারস) সন্ধানের পরামর্শ দেব। এটি কেবল আপনার পরিমাপের মডেলটিই সমস্যার সমাধান করবে না, তবে বৈশ্বিক স্থানীয়করণের অনুমতি দেয় (মানচিত্রের মধ্যে প্রাথমিক পোজ সম্পূর্ণ অজানা)।

সম্পাদনা: আমি দুঃখিত আমি অন্য একটি গুরুত্বপূর্ণ বিষয় উল্লেখ করতে ভুলে গেছি:

  • আপনি যদি ই কেএফ প্রয়োগ করতে চান তবে আপনার পরিমাপের মডেলটির পাশাপাশি আপনার মোশন মডেলটিতে কেবল গাউসিয়ান শব্দের অন্তর্ভুক্ত থাকতে পারে । এর অর্থ হল আপনার পরিমাপের মডেলটি হিসাবে লিখতে সক্ষম হতে হবে । এটি একটি মারাত্মক সীমাবদ্ধতা, যেহেতু এটি প্রব্যাবিলিস্টিক রোবোটিকসে বিম_রেঞ্জ_ফিন্ডার_মডেলের মতো আরও কিছু জটিল মডেলকে অনুমতি দেয় না, যা রোবটের সামনে গতিশীল বস্তুকেও অবৈধ (সর্বাধিক) পরিমাপ এবং সম্পূর্ণরূপে এলোমেলোভাবে পঠন বিবেচনা করে। আপনি অংশের জন্য রশ্মি কাস্ট করে এবং গাউশিয়ান আওয়াজ যোগ করতে আটকে যাবেন ।zt=h(xt)+N(0,Qt)h(xt)

La "লেজার স্ক্যান এবং পরিচিত মানচিত্রের ভিত্তিতে স্থানীয়করণের জন্য EKF ব্যবহার করা একটি খারাপ ধারণা" কে বলেছিলেন? রেফারেন্স প্রদান করুন। EKF সর্বাধিক সফল অনুমানক এবং অনেক কাগজপত্র স্থানীয়করণ সমস্যার জন্য EKF ব্যবহার করার পরামর্শ দেয়। আসলে, আপনি যা বলছেন তা সম্পর্কে আমি অবাক হয়েছি। ই কেএফের মূল অনুমানগুলি হ'ল গতি এবং পর্যবেক্ষণের মডেলগুলি লিনিয়ার এবং শব্দটি গাউসিয়ান। "পরিমাপের মডেলটি পার্থক্যযোগ্য নয় by" দ্বারা আপনি কী বোঝেন তা আমি জানি না।
ক্রোকো

মূল পোস্টারটিতে রেয়েট্রাকিংয়ের কথা বলা হয়েছে যার অর্থ তিনি সম্ভাব্য রোবোটিক্সে "রেঞ্জ সন্ধানকারীদের মরীচি মডেল" এর মতো একটি পরিমাপ মডেল ব্যবহার করতে চান। এই পরিমাপের মডেলটি জাম্পগুলি প্রদর্শন করে (কল্পনা করুন যে কোনও লেজার রশ্মি সবেমাত্র কোনও বাধা মারছে এবং এটি অনুপস্থিত: এটি কেবল একটি লাফের জন্য একটি ছোট ঘূর্ণন নেয় যা পার্থক্যজনক নয়))
সেবাসচ

0

প্রথমত, আপনি কোন ধরনের স্থানীয়করণ ব্যবহার করছেন সে সম্পর্কে কিছুই উল্লেখ করেননি। এটি পরিচিত বা অজানা চিঠিপত্রের সাথে?

এখন মতলবতে জ্যাকবীয়ান অর্জন করতে আপনি নিম্নলিখিতগুলি করতে পারেন

>> syms x y a Vtran Vrotat t
>> f1 = x + Vtran*t*cos(a);
>> f2 = y + Vtran*t*sin(a);
>> f3 = a + Vrotat*t;
>> input  = [x y a];
>> output = [f1 f2 f3];
>> F = jacobian(output, input)

ফলাফল

F =
[ 1, 0, -Vtran*t*sin(a)]
[ 0, 1,  Vtran*t*cos(a)]
[ 0, 0,               1]

প্রসারিত কালম্যান ফিল্টারটির জন্য সিস্টেমটি রৈখিক হতে হবে এবং শব্দটি গাউশিয়ান হতে হবে। এখানকার সিস্টেমটির অর্থ গতি এবং পর্যবেক্ষণের মডেলগুলি অবশ্যই রৈখিক হওয়া উচিত। লেজার সেন্সরগুলি রোবটের ফ্রেম থেকে একটি ল্যান্ডমার্কের দিকে ব্যাপ্তি এবং কোণ দেয়, সুতরাং পরিমাপের মডেলটি লিনিয়ার নয়। সম্পর্কে P, আপনি যদি এটি বড় হিসাবে ধরে নেন তবে আপনার EKF অনুমানকটি শুরুতে দরিদ্র হবে এবং এটি পূর্ববর্তী রাষ্ট্রের ভেক্টর উপলভ্য নয় বলে এটি পরিমাপের উপর নির্ভর করে। তবে, একবার আপনার রোবটটি চলন্ত এবং সংবেদনশীল হয়ে উঠলে, ইকেএফ আরও ভাল হয়ে উঠবে কারণ এটি রোবটের ভঙ্গিটি অনুমান করতে গতি এবং পরিমাপের মডেলগুলি ব্যবহার করে। আপনার রোবট যদি কোনও ল্যান্ডমার্ক সংবেদন না করে তবে অনিশ্চয়তা মারাত্মকভাবে বৃদ্ধি পায়। এছাড়াও, আপনার কোণ সম্পর্কে সতর্কতা অবলম্বন করা উচিত। সি ++ এ,cos and sinকোণটি রেডিয়ান হতে হবে। এই সমস্যাটি সম্পর্কে আপনার কোডে কিছুই নেই। আপনি যদি রেডিয়ানে আপনার গণনা করার সময় ডিগ্রি এঙ্গুলের গোলমাল ধরে থাকেন তবে আপনি অদ্ভুত ফলাফল পেতে পারেন কারণ রেডিয়ানের গণনাগুলি বিশাল হিসাবে বিবেচিত হওয়ার সময় একটি ডিগ্রি গোলমাল হিসাবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.