Სარჩევი:

თქვენი ოთახის გადაქცევა მარს როვერზე: 5 ნაბიჯი
თქვენი ოთახის გადაქცევა მარს როვერზე: 5 ნაბიჯი

ვიდეო: თქვენი ოთახის გადაქცევა მარს როვერზე: 5 ნაბიჯი

ვიდეო: თქვენი ოთახის გადაქცევა მარს როვერზე: 5 ნაბიჯი
ვიდეო: ლუკა და მარიამი 2024, ნოემბერი
Anonim
გადააქციე შენი ოთახიბა მარს როვერზე
გადააქციე შენი ოთახიბა მარს როვერზე

ნაბიჯი 1: შეაგროვეთ თქვენი მასალები

ამ პროექტის დასრულების მიზნით, თქვენ უნდა შეაგროვოთ შემდეგი მასალები:

1 Roomba Robot

1 ჟოლო პი ნაკრები

1 ვიდეო კამერა

წვდომა MATLAB– ზე

ნაბიჯი 2: ჩამოტვირთეთ Roomba Toolboxes MATLAB– ისთვის

ჩამოტვირთეთ Roomba Toolboxes MATLAB– ისთვის
ჩამოტვირთეთ Roomba Toolboxes MATLAB– ისთვის
ჩამოტვირთეთ Roomba Toolboxes MATLAB– ისთვის
ჩამოტვირთეთ Roomba Toolboxes MATLAB– ისთვის

გაუშვით შემდეგი კოდი, რათა დააინსტალიროთ საჭირო ინსტრუმენტები ამ პროექტის დასასრულებლად.

ფუნქცია roombaInstall

clc;

% სია ფაილების დასაყენებლად

ფაილი = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'};

% მდებარეობა ინსტალაციისთვის

პარამეტრები = weboptions ('CertificateFilename', ''); % უთხარით, რომ იგნორირება გაუკეთოს სერტიფიკატის მოთხოვნებს

სერვერი = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/';

dlgTitle = 'Roomba- ს ინსტალაცია/განახლება';

% ჩვენების მიზანი და მიიღეთ დადასტურება

მოთხოვნა = {

'ეს პროგრამა გადმოწერს ამ EF 230 Roomba ფაილებს:'

''

strjoin (ფაილები, '')

''

'ამ საქაღალდეში:'

''

cd

''

'Გინდა გააგრძელო? '

};

სიგნალი;

yn = questdlg (მოთხოვნა,…

dlg სათაური,…

"დიახ", "არა", "დიახ");

if ~ strcmp (yn, 'დიახ'), დაბრუნება; დასასრული

% მიიღეთ არსებული ფაილების სია

არსებული_ ფაილები = ფაილები (cellfun (@exist, files)> 0);

if ~ isempty (არსებული_ ფაილები)

დარწმუნდით, რომ ნამდვილად კარგია მათი შეცვლა

მოთხოვნა = {'თქვენ შეცვლით ამ ფაილებს (ფაილებს):'

''

strjoin (არსებული_ ფაილები, '')

''

'კარგი ჩანაცვლება?'

};

სიგნალი;

yn = questdlg (მოთხოვნა,…

dlg სათაური,…

"დიახ", "არა", "დიახ");

თუ ~ strcmp (yn, 'დიახ'), დაბრუნება; დასასრული

დასასრული

% ჩამოტვირთეთ ფაილები

cnt = 0;

for i = 1: სიგრძე (ფაილები)

f = ფაილები {i};

disp (['' გადმოტვირთვა 'f]);

სცადე

url = [სერვერი f];

websave (f, url, პარამეტრები); % დამატებულია პარამეტრები უსაფრთხოების შეცდომების თავიდან ასაცილებლად

cnt = cnt + 1;

დაჭერა

disp (['შეცდომა ჩამოტვირთვისას' f]);

დუმილი = [f '.html'];

თუ არსებობს (დუმილი, 'ფაილი') == 2

წაშლა (უგულო)

დასასრული

დასასრული

დასასრული

თუ cnt == სიგრძე (ფაილები)

msg = 'ინსტალაცია წარმატებულია';

waitfor (msgbox (msg, dlgTitle));

სხვა

msg = 'ინსტალაციის შეცდომა - იხილეთ ბრძანების ფანჯარა დეტალებისთვის';

waitfor (errordlg (msg, dlgTitle));

დასასრული

დასრულება %roombaInstall

ნაბიჯი 3: დაუკავშირდით თქვენს Roomba- ს

ახლა დროა დაუკავშირდეთ თქვენს Roomba– ს WiFi– ს გამოყენებით. 2 თითით დააჭირეთ ერთდროულად დოკის და წერტილის ღილაკებს, რომ ჩართოთ ან გადატვირთოთ თქვენი Roomba. შემდეგი, გაუშვით კოდი r = roomba (# თქვენი Roomba) MATLAB ბრძანების ფანჯარაში თქვენს რობოტთან დასაკავშირებლად. ამ ბრძანების შესრულების შემდეგ, თქვენი Roomba მზად იქნება წასასვლელად.

ნაბიჯი 4: შეარჩიეთ როგორ გსურთ გააკონტროლოთ თქვენი Roomba

შეარჩიეთ როგორ გსურთ გააკონტროლოთ თქვენი Roomba
შეარჩიეთ როგორ გსურთ გააკონტროლოთ თქვენი Roomba
შეარჩიეთ როგორ გსურთ გააკონტროლოთ თქვენი Roomba
შეარჩიეთ როგორ გსურთ გააკონტროლოთ თქვენი Roomba

არსებობს ორი გზა, რომლითაც შეგიძლიათ გააკონტროლოთ თქვენი Roomba: ავტონომიურად ან სმარტფონის გამოყენებით როგორც კონტროლერი.

თუ თქვენ აირჩევთ Roomba– ს ავტონომიურად მართვას, თქვენ დაგჭირდებათ სამი ჩაშენებული სენსორის გამოყენება: კლდის სენსორები, დარტყმის სენსორები და სინათლის სენსორები.

სმარტფონის გამოსაყენებლად, თქვენ ჯერ უნდა დაუკავშიროთ თქვენი სმარტფონი თქვენს კომპიუტერს ქვემოთ მოყვანილი ნაბიჯების დაცვით.

შენიშვნა: თქვენი კომპიუტერი და სმარტფონი უნდა იყოს ერთსა და იმავე WiFi ქსელში, რათა სწორად დააკავშიროთ!

1. ჩამოტვირთეთ MATLAB აპლიკაცია აპლიკაციის მაღაზიიდან თქვენს მოწყობილობაზე.

2. აკრიფეთ "კონექტორი ჩართული" თქვენი ბრძანების ფანჯარაში და დააყენეთ პაროლი, რომელიც უნდა შეიყვანოთ ორივე მოწყობილობაში.

3. ამის შემდეგ, MATLAB მოგცემთ თქვენს კომპიუტერებს IP მისამართს. თქვენ უნდა შეხვიდეთ პარამეტრების გვერდზე MATLAB აპლიკაციაში თქვენს სმარტფონზე და დაამატოთ კომპიუტერი მოცემული IP მისამართისა და ადრე შეყვანილი პაროლის გამოყენებით.

4. თქვენს კომპიუტერში ბრძანების ფანჯარაში ჩაწერეთ კოდი m = mobiledev და ეს უნდა იყოს თქვენი სმარტფონის ინიციალიზაცია როგორც Roomba– ს კონტროლერი.

5. თქვენი კომპიუტერი და სმარტფონი მზად უნდა იყოს წასასვლელად.

ნაბიჯი 5: მართეთ თქვენი Roomba

ახლა, როდესაც თქვენ გაქვთ ყველა საჭირო ინსტრუმენტი თქვენი მარს როვერის შესაქმნელად, თქვენ მზად ხართ შექმნათ თქვენი საკუთარი კოდი. ჩვენ ქვემოთ ვამაგრებთ მაგალითის კოდს როგორც ავტონომიური მართვისთვის, ასევე სმარტფონებით კონტროლირებადი მართვისთვის.

ავტონომიური მართვა

ფუნქცია Explore_modified (r)

%შეყვანის არგუმენტები: 1 roomba ობიექტი, r

%გამომავალი არგუმენტები: არცერთი

%აღწერა:

%ფუნქცია იყენებს უსასრულო ხოლო მარყუჟს ავტონომიის დასაშვებად

ბოტის შემოგარენის შესწავლა.

%

%funciton ასევე აძლევს მითითებებს roomba– ს რა უნდა გააკეთოს

შემდეგი სიტუაციები: ბორბალი (ები) კარგავს კონტაქტს მიწასთან, %ობიექტი აღმოჩენილია ბოტის წინ ან ორივე მხარეს და ა

%მოულოდნელი ვარდნა გამოვლენილია ბოტის წინ ან მის ორივე მხარეს.

%

ტიპიური ინსტრუქციები მოიცავს მოძრაობის ბრძანებებს, რომლებიც მიზნად ისახავს მაქსიმალურად გაზრდას

ძიება ან თავიდან აცილება გამოვლენილი საფრთხე და ბრძანებები დაუკავშირდეს

%ინფორმაცია ბოტების აღმოჩენებთან დაკავშირებით (სურათები), პოზიცია (გრაფიკი), %და მდგომარეობა (დაბლოკილი გაფრთხილება) მომხმარებელთან matlab და/ან ელ. რამდენიმე

%ხმოვანი ბრძანებები ემატება სიამოვნებისთვის.

%ელ.ფოსტის შესაძლებლობების დაყენება

ფოსტა = '[email protected]';

პაროლი = 'EF230Roomba';

setpref ("ინტერნეტი", "SMTP_Server", "smtp.gmail.com");

setpref ('ინტერნეტი', 'E_mail', ფოსტა);

setpref ("ინტერნეტი", "SMTP_Username", ფოსტა);

setpref ("ინტერნეტი", "SMTP_Password", პაროლი);

props = 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 = roomba (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; %მითითებული სინათლის ბამპერის სენსორების საცნობარო მნიშვნელობა

pos = [0, 0]; %ცვლადი პოზიციის შესანახად მონაცემების ინიციალიზებით

კუთხე = 0; %მითითებული მითითების კუთხე

netangle = 0; %წმინდა კუთხის გადაადგილება

i = 2; %გამეორება სტრიქონების დასამატებლად საცავის ცვლადზე

dist = 0;

r.setDriveVelocity (v, v); დაიწყეთ ოთახის წინსვლა

მართალია

Cliff = r.getCliffSensors;

Bump = r.getBumpers;

მსუბუქი = r.getLightBumpers;

RandAngle = რანდი ([20, 60], 1); %წარმოქმნის 1 შემთხვევით კუთხეს 20 -დან 60 გრადუსამდე. გამოიყენება ბოტის მარყუჟში ჩარჩენის თავიდან ასაცილებლად

რა უნდა გააკეთოს, თუ ერთი ან მეტი ბორბალი კარგავს კონტაქტს მიწასთან:

%შეაჩერე მოძრაობა, გააგზავნეთ გამაფრთხილებელი ელ.წერილი გარემოს სურათებით, %და ჰკითხეთ მომხმარებელს გააგრძელოს თუ დაელოდოს დახმარებას

თუ Bump.rightWheelDrop == 1 || Bump.leftWheelDrop == 1

რ. გაჩერება

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 = 'stuck.png';

პოზიცია = savepos (pos);

%---------------------------

sendmail (ფოსტა, 'HELP!', 'მე კლდეზე ვარ ჩაძირული!', {imfile, position})

სია = {'გაგრძელება', 'გაჩერება'};

idx = მენიუ ("რა უნდა გავაკეთო?", სია);

თუ idx == 2

შესვენება

დასასრული

%რა უნდა გააკეთოს, თუ ობიექტი აღმოჩენილია ბოტის წინ:

%გაჩერება, გადაადგილება უკან, სურათის გადაღება, გაფრთხილება მომხმარებლის აღმოჩენის შესახებ

%ელექტრონული ფოსტით, გადაუხვიეთ 90 გრადუსს და განაგრძეთ გამოკვლევა

elseif Light.leftCenter> lightBumper_datum || Light.rightCenter> lightBumper_datum || Bump.front == 1

რ. გაჩერება;

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;

r.beep ('A1^, A1^, A4^, A2^, G2^, G2^, G4^, Bb2^, Bb2^, Bb3.5^, G1^, A8^')

img = r.getImage;

imwrite (img, 'FrontBump.png')

%--------------------------

imfile = 'FrontBump.png';

პოზიცია = savepos (pos);

%---------------------------

sendmail (ფოსტა, 'გაფრთხილება!', 'მე ვიპოვე რაღაც!', {imfile, position})

კუთხე = 90;

netangle = netangle+კუთხე;

r.turnAngle (კუთხე);

r.setDriveVelocity (v, v);

%რა უნდა გააკეთოს, თუ ობიექტი აღმოჩენილია ბოტის მარცხნივ:

%გაჩერება, შემობრუნება ობიექტისკენ, სარეზერვო ასლის გადაღება, სურათის გადაღება, გაფრთხილება

%აღმოჩენის მომხმარებელი ელექტრონული ფოსტით, გადაუხვიეთ 90 გრადუსს და განაგრძეთ გამოკვლევა

elseif Light.leftFront> lightBumper_datum || Light.left> lightBumper_datum || Bump.left == 1

რ. გაჩერება;

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+კუთხე;

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;

r.beep ('A4^, A4^, G1^, E1^, C3.5^, C2 ^^, C1^, C1^, C2^, D2^, D2^, E8^')

img = r.getImage;

imwrite (img, 'LeftBump.png')

%--------------------------

imfile = 'LeftBump.png';

პოზიცია = savepos (pos);

%---------------------------

sendmail (ფოსტა, 'გაფრთხილება!', 'მე ვიპოვე რაღაც!', {imfile, position})

კუთხე = -90;

netangle = netangle+კუთხე;

r.turnAngle (კუთხე);

r.setDriveVelocity (v, v);

%რა უნდა გააკეთოს, თუ ობიექტი აღმოჩენილია ბოტის მარჯვნივ:

%გაჩერება, შემობრუნება ობიექტისკენ, სარეზერვო ასლის გადაღება, სურათის გადაღება, გაფრთხილება

%აღმოჩენის მომხმარებელი ელექტრონული ფოსტით, გადაუხვიეთ 90 გრადუსს და განაგრძეთ გამოკვლევა

elseif Light.rightFront> lightBumper_datum || Light.right> lightBumper_datum || Bump.right == 1

რ. გაჩერება;

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+კუთხე;

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);

%---------------------------

sendmail (ფოსტა, 'გაფრთხილება!', 'მე ვიპოვე რაღაც!', {imfile, position});

კუთხე = 90;

netangle = netangle+კუთხე;

r.turnAngle (კუთხე);

r.setDriveVelocity (v, v);

%რა უნდა გააკეთოს, თუ კლდე აღმოჩენილია ბოტის მარცხნივ:

%გაჩერება, გადაადგილება უკან, მოუხვიეთ მარჯვნივ, განაგრძეთ გამოკვლევა

elseif Cliff.left <reflect_datum || Cliff.left წინა: <ასახვა_დანაწერი

რ. გაჩერება;

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;

კუთხე = -RandAngle;

netangle = netangle+კუთხე;

r.turnAngle (კუთხე);

r.setDriveVelocity (v, v);

%რა უნდა გააკეთოს, თუ კლდე აღმოჩენილია ბოტის მარჯვნივ:

%გაჩერება, გადაადგილება უკან, მოუხვიეთ მარცხნივ, განაგრძეთ გამოკვლევა

elseif Cliff.right <reflect_datum || Cliff.rightFront <ასახავს_დათუმს

რ. გაჩერება;

dist = r.getDistance;

pos (i, 1) = dist * sind (კუთხე); %მიიღეთ x კოორდინატი

pos (i, 2) = dist * cosd (კუთხე); %მიიღეთ y კოორდინატი

i = i+1;

r.moveDistance (-. 125);

კუთხე = RandAngle;

netangle = netangle+კუთხე;

r.turnAngle (კუთხე);

r.setDriveVelocity (v, v);

დასასრული

დასასრული

სმარტფონის კონტროლერი

პარამეტრები = {'ავტონომიური', 'ხელით კონტროლი'}

სწრაფი = მენიუ ("როგორ გსურთ როვერის კონტროლი?", პარამეტრები)

m = mobiledev

r = roomba (19)

თუ მოთხოვნა == 1

Მკვლევარი)

სხვა

მართალია

პაუზა (.5)

ტელეფონის მონაცემები = მ. ორიენტაცია;

Azi = PhoneData (1);

მოედანი = PhoneData (2);

გვერდი = PhoneData (3);

თუ გვერდი> 130 || გვერდი <-130 %თუ ტელეფონი გადატრიალებულია პირისპირ ქვემოთ, გააჩერეთ ოთახის ოთახი და დატოვეთ მარყუჟი

რ. გაჩერება

r.beep ('C, C, C, C')

შესვენება

elseif Side> 25 && Side <40 %თუ ტელეფონი არის გადახრილი გვერდულად 25 -დან 40 გრადუსამდე მოუხვიეთ მარცხნივ 5 გრადუსით

r.turnAngle (-5);

elseif გვერდი> 40 %თუ ტელეფონი გვერდულად გადააბრუნეს 40 გრადუსით მოუხვიეთ მარცხნივ 45 გრადუსი

r.turnAngle (-45)

elseif Side -40 %თუ ტელეფონი გადატრიალებულია -25 და -40 გრადუსს შორის მოუხვიეთ მარჯვნივ 5 გრადუსით

r.turnAngle (5);

elseif გვერდი <-40 %თუ ტელეფონი გვერდზეა გადახრილი -40 გრადუსზე ნაკლები მოუხვიეთ მარცხნივ 45 გრადუსით

r.turnAngle (45)

დასასრული

თუ ტელეფონი ტარდება ვერტიკალთან, აიღეთ სურათი და ჩაწერეთ იგი

თუ Pitch <-60 && სურათი <= 9

რ. ხმაური

img = r.getImage;

ქვეპლოტი (3, 3, სურათი)

ჩვენება (img)

დასასრული

%წინ და უკან წინ და უკან ორიენტირებაზე დაყრდნობით

თუ Pitch> 15 && Pitch <35 %თუ სიმაღლე 15 და 35 გრადუსს შორის წინ მიიწევს მოკლე მანძილზე

გადაადგილების წინ მიიღეთ მსუბუქი ბამპერის მონაცემები

litBump = r.getLightBumpers;

თუ litBump.left წინა> 500 || litBump.leftCenter> 500 || litBump.rightCenter> 500 || litBump.rightFront> 500 %თუ რამე არის ოთახის წინ და მოხვდება თუ ის წინ მიიწევს ხმაური და შეტყობინების ჩვენება

r.beep ('C ^^, F#^, C ^^, F#^')

სხვა %გადაადგილება

r.moveDistance (.03);

მიიღეთ ბამპერის მონაცემები გადაადგილების შემდეგ

Bump = r.getBumpers;

თუ Bump.right == 1 || Bump.left == 1 || Bump.front == 1

r.beep ('A, C, E')

r.moveDistance (-. 01)

დასასრული

%მიიღეთ კლდის სენსორის მონაცემები

Cliff = r.getCliffSensors;

თუ Cliff.left> 1500 || Cliff.left წინა> 1500 || Cliff.right წინა:> 1500 || Cliff.right> 1500 %თუ რამე იწვევს კლდის სენსორს განიხილეთ როგორც ლავა და დააბრუნეთ

r.beep ('C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C')

r.moveDistance (-. 031)

დასასრული

დასასრული

elseif Pitch> 35 %თუ სიმაღლე 35 გრადუსით მეტი წინ მიიწევს უფრო დიდ მანძილზე

გადაადგილების წინ მიიღეთ მსუბუქი ბამპერის მონაცემები

litBump = r.getLightBumpers;

თუ litBump.left წინა> 15 || litBump.leftCenter> 15 || litBump.rightCenter> 15 || litBump.rightFront> 15 %თუ რამე არის ოთახის წინ და მოხვდება თუ წინ მიიწევს ხმაური და შეტყობინების ჩვენება

r.beep ('C ^^, F#^, C ^^, F#^')

სხვა %გადაადგილება

r.moveDistance (.3)

მიიღეთ ბამპერის მონაცემები გადაადგილების შემდეგ

Bump = r.getBumpers;

თუ Bump.right == 1 || Bump.left == 1 || Bump.front == 1 %თუ რამეს დაარტყამთ გააკეთეთ ხმაური, აჩვენეთ შეტყობინება და შექმენით სარეზერვო ასლი

r.beep ('A, C, E')

r.moveDistance (-. 01)

დასასრული

%იღებს კლდის სენსორის მონაცემებს გადაადგილების შემდეგ

Cliff = r.getCliffSensors;

თუ Cliff.left> 1500 || Cliff.left წინა> 1500 || Cliff.right წინა:> 1500 || Cliff.right> 1500 %თუ რამე იწვევს კლდის სენსორს განიხილეთ როგორც ლავა და დააბრუნეთ

r.beep ('C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C')

r.moveDistance (-. 31)

დასასრული

დასასრული

elseif Pitch -35 %თუ მოედანზე -15 და -35 გრადუსი გადაადგილდება უკან მცირე მანძილზე

r.moveDistance (-. 03);

%იღებს კლდის სენსორის მონაცემებს გადაადგილების შემდეგ

Cliff = r.getCliffSensors;

თუ Cliff.left> 1500 || Cliff.left წინა> 1500 || Cliff.right წინა:> 1500 || Cliff.right> 1500 %თუ რამე იწვევს კლდის სენსორს განიხილეთ როგორც ლავა და დააბრუნეთ

r.beep ('C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C')

r.moveDistance (.04)

დასასრული

elseif Pitch -60 %თუ სიმაღლე -35 -დან -60 გრადუსს შორის გადაადგილდება უფრო დიდ მანძილზე

r.moveDistance (-. 3)

%იღებს კლდის სენსორის მონაცემებს გადაადგილების შემდეგ

Cliff = r.getCliffSensors;

თუ Cliff.left> 1500 || Cliff.left წინა> 1500 || Cliff.right წინა:> 1500 || Cliff.right> 1500 %თუ რამე იწვევს კლდის სენსორს განიხილეთ როგორც ლავა და დააბრუნეთ

r.beep ('C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C')

r.moveDistance (.31)

დასასრული

დასასრული

დასასრული

დასასრული

გირჩევთ: