Агуулгын хүснэгт:
- Алхам 1: Материал ба хангамж:
- Алхам 2:
- Алхам 3: "Цэцэрлэгээ" угсрах
- Алхам 4: Код бичих
- Алхам 5: Кодыг хуулна уу
Видео: Цэцэрлэгийн туслах Roomba Bot: 8 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:04
Киара Майерс, Ахмад Альгадир, Мэдисон Типпет нар
Зорилго:
Энэхүү зааварчилгаа нь MATLAB-ийг ашиглан Roomba Bot-ийг хэрхэн програмчлах, цэцэрлэгээр аялахад хангалттай хэмжээгээр боловсорч гүйцсэн дугуй хэлбэртэй жимс/ногоог илрүүлж, хэмжээг нь харгалзан үзэх болно. Энэхүү робот нь танд хэдэн жимс түүж авахад бэлэн болсон, ямар замаар явсан талаар танд мэдэгдэх имэйл илгээдэг.
Онцлог:
- Гэрлийн мэдрэгч ашиглан ханыг илрүүлж бага зэрэг эргүүлнэ
- Цэцэрлэгийн төгсгөлд хад мөргөх үед програмыг эвдэхийн тулд овойлт мэдрэгч ашигладаг
- Цэцэрлэгт байгаа тойргийг илрүүлэх, дараа нь түүний радиусыг тодорхойлохын тулд дүрс боловсруулалтыг ашигладаг
- Жимс байгаа эсэхийг харуулсан өнгөт соронзон хальсыг илрүүлэхийн тулд хадны мэдрэгч ашигладаг
Алхам 1: Материал ба хангамж:
- Нэг зөөврийн компьютер
- MATLAB 2017
- Roomba вакуум цэвэрлэгч
- Raspberry Pi
- Модон блок
- Цагаан цаас
- Хар цаас
- Өнгөт цаасан тууз/нимгэн тууз
- Том рок
Алхам 2:
Алхам 3: "Цэцэрлэгээ" угсрах
- Хар цаасаа аваад янз бүрийн хэмжээтэй тойрог хайчилж ав
-
Эдгээр хар тойргийг том цагаан цаасан дээр наа
Жимс илрүүлэхэд энэ ялгаа шаардлагатай болно
-
Модон чулуугаа ашиглан роботыг жолоодож болох төөрөгдөл шиг цэцэрлэгийн замыг байгуулаарай
Бид дээр үзүүлсэн шиг U хэлбэрийн замыг сонгосон
- Цэцэрлэгийнхээ төгсгөлд робот үүнийг хийж байгааг мэдэхийн тулд чулуу эсвэл хаалга эсвэл өөр зүйл нэмж оруулаарай
-
Цагаан цаасаа цэцэрлэгийн хананд дугуйлан наа
Бидний хана камерын хувьд хэт богино байсан тул бид хувингаар наажээ
- Жимсний урд талд өнгөт тууз/өнгөт цаасны нимгэн туузыг газар тавь
Алхам 4: Код бичих
Цэцэрлэгээр аялах
Бөмбөг мэдрэгчийг ашиглах: Хөтөлбөрийг ажиллуулахын тулд бид кодыг эвдэх хүртэл янз бүрийн if хэллэгүүдээр дамждаг кодчилолыг хэсэг хугацааны дотор байрлуулдаг. Хэрэв ямар нэгэн бампер цохигдвол энэ нь тэдний утгыг үнэнтэй тэнцүүлэх болно (энэ нь логикоор 1 гэсэн утгатай). If илэрхийлэл нь тэдгээрийн утгуудын аль нэг нь 1 -тэй тэнцүү байх үед кодыг эвдэхэд ашиглагддаг.
Клифф мэдрэгчийг ашиглах: Хэсгийн мэдэгдлийн дотор бид if операторыг ашиглан Roomba -г ургамлын байршилд хэзээ ирснийг хэлдэг. Roomba нь шалан дээрх өнгийн соронзон хальсны мэдрэгчийн авч буй улаан босгыг шалгаж шалгадаг. Хэрэв зүүн эсвэл баруун талын хадан мэдрэгч нь газрынхаас илүү өндөр босго бүхий өнгийг олж илрүүлбэл роботыг 2 секундын турш зогсооно (түр зогсоох командыг ашиглан). Эдгээр 2 секундын дотор Roomba жимсний зургийг авч, харуулах болно. Команд суулгасан imfindcircles-ийг ашиглан тойргийнхоо радиусын хүрээг тохируулаарай, тэгвэл таны Roomba таны жимсийг олох болно.
Зургийн боловсруулалтыг ашиглах: if мэдэгдэлд бид хэрэв if radius3 радиус нь боловсорч гүйцсэн жимсний хамгийн бага шаардлага болох r1 -ээс их эсвэл тэнцүү бол (хэрэв та үүнийг шийдвэл) гэсэн өөр if хэллэгийг оруулаад дараа нь тоолж харуулна уу. Roomba хичнээн олон жимс бэлэн болсон бөгөөд цэцэрлэгээр үргэлжлүүлэх болно. Үгүй бол ээлж цэцэрлэгээр үргэлжлүүлэх болно. Тэмдэглэл: Roomba бүр өөр өөр байдаг тул та эргэх өнцгөө тохируулах хэрэгтэй болж магадгүй юм
Хөнгөн бампер ашиглах: Өөр нэг if мэдэгдэлд гэрлийн бамперууд нь бидний тогтоосон босго хэмжээнээс хэтрэхгүй байхын тулд дүн шинжилгээ хийдэг. Хэрэв зүүн, баруун, зүүн төв, баруун төв, зүүн урд эсвэл баруун урд талын гэрлийн бамбай босго давсан бол хананд цохиулахгүйн тулд Roomba тохирох өнцгөөр бага зэрэг эргэх болно. Тиймээс, лабиринтээр аялах.
Кодын үлдсэн хэсэг нь Roomba -ийн хийсэн замыг төлөвлөж, үр дүнг нь имэйлээр илгээхэд хэрэглэгддэг
Алхам 5: Кодыг хуулна уу
% Зорилго: Хэмжээнд нь үндэслэн Roomba нь цэцэрлэгээр явж, авахад бэлэн болсон хүнсний ногоо/жимс жимсгэнийг ялгах болно. % Оролт: Гэрэл мэдрэгч, Клифф мэдрэгч, Овгор мэдрэгч, камераас авсан зураг % Гаралт: Гэрлийн мэдрэгч нь босго хэмжээнээс их байх үед өрөөний камер эргэж зураг авах болно. Roomba % объект руу мөргөлдөхөд код тасарч, сансрын нисгэгчид хэдэн жимс авахад бэлэн байгаа тухай имэйл илгээж, өрөөний хөдөлгөөний зураглалыг илгээнэ. % Хэрэглээ: If and while мэдэгдэл, команд бичих, MATLAB -аас имэйл код оруулах
k = 0
tic
timerVal = tic
үнэн байхад
v =.2; % хурд r.setDriveVelocity (v, v);% roomba урагшлах L = r.getLightBampers; LC = L.leftCenter; Rr = L. зөв; Lf = L. зүүн; RC = L.rightCenter; LF = L.leftFront; RF = L.rightFront; Q = 75; % босго. RTH = 30; %Өндөр улаан босго RTL = 10; %Бага улаан босго B = r.getBumpers S = r.getCliffSensors; r1 = 24; r3 = 10; PL1 = 1800; хэрэв S.leftFront> PL1 || S.rightFront> PL1 % нь газар дээрх өнгө нь босго хэмжээнээс давсан эсэхийг илрүүлдэг r.stop pause (2) elapsedTime = toc (timerVal-2) tic timerVal = tic % 2 секундын турш түр зогсоох img = r.getImage; %take image imshow (img)%display image [center3, radii3] = imfindcircles (img, [30 50], 'ObjectPolarity', 'dark', 'Sensitivity', 0.9); h = наалдамхай тойрог (төв3, радиус3); Хэрэв радиус3> = r1 T = 1 k = k+1 dist1 = 0.2 байвал зурагт заасан мужид байгаа радиусын тойргийг хайж олох хэрэгтэй., дараа нь Roomba энэ жимсийг тоолно өөр radii3 <= r3 T = 0 өөр T = 0 dist2 = 0.2.*өнгөрсөнХугацаа %Хэрэв үгүй бол жимсний төгсгөлийг тооцохгүй.
хэрэв T == 1 r.setLEDDigits (num2str (k)) r.beep r.beep r.beep r.turnAngle (78) %Хэрэв жимс илэрсэн бол Roomba дээрх дугаарыг харуул, %чимээ гаргаад эргүүл. elseif T == 2 r.turnAngle (78) %Хэрэв 2 жимс илэрсэн бол %цэцэрлэгээр үргэлжлүүлэхийн тулд эргүүлнэ өөр r.turnAngle (78) %Хэрэв ямар ч жимс илрээгүй бол %цэцэрлэгийн төгсгөл хүртэл үргэлжлүүлнэ. хэрэв LC> Q r.stop r.turnAngle (-7) өөр RC> Q r.stop r.turnAngle (7) өөр LF> Q r.stop r.turnAngle (-7) өөр бол RF> Q r.stop r. turnAngle (7) elseif Lf> Q r.stop r.turnAngle (-7) elseif Rr> Q r.stop r.turnAngle (7) end %Хэрэв гэрлийн бамперуудын аль нэг утга нь босгыг давсан бол %Roomba %хана мөргөхгүйн тулд зохих чиглэлд бага зэрэг эргэх болно
хэрэв B.райт == 1 || B.зүүн == 1 || B.front == 1 dist3 = 0.2.*Өнгөрсөн bbers цохигддог, дараа нь roomba дуу тоглодог, эргэн тойрон эргэлддэг, %, кодыг эвддэг
төгсгөлийг таслах
тараах төгсгөл (0.533, 0, '^') тараалт дээр барих (0.533, дист1, '<') тараалт дээр барих (-dist2, dist1, 'v') тархах (-dist2, 0, 'd') хадгална (gcf, 'Movement.png')
kmsg = num2str (k) mail = '[email protected]' password = 'Srsora123#' host = 'smtp.gmail.com' port = '465'
setpref ('Интернет', 'E_mail', имэйл); setpref ('Интернет', 'SMTP_Server', хост) тулгуур = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', шуудан); props.setProperty ('mail.smtp.host', хост); props.setProperty ('mail.smtp.port', порт); props.setProperty ('mail.smtp.starttls.enable', 'үнэн'); props.setProperty ('mail.smtp.debug', 'үнэн'); props.setProperty ('mail.smtp.auth', 'үнэн'); props.setProperty ('mail.smtp.socketFactory.port', порт); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'худал'); sendmail (мэйл, 'Сайн уу сансрын нисгэгч! Цэцэрлэгт ийм олон жимс байдаг', kmsg, {'motion.png'})
Зөвлөмж болгож буй:
Гэрэлтдэг термометр - Витаминжуулсан цэцэрлэгийн гэрэл (eNANO De Jardin): 6 алхам
Гэрэлтдэг термометр - Цэцэрлэгийн витаминжуулсан гэрэл (eNANO De Jardin): arduino NANO болон температур мэдрэгч бүхий витаминжуулсан цэцэрлэгийн гэрэл BMP180. Манай даруухан цэцэрлэгийн гэрэл нууц хүчтэй байх болно: өнгөний код ашиглан гаднах температурыг зааж өгөх боломжтой болно. Түүний үйлдэл дараах байдалтай байна: Энэ нь би
ESP8266 - Интернэт ашиглан таймер, алсын удирдлагатай цэцэрлэгийн усжуулалт / ESP8266: 7 алхам (зурагтай)
ESP8266 - Интернэт ашиглан таймер ба алсын удирдлагатай цэцэрлэг усалгаа. Энэ нь ESP-8266 хэлхээг, усалгааны тэжээлд зориулагдсан гидравлик / цахилгаан хавхлагыг ашигладаг. Давуу талууд: Хямд өртөгтэй (~ 30,00 доллар) хурдан нэвтрэх Commands ov
Нарны цэцэрлэгийн гэрлийг дугуй унах: 7 алхам (зурагтай)
Нарны цэцэрлэгийн гэрлийг RBG рүү дугуй унах: Youtube дээр нарны цэцэрлэгийн гэрлийг засварлах тухай маш олон видео байдаг; Нарны цэцэрлэгийн гэрлийн батерейны ашиглалтын хугацааг уртасгахын тулд тэд шөнийн цагаар илүү удаан ажилладаг бөгөөд бусад олон тооны хакерууд байдаг
Цэцэрлэгийн монитор: 3 алхам
Цэцэрлэгийн монитор: Энэ бол миний цэцэрлэгийн мониторуудын хамгийн сүүлийн үеийн бөгөөд бүрэн хувилбар бөгөөд би өмнөх хувилбарыг нь LCD дэлгэцтэй, нөгөө нь ESP8266 гэх мэт өөр өөр зориулалттай хийсэн. Гэсэн хэдий ч би энэ хувилбарыг илүү сайн баримтжуулсан тул үүнийг байршуулахаар шийдсэн
Сансрын нисгэгч-туслах Roomba: 4 алхам
Сансрын нисгэгчдэд туслах Roomba: Энэхүү төслийг iRobot Create Version 2-ийн Raspberry Pi 3-ийг ашиглан хийсэн болно. MATLAB нь роботыг мэдрэгч, камер ашиглан тодорхой зааврыг дагаж програмчлахад ашигладаг. Мэдрэгч, камерыг тодорхой ажлыг гүйцэтгэхэд ашигладаг