সুনির্দিষ্ট
এ খুঁজছি PID, বেসিক উদাহরণ আমি মনে করি যে আপনি শুধু PID, নিয়ামক, প্রতিটি চাকা এনকোডার এবং PWM জন্য এক দুটি অনুলিপি instantiate করা প্রয়োজন:
PID leftPID(&InputLeft, &OutputLeft, &SetpointLeft,2,5,1, DIRECT);
PID rightPID(&InputRight, &OutputRight, &SetpointRight,2,5,1, DIRECT);
তারপরে, আপনার loop()
সমতুল্য, আপনি কেবল উভয় এনকোডার পড়ুন, প্রতিটি এনকোডার মান প্রাসঙ্গিক করে দিন PID
এবং শেষ পর্যন্ত উভয় পিডাব্লুএম মান লিখুন।
আপাতত SetpointLeft
এবং SetpointRight
আসলে একই মানের দিকে নির্দেশ করতে পারে তবে এগুলি আলাদাভাবে সংজ্ঞায়িত করা আপনাকে পরে ঘুরিয়ে দেওয়ার ক্ষমতা যোগ করতে দেয় allows
ধারণা
যদিও এটি বেসিক ক্ষেত্রে কাজ করতে পারে, এটি আপনার পর্যাপ্ত লাইনের প্রয়োজন কতটা সঠিক তার উপর নির্ভর করে really
প্রদত্ত যে প্রতিটি চাকাতে আপনার এনকোডার রয়েছে, আপনি যদি দুটি পিআইডি লুপ চালনা করেন এবং প্রতিটি চাকার নীচের ত্রুটির তুলনা করেন তবে আপনার চাকাগুলি পিছলে না যায় ধরে ধরে আপনি সম্ভাব্যভাবে আপনার সর্বোচ্চ অ্যাবে ত্রুটিটি গণনা করতে পারেন । যদি ত্রুটিটি আপনার প্রয়োজনের তুলনায় ছোট হয়, তবে আপনার প্রয়োজন মৃত গণনা ।
তবে যদি আপনার চাকাগুলি পিছলে যাওয়ার ঝুঁকিতে পড়ে থাকে তবে আপনার কন্ট্রোল সিস্টেমটি সনাক্ত করতে পারে না এমন নীচের ত্রুটিটি লুকিয়ে থাকতে পারে এবং আপনার চাকা এনকোডারগুলির থেকে আলাদাভাবে একটি স্লিপ সনাক্ত করতে বা অবস্থান নির্ণয়ের জন্য আপনাকে কিছু উপায়ের প্রয়োজন হবে এবং তারপরে সংশোধন করার জন্য উচ্চ স্তরের সফ্টওয়্যার ব্যবহার করুন একটি সরলরেখা বজায় রাখার জন্য চাকা অবস্থান / গতিবেগ দাবি করেছে।
আপেক্ষিক অবস্থান নির্ধারণ
জন পরামর্শ হিসাবে , আপনি অবস্থান নির্ধারণের জন্য অ্যাক্সিলোমিটার ব্যবহার করতে সক্ষম হতে পারেন, তবে তাদের যথার্থতা এবং সময়ের সাথে সাথে জমা হওয়া ত্রুটির প্রভাবের কারণে আপনি চাকা স্লিপেজ সনাক্ত করতে এবং সঠিক করার জন্য অ্যাক্সিরোমিটার ডেটা ব্যবহার করা ভাল।
মোবাইল রোবোটিক্সে, কলম্যান ফিল্টারিং কৌশলগুলি সাধারণত একিলারোমিটার এবং হুইল এনকোডারগুলির মতো বর্তমান অবস্থানটি আরও ভালভাবে নির্ধারণ করার জন্য একাধিক উত্স থেকে ডেটা ফিউজ করতে ব্যবহৃত হয়।
যাইহোক আপনি আপেক্ষিক অবস্থানের দৃ determination় সংকল্পের সাথে যাই করুন না কেন, সময়ের সাথে সাথে আপনি নিজেকে যে অবস্থানটিতে বিশ্বাস করেন তা আপনার আসল শারীরিক অবস্থান থেকে দূরে চলে যাবে।
সম্পূর্ণ অবস্থান নির্ধারণ
এটির কাছে যাওয়ার একমাত্র উপায় হ'ল আপনার যানবাহনের ফ্রেমের বাইরে রেফারেন্স পয়েন্ট।
উদাহরণস্বরূপ একটি রুমবা ঘরের চারদিকে ঘোরাঘুরি করার জন্য মৃত গণনা ব্যবহার করে তবে যখনই এটি ডক করার দরকার হয় তখন এটি চার্জিং ডকের মাধ্যমে প্রেরিত ইনফ্রা-রেড লাইটের একটি মরীচি সন্ধান করে। রুম্বা এলোমেলোভাবে সেই শিমের মধ্যে দিয়ে যায়, এটি এটি সনাক্ত করে, মরীচিটি তালাবদ্ধ করে এটি আবার উত্সটিতে অনুসরণ করে। এটি সংঘর্ষক সেন্সরগুলির সাথে সম্মিলিতভাবে, চার্জ করা পরিচিতিগুলিতে এটি নির্ভুলভাবে নিজেকে অবস্থান করে।
আপনার রোবটের জন্য, এটির কোনও হোম পজিশন থাকতে পারে, যেখানে এটি আবার ফিরে যেতে পারে এবং সনাক্ত করতে পারে যে এটি সেই পরিচিত স্থানে রয়েছে। এই মুহুর্তে এটি ঠিক কোথায় তা জানে এবং এটির অবস্থান নির্ধারণের অবস্থানটি প্রকৃত অবস্থান থেকে কত দূরে তা রিপোর্ট করতে পারে।
আর একটি বিকল্প, আপনার কয়েক হাজার মিটারের ওপরে সোজা লাইনে ভ্রমণ করার জন্য যদি আপনার রোবটটির প্রয়োজন হয় তবে এটি একটি আরডুইনো জিপিএস ঝাল যুক্ত করার মতো কোনও ভিন্ন কৌশলতে স্যুইচ করতে হবে ।
কৌশল সমন্বয়
শেষ পর্যন্ত, আপনার নির্ভুলতার প্রয়োজনীয়তার উপর নির্ভর করে আপনাকে এই কৌশলগুলির সংমিশ্রণটি ব্যবহার করতে হতে পারে।
যদি কোনও গাইড মরীচি সম্ভব হয় তবে আপনি কোনও অদৃশ্য লাইনের নীচের কৌশলটি দিয়ে খুব সহজেই যা করতে চান তা করতে সক্ষম হতে পারেন । যদি আপনাকে কোনও অবিচ্ছিন্ন অঞ্চলে যথেচ্ছ সরলরেখায় স্থানান্তরিত করতে হয়, তবে রুম্বার মতো আপনি এক কার্টেসিয়ান অক্ষে আপনার সংশ্লেষিত অবস্থানটি সংশোধন করার জন্য গাইড বিমের একটি জোড়া (একে অপরের ডান কোণে) ব্যবহার করতে সক্ষম হতে পারেন প্রতিবার রোবট একটি মরীচি পাস করে।
এখানে প্রচুর বিকল্প রয়েছে এবং আপনি যা পছন্দ করেছেন তা আপনার প্রয়োজনীয়তার উপর নির্ভর করবে।