সুচিপত্র:
- ধাপ 1: আপনার উপকরণ সংগ্রহ করুন
- ধাপ 2: MATLAB এর জন্য রুমবা টুলবক্স ডাউনলোড করুন
- ধাপ 3: আপনার রুম্বার সাথে সংযোগ করুন
- ধাপ 4: আপনি কিভাবে আপনার রুম্বা নিয়ন্ত্রণ করতে চান তা চয়ন করুন
- ধাপ 5: আপনার রুমা চালান
ভিডিও: একটি মার্স রোভারে আপনার রুমবা ঘুরিয়ে দেওয়া: 5 টি ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 07:56
ধাপ 1: আপনার উপকরণ সংগ্রহ করুন
এই প্রকল্পটি সম্পন্ন করার জন্য, আপনাকে নিম্নলিখিত উপকরণগুলি সংগ্রহ করতে হবে:
1 রুম্বা রোবট
1 রাস্পবেরি পাই কিট
1 ভিডিও ক্যামেরা
MATLAB- এ প্রবেশ
ধাপ 2: MATLAB এর জন্য রুমবা টুলবক্স ডাউনলোড করুন
এই প্রকল্পটি সম্পন্ন করার জন্য প্রয়োজনীয় টুলবক্স ইনস্টল করার জন্য নিম্নলিখিত কোডটি চালান।
ফাংশন রুমবা ইনস্টল করুন
clc;
ইনস্টল করার জন্য ফাইলের % তালিকা
ফাইল = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'};
% লোকেশন থেকে ইনস্টল করতে হবে
options = weboptions ('CertificateFilename', ''); % এটা সার্টিফিকেট প্রয়োজনীয়তা উপেক্ষা করতে বলুন
সার্ভার = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/';
dlgTitle = 'Roomba Install/Update';
% প্রদর্শন উদ্দেশ্য এবং নিশ্চিতকরণ পান
প্রম্পট = {
'এই প্রোগ্রামটি এই EF 230 Roomba ফাইলগুলি ডাউনলোড করবে:'
''
strjoin (ফাইল, '')
''
'এই ফোল্ডারে:'
''
সিডি
''
'আপনি কি অবিরত করতে চান? '
};
বীপ;
yn = questdlg (প্রম্পট,…
dlgTitle,…
'হ্যাঁ', 'না', 'হ্যাঁ');
যদি ~ strcmp (yn, 'Yes'), রিটার্ন; শেষ
% বিদ্যমান ফাইলগুলির তালিকা পান
current_files = files (cellfun (xexist, files)> 0);
যদি ~ isempty (বিদ্যমান_ ফাইল)
% নিশ্চিত করুন যে তাদের প্রতিস্থাপন করা সত্যিই ঠিক আছে
প্রম্পট = {'আপনি এই ফাইলগুলি প্রতিস্থাপন করছেন:'
''
strjoin (বিদ্যমান_ ফাইল, '')
''
'ঠিক আছে?'
};
বিপ;
yn = questdlg (প্রম্পট,…
dlgTitle,…
'হ্যাঁ', 'না', 'হ্যাঁ');
যদি ~ strcmp (yn, 'Yes'), ফিরুন; শেষ
শেষ
% ফাইল ডাউনলোড করুন
cnt = 0;
i = 1 এর জন্য: দৈর্ঘ্য (ফাইল)
f = ফাইল {i};
disp (['ডাউনলোড করা' f]);
চেষ্টা করুন
url = [সার্ভার f];
websave (f, url, options); নিরাপত্তা ত্রুটি এড়াতে % যোগ বিকল্প
cnt = cnt + 1;
ধরা
disp (['ডাউনলোড করতে ত্রুটি' f]);
ডামি = [f '.html'];
যদি বিদ্যমান থাকে (ডামি, 'ফাইল') == 2
মুছে ফেলুন (ডামি)
শেষ
শেষ
শেষ
যদি cnt == দৈর্ঘ্য (ফাইল)
msg = 'ইনস্টলেশন সফল';
waitfor (msgbox (msg, dlgTitle));
অন্য
msg = 'ইনস্টলেশন ত্রুটি - বিস্তারিত জানার জন্য কমান্ড উইন্ডো দেখুন';
waitfor (errordlg (msg, dlgTitle));
শেষ
শেষ %roombaInstall
ধাপ 3: আপনার রুম্বার সাথে সংযোগ করুন
এখন ওয়াইফাই ব্যবহার করে আপনার রুম্বার সাথে সংযোগ করার সময় এসেছে। 2 টি আঙ্গুল ব্যবহার করে ডক এবং স্পট বোতাম টিপুন একসাথে আপনার রুমা চালু বা রিসেট করতে। পরবর্তী, আপনার রোবটের সাথে সংযোগ স্থাপনের জন্য MATLAB এর কমান্ড উইন্ডোতে r = roomba (আপনার রুম্বার#) কোডটি চালান। একবার আপনি এই আদেশটি কার্যকর করার পরে, আপনার রুম্বা যাওয়ার জন্য প্রস্তুত হওয়া উচিত।
ধাপ 4: আপনি কিভাবে আপনার রুম্বা নিয়ন্ত্রণ করতে চান তা চয়ন করুন
আপনার রুম্বাকে নিয়ন্ত্রণ করার দুটি উপায় রয়েছে: স্বায়ত্তশাসিতভাবে বা নিয়ন্ত্রক হিসাবে স্মার্টফোন ব্যবহার করা।
যদি আপনি স্বয়ংক্রিয়ভাবে রুম্বা চালাতে চান, তাহলে আপনাকে তিনটি অন্তর্নির্মিত সেন্সর ব্যবহার করতে হবে: ক্লিফ সেন্সর, বাম্প সেন্সর এবং লাইট সেন্সর।
একটি স্মার্টফোন ব্যবহার করার জন্য, আপনাকে প্রথমে আপনার স্মার্টফোনটিকে আপনার কম্পিউটারের সাথে নিচের ধাপগুলি অনুসরণ করে সংযুক্ত করতে হবে।
দ্রষ্টব্য: আপনার কম্পিউটার এবং স্মার্টফোন সঠিকভাবে সংযোগ করার জন্য একই ওয়াইফাই নেটওয়ার্কে থাকা প্রয়োজন!
1. আপনার ডিভাইসের অ্যাপ স্টোর থেকে MATLAB অ্যাপটি ডাউনলোড করুন।
2. আপনার কমান্ড উইন্ডোতে "সংযোগকারী চালু করুন" টাইপ করুন এবং একটি পাসওয়ার্ড সেট করুন যা উভয় ডিভাইসে ইনপুট করতে হবে।
3. এটি করার পর, MATLAB আপনাকে আপনার কম্পিউটারের IP ঠিকানা দেবে। আপনাকে আপনার স্মার্টফোনে MATLAB অ্যাপের সেটিংস পৃষ্ঠায় যেতে হবে এবং প্রদত্ত আইপি ঠিকানা এবং পূর্বে প্রবেশ করা পাসওয়ার্ড ব্যবহার করে একটি কম্পিউটার যুক্ত করতে হবে।
4. আপনার কম্পিউটারের কমান্ড উইন্ডোতে, m = mobiledev কোডটি টাইপ করুন এবং এটি আপনার স্মার্টফোনটিকে আপনার রুম্বার জন্য নিয়ামক হিসেবে শুরু করতে হবে।
5. আপনার কম্পিউটার এবং স্মার্টফোন এখনই যাওয়ার জন্য প্রস্তুত হওয়া উচিত।
ধাপ 5: আপনার রুমা চালান
এখন যেহেতু আপনার মার্স রোভার তৈরির জন্য প্রয়োজনীয় সমস্ত সরঞ্জাম রয়েছে, আপনি নিজের কোড তৈরি করতে প্রস্তুত। আমরা স্বায়ত্তশাসিত ড্রাইভিং এবং স্মার্টফোন-নিয়ন্ত্রিত ড্রাইভিং উভয়ের জন্য নীচে একটি উদাহরণ কোড সংযুক্ত করেছি।
স্বায়ত্তশাসিত ড্রাইভিং
ফাংশন Explore_modified (r)
%ইনপুট আর্গুমেন্ট: 1 রুমবা বস্তু, আর
%আউটপুট আর্গুমেন্ট: কিছুই না
%বর্ণনা:
%ফাংশন একটি অসীম ব্যবহার করে যখন লুপ স্বায়ত্তশাসনের অনুমতি দেয়
বট এর আশেপাশের %এক্সপ্লোরেশন।
%
%funciton এছাড়াও কি করতে হবে জন্য রুমবা নির্দেশাবলী প্রদান করে
নিম্নলিখিত পরিস্থিতিগুলি: চাকা (গুলি) মাটির সাথে যোগাযোগ হারিয়ে ফেলে, %বস্তুটি বটের সামনে বা উভয় পাশে সনাক্ত করা হয়েছে এবং a
%হঠাৎ ড্রপ বট এর সামনে বা উভয় পাশে সনাক্ত করা হয়।
%
%সাধারণ নির্দেশাবলী সর্বাধিক করার উদ্দেশ্যে পরিচালিত কমান্ড অন্তর্ভুক্ত করে
%এক্সপ্লোরেশন বা একটি সনাক্ত করা বিপদ এড়াতে এবং যোগাযোগের আদেশ
বটের আবিষ্কার (ছবি), অবস্থান (গ্রাফ) সম্পর্কিত %তথ্য, ম্যাটল্যাব এবং/অথবা ইমেইলের মাধ্যমে ব্যবহারকারীর সাথে %এবং রাজ্য (অসহায় সতর্কতা)। বেশ কয়েকটি
ভোগের জন্য %শব্দ কমান্ড যোগ করা হয়।
%সেটআপ ইমেল ক্ষমতা
mail = '[email protected]';
পাসওয়ার্ড = 'EF230Roomba';
setpref ('ইন্টারনেট', 'SMTP_Server', 'smtp.gmail.com');
setpref ('ইন্টারনেট', 'E_mail', মেইল);
setpref ('ইন্টারনেট', 'SMTP_Username', মেইল);
setpref ('ইন্টারনেট', 'SMTP_Password', পাসওয়ার্ড);
প্রপস = java.lang. System.getProperties;
props.setProperty ('mail.smtp.starttls.enable', 'true');
props.setProperty ('mail.smtp.auth', 'true');
props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory');
props.setProperty ('mail.smtp.socketFactory.port', '465');
% r = রুমবা (19)
r.beep ('G2 ^^, G2 ^^, G2 ^^, G2 ^^, A2 ^^, A2 ^^, G1 ^^, E1 ^^, C2 ^^, C2 ^^, C1 ^^, C1, D1 ^^, C1 ^^, D2, E4 ^^, G2 ^^, G2 ^^, G2 ^^, G2 ^^, A2 ^^, A2 ^^, G1 ^^, E1, C2 ^^, C2 ^^, C2 ^^, E1 ^^, E1 ^^, E1 ^^, D1 ^^, C4 ^^ ');
v =.1;
প্রতিফলিত তারিখ = 2700; %সেট ক্লিফ সেন্সর রেফারেন্স মান
lightBumper_datum = 200; %সেট হালকা বাম্পার সেন্সর রেফারেন্স মান
অবস্থান = [0, 0]; ডেটাম ইনিশিয়ালাইজড সহ পজিশন স্টোরেজের জন্য %ভেরিয়েবল
কোণ = 0; %সেট রেফারেন্স কোণ
netangle = 0; %নেট কোণ স্থানচ্যুতি
আমি = 2; পজিশন স্টোরেজ ভেরিয়েবলে সারি যোগ করার জন্য %ইটারেটর
dist = 0;
r.setDriveVelocity (v, v); %শুরু রুমবা এগিয়ে যাচ্ছে
যখন সত্য
ক্লিফ = r.getCliffSensors;
বাম্প = r.getBumpers;
আলো = r.getLightBumpers;
RandAngle = Randi ([20, 60], 1); %20 এবং 60 ডিগ্রির মধ্যে 1 এলোমেলো কোণ তৈরি করে। বটকে লুপে আটকাতে বাধা দিতে ব্যবহৃত হয়
যদি এক বা একাধিক চাকা মাটির সাথে যোগাযোগ হারিয়ে ফেলে তাহলে কি করতে হবে:
%চলাচল বন্ধ করুন, আশেপাশের ছবি সহ একটি সতর্কতা ইমেল পাঠান, %এবং ব্যবহারকারীকে জিজ্ঞাসা করুন এগিয়ে যাওয়া বা সাহায্যের জন্য অপেক্ষা করা
যদি Bump.rightWheelDrop == 1 || Bump.leftWheelDrop == 1
r.stop
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle); %পেতে x সমন্বয়
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); %পেতে y সমন্বয়
i = i+1;
r.beep ('F#1 ^^, C1 ^^, F#1 ^^, C1 ^^, F#1 ^^, C1 ^^, F#1 ^^, C1 ^^, F#1 ^^, C1 ^^, F#1 ^^, C1 ^^, F#1 ^^, C1 ^^, F#1 ^^, C1 ^^ ')
img = r.getImage;
imwrite (img, 'stuck.png');
%--------------------------
imfile = 'আটকে যাওয়া। png';
অবস্থান = savepos (pos);
%---------------------------
সেন্ডমেইল (মেইল, 'হেল্প!', 'আমি একটি চূড়ায় আটকে আছি!'
list = {'Continue', 'Stop'};
idx = মেনু ('আমার কি করা উচিত?', তালিকা);
যদি idx == 2
বিরতি
শেষ
বটের সামনে কোন বস্তু ধরা পড়লে কি করতে হবে:
%থামুন, ফিরে যান, ছবি তুলুন, আবিষ্কারের সতর্ক ব্যবহারকারী
%ইমেইলের মাধ্যমে, 90 ডিগ্রী ঘুরান এবং অন্বেষণ করতে থাকুন
elseif Light.leftCenter> lightBumper_datum || Light.rightCenter> lightBumper_datum || Bump.front == 1
r.stop;
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle); %পেতে x সমন্বয়
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); %পেতে y সমন্বয়
i = i+1;
r.moveDistance (-। 125);
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle); %পেতে x সমন্বয়
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); %পেতে y সমন্বয়
i = i+1;
আর।
img = r.getImage;
imwrite (img, 'FrontBump.png')
%--------------------------
imfile = 'FrontBump.png';
অবস্থান = savepos (pos);
%---------------------------
সেন্ডমেইল (মেইল, 'সতর্কতা!', 'আমি কিছু খুঁজে পেয়েছি!', {imfile, position})
কোণ = 90;
netangle = netangle+angle;
r.turnAngle (কোণ);
r.setDriveVelocity (v, v);
বটের বাম দিকে বস্তু ধরা পড়লে কি করতে হবে:
%থামুন, বস্তুর দিকে ঘুরুন, ব্যাক আপ করুন, ছবি তুলুন, সতর্ক করুন
ইমেইলের মাধ্যমে আবিষ্কারের %ব্যবহারকারী, 90 ডিগ্রি ঘুরান এবং অন্বেষণ করতে থাকুন
অন্যথায় Light.leftFront> lightBumper_datum || Light.left> lightBumper_datum || Bump.left == 1
r.stop;
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle); %পেতে x সমন্বয়
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); %পেতে y সমন্বয়
i = i+1;
কোণ = 30;
netangle = netangle+angle;
r.turnAngle (কোণ);
r.moveDistance (-। 125);
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle); %পেতে x সমন্বয়
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); %পেতে y সমন্বয়
i = i+1;
আর।
img = r.getImage;
imwrite (img, 'LeftBump.png')
%--------------------------
imfile = 'LeftBump.png';
অবস্থান = savepos (pos);
%---------------------------
সেন্ডমেইল (মেইল, 'সতর্কতা!', 'আমি কিছু খুঁজে পেয়েছি!', {imfile, position})
কোণ = -90;
netangle = netangle+angle;
r.turnAngle (কোণ);
r.setDriveVelocity (v, v);
বটের ডানদিকে বস্তু ধরা পড়লে কি করবেন:
%থামুন, বস্তুর দিকে ঘুরুন, ব্যাক আপ করুন, ছবি তুলুন, সতর্ক করুন
ইমেইলের মাধ্যমে আবিষ্কারের %ব্যবহারকারী, 90 ডিগ্রি ঘুরান এবং অন্বেষণ করতে থাকুন
অন্যথায় Light.rightFront> lightBumper_datum || Light.right> lightBumper_datum || Bump.right == 1
r.stop;
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle); %পেতে x সমন্বয়
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); %পেতে y সমন্বয়
i = i+1;
কোণ = -30;
netangle = netangle+angle;
r.turnAngle (কোণ);
r.moveDistance (-। 125);
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle); %পেতে x সমন্বয়
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); %পেতে y সমন্বয়
i = i+1;
বিরতি (1.5);
r.beep ('C1^, C1^, C2^, D2^, D2^, C8^')
img = r.getImage;
imwrite (img, 'RightBump.png')
%--------------------------
imfile = 'RightBump.png';
অবস্থান = savepos (pos);
%---------------------------
সেন্ডমেইল (মেইল, 'সতর্কতা!', 'আমি কিছু পেয়েছি!', {imfile, position});
কোণ = 90;
netangle = netangle+angle;
r.turnAngle (কোণ);
r.setDriveVelocity (v, v);
বটের বামে ক্লিফ ধরা পড়লে কি করবেন:
%থামুন, পিছন দিকে যান, ডান দিকে ঘুরুন, অন্বেষণ চালিয়ে যান
elseif Cliff.left <reflect_datum || Cliff.leftFront <reflect_datum
r.stop;
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle); %পেতে x সমন্বয়
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); %পেতে y সমন্বয়
i = i+1;
r.moveDistance (-। 125);
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle); %পেতে x সমন্বয়
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); %পেতে y সমন্বয়
i = i+1;
কোণ = -র্যান্ডএঙ্গেল;
netangle = netangle+angle;
r.turnAngle (কোণ);
r.setDriveVelocity (v, v);
বটের ডানদিকে ক্লিফ ধরা পড়লে কি করবেন:
%থামুন, পিছনে সরে যান, বাম দিকে ঘুরুন, অন্বেষণ চালিয়ে যান
elseif Cliff.right <প্রতিফলিত_ড্যাটাম || Cliff.rightFront <reflect_datum
r.stop;
dist = r.getDistance;
pos (i, 1) = dist * sind (কোণ); %পেতে x সমন্বয়
pos (i, 2) = dist * cosd (কোণ); %পেতে y সমন্বয়
i = i+1;
r.moveDistance (-। 125);
কোণ = RandAngle;
netangle = netangle+angle;
r.turnAngle (কোণ);
r.setDriveVelocity (v, v);
শেষ
শেষ
স্মার্টফোন কন্ট্রোলার
বিকল্প = {'স্বায়ত্তশাসিত', 'ম্যানুয়াল নিয়ন্ত্রণ'}
প্রম্পট = মেনু ('আপনি কিভাবে রোভার নিয়ন্ত্রণ করতে চান?', বিকল্প)
m = mobiledev
r = রুমবা (19)
যদি প্রম্পট == 1
অনুসন্ধানকারী)
অন্য
যখন সত্য
বিরতি (.5)
PhoneData = m. Orientation;
আজি = ফোন ডেটা (1);
পিচ = PhoneData (2);
পাশ = PhoneData (3);
যদি পাশ> 130 || সাইড <-130 %যদি ফোনটি মুখমুখি হয় তবে রুমবা বন্ধ করুন এবং লুপটি বন্ধ করুন
r.stop
r.beep ('সি, সি, সি, সি')
বিরতি
অন্যদিকে সাইড> 25 && সাইড <40 %যদি ফোনটি 25 থেকে 40 ডিগ্রির মধ্যে উল্টো দিকে বাঁকানো হয় 5 ডিগ্রি বাঁ দিকে
r.turnAngle (-5);
অন্যদিকে সাইড> 40 %যদি ফোন 40 ডিগ্রির ওপারে ঘুরিয়ে বাম 45 ডিগ্রি ঘুরিয়ে দেয়
r.turnAngle (-45)
অন্যথায় যদি ফোন -25 থেকে -40 ডিগ্রির মধ্যে ফোনটি পাশের দিকে ঘুরিয়ে ডানদিকে 5 ডিগ্রি ঘুরিয়ে দেয়
r.turnAngle (5);
অন্যদিকে সাইড <-40 %যদি ফোনটি -40 ডিগ্রি এর চেয়ে কম দিকে বাঁকানো হয় 45 ডিগ্রি বাঁ দিকে
r.turnAngle (45)
শেষ
%যদি ফোনটি উল্লম্বের কাছে থাকে তবে একটি ছবি নিন এবং এটি চক্রান্ত করুন
যদি পিচ <-60 && চিত্র <= 9
আর
img = r.getImage;
সাবপ্লট (3, 3, ছবি)
imshow (img)
শেষ
সামনের এবং পিছনের দিকনির্দেশনার উপর ভিত্তি করে %এগিয়ে যান এবং পিছনে যান
যদি পিচ> 15 && পিচ <35 %যদি 15 থেকে 35 ডিগ্রির মধ্যে পিচ অল্প দূরত্বে এগিয়ে যায়
%চলার আগে হালকা বাম্পার ডেটা পান
litBump = r.getLightBumpers;
যদি litBump.leftFront> 500 || litBump.leftCenter> 500 || litBump.rightCenter> 500 || litBump.rightFront> 500 %যদি রুমবা এর সামনে কিছু থাকে এবং যদি এটি এগিয়ে যায় তবে আঘাত করবে এবং শব্দ বার্তা প্রদর্শন করবে
r.beep ('C ^^, F#^, C ^^, F#^')
অন্যথায় %সরান
r.moveDistance (.03);
%চলার পর বাম্পার ডেটা পান
বাম্প = r.getBumpers;
যদি Bump.right == 1 || Bump.left == 1 || Bump.front == 1
r.beep ('A, C, E')
r.moveDistance (-। 01)
শেষ
%ক্লিফ সেন্সর ডেটা পান
ক্লিফ = r.getCliffSensors;
যদি Cliff.left> 1500 || Cliff.leftFront> 1500 || Cliff.rightFront> 1500 || Cliff.right> 1500 %যদি কোন কিছু ক্লিফ সেন্সর ট্রিগার করে সেটাকে লাভা এবং ব্যাক আপ হিসেবে বিবেচনা করে
r.beep ('C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C')
r.moveDistance (-। 031)
শেষ
শেষ
অন্যথায় পিচ> 35 %যদি পিচ বেশি 35 ডিগ্রি এগিয়ে যায় তবে আরও দূরত্ব
%চলার আগে হালকা বাম্পার ডেটা পান
litBump = r.getLightBumpers;
যদি litBump.leftFront> 15 || litBump.leftCenter> 15 || litBump.rightCenter> 15 || litBump.rightFront> 15 %যদি কিছু রুমবা সামনে থাকে এবং যদি এটি এগিয়ে যায় তাহলে আঘাত করবে এবং শব্দ বার্তা প্রদর্শন করবে
r.beep ('C ^^, F#^, C ^^, F#^')
অন্যথায় %সরান
r.moveDistance (.3)
%চলার পর বাম্পার ডেটা পান
বাম্প = r.getBumpers;
যদি Bump.right == 1 || Bump.left == 1 || Bump.front == 1 %যদি আপনি কিছু আঘাত করেন একটি শব্দ, প্রদর্শন বার্তা, এবং ব্যাক আপ
r.beep ('A, C, E')
r.moveDistance (-। 01)
শেষ
%চলার পরে ক্লিফ সেন্সর ডেটা পান
ক্লিফ = r.getCliffSensors;
যদি Cliff.left> 1500 || Cliff.leftFront> 1500 || Cliff.rightFront> 1500 || Cliff.right> 1500 %যদি কোন কিছু ক্লিফ সেন্সর ট্রিগার করে তাকে লাভা এবং ব্যাক আপ হিসাবে বিবেচনা করুন
r.beep ('C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C')
r.moveDistance (-। 31)
শেষ
শেষ
অন্যথায় পিচ -35 %যদি -15 এবং -35 ডিগ্রির মধ্যে পিচ স্বল্প দূরত্বে ফিরে যায়
r.moveDistance (-। 03);
%চলার পরে ক্লিফ সেন্সর ডেটা পান
ক্লিফ = r.getCliffSensors;
যদি Cliff.left> 1500 || Cliff.leftFront> 1500 || Cliff.rightFront> 1500 || Cliff.right> 1500 %যদি কোন কিছু ক্লিফ সেন্সর ট্রিগার করে সেটাকে লাভা এবং ব্যাক আপ হিসেবে বিবেচনা করে
r.beep ('C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C')
r.moveDistance (.04)
শেষ
অন্যথায় পিচ -60 %যদি -35 এবং -60 ডিগ্রির মধ্যে পিচ বেশি দূরত্বে চলে যায়
r.moveDistance (-। 3)
%চলার পরে ক্লিফ সেন্সর ডেটা পান
ক্লিফ = r.getCliffSensors;
যদি Cliff.left> 1500 || Cliff.leftFront> 1500 || Cliff.rightFront> 1500 || Cliff.right> 1500 %যদি কোন কিছু ক্লিফ সেন্সর ট্রিগার করে তাকে লাভা এবং ব্যাক আপ হিসাবে বিবেচনা করুন
r.beep ('C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C')
r.moveDistance (.31)
শেষ
শেষ
শেষ
শেষ
প্রস্তাবিত:
লাইপো ব্যালেন্স প্লাগ দিয়ে কীভাবে একটি গোপ্রোকে শক্তি দেওয়া যায়: 3 টি ধাপ
লাইপো ব্যালেন্স প্লাগের সাহায্যে কিভাবে একটি গোপ্রোকে শক্তি দেওয়া যায়: হাই বন্ধুরা, এবার আমি আপনাকে দেখাব কিভাবে ইউএসবি ডিভাইসগুলিকে পাওয়ার করার জন্য লিপো ব্যাটারির ব্যালেন্স প্লাগ ব্যবহার করতে হয়। সাধারণত, লিপো ব্যাটারি চার্জ করার সময় ব্যালেন্স প্লাগ ব্যবহার করা হয়। এটি সমস্ত কোষে একই ভোল্টেজ রক্ষা করে। কিন্তু এই হ্যাকের সাহায্যে আপনি এটি একটি পাউ হিসাবে ব্যবহার করতে পারেন
রাস্পবেরি পাই ব্যবহার করে মার্স রোভার: 5 টি ধাপ
রাস্পবেরি পাই ব্যবহার করে মার্স রোভার: প্রিয় সব গ্রেট লার্নার, আমি সবসময় মার্স রোভার সম্পর্কে জানতে আগ্রহী, 6 টি চাকা আছে যা মঙ্গলের সমস্ত পৃষ্ঠে যেতে পারে এবং পৃথিবী থেকে জিনিসগুলি অন্বেষণ করতে পারে। আমি আমার ল্যাপটপে বসে জিনিসটি অন্বেষণ করতে চাই। তাই এখন আমি এটা বানানোর সঠিক সময় বলেছি এবং
আপনার অসিসিলোস্কোপ (ফেজ সংবেদনশীল সনাক্তকরণ) শব্দে কবর দেওয়া ক্ষুদ্র সংকেতগুলি পরিমাপ করুন: 3 টি ধাপ
আপনার অসিলোস্কোপ (ফেজ সেনসিটিভ ডিটেকশন) এ নয়েজে দাফন করা ক্ষুদ্র সংকেতগুলি পরিমাপ করুন: কল্পনা করুন যে আপনি গোলমেলে একটি ছোট সংকেত পরিমাপ করতে চান যা অনেক বেশি শক্তিশালী। কীভাবে এটি করতে হয় তা দ্রুত দেখার জন্য ভিডিওটি দেখুন, অথবা বিস্তারিত জানতে পড়ুন
বৈদ্যুতিক কলার ব্যবহার করে আপনার কুকুরকে কীভাবে প্রশিক্ষণ দেওয়া যায়: 3 টি ধাপ
কিভাবে একটি বৈদ্যুতিক কলার ব্যবহার করে আপনার কুকুর প্রশিক্ষণ: বর্ণনা: এই নির্দেশাবলীতে, আমি আপনাকে শেখাব কিভাবে একটি বৈদ্যুতিক কলার ব্যবহার করে আপনার কুকুরকে প্রশিক্ষণ দিতে হয়। একটি বৈদ্যুতিক কলার একটি কুকুরকে প্রশিক্ষণের একটি দুর্দান্ত উপায় কারণ আপনি কেবল প্রাথমিক প্রশিক্ষণটি অতিক্রম করতে সক্ষম হন। শেষ লক্ষ্য থাকতে সক্ষম হওয়া
একটি Arduino ব্যবহার করে আপনার উদ্ভিদ জল দেওয়া: 5 পদক্ষেপ (ছবি সহ)
একটি Arduino ব্যবহার করে আপনার উদ্ভিদ জল Arduino দ্বারা চালিত একটি উদ্ভিদ জলের ব্যবস্থা কিভাবে তৈরি করা যায় এবং কিভাবে আপনার উদ্ভিদকে কিছুটা ব্যক্তিত্ব দিতে হয় তা এই নির্দেশযোগ্য ব্যাখ্যা করবে।