সুচিপত্র:

গার্ডেন হেলপার রুম্বা বট: 8 টি ধাপ
গার্ডেন হেলপার রুম্বা বট: 8 টি ধাপ

ভিডিও: গার্ডেন হেলপার রুম্বা বট: 8 টি ধাপ

ভিডিও: গার্ডেন হেলপার রুম্বা বট: 8 টি ধাপ
ভিডিও: আনস্কেলে সিঙ্গাপুরে বেতন কত? #ব্লক_ক্লিনার #সিপিওয়ার্ড #গার্ডেন কোনটাতে সিঙ্গাপুরে গেলে ভালো হবে? 2024, নভেম্বর
Anonim
গার্ডেন হেলপার রুম্বা বট
গার্ডেন হেলপার রুম্বা বট

কিয়ারা মায়ার্স, আহমদ আলঘাদির এবং ম্যাডিসন টিপেট

উদ্দেশ্য:

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

বৈশিষ্ট্য:

  • দেয়াল শনাক্ত করতে হালকা সেন্সর ব্যবহার করে এবং সেগুলি আঘাত না করার জন্য সামান্য ঘুরিয়ে দেয়
  • বাগানের শেষ প্রান্তে শিলা আঘাত করলে প্রোগ্রামটি ভাঙার জন্য বাম্প সেন্সর ব্যবহার করে
  • বাগানে একটি বৃত্ত সনাক্ত করতে এবং তার ব্যাসার্ধ নির্ধারণ করতে ইমেজ প্রসেসিং ব্যবহার করে
  • একটি রঙের টেপ সনাক্ত করতে ক্লিফ সেন্সর ব্যবহার করে যা একটি ফলের উপস্থিতি নির্দেশ করে

ধাপ 1: উপকরণ এবং সরবরাহ:

  • একটি ল্যাপটপ
  • ম্যাটল্যাব 2017
  • রুমবা ভ্যাকাম ক্লিনার
  • রাস্পবেরি পাই
  • কাঠের খণ্ড
  • সাদা কাগজ
  • কালো কাগজ
  • রঙিন টেপ/রঙিন কাগজের পাতলা ফালা
  • বড় শিলা

ধাপ ২:

ধাপ 3: আপনার "বাগান" একত্রিত করা

আপনার একত্রিত করা
আপনার একত্রিত করা
  1. আপনার কালো কাগজ নিন এবং বিভিন্ন আকারের বৃত্ত কাটা
  2. এই কালো বৃত্তগুলিকে একটি বড় সাদা কাগজে টেপ করুন

    একটি ফল সনাক্ত করার সময় এই বৈপরীত্য প্রয়োজন হবে

  3. আপনার রোবট নেভিগেট করার জন্য একটি গোলকধাঁধার মতো বাগান পথ তৈরি করতে আপনার কাঠের ব্লকগুলি ব্যবহার করুন

    আমরা উপরের ছবির মতো একটি U- আকৃতির পথ বেছে নিয়েছি

  4. আপনার বাগানের শেষে একটি পাথর বা দরজা বা অন্য কোন বস্তু যোগ করুন যাতে আপনার রোবট জানতে পারে যে এটি সম্পন্ন হয়েছে
  5. বাগানের দেয়ালে বৃত্ত দিয়ে আপনার সাদা কাগজ টেপ করুন

    আমরা এটিকে টেপ করার জন্য বালতি ব্যবহার করেছি কারণ আমাদের দেয়ালগুলি ক্যামেরার জন্য খুব ছোট ছিল

  6. ফলের সামনে মাটিতে রঙিন টেপ/রঙিন কাগজের পাতলা ফালা রাখুন

ধাপ 4: কোড লেখা

বাগানে চলাচল

বাম্প সেন্সর ব্যবহার করে: প্রোগ্রামটি চালানোর জন্য, আমরা কোডিংকে কিছুক্ষণের স্টেটমেন্টে রাখি যা কোড ভেঙে যাওয়া পর্যন্ত বিভিন্ন স্টেটমেন্টের মাধ্যমে লুপ করে। যদি কোন বাম্পারকে আঘাত করা হয়, তাহলে এর ফলে তাদের মান সমান হবে (যা বুলিয়ানে 1 এর মান)। একটি if স্টেটমেন্ট কোড ভাঙ্গার জন্য ব্যবহার করা হয় যখন তাদের একটি মান 1 এর সমান হয়।

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

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

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

বাকী কোডটি রুম্বা দ্বারা গৃহীত পথ চক্রান্ত করার জন্য ব্যবহার করা হয় এবং তারপর ফলাফলগুলি আপনার ইমেইলে পাঠান

ধাপ 5: কোডটি অনুলিপি করুন

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

k = 0

টিক

টাইমারভাল = টিক

যখন সত্য

v =.2; % বেগ r.setDriveVelocity (v, v);% roomba এগিয়ে যান L = r.getLightBumpers; LC = L.leftCenter; Rr = L.right; Lf = L. বাম; RC = L.rightCenter; LF = L.leftFront; RF = L.rightFront; প্রশ্ন = 75; % থ্রেশহোল্ড RTH = 30; %উচ্চ লাল থ্রেশহোল্ড RTL = 10; %কম লাল থ্রেশহোল্ড B = r.getBumpers S = r.getCliffSensors; r1 = 24; r3 = 10; PL1 = 1800; যদি S.leftFront> PL1 || S.rightFront> PL1 % সনাক্ত করে যদি মাটিতে রঙ থ্রেশহোল্ডের উপরে থাকে। %take image imshow (img)%display image [center3, radii3] = imfindcircles (img, [30 50], 'ObjectPolarity', 'dark', 'Sensitivity', 0.9); h = viscircles (কেন্দ্র 3, radii3); %রেডির বৃত্তের সন্ধান করুন w/ছবিতে নির্দিষ্ট পরিসরে যদি radii3> = r1 T = 1 k = k+1 dist1 = 0.2 হয়।, তাহলে রুম্বা এই ফলটি গণনা করে অন্যথায় radii3 <= r3 T = 0 else T = 0 dist2 = 0.2।

যদি T == 1 r.setLEDDigits (num2str (k)) r.beep r.beep r.beep r.turnAngle (78) %যদি কোনো ফল ধরা পড়ে, তাহলে রুম্বায় নম্বরটি দেখান, %শব্দ করুন এবং ঘুরান elseif T == 2 r.turnAngle (78) %যদি 2 টি ফল ধরা পড়ে, তাহলে %বাগানের মধ্য দিয়ে চলতে থাকুন r.turnAngle (78) %যদি কোন ফল ধরা না পড়ে, তাহলে %বাগানের শেষ প্রান্ত দিয়ে চালিয়ে যাওয়ার জন্য চালু করুন যদি LC> Q r.stop r.turnAngle (-7) elseif RC> Q r.stop r.turnAngle (7) elseif LF> Q r.stop r.turnAngle (-7) elseif RF> Q r.stop r। turnAngle (7) elseif Lf> Q r.stop r.turnAngle (-7) elseif Rr> Q r.stop r.turnAngle (7) end %যদি কোন হালকা বাম্পারের মান থ্রেশহোল্ডের উপরে চলে যায়, তাহলে %Roomba একটি প্রাচীর আঘাত %এড়ানোর জন্য যথাযথ দিক থেকে সামান্য ঘুরবে

যদি B.right == 1 || B. বাম == 1 || B.front == 1 dist3 = 0.2।*ElapsedTime r.stop r.beep ('F#*2, F#*2, c, F#*2, F#*2') বোমা আঘাত করা হয়, তারপর রুমবা শব্দ বাজায়, চারপাশে ঘুরছে, %এবং কোডটি ভেঙে দেয়

বিরতি শেষ

শেষ স্ক্যাটার (0.533, 0, '^') স্ক্যাটার ধরে রাখুন (0.533, dist1, '<') স্ক্যাটার ধরে রাখুন (-dist2, dist1, 'v') স্ক্যাটার ধরে রাখুন (-dist2, 0, 'd') saveas (gcf, 'Movement.png')

kmsg = num2str (k) mail = '[email protected]' password = 'Srsora123#' host = 'smtp.gmail.com' port = '465'

setpref ('ইন্টারনেট', 'E_mail', মেইল); setpref ('ইন্টারনেট', 'SMTP_Server', হোস্ট) প্রপস = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', মেইল); props.setProperty ('mail.smtp.host', হোস্ট); props.setProperty ('mail.smtp.port', port); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', পোর্ট); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); সেন্ডমেইল (মেইল, 'হ্যালো নভোচারী! বাগানে এই অনেক ফল আছে', kmsg, {'movement.png'})

প্রস্তাবিত: