কম্পিউটার ভিশন ব্যবহার করে পিআইডি অ্যালগরিদম বাস্তবায়ন


10

আমি একটি স্বয়ংক্রিয় গোলকধাঁধা গোলকধাঁধা সমাধানকারী তৈরি করছি এবং আমার গোলকধাঁধা নিয়ন্ত্রণ করতে একটি ওয়েবক্যাম ব্যবহার করছি।

অন্যান্য ফোরামে দেওয়া পরামর্শের ভিত্তিতে, আমি এই মুহুর্তে কমপক্ষে এক দিক থেকে গোলকধাঁধার বলের চলাচল নিয়ন্ত্রণ করার চেষ্টা করছি। সুতরাং, আমি দুটি স্থানাঙ্কী 466,288 এবং 466,152 এর মধ্যে আমার বল চলাচলকে নিয়ন্ত্রণ করার চেষ্টা করছি। স্টিপার মোটর কন্ট্রোলার বোর্ডের ইনপুট সময়, প্রতিটি অক্ষের জন্য x এবং y এর জন্য ঘোরানোর কোনও পদক্ষেপ নেই।

আমি যে স্টিপার মোটর কন্ট্রোলার বোর্ডটি ব্যবহার করছি তা হ'ল ডিম বট স্টিপার মোটর কন্ট্রোলার বোর্ড: http://www.sparkfun.com/products/10025

সুতরাং দুটি পয়েন্টের মধ্যে যাওয়ার জন্য, আমি কি দুটি পয়েন্টের মধ্যে 288 এবং 152 (260 240 230 ... 150) বলি এবং আমার বলের গতিবিধি সংশোধন করব?

আমার চিত্র প্রক্রিয়াকরণ অ্যালগরিদমটি বলটি ট্র্যাক করার জন্য এত দ্রুত নয় যে বলটি কেবল স্পিন করে কোনও গর্তে পড়ে।

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

http://www.youtube.com/watch?v=Prq78ctJ2Rk&feature=player_embedded

আমি এমন একটি চিত্র প্রক্রিয়াকরণ সরঞ্জামও পেয়েছিলাম যেখানে তারা বলের চলাচলের জন্য ওয়ে পয়েন্ট ব্যবহার করে একই সমস্যাটি সমাধান করেছিল। একই সমস্যার অনেকগুলি সমাধান দেখে সমস্যাটি সমাধান করতে গিয়ে আমি সম্পূর্ণ বিভ্রান্ত হয়ে পড়েছি। আমি সচেতন যে আমার একটি পিআইডি নিয়ন্ত্রক প্রয়োগ করা উচিত। তবে কীভাবে পর্যায়ক্রমে সমস্যাগুলি সমাধান করা উচিত? আমি সমস্যাটি সমাধানের জন্য একটি প্রধানশিক্ষা খুঁজে পেয়ে আটকে গিয়েছি এবং হতাশ।

আমার সেটআপটি দেখতে এমন দেখাচ্ছে:

সেটআপের ছবি

... এবং এখানে আমার সফ্টওয়্যারটির একটি স্ক্রিনশট রয়েছে:

স্ক্রিনশট

পুনর্বিবেচনা 2: আমিও এখন একটি নতুন সমস্যার মুখোমুখি হয়েছি: এর আগে আমি আড়ডিনো সিরিয়াল বন্দর জাভা অ্যাপলেট মাধ্যমে স্টিপার মোটরগুলি নিয়ন্ত্রণ করেছিলাম। আমি অ্যাপলেট ব্যবহার করে স্টেপারগুলি চালাতে সক্ষম হয়েছি।

সিরিয়াল বন্দর দিয়ে যোগাযোগের চেষ্টা করার সময় আমাকে বোর্ডটি পুনরায় সেট করতে হবে। এছাড়াও, যখন কোনও আদেশ না প্রেরণ করা হয় তখন স্টিপার মোটর ছোট ব্যবধানে নিজেকে জোর দেয়। যখন স্টিপার মোটরটি এই মোডে প্রবেশ করে, আমি বোর্ডটি পুনরায় সেট না করেই আমার বোর্ডটি নিয়ন্ত্রণ করতে পারি না। কোন সহায়তা প্রশংসা করা হবে।

সংশোধন 3:

আমি কিছু অগ্রগতি করেছি যেখানে আমি পিআইডি অ্যালগরিদম বাস্তবায়িত করেছি। দয়া করে নীচের ভিডিওটি সন্ধান করুন : http://www.youtube.com/watch?v=MEfp7RqPmqY

এখন পিআইডি অ্যালগরিদম যে গতিতে প্রয়োগ করা হয় তাতে আমার সমস্যা আছে। আসলে আমার চিত্র প্রক্রিয়াকরণটি 200 এমএসে একটি চক্র সমাপ্ত করে, একটি বল সনাক্ত করে এবং কমান্ডগুলি স্টিপার মোটর নিয়ামক বোর্ডকে প্রেরণ করে। যদিও আমার সিরিয়াল বন্দরটি নির্দেশগুলি স্যুইচ করতে কমান্ড প্রেরণ করা হয়েছে, আমার স্টিপার একই দিকে ঘুরতে থাকে। আপনি উপরের ভিডিওতে অদ্ভুত আচরণ খুঁজে পেতে পারেন।

আমার ধারণাটি হ'ল আমার পিআইডি মানগুলি সিলিংয়ের সাথে সীমাবদ্ধ করা উচিত যেখানে গণনা করা পিআইডি মান 100 এর চেয়ে বেশি হয় তবে আমার কেবল 100 টি প্রেরণ করা উচিত I এ সম্পর্কে আপনার মতামত শুনতে আমি অপেক্ষা করছি।

আমি পিআইডি নিয়ন্ত্রণকারীকে যেভাবে প্রয়োগ করেছি তা হ'ল আমি টেম্পলেটটির শুরুর পয়েন্টটি টেম্পলেটটির সাথে মিলে যাওয়া অ্যালগরিদম ব্যবহার করে চিহ্নিত করেছি এবং বলটিকে অন্য একটি টেম্পলেট মিলে যাওয়া অ্যালগরিদম ব্যবহার করে সনাক্ত করেছি। এখন, আমি বলটিকে প্রারম্ভিক বিন্দু টেমপ্লেটের সেন্ট্রয়েডে নিয়ে এসেছি। আমি কীভাবে এটি পিআইডি অ্যালগরিদমের সাথে সরলরেখাকে অনুসরণ করব?

রিভিশন 4:

ব্লব ট্র্যাজেক্টরি বিচ্ছিন্ন

আমি ট্র্যাজেক্টোরিটি বিচ্ছিন্ন করেছি তবে আমি প্রথম দিক থেকে সঠিক পিক্সেল স্থানাঙ্কগুলি মুদ্রণের জন্য সঠিক ফাংশনটি খুঁজে পাচ্ছি না। কোন চিন্তা?


1
পুনঃ পিএস: তারপরে কেবল চিত্রটির একটি লিঙ্ক পোস্ট করুন এবং আমি নিশ্চিত যে কেউ আসবেন এবং চিত্রটি নিজেই এটি প্রতিস্থাপন করবেন ...
মাজনকো

@ ম্যাট - ফিক্সড! তবে, আমি পছন্দ করি যে ব্যবহারকারী কেবল চিত্রগুলির লিঙ্কগুলি নয়, চিত্রগুলির সাথে লেখার জন্য পাঠ্য সরবরাহ করেছিলেন। আমি নিশ্চিত না যে @ সাই তাদের কোথায় চেয়েছিল, আমি কেবল তাদের নীচে রেখেছি put
কেভিন ভার্মির

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

@ ফেক - স্টেপারদের এ নিয়ে কোনও সমস্যা হওয়া উচিত নয়। বোর্ডটি খুব বেশি ওজন করে না এবং এর ওজন ভারসাম্যপূর্ণ। আমার হাতে 40 সেন্টিমিটার লম্বা একটি প্রাচীরের ঘড়ি রয়েছে এবং এটি অন্য যেভাবে একটি ছোট প্রক্রিয়া দ্বারা নিয়ন্ত্রিত হয়, এটি একটি স্টিপারও। (5 সেন্টিমিটার 5 সেমি প্রক্রিয়াটি ঘড়ির 80 সেমি ব্যাসের তুলনায় হাস্যকরভাবে ছোট দেখায়)
স্টিভেনভ

@ ফেক: স্টিভ ঠিক আছে। স্টিপার নিয়ে আমার সমস্যা নেই। এটি পিআইডি অ্যালগরিদম সম্পর্কে সমস্ত
সায়

উত্তর:


2

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

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

পিআইডি নিয়ন্ত্রণের জন্য, আপনার কাছে দুটি পৃথক পিআইডি নিয়ন্ত্রক প্রয়োজন এমনটি শুরু করুন, একটি পূর্ব-পশ্চিম মোটরের জন্য, অন্যটি উত্তর-দক্ষিণের জন্য। আপনার যদি দুটি সঠিক মোটর থাকে তবে তাদের পরামিতিগুলি সমান হতে হবে।

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

ট্রাজেক্টোরিটি পেতে, আপনাকে ইমেজটি প্রক্রিয়া করতে হবে এবং পাথটি পেতে হবে , পাশাপাশি এটির শুরু এবং শেষ পয়েন্টও। আপনার অ্যালগরিদম এই মুহূর্তে বোর্ডের বাকী অংশ থেকে পথটি আলাদা করতে সক্ষম কিনা তা আমি নিশ্চিত নই, তবে যদি তা না হয় তবে নোট করুন যে এটি চালিয়ে যাওয়ার আগে পরিচালনা করতে এটির নিজস্ব একটি অ্যালগরিদম। আবার, আপনি কিছু অংশ দ্রুত দেখার জন্য আগ্রহী হয়ে থাকলে জংশন পয়েন্টগুলিতে ম্যানুয়ালি প্রবেশ করে আপনি এই অংশটি এড়িয়ে যেতে পারেন। যাইহোক, আপনার সেটপয়েন্টের গতির সংজ্ঞা দিতে সক্ষম হওয়া উচিত এবং আপনার সফ্টওয়্যারটি শুরু থেকে শেষের দিকে পাথের উপরের কাঙ্ক্ষিত স্থানাঙ্কের অবস্থানটি সরিয়ে নিতে পারে । স্পষ্টতই, আপনি কম পছন্দসই গতি দিয়ে শুরু করবেন।

সুতরাং, নিয়ন্ত্রণ দিয়ে শুরু করার আগে, আপনাকে প্রথমে নীচের চেকলিস্টটি দিয়ে যেতে হবে:

  • দ্রুত প্রতিক্রিয়া পেতে আপনার চিত্র প্রক্রিয়াকরণ অ্যালগরিদমকে সহজ করুন
  • একটি অ্যালগরিদম তৈরি করুন যা পূর্বনির্ধারিত গতি ব্যবহার করে আপনার পথ ধরে একটি ট্র্যাজেক্টরি তৈরি করে
  • প্রতিটি ফ্রেমে:
    • ট্রাজেক্টোরি এবং বলের অবস্থানের মধ্যে পার্থক্য গণনা করুন
    • পূর্ব-পশ্চিম পিআইডি-তে ব-দ্বীপ-এক্স অংশটি পাস করুন, ব-দ্বীপ-উত্তরটি উত্তর-দক্ষিণ পিআইডি-তে যান pass

এটি পরিণত হতে পারে যে একবারে ট্রাজেক্টোরির একটি সেগমেন্ট তৈরি করা আরও ভাল এবং সেই বলটি আগেরটিটি শেষ করার পরে পরবর্তী বিভাগের সাথে চালিয়ে যাওয়া ভাল। অন্যথায়, আপনাকে খেয়াল রাখতে হবে যে বলটি পছন্দসই ট্র্যাজেক্টোরির (যেটি করা কঠিন হতে পারে) কাটিয়ে উঠতে পারে না doesn't


1

আপনার যদি উভয় অক্ষের জন্য ক্যামেরা এবং মোমেন্টারি পড়ার জন্য একটি স্থির অবস্থান থাকে তবে আপনার ফ্রেমে আঁকা পথ, গর্ত এবং দেয়াল চিনতে হবে না। এটি সেটআপের সময় এক শট করা যেতে পারে। রান-টাইমে আপনাকে কেবল একক চকচকে ধাতব বলের সঠিক অবস্থান সন্ধান করতে হবে।

বলটি স্পট করতে আপনি 1 স্থির স্পট আইআর এলইডি এবং ক্যামেরায় সরুবন্ধ ফিল্টার ব্যবহার করতে পারেন। অ্যালগরিদমকে অবশ্যই সবচেয়ে উজ্জ্বল পিক্সেল গণনা করতে হবে এবং এক্স, ওয়াই থেকে রিয়েল এক্স, ওয়াইতে অ্যাকাউন্টে পদক্ষেপ গ্রহণের মতো অনুবাদ করতে হবে:

  • সবচেয়ে উজ্জ্বল পিক্সেল খুঁজে
  • উভয় অক্ষের জন্য কোণ ব্যবহার করুন (सर्वो থেকে পড়া) ক্যামেরা থেকে দূরত্বটি পুনরুদ্ধার করতে
  • অক্ষ অবস্থান পঠনের জন্য টাইমস্ট্যাম্প ব্যবহার করুন
  • প্রয়োজনে পজিশনের পড়ার জন্য সময়ের মাধ্যমে ইন্টারপোলেশন প্রয়োগ করুন
  • লেন্সের জ্ঞাত বিকৃতি ব্যবহার করুন
  • বিশ্বের এক্স, ওয়াইয়ের সত্যিকারের বলটি খুঁজে পেতে নির্ভুল গোলক থেকে প্রতিবিম্বের কোণে বিশ্ব এক্স, ওয়াই পিক্সেলের অনুবাদ করুন
  • ফ্রেমের আসল সময়টি পুনরুদ্ধার করতে ডেল্টা সময়
  • প্রয়োজনে বোর্ড প্লেন এক্স, ওয়াইসে পজিশনের সময় বিভাজন
  • এক্স, ওয়াই (টি) ফলাফলটি পিআইডি অ্যালগরিদমে প্রেরণ করুন
  • ট্র্যাজেক্টোরি জেনারেটর / সিকোয়েন্স থেকে দ্বিতীয় ফিড লক্ষ্য এক্স, ওয়াই (টি) প্রেরণ করুন
  • আউটপুট সম্পর্কে পিআইডি সিদ্ধান্ত নিতে দিন
  • এক্সিকিউট আউটপুট (শেষ পদক্ষেপগুলি সমান্তরালভাবে করা যেতে পারে)

এটি গণনামূলকভাবে নিবিড় হওয়া উচিত নয় এবং বেশিরভাগ ক্ষেত্রে নিখুঁত মানগুলির উপর নির্ভর করে।

সাধারণত, ছোট সিপিইউ এটি ফ্রেমরেটের গতির সাথে করা উচিত।


আমি নিশ্চিত না যে আমি আপনার সমাধানটি বুঝতে পেরেছি। আমি আপনার সমাধান আকর্ষণীয় মনে। আমি কীভাবে নিশ্চিত করব যে আমার বলটি সঠিক পথে চলছে? আমার কি নিশ্চিত হওয়া উচিত যে অনুসরণ করার জন্য আমার কাছে একটি সেটপয়েন্ট রয়েছে?
সাঁই

হ্যাঁ. মোশন কন্ট্রোল সফ্টওয়্যারটিতে সর্বদা একটি "ট্র্যাজেক্টোরি জেনারেটর" থাকা আবশ্যক, যা সময়মত প্রদত্ত কোনও পদক্ষেপের জন্য এক্স, ওয়াই (টি) এর আদর্শ সীমাবদ্ধ ক্রম উত্পাদন করে। এই ক্রমটি নিয়ন্ত্রণ লুপের প্রথম ইনপুটকে খাওয়ানো হয়, নিয়ন্ত্রণ লুপের দ্বিতীয় ইনপুটটি আসল অবস্থানগুলির ক্রম। নিয়ন্ত্রণের রুটিন অবশ্যই অবস্থান / গতি / ত্বরণ ত্রুটি গণনা করতে হবে এবং পিআইডির সাথে তত্ক্ষণাত সমস্ত ত্রুটি প্রশস্ত / সংমিশ্রণ করতে হবে এবং ফলস্বরূপ সংশোধনকারী সংকেত তৈরি করে।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.