সুচিপত্র:

রোবো-টেকনিশিয়ান: 8 টি ধাপ
রোবো-টেকনিশিয়ান: 8 টি ধাপ

ভিডিও: রোবো-টেকনিশিয়ান: 8 টি ধাপ

ভিডিও: রোবো-টেকনিশিয়ান: 8 টি ধাপ
ভিডিও: Hollow block making machine কংক্রিট হলো ব্লক তৈরির মেশিন Made in Bangladesh/ Abdul Alim 2024, জুলাই
Anonim
রোবো-টেকনিশিয়ান
রোবো-টেকনিশিয়ান

এক সেকেন্ডের জন্য কল্পনা করুন যে আপনি মঙ্গলে অবতরণকারী নভোচারীদের মধ্যে একজন। আপনার লক্ষ লক্ষ কাজ করার আছে, নমুনা নিতে হবে, পরীক্ষা চালাতে হবে, তথ্য সংগ্রহ করতে হবে, কিন্তু দিনে একবার বা দুবার আপনি যে বাসস্থান এবং/অথবা গবেষণার মডিউলগুলি ঘুরে বেড়াবেন এবং সেগুলি পরিদর্শন করার জন্য কাজ করবেন। এটি প্রয়োজনীয়, কাউকে নিশ্চিত করতে হবে যে জিনিসটি ভাল অবস্থায় আছে, হাজার হাজার টুকরো এবং অংশগুলি কাজ করছে এবং জায়গায় আছে। কিন্তু যদি এমন কিছু কর্তব্য থেকে আপনাকে মুক্তি দেওয়ার জন্য একটি স্বয়ংক্রিয় সাহায্যকারী থাকত। যদি একটি ছোট রোবট থাকে যা মডিউলের ভিতরে ঘুরে বেড়াতে পারে তা নিশ্চিত করার জন্য যে সবকিছু ঠিকঠাক আছে, কাজ করছে এবং নিরাপদ।

উদ্ধারের জন্য রোবো-টেকনিশিয়ান।

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

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

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

হার্ডওয়্যার

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

সফটওয়্যার

  • ম্যাটল্যাব (2018a এবং 2017b উভয়ই ব্যবহার করা হয়েছিল এবং সামান্য পার্থক্য দেখায়)
  • ম্যাটল্যাবের জন্য রাস্পবেরি পাই সাপোর্ট প্যাকেজ
  • ম্যাটল্যাবের সংযোগের জন্য রাস্পবেরি পাই কোড (নীচে প্রদত্ত সোর্স কোডের লিঙ্ক)
  • ম্যাটল্যাবের জন্য ইমেজ প্রসেসিং টুলবক্স (আপনি টুলবক্স ছাড়া এই প্রকল্পটি করতে পারবেন না)
  • :চ্ছিক: আপনার ফোনে ম্যাটল্যাব মোবাইল ইনস্টল করা আছে, যা আমি পরে ব্যাখ্যা করব

ধাপ 1: হার্ডওয়্যার সেট আপ

ef.engr.utk.edu/ef230-2018-08/projects/roo…

IRobot® একটি মৌলিক টিউটোরিয়াল সহ ম্যাটল্যাবের সাথে যোগাযোগ করতে পারে তা নিশ্চিত করার জন্য এটি বেস কোডের লিঙ্ক। যেমনটি আমি আগে বলেছি, আমি এই নির্দিষ্ট অংশটি কভার করব না কারণ টিউটোরিয়ালটি ইতিমধ্যে খুব ভালভাবে সাজানো হয়েছে। আমি উল্লেখ করব যে একবার আপনি লিঙ্কের পদক্ষেপগুলি অনুসরণ করলে, আপনি অন্তর্ভুক্ত তথ্যগুলি দেখার জন্য ম্যাটল্যাবের "ডক" কমান্ডটি ব্যবহার করতে পারেন। বিশেষভাবে:

ডক রুমবা

এবং আরো একটি খুব গুরুত্বপূর্ণ পয়েন্ট।

যখন আপনি উপরের লিঙ্ক থেকে ফাইলগুলি ডাউনলোড করেন, তখন আমি তাদের উপরে উল্লেখ করা ফোল্ডারে রাখুন, যেহেতু ম্যাটল্যাব ব্যবহারকারীর তৈরি ফাইলগুলিকে বর্তমান ওয়ার্কিং ফোল্ডারে থাকতে হবে।

