সুচিপত্র:

মঙ্গল রুম্বা প্রকল্প UTK: 4 টি ধাপ
মঙ্গল রুম্বা প্রকল্প UTK: 4 টি ধাপ

ভিডিও: মঙ্গল রুম্বা প্রকল্প UTK: 4 টি ধাপ

ভিডিও: মঙ্গল রুম্বা প্রকল্প UTK: 4 টি ধাপ
ভিডিও: মাত্র ৩০ টাকায় ডিজাইন ব্লাউজ , Blouse Wholesale Market In Santipur | Blouse Wholesale Market 2024, নভেম্বর
Anonim
মার্স রুম্বা প্রকল্প ইউটিকে
মার্স রুম্বা প্রকল্প ইউটিকে
মার্স রুম্বা প্রকল্প ইউটিকে
মার্স রুম্বা প্রকল্প ইউটিকে

অস্বীকৃতি: রুমবা যদি একটিতে সেট করা থাকে তবে এটি কেবলমাত্র কাজ করবে

খুব নির্দিষ্ট উপায়, এই নির্দেশযোগ্যটি তৈরি করা হয়েছিল এবং টেনেসি শিক্ষার্থী এবং সুবিধার্থে বিশ্ববিদ্যালয় দ্বারা ব্যবহার করার উদ্দেশ্যে তৈরি করা হয়েছিল

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

প্রয়োজনীয় উপকরণ:

Omb রুমবা

AT ম্যাটল্যাব

· রাস্পবেরি পাই এবং পাই ক্যামেরা

ধাপ 1: লাইব্রেরিগুলি পাওয়া

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

ধাপ 2: প্রোগ্রাম লেখা

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

ধাপ 3: কোড

এটি একটি MATLAB ফাইলে অনুলিপি করুন এবং পেস্ট করুন যা লাইব্রেরিগুলির মতো একই ফোল্ডারে অবস্থিত

ফাংশন মাইনরুম্বা ফাইল (আর)

r.setDriveVelocity (0.1, 0.1)

কোড চলমান রাখার সময় লুপ যখন সত্য % Infinte

dontFall = cliffCheck (r) % 'cliffCheck' ফাংশনে পরিবর্তনশীল 'dontFall' নির্ধারণ করে

যদি 'cliffCheck' সম্পূর্ণ হওয়ার পরে কোডে এগোতে স্টেন্ট স্টেট না হয়

r.setDriveVelocity (0.1, 0.1) % 'CliffCheck' সম্পন্ন হওয়ার পর রুম্বাকে চলন্ত রাখে

end % শেষ হলে 'dontFall' যদি স্টেটমেন্ট

বাম্পার = বাম্পচেক (আর) % 'বাম্পচেক' ফাংশনে পরিবর্তনশীল 'বাম্পার' নির্ধারণ করে

যদি বাম্পার % যদি 'বাম্পচেক' এর পরে কোডে এগিয়ে যাওয়ার বিবৃতি সম্পন্ন হয়

r.setDriveVelocity (0.1, 0.1) % 'Bumpcheck' সম্পন্ন হওয়ার পর Roomba চলমান রাখে

end % শেষ হলে 'বাম্পার' হলে স্টেটমেন্ট

তরল = LiquidCheck (r) % 'LiquidCheck' ফাংশনে পরিবর্তনশীল 'তরল' বরাদ্দ করে

যদি তরল % যদি 'LiquidCheck' এর পরে কোডে এগিয়ে যাওয়ার বিবৃতি সম্পূর্ণ হয়

r.setDriveVelocity (0.1, 0.1) % 'LiquidCheck' সম্পূর্ণ হওয়ার পর রুম্বাকে চলন্ত রাখে

শেষ % 'তরল' যদি বিবৃতি শেষ করে

lightbumper = lightcheck (r) % 'lightcheck' ফাংশনে পরিবর্তনশীল 'লাইটবাম্পার' নির্ধারণ করে

বিরতি (0.1) % অবিরত লুপ পুনরাবৃত্তি এড়াতে সংক্ষিপ্তভাবে বিরতি দিন

শেষ % লুপের সময় অসীম শেষ হয়

শেষ % শেষ ফাংশন

ফাংশন bumper = bumpcheck (r) % 'bumpcheck' ফাংশন তৈরি করে

bumpdata = r.getBumpers % বাম্পার থেকে ভেরিয়েবল 'bumpdata' তে সমস্ত ডেটা বরাদ্দ করে

bumper = bumpdata.right || bumpdata.left || bumpdata.front % বিভিন্ন বাম্পারের জন্য একটি সংরক্ষিত পরিবর্তনশীল, 'বাম্পার' তৈরি করে

if bumpdata.right> 0 % যদি স্টেটমেন্ট রুমবা এর বিভিন্ন ফাংশন ঘটায় যদি বাম্পার বাম্পড হয়

r.stop % স্টপ Roomba

r.moveDistance (-0.3, 0.2) % Roomba 0.3m বিপরীত

r.turnAngle (90, 0.5) % যত দ্রুত সম্ভব রুম্বা 90 ডিগ্রী ঘোরায়

শেষ

যদি bumpdata.front> 0

r.stop

r.moveDistance (-0.3, 0.2)

r.turnAngle (Randi (270), 0.5) % 0 এবং 270 ডিগ্রির মধ্যে র্যান্ডম ব্যবধানে রুম্বাকে যত দ্রুত সম্ভব ঘোরায়

শেষ

যদি bumpdata.left> 0

r.stop

r.moveDistance (-0.3, 0.2)

r.turnAngle (-90, 0.5) % যত দ্রুত সম্ভব রুম্বা -90 ডিগ্রী ঘোরায়

শেষ

শেষ

ফাংশন lightbumper = lightcheck (r) % 'lightcheck' ফাংশন তৈরি করে

lightdata = r.getLightBumpers % লাইট বাম্প সেন্সর থেকে ভেরিয়েবল 'লাইটডাটা' তে সমস্ত ডেটা অ্যাসাইন করে

lightbumper = lightdata.left || lightdata.right || lightdata.rightCenter || lightdata.leftCenter % বিভিন্ন লাইট বাম্পারের জন্য একটি সংরক্ষিত ভেরিয়েবল, 'লাইটবাম্পার' তৈরি করে

যদি lightbumper % যদি স্টেটমেন্টটি উপর থেকে লাইটবাম্পার ডেটা কল করে

যদি lightdata.left> 10 % স্টেটমেন্ট যদি রুমবা এর বিভিন্ন ফাংশন ঘটাতে পারে যদি লাইট বাম্পার 10 টির বেশি মান অনুভব করে

r.setDriveVelocity (0.05, 0.05) % ধাক্কা খাওয়ার জন্য রুমবা কমিয়ে দেয়

শেষ % যদি স্টেটমেন্ট শেষ হয়

যদি lightdata.rightCenter> 10

r.setDriveVelocity (0.05, 0.05)

শেষ

যদি lightdata.right> 10

r.setDriveVelocity (0.05, 0.05)

শেষ

যদি lightdata.leftCenter> 10

r.setDriveVelocity (0.05, 0.05)

শেষ

end % শেষ হলে 'lightbumper' যদি স্টেটমেন্ট

শেষ %লাইটচেক ফাংশন শেষ করে

ফাংশন dontFall = cliffCheck (r) % 'cliffCheck' ফাংশন তৈরি করে

ডেটা = r.getCliffSensors; % ক্লিফ সেন্সর থেকে ভেরিয়েবল 'ডেটা' তে সমস্ত ডেটা বরাদ্দ করে

dontFall = data.left <1020 || data.leftFront <1020 || data.rightFront <1020 || data.right <1020 % বিভিন্ন ক্লিফ সেন্সরের জন্য একটি সংরক্ষিত ভেরিয়েবল তৈরি করে, 'dontFall'

if dontFall % যদি বিবৃতিটি উপরে থেকে ক্লিফ সেন্সর ডেটাতে কল করে

যদি data.left <1010 % যদি বিবৃতিটি রুমবা এর বিভিন্ন ফাংশন ঘটাতে পারে যদি ক্লিফ সেন্সর 1010 এর কম মান অনুভব করে

r.stop

r.moveDistance (-0.2, 0.2) % Roomba 0.2m বিপরীত

r.turnAngle (-90, 0.5) % যত দ্রুত সম্ভব রুম্বা -90 ডিগ্রী ঘোরায়

elseif data.leftFront <1010

r.stop

r.moveDistance (-0.3, 0.2)

