সুচিপত্র:
ভিডিও: মঙ্গল রুম্বা প্রকল্প UTK: 4 টি ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:01
অস্বীকৃতি: রুমবা যদি একটিতে সেট করা থাকে তবে এটি কেবলমাত্র কাজ করবে
খুব নির্দিষ্ট উপায়, এই নির্দেশযোগ্যটি তৈরি করা হয়েছিল এবং টেনেসি শিক্ষার্থী এবং সুবিধার্থে বিশ্ববিদ্যালয় দ্বারা ব্যবহার করার উদ্দেশ্যে তৈরি করা হয়েছিল
এই কোডটি 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 হিসাবে সংজ্ঞায়িত করতে হবে। কোড চালানোর পর রুম্বাকে নির্দেশনা অনুযায়ী চালানো উচিত।
প্রস্তাবিত:
রোবট প্রকল্প UTK 2017: 3 ধাপ
রোবট প্রজেক্ট ইউটিকে 2017: মিশন: আমাদের ইঞ্জিনিয়ারদের টিম ফ্রুগল, ওপেন সোর্স প্রযুক্তি উন্নয়নের জন্য একটি অলাভজনক ফাউন্ডেশন, একটি উদ্ভাবনী মানব সহায়ক মার্স রোভার-আউট টিম " রোভার " একটি রুমবা যা আমরা একটি সিরিজ চালানোর জন্য কোডেড করেছি
মঙ্গল রুম্বা:। টি ধাপ
মার্স রুম্বা: এই নির্দেশযোগ্য আপনাকে রাস্পবেরি পাই নিয়ন্ত্রিত রুমবা ভ্যাকুয়াম বট পরিচালনার দিকনির্দেশনা দেবে। আমরা যে অপারেটিং সিস্টেমটি ব্যবহার করব তা MATLAB এর মাধ্যমে
নতুনদের জন্য 10 টি মৌলিক Arduino প্রকল্প! একটি একক বোর্ডের সাথে কমপক্ষে 15 টি প্রকল্প তৈরি করুন !: 6 টি ধাপ
নতুনদের জন্য 10 টি মৌলিক Arduino প্রকল্প! একটি একক বোর্ডের সাথে কমপক্ষে 15 টি প্রকল্প তৈরি করুন !: Arduino প্রকল্প & টিউটোরিয়াল বোর্ড; 10 টি মৌলিক Arduino প্রকল্প অন্তর্ভুক্ত। সমস্ত সোর্স কোড, গারবার ফাইল এবং আরও অনেক কিছু। এসএমডি নেই! সবার জন্য সহজ সোল্ডারিং। সহজ অপসারণযোগ্য এবং প্রতিস্থাপনযোগ্য উপাদান। আপনি একক বো দিয়ে কমপক্ষে 15 টি প্রকল্প তৈরি করতে পারেন
রুম্বা স্কাউট এক্সপ্লোরার: 8 টি ধাপ
রুম্বা স্কাউট এক্সপ্লোরার: আমেরিকান প্রকল্পগুলির মধ্যে একটি অত্যন্ত প্রত্যাশিত এবং ব্যাপকভাবে গবেষণা করা, মার্স রোভার প্রজেক্টগুলি তদন্ত এবং ইন্টিগ্রেটের একমাত্র উদ্দেশ্যে উচ্চ প্রযুক্তির স্বায়ত্তশাসিত সিস্টেমের ক্রমবর্ধমান উৎপাদনে মানুষের সাফল্য হয়ে উঠেছে
রুম্বা প্রকল্প: 5 টি ধাপ (ছবি সহ)
রুম্বা প্রজেক্ট: এই নির্দেশনাটি সাউথ ফ্লোরিডা ইউনিভার্সিটি (www.makecourse.com) এ মেককোর্সের প্রকল্পের প্রয়োজনীয়তা পূরণের জন্য তৈরি করা হয়েছে। এই নির্দেশযোগ্য আমার রুম্বা প্রজেক্টকে একত্রিত করার জন্য প্রয়োজনীয় সমস্ত প্রয়োজনীয় পদক্ষেপ এবং উপাদানগুলি আবরণ করবে