যে পথের বাইরে, এর কোড চলুন।

ধাপ 2: সেই সব সেন্সর খোঁজা

সেই সব সেন্সর খোঁজা
সেই সব সেন্সর খোঁজা
সেই সব সেন্সর খোঁজা
সেই সব সেন্সর খোঁজা

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

এখানে হুইল ড্রপ সেন্সর আছে, কিন্তু এগুলি এই প্রকল্পে অব্যবহৃত, তাই আমরা সেন্সরগুলি পরীক্ষা করার দিকে এগিয়ে যাব।

ধাপ 3: পরামিতি সেট করার জন্য পরীক্ষা

পরামিতি সেট করার জন্য পরীক্ষা
পরামিতি সেট করার জন্য পরীক্ষা

আমরা রোবো-টেকনিশিয়ানকে তার কাজ করার জন্য পাঠানোর আগে, আমাদের এর নির্দিষ্ট কৌতুক এবং সেন্সর পরিসীমা বের করতে হবে। যেহেতু প্রতিটি iRobot® একটু ভিন্ন এবং রোবটের জীবনযাত্রার উপর পরিবর্তন, তাই আমাদের বুঝতে হবে যে সেন্সরগুলি যে এলাকায় কাজ করবে সেগুলোতে কীভাবে পড়বে। এটি করার সবচেয়ে সহজ উপায় হল হালকা রঙের পথ (আমি সাদা প্রিন্টার পেপারের স্ট্রিপ ব্যবহার করেছি কিন্তু হালকা রঙের কিছু করবে) যে পৃষ্ঠে রোবো-টেকনিশিয়ান কাজ করবে।

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

নিশ্চিত করুন যে রাস্পবেরি পাই iRobot® এ প্লাগ করা আছে এবং আপনার কম্পিউটার একই ইন্টারনেট সংযোগের সাথে সংযুক্ত। আপনি ম্যাটল্যাব কেন সংযোগ করবেন না তা বের করার চেষ্টা করে আপনার চুল টানতে কম সময় ব্যয় করবেন।

r = roomba (আপনি সেট আপ নম্বর)

এই পরিস্থিতিতে ভেরিয়েবল "r" প্রয়োজন হয় না, আপনি যা খুশি কল করতে পারেন, কিন্তু এটি একটি একক অক্ষর পরিবর্তনশীল ব্যবহার করা জীবনকে সহজ করে তোলে।

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

এখন কমান্ড দিয়ে পরীক্ষা সেন্সর শুরু করুন:

r.test সেন্সর

মনে রাখবেন যে "r।" হল পরিবর্তনশীল যা আপনি আগে সংজ্ঞায়িত করেছেন, তাই যদি এটি 'r' না হয় তবে 'r' পরিবর্তন করুন। আপনি যা সিদ্ধান্ত নিয়েছেন। এটি টন সেন্সর স্ক্রিনকে এক টন তথ্য সহ নিয়ে আসবে।

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

ধাপ 4: কোড শুরু করা

প্রথমে আপনি একটি ফাংশন নির্মাণ করবেন। আমি এটাকে "পথ" বললাম কিন্তু আবার, নামটির প্রয়োজন নেই, কিন্তু আমি এখন থেকে এটিকে "পথ" হিসাবে উল্লেখ করব।

কোডের উপরের অংশটি কিছু ব্যবহারকারীর ইনপুট বিকল্পগুলি স্থাপন করছে। এটি কিছু তালিকা তৈরি করে যা listdlg এ ব্যবহার করা হবে এবং তারপর একটি তালিকা ডায়ালগ বক্স নিয়ে আসে। এটি ব্যবহারকারীকে কোন পথের রঙ অনুসরণ করতে চায় তা নির্বাচন করতে দেয়, যা পরে খেলতে আসে।

তালিকা = {'লাল', 'নীল', 'সবুজ'}

problist = {'ক্যাজুয়ালিটি, সেভ ইমেজ', 'কম্পোনেন্ট আউট অফ প্লেস, সেভ ইমেজ', 'এক্সপেক্টেড, কন্টিনিউ'} pathcolor = listdlg ('PromptString', 'Select a Path Color' ', …' SelectionMode ',' single ', 'ListString', list) prob = 0; ড্রাইভ = ;

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

ধাপ 5: দ্য লুপের শীর্ষে: ফিজিক্যাল বাম্প সেন্সর

While লুপের উপরের অংশে রয়েছে ফিজিক্যাল বাম্প সেন্সর লজিক। মূলত, যখন রোবো-টেকনিশিয়ান কোন কিছুর মধ্যে দৌড়ে যায় তখন এটি থেমে যায় (অথবা সামনের বাম্প সেন্সরের জন্য এটি 0.1 মিটার ব্যাক আপ করে), তারপর ছবি তোলার জন্য নিজেই অবস্থান করে। প্রথমে বেগ এবং অবস্থান নিয়ন্ত্রণ অংশ কভার করা যাক।

যদি আপনি আগের ধাপে রোবো-টেকনিশিয়ানের সমস্ত সেন্সর পরীক্ষা করে থাকেন, তাহলে আপনি জানবেন যে বাম্প সেন্সরগুলির একটি লজিক ভ্যালু (0 বা 1) আছে যা শূন্যের সাথে সেন্সরের স্বাভাবিক, চাপ না দেওয়া অবস্থানের প্রতিনিধিত্ব করে। কোডের জন্য এটি মনে রাখবেন।

যখন সত্য %প্রধান যখন লুপ %বাম্পার তথ্য পায় S = r.getBumpers যদি S. বাম ~ = 0 r.stop elseif S.right ~ = 0 r.stop elseif S.front ~ = 0 r.stop end

এটি মৌলিক "যদি এটি কিছু আঘাত করে, বন্ধ করুন" অংশ। যদি সেন্সরগুলি সংঘর্ষ সনাক্ত করে, তবে এটি কোডের পরবর্তী অংশে চলে যায়, যা একটি ছবি পেতে রোবো-টেকনিশিয়ানের অবস্থানকে পুনরায় সামঞ্জস্য করে।

যদি S. বাম ~ = 0 %যদি লুপ বাম্পার তথ্য নেয় এবং ছবির জন্য ক্যামেরা সারিবদ্ধ করে r.turnAngle (5) বিরতি (0.5) img = r.getImage %ছবি নেয় এবং চিত্র প্রদর্শন করে (img) %ডায়ালগ বক্স prob = listdlg (' প্রম্পটস্ট্রিং ',' একটি অপ্রত্যাশিত বাধা পাওয়া গেছে, অনুগ্রহ করে শনাক্ত করুন '…,' সিলেকশন মোড ',' একক ',' লিস্ট স্ট্রিং ', সম্ভাব্য তালিকা) অন্যথায় S.right ~ = 0 r। getImage ইমেজ (img) prob = listdlg ('PromptString', 'একটি অপ্রত্যাশিত বাধা পাওয়া গেছে, অনুগ্রহ করে শনাক্ত করুন' '…,' SelectionMode ',' single ',' ListString ', problist) ifif S.front ~ = 0 r.moveDistance (- 0.1) বিরাম দিন (0.5) img = r.getImage image (img) prob = listdlg ('PromptString', 'একটি অপ্রত্যাশিত বাধা পাওয়া গেছে, অনুগ্রহ করে সনাক্ত করুন' …, 'SelectionMode', 'single', 'ListString', problist) শেষ

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

এখন আমি বাম্প সেন্সর অংশ এবং ফটো সেভিং অংশের মধ্যে একটি কোড বিভাগ োকালাম। এটি লাইটবাম্পার মান নেয় এবং ড্রাইভের গতি 0.025 মিটার/সেকেন্ড (খুব ধীর) সেট করে, যা আসলে প্রয়োজনীয় নয় কিন্তু এটি রোবো-টেকনিশিয়ানকে জিনিসগুলিতে আঘাত করে এবং অবশেষে শারীরিক বাম্প সেন্সরগুলি পরিধান করে।

L = r.getLightBumpers যদি L.left> 100 || হয় L.leftFront> 100 || L.rightFront> 100 || L.right> 100 driv = 0.025 r.setDriveVelocity (0.025) অন্যথায় driv = 0.1 end

এটি এমন একটি অংশ হবে যেখানে আপনি যে মানগুলি পর্যবেক্ষণ করেছেন (এবং আশা করি লিখেছেন) আগে এসেছিল।

এল। ধারণাটি হল যে যদি রোবো-টেকনিশিয়ান তার সামনে কয়েক সেন্টিমিটার কিছু টের পায় তবে তা ধীর হয়ে যাবে, এর চেয়ে বেশি কিছু অপ্রয়োজনীয় নয়।

পরের অংশ যেখানে ফটো পরে সংরক্ষণ করা হয়।

%যদি প্রথম বা দ্বিতীয় বিকল্পটি প্রোব ডায়ালগে বাছাই করা হয়, ইমেজ সেভ করে যদি prob == 1 %যদি লুপ ছবির জন্য ফাইল তথ্য তৈরি করে, টাইমস্ট্যাম্প t = ক্লক দিয়ে লিখে; basename = sprintf ('\ img_%d_%d_%d_%d_%d.png', t (1), t (2), t (3), t (4), t (5)); ফোল্ডার = 'E: / UTK / Classes / fall 18 / ef230 / irobot / images'; fullFileName = fullfile (ফোল্ডার, বেসনেম); imwrite (img, fullFileName) চিত্র 1 বিরতি বন্ধ করুন (2) elseif prob == 2 t = clock; basename = sprintf ('\ img_%d_%d_%d_%d_%d.png', t (1), t (2), t (3), t (4), t (5)); ফোল্ডার = 'E: / UTK / Classes / fall 18 / ef230 / irobot / images'; fullFileName = fullfile (ফোল্ডার, বেসনেম); imwrite (img, fullFileName) চিত্র 1 বিরতি (2) শেষ বন্ধ করুন

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

ফিজিক্যাল বাম্প সেন্সর দিয়ে, আমরা ক্লিফ সেন্সর এবং পথ অনুসরণ করতে পারি।

ধাপ 6: পথ অনুসরণ

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

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

clear img clear t clear basename clear fullFileName clear ফোল্ডার

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

C = r.getCliffSensors %যদি লুপ একটি কালার ব্যান্ড অনুসরণ করে (সাদা) যদি C.leftFront> 2000 && C.rightFront> 2000 %সোজা পথ নির্দেশনা r.setDriveVelocity (driv) অন্যথায় C.leftFront 2000 %ডানদিকে ঘুরবে যদি রোবট খুব দূরে চলে যায় বাম r.turnAngle (-2.5) অন্য যদি C.leftFront> 2000 && C.rightFront <2000%বাম দিকে বাঁক নেয় যদি রোবট অনেক দূরে ডানে যায় r.turnAngle (2.5) অন্যথায় C.leftFront <2000 && C.rightFront 100 || L.leftFront> 100 || L.rightFront> 100 || L.right> 100 img = r.getImage end %চেক করে দেখুন যে পাথের বাঁক আছে কিনা। C.left> 2800 && C.right <2800 r.turnAngle (2.5) অন্যথায় C.left 2800 r.turnAngle (- 2.5) পাথ ইমেজ রিকগনিশন ডিসপের জন্য শেষ স্থান ধারক ('GETTING IMAGE') শেষ প্রান্ত শেষ

মনে রাখবেন যে আমি যে ভেরিয়েবল নামগুলি বেছে নিয়েছি তা alচ্ছিক, কিন্তু আবার আমি মনে করি এটি সম্ভব হলে একক অক্ষরের ভেরিয়েবল ব্যবহার করা জীবনকে সহজ করে তোলে।

কোডের মাঝের অংশটি ব্যাখ্যা করার জন্য, যখন দুটি সামনের সেন্সর পথের প্রান্ত থেকে ছুটে যায় (যখন এটি একটি ছেদ আসে বা যখন এটি পথের শেষ প্রান্তে পৌঁছায়) তখন দেখা যায় যে এর সামনে কিছু আছে কিনা । এই কাজ করার জন্য আপনাকে পথের শেষে বা যে কোন মোড়ে মাটিতে একটি বস্তু স্থাপন করতে হবে।

একবার ছবি তোলা হলে এটি কী করতে হবে তা নির্ধারণ করতে চিত্র স্বীকৃতি ব্যবহার করে। কোডের এই বিভাগে একটি স্থান ধারকও রয়েছে:

পাথ ইমেজ রিকগনিশন ডিস্পের জন্য %প্লেস হোল্ডার ('GETTING IMAGE')

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

ধাপ 7: ইমেজ প্রসেসিং

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

img = r.getImage img = imcrop (img, [0 30 512 354]) imgb = imcrop (img, [0 30 512 354]) imgt = imcrop (img, [0 30 512 354]) লাল = মানে (মানে (imgb (:,:, 1))); g = গড় (গড় (imgb (:,:, 2))); b = গড় (গড় (imgb (:,:, 3)));

এটি তীব্রতা পরীক্ষা। এটি কি করতে চায় তা নির্ধারণ করতে পরবর্তী বিভাগে ব্যবহার করা হবে।

যদি লাল> g && লাল> b যদি pathcolor == 1 imgc = imcrop (img, [0 30 512 354]) R = ocr (img) যদি R. Words {1} == IMAGE || R. Words {2} == চিত্র || R. Words {3} == চিত্র t = ঘড়ি; basename = sprintf ('\ img_%d_%d_%d_%d_%d.png', t (1), t (2), t (3), t (4), t (5)); ফোল্ডার = 'E: / UTK / Classes / fall 18 / ef230 / irobot / images'; fullFileName = fullfile (ফোল্ডার, বেসনেম); imwrite (img, fullFileName) বিরতি (2) অন্যথায় R. WORDS {1} == RIGHT || R. Words {2} == অধিকার || আর ওয়ার্ডস R. Words {2} == LEFT || R. Words {3} == LEFT r.turnAngle (75) অন্যথায় R. Words {1} == ফিরে || R. Words {2} == ফিরে || R. Words {3} == ফিরে r.turnAngle (110) শেষ অন্য r.turnAngle (110) শেষ শেষ

প্রথম ডায়লগ বক্সে যে রঙটি নির্বাচন করা হয়েছিল তা ক্যামেরা যে রঙ দেখছে তার সাথে এই বিভাগটি সিদ্ধান্ত নেয়। যদি এটি করে তবে এটি পাঠ্য স্বীকৃতি চালায়। কোন শব্দ (IMAGE, BACK, RIGHT বা LEFT) প্রদর্শিত হয় এবং তারপর হয় (ডান এবং বাম দিকে) ঘুরে, চারপাশে ঘুরিয়ে (পিছনে) অথবা ছবি তুলে আগের মত একই পদ্ধতিতে সেভ করে।

আমি শুধুমাত্র বিভিন্ন রঙের জন্য কোডের একটি একক বিভাগ প্রদান করেছি।

কোডটিকে নীল এবং সবুজ চিনতে দেওয়ার জন্য, কেবল কোডটি অনুলিপি করুন এবং সেগমেন্টের শীর্ষে লজিক চেক পরিবর্তন করুন এবং উপরের ডায়ালগ বক্স থেকে রং নির্বাচন অনুসারে "pathcolor == (number)" সেট করুন (জন্য কোড হিসাবে এটি প্রদর্শিত হয়, নীল 2 এবং সবুজ 3 হবে)।

ধাপ 8: সমাপ্ত পণ্য

সমাপ্ত পণ্য
সমাপ্ত পণ্য

এখন রোবো-টেকনিশিয়ানের মঙ্গল গ্রহের মিশন মডিউলগুলির চারপাশে জুম করা উচিত এবং যখন কিছু স্থান থেকে বাইরে থাকে তখন মহাকাশচারীদের কাছে রিপোর্ট করা উচিত।

মনে রাখবেন, সমস্ত ক্লিফ সেন্সর এবং লাইট বাম্পার মানগুলি আপনার পর্যবেক্ষণ করা মানগুলি পরিবর্তন করতে হবে। এছাড়াও, অভিজ্ঞতা থেকে আমি একটি গা dark় রঙের মেঝেতে এই প্রকল্পটি পরীক্ষা করা আরও ভাল পেয়েছি এবং যদি সেই মেঝেটি অ-প্রতিফলিত হয় তবে এটি আরও ভাল। এই পথ এবং মেঝে মধ্যে বৃদ্ধি বৈপরীত্য পায় যা এটি আরও বেশি করে তোলে যে রোবো-টেকনিশিয়ান এটি সঠিকভাবে অনুসরণ করবে।

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

প্রস্তাবিত: