ዝርዝር ሁኔታ:
- ደረጃ 1 - ቁሳቁሶችዎን ይሰብስቡ
- ደረጃ 2 - ለ MATLAB የ Roomba መሣሪያ ሳጥኖችን ያውርዱ
- ደረጃ 3: ከእርስዎ Roomba ጋር ይገናኙ
- ደረጃ 4: የእርስዎን Roomba ለመቆጣጠር እንዴት እንደሚፈልጉ ይምረጡ
- ደረጃ 5 - የእርስዎን Roomba ይንዱ
ቪዲዮ: Roomba ን ወደ ማርስ ሮቨር ማዞር 5 ደረጃዎች
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:29
ደረጃ 1 - ቁሳቁሶችዎን ይሰብስቡ
ይህንን ፕሮጀክት ለማጠናቀቅ የሚከተሉትን ቁሳቁሶች መሰብሰብ ያስፈልግዎታል።
1 Roomba ሮቦት
1 Raspberry Pi Kit
1 ቪዲዮ ካሜራ
ወደ MATLAB መዳረሻ
ደረጃ 2 - ለ MATLAB የ Roomba መሣሪያ ሳጥኖችን ያውርዱ
ይህንን ፕሮጀክት ለማጠናቀቅ አስፈላጊዎቹን የመሳሪያ ሳጥኖች ለመጫን የሚከተለውን ኮድ ያሂዱ።
ተግባር roomba ጫን
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 (ፋይሎች ፣”)
''
'ወደዚህ አቃፊ:'
''
ሲዲ
''
'መቀጠል ይፈልጋሉ? '
};
ቢፕ;
yn = questdlg (ጥያቄ ፣…
dlgTitle ፣…
“አዎ” ፣ “አይ” ፣ “አዎ”);
~ strcmp (yn ፣ ‘አዎ’) ከሆነ ፣ ይመለሱ ፤ አበቃ
ያሉትን የፋይሎች ዝርዝር % ያግኙ
exist_files = ፋይሎች (cellfun (@exist ፣ files)> 0);
~ ባዶ ከሆነ (ነባር_መለያዎች)
% እነሱን መተካት በእውነት ትክክል መሆኑን ያረጋግጡ
ፈጣን = {'እነዚህን ፋይሎች (ዎች) በመተካት ላይ ነዎት ፦'
''
strjoin (ነባር_ ፋይሎች ፣”)
''
'ለመተካት እሺ?'
};
ቢፕ;
yn = questdlg (ጥያቄ ፣…
dlgTitle ፣…
“አዎ” ፣ “አይ” ፣ “አዎ”);
~ strcmp (yn ፣ ‘አዎ’) ከሆነ ፣ ይመለሱ ፤ አበቃ
አበቃ
% ፋይሎቹን ያውርዱ
cnt = 0;
ለ i = 1: ርዝመት (ፋይሎች)
f = ፋይሎች {i};
disp (['ማውረድ' ረ]);
ሞክር
url = [አገልጋይ ረ];
ድር አስቀምጥ (ረ ፣ ዩአርኤል ፣ አማራጮች); የደህንነት ስህተቶችን ለማስወገድ % የተጨመሩ አማራጮች
cnt = cnt + 1;
መያዝ
disp (['ማውረድ ስህተት' ረ]);
ዱሚ = [f '.html'];
ካለ (ዱሚ ፣ ‹ፋይል›) == 2
ሰርዝ (ዱሚ)
አበቃ
አበቃ
አበቃ
cnt == ርዝመት (ፋይሎች) ከሆነ
msg = 'መጫኑ ተሳክቷል';
ተጠባባቂ (msgbox (msg ፣ dlgTitle));
ሌላ
msg = 'የመጫን ስህተት - ለዝርዝሮች የትእዛዝ መስኮቱን ይመልከቱ';
ተጠባባቂ (errordlg (msg ፣ dlgTitle));
አበቃ
ጨርስ %roomba ጫን
ደረጃ 3: ከእርስዎ Roomba ጋር ይገናኙ
WiFi ን በመጠቀም ከእርስዎ Roomba ጋር ለመገናኘት ጊዜው አሁን ነው። 2 ጣቶችን በመጠቀም የእርስዎን Roomba ለማብራት ወይም ዳግም ለማስጀመር የመትከያ እና የስፖት ቁልፎችን በአንድ ጊዜ ይጫኑ። በመቀጠልም ከሮቦትዎ ጋር ለመገናኘት በ MATLAB የትእዛዝ መስኮት ውስጥ ኮዱን r = roomba (# የእርስዎ Roomba) ያሂዱ። አንዴ ይህንን ትእዛዝ ከፈጸሙ በኋላ የእርስዎ Roomba ለመሄድ ዝግጁ መሆን አለበት።
ደረጃ 4: የእርስዎን Roomba ለመቆጣጠር እንዴት እንደሚፈልጉ ይምረጡ
የእርስዎን Roomba ን የሚቆጣጠሩባቸው ሁለት መንገዶች አሉ -በራስ -ሰር ወይም ስማርትፎን እንደ መቆጣጠሪያ በመጠቀም።
Roomba ን በራስ-ሰር ለማሽከርከር ከመረጡ ፣ ሶስቱን አብሮገነብ ዳሳሾችን ማለትም የገደል ዳሳሾችን ፣ የጎድን ዳሳሾችን እና ቀላል ዳሳሾችን መጠቀም ያስፈልግዎታል።
ስማርትፎን ለመጠቀም በመጀመሪያ ከዚህ በታች ያሉትን ደረጃዎች በመከተል ስማርትፎንዎን ከኮምፒዩተርዎ ጋር ማገናኘት ያስፈልግዎታል።
ማሳሰቢያ -ኮምፒተርዎ እና ስማርትፎንዎ በትክክል ለመገናኘት በተመሳሳይ የ WiFi አውታረ መረብ ላይ መሆን አለባቸው!
1. MATLAB መተግበሪያውን በመሣሪያዎ ላይ ካለው የመተግበሪያ መደብር ያውርዱ።
2. በትእዛዝ መስኮትዎ ውስጥ “አገናኝ በርቷል” ብለው ይተይቡ እና በሁለቱም መሣሪያዎች ውስጥ ማስገባት የሚያስፈልገውን የይለፍ ቃል ያዘጋጁ።
3. ይህን ካደረጉ በኋላ ፣ MATLAB ኮምፒውተሮችዎን የአይፒ አድራሻ ይሰጥዎታል። በስማርትፎንዎ ላይ በ MATLAB መተግበሪያ ውስጥ ወደ የቅንብሮች ገጽ ውስጥ መግባት እና የተሰጠውን የአይፒ አድራሻ እና ቀደም ብለው ያስገቡትን የይለፍ ቃል በመጠቀም ኮምፒተር ማከል ያስፈልግዎታል።
4. በኮምፒተርዎ ላይ ባለው የትእዛዝ መስኮት ውስጥ ኮዱን m = mobiledev ይተይቡ እና ይህ የእርስዎን ስማርትፎን እንደ Roomba መቆጣጠሪያ አድርጎ ማስጀመር አለበት።
5. ኮምፒተርዎ እና ስማርትፎንዎ አሁን ለመሄድ ዝግጁ መሆን አለባቸው።
ደረጃ 5 - የእርስዎን Roomba ይንዱ
አሁን የእርስዎን ማርስ ሮቨር ለመፍጠር ሁሉም አስፈላጊ መሣሪያዎች አሉዎት ፣ የራስዎን ኮድ ለመፍጠር ዝግጁ ነዎት። ለሁለቱም ለራስ ገዝ መንዳት እና በስማርትፎን ቁጥጥር ለሚደረግ መንዳት ከዚህ በታች የምሳሌ ኮድ አያይዘናል።
ራስ -ሰር መንዳት
ተግባር Explore_modified (r)
%የግቤት ክርክሮች 1 roomba object ፣ r
%የውጤት ክርክሮች: የለም
%መግለጫ ፦
%ተግባር ገዝነትን ለመፍቀድ ማለቂያ በሌለው ጊዜ ይጠቀማል
የቦት አካባቢን ማሰስ።
%
%funciton በተጨማሪ ውስጥ ምን ማድረግ እንዳለበት ለክፍልባ መመሪያዎችን ይሰጣል
የሚከተሉት ሁኔታዎች - ጎማ (ዎች) ከመሬት ጋር ግንኙነት (ማጣት) ማጣት ፣ ሀ
%ነገር ከቦቱ ፊት ወይም ከሁለቱም ወገን ተገኝቷል ፣ እና ሀ
ከቦቱ ፊት ወይም ከሁለቱም ወገን %ድንገተኛ ጠብታ ተገኝቷል።
%
%የተለመዱ መመሪያዎች ከፍ ለማድረግ የታሰቡ የእንቅስቃሴ ትዕዛዞችን ያካትታሉ
%አሰሳ ወይም የተገኘ አደጋን ያስወግዱ እና ለመግባባት ያዝዙ
ስለ ቦቶች ግኝቶች (ስዕሎች) ፣ አቀማመጥ (ግራፍ) ፣
%እና ሁኔታ (የታሰረ ማስጠንቀቂያ) በማታብ እና/ወይም በኢሜል ከተጠቃሚው ጋር። በርካታ
ለመደሰት %የድምፅ ትዕዛዞች ተጨምረዋል።
%የማዋቀር የኢሜል ችሎታዎች
mail = '[email protected]';
የይለፍ ቃል = 'EF230Roomba';
setpref ('በይነመረብ' ፣ 'SMTP_Server' ፣ 'smtp.gmail.com');
setpref ('በይነመረብ' ፣ 'ኢ_ሜል' ፣ ሜይል);
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;
reflect_datum = 2700; %አዘጋጅ የገደል ዳሳሾች የማጣቀሻ እሴት
lightBumper_datum = 200; %set light Bumper sensors የማጣቀሻ እሴት
pos = [0, 0]; ከተጀመረበት የውሂብ ክምችት ጋር ለቦታ ማከማቻ %ተለዋዋጭ
አንግል = 0; %አዘጋጅ ማጣቀሻ አንግል
netangle = 0; %የተጣራ የማዕዘን መፈናቀል
እኔ = 2; ወደ ቦታ ማከማቻ ተለዋዋጭ ረድፎችን ለማከል %ተደጋጋሚ
dist = 0;
r.setDriveVelocity (v, v); %ጀምር roomba ወደፊት እየገሰገሰ
እውነት እያለ
ገደል = 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;
መፃፍ (img ፣ 'stick.png');
%--------------------------
imfile = 'stick.png';
አቀማመጥ = savepos (pos);
%---------------------------
የመልዕክት መልእክት (ኢሜል ፣ “እገዛ!” ፣ “በገደል ላይ ተዘፍቄያለሁ!” ፣ {imfile ፣ position})
list = {'ቀጥል' ፣ 'አቁም'};
idx = ምናሌ ('ምን ማድረግ አለብኝ?' ፣ ዝርዝር);
idx == 2 ከሆነ
ሰበር
አበቃ
%አንድ ነገር በቦት ፊት ከተገኘ ምን ማድረግ እንዳለበት
%አቁም ፣ ወደ ኋላ ተመለስ ፣ ፎቶ አንሳ ፣ የግኝት ተጠቃሚን አሳውቅ
በኢሜል %፣ በ 90 ዲግሪ ማዞር እና ማሰስዎን ይቀጥሉ
ሌላ ከሆነ 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;
r.beep ('A1^፣ A1^፣ A4^፣ A2^፣ G2^፣ G2' ፣ G4^፣ Bb2^፣ Bb2 '፣ Bb3.5' '፣ G1^፣ A8' ')
img = r.getImage;
መፃፍ (img ፣ 'FrontBump.png')
%--------------------------
imfile = 'FrontBump.png';
አቀማመጥ = savepos (pos);
%---------------------------
የመልዕክት መልእክት (ኢሜል ፣ ‘ማንቂያ!’ ፣ ‘የሆነ ነገር አገኘሁ!’ ፣ {imfile ፣ position})
ማዕዘን = 90;
netangle = netangle+ማዕዘን;
r.turnAngle (አንግል);
r.setDriveVelocity (v, v);
%ነገር ከቦቱ ግራ ከተገኘ ምን ማድረግ እንዳለበት
%አቁም ፣ ወደ ነገሩ አዙር ፣ ምትኬ አስቀምጥ ፣ ፎቶ አንሳ ፣ ንቃት
በኢሜል %የግኝት ተጠቃሚ ፣ 90 ዲግሪዎች ያዙሩ እና ማሰስዎን ይቀጥሉ
elseif 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); %ተቀናጅቶ ያግኙ
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;
መፃፍ (img ፣ 'LeftBump.png')
%--------------------------
imfile = 'LeftBump.png';
አቀማመጥ = savepos (pos);
%---------------------------
የመልዕክት መልእክት (ኢሜል ፣ ‘ማንቂያ!’ ፣ ‘የሆነ ነገር አገኘሁ!’ ፣ {imfile ፣ position})
አንግል = -90;
netangle = netangle+ማዕዘን;
r.turnAngle (አንግል);
r.setDriveVelocity (v, v);
%ነገር በቦት ቀኝ ከተገኘ ምን ማድረግ እንዳለበት
%አቁም ፣ ወደ ነገሩ አዙር ፣ ምትኬ አስቀምጥ ፣ ፎቶ አንሳ ፣ ንቃት
በኢሜል %የግኝት ተጠቃሚ ፣ 90 ዲግሪን ያዙሩ እና ማሰስዎን ይቀጥሉ
ሌላ ከሆነ Light.rightFront> lightBumper_datum || ፈካ ያለ.እምነት> lightBumper_datum || ቡም.እውቀት == 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+ማዕዘን;
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;
መፃፍ (img ፣ 'RightBump.png')
%--------------------------
imfile = 'RightBump.png';
አቀማመጥ = savepos (pos);
%---------------------------
የመልዕክት መልእክት (ኢሜል ፣ ‘ማንቂያ!’ ፣ ‘የሆነ ነገር አገኘሁ!’ ፣ {imfile ፣ position});
ማዕዘን = 90;
netangle = netangle+ማዕዘን;
r.turnAngle (አንግል);
r.setDriveVelocity (v, v);
ከገደል ጫፍ በስተግራ ከተገኘ ምን ማድረግ እንዳለበት
%ያቁሙ ፣ ወደ ኋላ ይንቀሳቀሱ ፣ ወደ ቀኝ ይታጠፉ ፣ ማሰስዎን ይቀጥሉ
ሌላ ከሆነ ገደል.ግራ <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); %ተቀናጅቶ ያግኙ
i = i+1;
አንግል = -RandAngle;
netangle = netangle+ማዕዘን;
r.turnAngle (አንግል);
r.setDriveVelocity (v, v);
በገደል በስተቀኝ ከቦታ በስተቀኝ ከተገኘ ምን ማድረግ እንዳለበት
%ያቁሙ ፣ ወደ ኋላ ይንቀሳቀሱ ፣ ወደ ግራ ይታጠፉ ፣ ማሰስዎን ይቀጥሉ
ሌላ ከሆነ ገደል.እውቀት <reflect_datum || ገደል. ቀኝ ፊት ለፊት <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+ማዕዘን;
r.turnAngle (አንግል);
r.setDriveVelocity (v, v);
አበቃ
አበቃ
የስማርትፎን ተቆጣጣሪ
አማራጮች = {'ገዝ' ፣ 'በእጅ ቁጥጥር'}
ፈጣን = ምናሌ ('ሮቨርን እንዴት መቆጣጠር ይፈልጋሉ?' ፣ አማራጮች)
m = mobiledev
r = roomba (19)
ፈጣን ከሆነ == 1
ያስሱ (r)
ሌላ
እውነት እያለ
ለአፍታ አቁም (.5)
PhoneData = m. Orientation;
አዚ = PhoneData (1);
Pitch = PhoneData (2);
ጎን = PhoneData (3);
ከሆነ ጎን> 130 || ጎን <-130 %ስልኩ ወደ ታች ከተገለበጠ የክፍልባውን እና የመውጫ loop ን ያቁሙ
r.stop
r.beep ('ሲ ፣ ሲ ፣ ሲ ፣ ሲ')
ሰበር
elseif Side> 25 && Side <40 %ስልኩ ከ 25 እስከ 40 ዲግ ወደ 5 ግራ ወደ ግራ ከዞረ
r.turnAngle (-5);
elseif Side> 40 %ስልኩ ወደ ጎን ከ 40 ዲግሪ ዞሮ ወደ ግራ 45 ዲግሪ ከሆነ
r.turnAngle (-45)
elseif Side -40 %ስልኩ ከ -25 እስከ -40 ዲግ ወደ 5 ዲግታ ወደ ጎን ቢዞር
r.turnAngle (5);
elseif Side <-40 %ስልኩ ወደ ጎን ከዞረ ከ -40 ዲግ ወደ ግራ 45 ዲግሪ ከሆነ
r. TurnAngle (45)
አበቃ
%ስልክ በአቀባዊ አቅራቢያ ከተያዘ ምስል ወስደው ያሴሩት
Pitch <-60 && ምስል <= 9
r.beep
img = r.getImage;
ንዑስ ክፍል (3 ፣ 3 ፣ ምስል)
imshow (img)
አበቃ
ከፊትና ከኋላ አቅጣጫ ላይ በመመሥረት %ወደ ፊት እና ወደ ኋላ ይራመዱ
Pitch> 15 && Pitch <15 %በ 15 እና 35 ዲግሪ መካከል ያለው ርቀት በአጭር ርቀት ወደፊት ቢገፋ
ከመንቀሳቀስዎ በፊት %የመብራት መከላከያ መረጃ ያግኙ
litBump = r.getLightBumpers;
if litBump.leftFront> 500 || litBump.leftCenter> 500 || litBump.rightCenter> 500 || litBump.rightFront> 500 %የሆነ ነገር ከክፍሉባ ፊት ከሆነ እና ወደ ፊት ከሄደ ይምታ እና ጫጫታ ያድርጉ እና መልእክት ያሳዩ
r.beep ('C ^^ ፣ F#^፣ C ^^ ፣ F#^')
ሌላ %መንቀሳቀስ
r.moveDistance (.03);
%ከተንቀሳቀሱ በኋላ የጥበቃ መረጃ ያግኙ
ቡም = r.getBumpers;
ቡም.እውቀት == 1 || ቡም.ግራ == 1 || Bump.front == 1
r.beep ('ሀ ፣ ሲ ፣ ኢ')
r.moveDistance (-. 01)
አበቃ
የገደል ዳሳሽ ውሂብን %ያግኙ
ገደል = r.getCliffSensors;
Cliff.left> 1500 || ገደል.ግራ ወደ ፊት> 1500 || ገደል. ቀኝ ፊት> 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;
if litBump.leftFront> 15 || litBump.leftCenter> 15 || litBump.rightCenter> 15 || litBump.rightFront> 15 %የሆነ ነገር ከክፍሉባ ፊት ከሆነ እና ወደ ፊት ከሄደ ይምታ እና ጫጫታ ያድርጉ እና መልእክት ያሳዩ
r.beep ('C ^^ ፣ F#^፣ C ^^ ፣ F#^')
ሌላ %መንቀሳቀስ
r.moveDistance (.3)
%ከተንቀሳቀሱ በኋላ የጥበቃ መረጃ ያግኙ
ቡም = r.getBumpers;
ቡም.እውቀት == 1 || ቡም.ግራ == 1 || Bump.front == 1 %የሆነ ነገር ቢመቱ ጫጫታ ያድርጉ ፣ መልእክት ያሳዩ እና ምትኬ ያስቀምጡ
r.beep ('ሀ ፣ ሲ ፣ ኢ')
r.moveDistance (-. 01)
አበቃ
ከተንቀሳቀሱ በኋላ የገደል አነፍናፊ ውሂብ %ያግኙ
ገደል = r.getCliffSensors;
Cliff.left> 1500 || ገደል.ግራ ወደ ፊት> 1500 || ገደል. ቀኝ ፊት> 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 || ገደል.ግራ ወደ ፊት> 1500 || ገደል. ቀኝ ፊት> 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 || ገደል.ግራ ወደ ፊት> 1500 || ገደል. ቀኝ ፊት> 1500 || ገደል እሺ> 1500 %የሆነ ነገር የገደል አነፍናፊን የሚቀሰቅሰው ከሆነ እንደ ላቫ እና ምትኬ አድርገው ይያዙት
r.beep ('C ^^ ፣ C ፣ C ^^ ፣ C ፣ C ^^ ፣ C ፣ C ^^ ፣ C ፣ C ^^ ፣ C ፣ C ^^ ፣ C')
r.moveDistance (.31)
አበቃ
አበቃ
አበቃ
አበቃ
የሚመከር:
አሮጌ/የተበላሸ ፒሲን ወይም ላፕቶፕን ወደ ሚዲያ ሳጥን እንዴት ማዞር እንደሚቻል -9 ደረጃዎች
የድሮ/የተበላሸ ፒሲን ወይም ላፕቶፕን ወደ ሚዲያ ሳጥን እንዴት ማዞር እንደሚቻል -ቴክኖሎጂ ከእኛ በላይ በፍጥነት እየገሰገሰ ባለበት ዓለም ውስጥ የምንወደው ኤሌክትሮኒክስ በጣም በፍጥነት ያረጀዋል። ምናልባት የእርስዎ አፍቃሪ ድመቶች የጠረጴዛዎን ላፕቶፕ አንኳኩተው ማያ ገጹ ተሰብሯል። ወይም ምናልባት ለስማርት ቲቪ የሚዲያ ሳጥን ይፈልጉ ይሆናል
የእርስዎን Raspberry Pi ወደ የርቀት መዳረሻ መግቢያ በር እንዴት ማዞር እንደሚቻል -6 ደረጃዎች
የእርስዎ Raspberry Pi ን ወደ የርቀት መዳረሻ በር እንዴት እንደሚቀየር - ሄይ ወንዶች! ከቅርብ ጊዜ ክስተቶች አንፃር ፣ በ remote.it ላይ ያለው ቡድናችን የርቀት ሥራን ህመም እና ተደራሽ ለማድረግ ሀሳቦችን በማዘጋጀት ላይ ጠንክሯል። እኛ የርቀት.itPi ኤስዲ ካርድ ምስል አምጥተናል ፣ ይህም ወደ አዲስ ሊያስገቡት የሚችሉት የ SD ካርድ ነው
IPad Stylus Tip - (ትናንሽ ክፍሎችን በጄት ላቴ ላይ እንዴት ማዞር እንደሚቻል) ፣ ይህንን በቴክ ሱቅ ላይ አደረግሁት !: 7 ደረጃዎች
IPad Stylus Tip - (ትናንሽ ክፍሎችን በጄት ላቴ ላይ እንዴት ማዞር እንደሚቻል) ፣ ይህንን በቴክ ሱቅ ውስጥ አደረግሁት! ይህ የእራስዎን አቅም (capacitive stylus) ለመሥራት በጣም ከባድው ክፍል ነው! እኔ እያደግሁ ላለው የግፊት ስሜቴ ላስቲክ የጎማውን ንብ ለመያዝ የናስ ጫፍ ያስፈልገኝ ነበር። ይህ አስተማሪ የእኔን ያሳየዎታል
Raspberry Pi ን በመጠቀም ማርስ ሮቨር 5 ደረጃዎች
Raspberry Pi ን በመጠቀም ማርስ ሮቨር - ውድ ለሁሉም ታላላቅ ተማሪ ፣ ስለ ማርስ ሮቨር ለማወቅ ሁል ጊዜ የማወቅ ጉጉት አለኝ ፣ ይህም የማርስን ወለል ሁሉ ሄዶ ነገሮችን ከምድር ሊመረምር የሚችል 6 ጎማዎች አሉት። እኔ በላፕቶፕ ላይ በመቀመጥ ነገሮችን ማሰስ እፈልጋለሁ። ስለዚህ እሱን ለማድረግ ትክክለኛውን ጊዜ እወስዳለሁ እና
ማርስ Roomba: 6 ደረጃዎች
ማርስ ሮምባ - ይህ አስተማሪ በ Raspberry Pi ቁጥጥር የሚደረግበትን የ Roomba ቫክዩም ቦት በሚሠሩበት አቅጣጫዎች ይመራዎታል። እኛ የምንጠቀምበት ስርዓተ ክወና በ MATLAB በኩል ነው