r.turnAngle (90, 0.5) % যত দ্রুত সম্ভব রুম্বা 90 ডিগ্রী ঘোরায়

elseif data.rightFront <1010

r.stop

r.moveDistance (-0.3, 0.2)

r.turnAngle (90, 0.5) % যত দ্রুত সম্ভব রুম্বা 90 ডিগ্রী ঘোরায়

elseif data.right <1010

r.stop

r.moveDistance (-0.3, 0.2)

r.turnAngle (90, 0.5) % যত দ্রুত সম্ভব রুম্বা 90 ডিগ্রী ঘোরায়

শেষ

শেষ

শেষ

ফাংশন তরল = LiquidCheck (r) % 'LiquidCheck' ফাংশন তৈরি করে

যখন সত্য %ক্যালিব্রেটিংয়ের জন্য অসীম লুপ শুরু করে

img = r.getImage; % রোবটের ক্যামেরা বন্ধ পড়ে

image (img) % একটি চিত্র উইন্ডোতে ছবিটি দেখায়

red_mean = mean (mean (img (200, 150, 1)))% লাল পিক্সেলের গড় পরিমাণ পড়ে

blue_mean = mean (mean (img (200, 150, 3)))% নীল পিক্সেলের গড় পরিমাণ পড়ে

তরল = লাল_ মানে || blue_mean % বিভিন্ন রঙের ভেরিয়েবলের জন্য একটি সংরক্ষিত পরিবর্তনশীল, 'তরল' তৈরি করে

যদি তরল % যদি বিবৃতিটি উপরের থেকে চিত্রের ডেটা কল করে

যদি red_mean> 170 % যদি স্টেটমেন্ট রুমবা এর বিভিন্ন ফাংশন ঘটাতে পারে যদি ক্যামেরা 170 এর বেশি লাল রঙ দেখায়

r.stop % রুমবা বন্ধ করে

r.setLEDCenterColor (255) % বৃত্তকে লাল রঙে সেট করে

r.setLEDDigits (); % ডিসপ্লে ক্লিয়ার করুন

f = ওয়েটবার (0, '*ইনকামিং মেসেজ*'); % একটি লোডিং বার্তার জন্য একটি ওয়েটবার তৈরি করে

r.setLEDDigits ('HOT'); % LED ডিসপ্লে আউটপুট 'HOT' তে সেট করে

বিরতি (0.5) %বিতরণকৃত তথ্য পড়ার জন্য সংক্ষিপ্ত বিরতি

r.setLEDDigits ('LAVA'); % LED ডিসপ্লে সেট করে 'LAVA'

বিরতি (0.5)

ওয়েটবার (.33, f, '*ইনকামিং মেসেজ*'); %ওয়েটবারে বৃদ্ধি সৃষ্টি করে

r.setLEDDigits ('HOT');

বিরতি (0.5)

r.setLEDDigits ('LAVA');

বিরতি (0.5)

ওয়েটবার (.67, f, '*ইনকামিং মেসেজ*'); % ওয়েটবারে বৃদ্ধি সৃষ্টি করে

r.setLEDDigits ('HOT');

বিরতি (0.5)

r.setLEDDigits ('LAVA');

ওয়েটবার (1, f, '*ইনকামিং মেসেজ*'); %ওয়েটবার সম্পূর্ণ করে

বিরতি (1)

বন্ধ (f) %ওয়েটবার বন্ধ করে

r.setLEDDigits (); % LED ডিসপ্লে সাফ করে

সব বন্ধ করুন আগের সব উইন্ডো বন্ধ করে দেয়

অক্ষ ('রঙ', 'কোনটি', 'XColor', 'কোনটি', 'YColor', 'none') % অক্ষ এবং চার্টের প্লট উইন্ডো সাফ করে

y = 0.5; % প্লটিং উইন্ডোতে পাঠ্যের y- অবস্থান নির্ধারণ করে

x = 0.06; % প্লটিং উইন্ডোতে পাঠ্যের x- অবস্থান নির্ধারণ করে

শিরোনাম ('মার্স রুমবা', 'ফন্টসাইজ', 32) % প্লটিং উইন্ডোতে একটি শিরোনাম যোগ করে

quadeqtxt = 'ডেঞ্জার লাভা'; % ভেরিয়েবল 'quadeqtxt' আউটপুট 0 সেট করে

পাঠ্য (x, y, quadeqtxt, 'interpreter', 'latex', 'fontsize', 36); % প্লটিং উইন্ডোতে quadeq টেক্সট প্রদর্শন করে

r.moveDistance (-0.2, 0.2) %রুমবা 0.2 মি বিপরীত করে

r.turnAngle (180, 0.5) %যত দ্রুত সম্ভব রুমবা 180 ডিগ্রী ঘুরিয়ে দেয়

r.setLEDCenterColor (128, 128); % সেট করে রুমবা কেন্দ্র LED কমলাতে

সব বন্ধ করুন অবশিষ্ট খোলা জানালা বন্ধ করুন

elseif blue_mean> 175 % যদি ক্যামেরার 175 এর চেয়ে বড় নীল রঙ দেখা যায় তাহলে রুমবার বিভিন্ন ফাংশন ঘটতে পারে

r.stop % রুমবা বন্ধ করে

r.setLEDCenterColor (255) % বৃত্তকে লাল রঙে সেট করে

r.setLEDDigits (); % ডিসপ্লে ক্লিয়ার করুন

f = ওয়েটবার (0, '*ইনকামিং মেসেজ*'); % একটি লোডিং বার্তার জন্য একটি ওয়েটবার তৈরি করে

r.setLEDDigits ('LOOK'); % LED ডিসপ্লে সেট আউটপুট 'লুক'

বিরতি (0.5) %বিতরণকৃত তথ্য পড়ার জন্য সংক্ষিপ্ত বিরতি

r.setLEDDigits ('WATR'); % সেট আউট LED ডিসপ্লে 'WATR'

বিরতি (0.5)

ওয়েটবার (.33, f, '*ইনকামিং মেসেজ*'); %ওয়েটবারে বৃদ্ধি সৃষ্টি করে

r.setLEDDigits ('LOOK');

বিরতি (0.5)

r.setLEDDigits ('WATR');

বিরতি (0.5)

ওয়েটবার (.67, f, '*ইনকামিং মেসেজ*'); % ওয়েটবারে বৃদ্ধি সৃষ্টি করে

r.setLEDDigits ('LOOK');

বিরতি (0.5)

r.setLEDDigits ('WATR');

ওয়েটবার (1, f, '*ইনকামিং মেসেজ*'); %ওয়েটবার সম্পূর্ণ করে

বিরতি (1)

বন্ধ (f) %ওয়েটবার বন্ধ করে

r.setLEDDigits (); % LED ডিসপ্লে সাফ করে

সব বন্ধ করুন আগের সব উইন্ডো বন্ধ করে দেয়

অক্ষ ('রঙ', 'কোনটি', 'XColor', 'কোনটি', 'YColor', 'none') % অক্ষ এবং চার্টের প্লট উইন্ডো সাফ করে

y = 0.5; % প্লটিং উইন্ডোতে পাঠ্যের y- অবস্থান নির্ধারণ করে

x = 0.06; % প্লটিং উইন্ডোতে পাঠ্যের x- অবস্থান নির্ধারণ করে

শিরোনাম ('মার্স রুমবা', 'ফন্টসাইজ', 32) % প্লটিং উইন্ডোতে একটি শিরোনাম যোগ করে

quadeqtxt = 'FOUND WATER'; % ভেরিয়েবল 'quadeqtxt' আউটপুট 0 সেট করে

পাঠ্য (x, y, quadeqtxt, 'interpreter', 'latex', 'fontsize', 36); % প্লটিং উইন্ডোতে quadeq টেক্সট প্রদর্শন করে

r.moveDistance (-0.2, 0.2) %রুমবা 0.2 মি বিপরীত করে

r.turnAngle (180, 0.5) %যত দ্রুত সম্ভব রুমবা 180 ডিগ্রী ঘুরিয়ে দেয়

r.setLEDCenterColor (128, 128); % সেট করে রুমবা কেন্দ্র LED কমলাতে

সব বন্ধ করুন অবশিষ্ট খোলা জানালা বন্ধ করুন

end %শেষ হলে 'red_mean' যদি স্টেটমেন্ট থাকে

শেষ %'তরল' যদি বিবৃতি শেষ করে

শেষ % লুপের সময় অসীম বন্ধ করে দেয়

শেষ % ফাংশন 'লিকুইড চেক' শেষ করে

ধাপ 4: কোড চালানো

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

প্রস্তাবিত: