আমি বর্তমানে বিদ্যালয়ের জন্য এমন একটি প্রকল্পে কাজ করছি যেখানে আমার একটি লেজার স্ক্যানার সহ একটি পয়েন্ট রোবটের জন্য বর্ধিত কালম্যান ফিল্টার প্রয়োগ করতে হবে। রোবটটি 0 ডিগ্রি টার্ন ব্যাসার্ধের সাথে ঘোরানো যেতে পারে এবং সামনে ড্রাইভ করতে পারে। সমস্ত গতিগুলি টুকরোজ লিনিয়ার (ড্রাইভ, ঘোরানো, ড্রাইভ)।
আমরা যে সিমুলেটরটি ব্যবহার করছি তা ত্বরণকে সমর্থন করে না, সমস্ত গতি তাত্ক্ষণিক।
আমাদের কাছে একটি পরিচিত মানচিত্র (পিএনজি চিত্র) রয়েছে যা আমাদের স্থানীয়করণ করতে হবে la লেজার স্ক্যানগুলি অনুকরণ করার জন্য আমরা চিত্রটিতে ট্রেস করতে পারি।
আমাদের এবং আমার অংশীদার যে গতি এবং সেন্সর মডেলগুলি আমাদের ব্যবহার করতে হবে সেগুলি সম্পর্কে কিছুটা বিভ্রান্ত।
এখনও অবধি আমরা রাজ্যটিকে ভেক্টর হিসাবে মডেলিং করছি ।
আমরা নীচে আপডেট সমীকরণ ব্যবহার করছি
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 স্পষ্টতই আমাদের প্রচারটি খুব সঠিক ছিল কারণ আমরা এখনও সিস্টেমে শব্দের প্রবর্তন করি নি।
মোশন মডেলের জন্য আমরা নিম্নোক্ত ম্যাট্রিক্স এফ এর জন্য ব্যবহার করছি:
এটি আমাদের আপডেট সূত্রগুলির জ্যাকবিয়ান হিসাবে। এটা কি সঠিক?
সেন্সর মডেলটির জন্য আমরা রোবটগুলির , এবং অবস্থান এবং মানচিত্রে রে ট্রেসিংয়ের সীমাবদ্ধ পার্থক্য গ্রহণ করে জ্যাকবিয়ান (এইচ) এর কাছাকাছি যাচ্ছি । আমরা টিএর সাথে কথা বলেছি যারা বলেছিল যে এটি কাজ করবে তবে আমি এখনও এটির ব্যাপারে নিশ্চিত নই। আমাদের অধ্যাপক দূরে রয়েছেন তাই আমরা দুর্ভাগ্যক্রমে তাকে জিজ্ঞাসা করতে পারি না। আমরা সংশোধন পদক্ষেপে 3 লেজার পরিমাপ ব্যবহার করছি যাতে এইচটি 3x3।
পি। কীভাবে আরম্ভ করতে হবে তা অন্যান্য সমস্যাটি আমরা 1,10,100 চেষ্টা করেছি এবং যখন মানচিত্রটি কেবল 50x50 হয় তখন তারা সমস্ত মানচিত্রের বাইরে (-90, -70) এ রোবটটি রাখে।
আমাদের প্রকল্পের কোডটি এখানে পাওয়া যাবে: https://github.com/en4bz/kalman/blob/master/src/kalman.cpp
কোন পরামর্শ ব্যাপকভাবে প্রশংসা করা হয়।
সম্পাদনা করুন:
এই মুহুর্তে আমি বেসিক গতিবিধির শব্দকে স্থির করার জন্য ফিল্টারটি অর্জন করেছি তবে কোনও আসল গতিবিধি নেই। যত তাড়াতাড়ি রোবট ফিল্টারটি সরাতে শুরু করে তাড়াতাড়ি দ্রুত ডাইভারেজ করে মানচিত্র থেকে প্রস্থান করে।