সুচিপত্র:

MATLAB নিয়ন্ত্রিত রুমা: 5 টি ধাপ
MATLAB নিয়ন্ত্রিত রুমা: 5 টি ধাপ

ভিডিও: MATLAB নিয়ন্ত্রিত রুমা: 5 টি ধাপ

ভিডিও: MATLAB নিয়ন্ত্রিত রুমা: 5 টি ধাপ
ভিডিও: অষ্টম শ্রেণী। জীবন বিজ্ঞান। বয়ঃসন্ধি 2024, জুলাই
Anonim
ম্যাটল্যাব নিয়ন্ত্রিত রুমা
ম্যাটল্যাব নিয়ন্ত্রিত রুমা
ম্যাটল্যাব নিয়ন্ত্রিত রুমা
ম্যাটল্যাব নিয়ন্ত্রিত রুমা

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

ধাপ 1: যন্ত্রাংশ এবং উপকরণ

যন্ত্রাংশ এবং উপকরণ
যন্ত্রাংশ এবং উপকরণ
যন্ত্রাংশ এবং উপকরণ
যন্ত্রাংশ এবং উপকরণ
যন্ত্রাংশ এবং উপকরণ
যন্ত্রাংশ এবং উপকরণ
যন্ত্রাংশ এবং উপকরণ
যন্ত্রাংশ এবং উপকরণ

MATLAB 2018a

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

iRobot ডিভাইস তৈরি করুন

এই ডিভাইসটি একটি বিশেষ তৈরি ডিভাইস যা একমাত্র উদ্দেশ্য প্রোগ্রামিং এবং কোডিংয়ের জন্য। (এটি প্রকৃত ভ্যাকুয়াম নয়)

রাস্পবেরি পাই (ক্যামেরা সহ)

- এটি একটি অ-ব্যয়বহুল কম্পিউটার বোর্ড যা iRobot এর মস্তিষ্ক হিসাবে কাজ করে। এটি ছোট হতে পারে, কিন্তু এটি অনেক কিছু করতে সক্ষম। ক্যামেরা একটি অতিরিক্ত অ্যাড অন। এটি তার সমস্ত ফাংশন এবং কমান্ডগুলি পেতে রাস্পবেরি পাই ব্যবহার করে। উপরে চিত্রিত ক্যামেরাটি একটি 3D মুদ্রিত স্ট্যান্ডে মাউন্ট করা হয়েছে, টেনেসি বিশ্ববিদ্যালয়ের প্রকৌশল মৌলিক বিভাগগুলি দ্বারা তৈরি

ধাপ 2: রুম্বা ডাটাবেস ফাইল

রুমবা ডাটাবেস ফাইল
রুমবা ডাটাবেস ফাইল

আপনার রুমবা এর জন্য সঠিক ফাংশন এবং কমান্ড ব্যবহার করার জন্য একটি প্রধান ফাইল আছে। এই ফাইলটি যেখানে আপনি লিখিত কোডটি আপনার রুমবা অপারেটিংকে আরও পরিচালনাযোগ্য করার জন্য ফাংশনগুলি আঁকেন।

আপনি এই লিঙ্কে ফাইলটি ডাউনলোড করতে পারেন অথবা নিচে ডাউনলোড করা যায়

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

ধাপ 3: রুম্বার সাথে সংযোগ স্থাপন

প্রথমে, আপনাকে অবশ্যই নিশ্চিত করতে হবে যে আপনার রোবটটি একটি মাইক্রো ইউএসবি প্লাগ ব্যবহার করে আপনার রাস্পবেরি পাই বোর্ডের সাথে সংযুক্ত। তারপরে আপনাকে আপনার কম্পিউটার এবং রোবটকে একই ওয়াইফাইয়ের সাথে সঠিকভাবে সংযুক্ত করতে হবে। একবার এটি করা হয়ে গেলে, আপনি আপনার রোবটকে শক্তি দিতে পারেন এবং রোবট ডাটাবেস ফাইলে প্রদত্ত কমান্ডটি ব্যবহার করে এটির সাথে সংযোগ স্থাপন করতে পারেন। (আপনার রোবট ব্যবহার করার আগে এবং পরে সবসময় হার্ড রিসেট করুন)। উদাহরণস্বরূপ, আমরা আমাদের রোবটের সাথে সংযোগ স্থাপনের জন্য "r.roomba (19)" কমান্ড ব্যবহার করি, আমাদের ডিভাইসে পরিবর্তনশীল r নির্ধারণ করে। এটি ডাটাবেস ফাইলে ফিরে আসে, যা আমাদের পরিবর্তনশীলকে একটি কাঠামো হিসাবে সেট করে যা আমরা যে কোনও মুহূর্তে উল্লেখ করতে পারি।

ধাপ 4: কোড

কোড
কোড
কোড
কোড

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

আমরা সহজ কমান্ড "r.setDriveVelocity (.06)" দিয়ে শুরু করেছি যা রোবটের এগিয়ে যাওয়ার গতি.06 m/s সেট করে। এটি কেবল রোবটটিকে আগে থেকে সরানোর জন্য।

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

যখন true % while লুপ চলে যায় যতক্ষণ না কিছু "মিথ্যা" ঘটে (এই ক্ষেত্রে এটি অসীমভাবে চলে যায়) data = r.getCliffSensors; data2 = r.getBumpers; % ক্লিফ সেন্সর মান সম্পর্কে ধারাবাহিকভাবে তথ্য পুনরুদ্ধার করে এবং একটি পরিবর্তনশীল % img = r.getImage এ তাদের বরাদ্দ করে; % মাউন্ট করা ক্যামেরা থেকে একটি ছবি নেয় % image (img); % ইমেজ দেখায় যা % red_mean = mean (mean (img (:,:, 1))); % সবুজ রঙের গড় মান নেয় যদি data.rightFront <2000 r.turnAngle (-2); % ডান সামনের ক্লিফ সেন্সরের মান 2000 r.setDriveVelocity (.05) এর নিচে নেমে গেলে Roomba আনুমানিক.2 ডিগ্রী CW পরিণত হয়; elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1); % Roomba কে প্রায়.2 m/s এ এগিয়ে যেতে বলে যদি ডান সামনের এবং বাম সামনের সেন্সরের উভয় মান 2000 % r.turnAngle (0) এর নিচে নেমে আসে; % উপরে বর্ণিত শর্তগুলি সত্য হলে রুমবাকে না ঘুরতে বলে

elseif data2.right == 1 r.moveDistance (-। 12); r.turnAngle (160); r.setDriveVelocity (.05); elseif data2.left == 1 r.moveDistance (-। 2); r.turnAngle (5); r.setDriveVelocity (.05); elseif data2.front == 1 r.moveDistance (-। 12); r.turnAngle (160); r.setDriveVelocity (.05);

এর পরে লুপ, আমরা আরেকটি লুপ প্রবেশ করি যা ক্যামেরার মাধ্যমে প্রাপ্ত ডেটা ট্রিগার করে। এবং আমরা এর ভিতরে একটি if স্টেটমেন্ট ব্যবহার করি যখন লুপটি একটি নির্দিষ্ট প্রোগ্রাম (alexnet) ব্যবহার করে একটি চিত্রকে স্বীকৃতি দেয় এবং একবার এটি চিত্রটি চিহ্নিত করলে তা অবিলম্বে মোবাইল ডিভাইসের রিমোট কন্ট্রোলকে ট্রিগার করে।

anet = alexnet; % Alexnet গভীর শেখার জন্য একটি পরিবর্তনশীল সময় সত্য % অসীম যখন লুপ img = r.getImage; img = imresize (img, [227, 227]); লেবেল = শ্রেণীবদ্ধ (anet, img); যদি লেবেল == "কাগজের তোয়ালে" || লেবেল == "রেফ্রিজারেটর" লেবেল = "জল"; শেষ ছবি (img); শিরোনাম (চর (লেবেল)); অঙ্কন;

যখন লুপ যা আমাদের ফোনের সাহায্যে ডিভাইস নিয়ন্ত্রণ করতে দেয় সেই ফোনের জাইরোস্কোপ থেকে সেই ডেটা পুনরুদ্ধার করে এবং আমরা এটিকে একটি ম্যাট্রিক্সে প্লাগ করি যা ক্রমাগত কম্পিউটারে MATLAB- এ ডেটা প্রবাহিত করে। আমরা একটি if স্টেটমেন্ট ব্যবহার করি যা ম্যাট্রিক্সের ডেটা পড়ে এবং একটি আউটপুট দেয় যা ফোনের জাইরোস্কোপের নির্দিষ্ট মানের উপর ভিত্তি করে ডিভাইসটি সরায়। এটা জানা গুরুত্বপূর্ণ যে আমরা মোবাইল ডিভাইসের ওরিয়েন্টেশন সেন্সর ব্যবহার করেছি। উপরে উল্লিখিত এক দ্বারা তিনটি ম্যাট্রিক্স ফোনের ওরিয়েন্টেশন সেন্সরের প্রতিটি উপাদান দ্বারা শ্রেণিবদ্ধ করা হয়েছে, যা আজিমুথ, পিচ এবং সাইড। যদি বিবৃতি এমন শর্ত তৈরি করে যা বলে যে যখন পক্ষ মান 50 ছাড়িয়ে যায় বা -50 এর নিচে পড়ে, তখন রোবট একটি নির্দিষ্ট দূরত্বকে এগিয়ে নিয়ে যায় (ইতিবাচক 50) বা পিছনে (নেতিবাচক 50)। এবং পিচ মান জন্য একই যায়। যদি পিচের মান 25 -এর নিচে পতনের মান ছাড়িয়ে যায়, তাহলে রোবট 1 ডিগ্রী (পজিটিভ 25) বা নেগেটিভ 1 ডিগ্রী (নেগেটিভ 25) কোণে ঘুরবে।

যখন সত্যিকারের বিরতি (.1) % প্রতিটি মান নেওয়ার আগে.5 সেকেন্ডের বিরতি দিন নিয়ন্ত্রক = আইফোন। % আইফোনের ওরিয়েন্টেশনের মানগুলির জন্য একটি ভেরিয়েবল আজিমুথাল = কন্ট্রোলার (1) এর জন্য ম্যাট্রিক্স নির্ধারণ করে; % একটি পরিবর্তনশীল পিচ = নিয়ামক (2) ম্যাট্রিক্সের প্রথম মান নির্ধারণ করে; % একটি ভেরিয়েবলের জন্য ম্যাট্রিক্সের দ্বিতীয় মান নির্ধারণ করে (আইফোনটি পাশে রাখা হলে সামনের দিকে এবং পিছনের দিকে কাত করুন) সাইড = কন্ট্রোলার (3); % একটি ভেরিয়েবলের জন্য ম্যাট্রিক্সের তৃতীয় মান নির্ধারণ করে (আইফোনটি পাশে রাখা হলে বাম এবং ডানদিকে কাত করুন) সাইড 25 r.moveDistance (-। 1) % রোম্বাকে পিছনে আনুমানিক.1 মিটার পিছনে নিয়ে যায় যদি আইফোন কমপক্ষে 25 ডিগ্রী অন্যদিকে সাইড 25 r.turnAngle (-1) % রোম্বাকে আনুমানিক 1 ডিগ্রি CCW ঘুরিয়ে দেয় যদি আইফোন পিচ <-25 r.turnAngle (1) % আইফোন কমপক্ষে 25 ডিগ্রী শেষের দিকে কাত হলে রুম্বাকে প্রায় 1 ডিগ্রি CW বাঁক দেয়।

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

ধাপ 5: উপসংহার

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

প্রস্তাবিত: