Агуулгын хүснэгт:
- Алхам 1: Шаардлагатай эд анги
- Алхам 2: Файл ба камерын тохиргоо
- Алхам 3: Roomba -ийн анхны туршилт
- Алхам 4: MATLAB кодын жишээ
Видео: Сансрын нисгэгч-туслах Roomba: 4 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:04
Энэхүү төслийг iRobot Create Version 2 дээрх Raspberry Pi 3 -ийг ашиглан хийсэн болно. MATLAB нь роботыг мэдрэгч, камер ашиглан тодорхой зааврыг дагаж програмчлахад ашигладаг. Мэдрэгч, камерыг сансрын нисгэгчийг дагах тодорхой үүрэг даалгаврыг гүйцэтгэхэд ашигладаг бөгөөд хэрэв ямар нэгэн зүйл буруу болбол гэрийн баазтайгаа харилцах боломжийг олгодог.
Алхам 1: Шаардлагатай эд анги
1. iRobot 2 -р хувилбар үүсгэх
IRobot Create нь энэ төслийн хамгийн чухал хэсэг бөгөөд энэ нь програмчлагдах боломжтой бөгөөд сансрын нисэгчдийг дагаж, ирээдүйд тэдэнд туслах бодит роверын хувьд маш сайн дүр болно
2. Raspberry Pi 3
Raspberry Pi бол энэ төсөлд ашиглагдах програмчлагдсан програм юм. Код нь Pi -д зориулагдсан бөгөөд Pi -ийн хавсаргасан хувилбар нь 3 (загвар B) юм. Arduino гэх мэт бусад програмчлагдах самбарыг ашиглах боломжтой боловч arduino болон бусад ихэнх самбарыг өөр алхамд тайлбарласнаас өөр кодлох шаардлагатай болно
3. Raspberry Pi камерын модуль
Энэхүү төсөлд шаардлагатай Raspberry Pi -тэй холбоотой цорын ганц гадны холболт бол Камерын модуль юм. Камерын модуль нь энэ төслийн салшгүй хэсэг юм, учир нь Roomba нь зөвхөн камер дээр үзсэн зүйл дээрээ үндэслэн даалгавруудыг гүйцэтгэдэг
4. MATLAB 2018a
MATLAB -ийн хамгийн сүүлийн үеийн хоёр дахь хувилбар болох 2018a нь энэхүү тохиргоонд хамрагдсан кодчилолд ашиглагджээ. Roomba програмчлал хэсэг хугацаанд хийгдэж байсан тул MATLAB -ийн бусад олон хувилбарууд үүнтэй ажиллах бололтой
Алхам 2: Файл ба камерын тохиргоо
1. Raspberry Pi болон Camera -ийн Roomba -тай холбогдох
- Pi нь iRobot руу микро USB ашиглан шууд холбогдох боломжтой. Үүнийг л ашиглахад бэлэн болгох хэрэгтэй. Гэсэн хэдий ч өнөөг хүртэл танилцуулгын туршид зураг дээр үзүүлсэн шиг үүнийг өрөөний тавцан дээр найдвартай байрлуулахыг зөвлөж байна.
- Камер нь Raspberry Pi -тай шууд холбогддог бөгөөд камерыг шууд дээш нь барихын тулд ямар нэгэн зүйл худалдаж авах эсвэл хийхийг зөвлөж байна. Камерыг өрөөний харсан зүйлийг харуулахын тулд байрлуулж чадахгүй бол ямар ч утгагүй болно.
2. Файлууд
- Бүх зүйлийг тохируулж, холбосны дараа "Spot" ба "Dock" товчлууруудыг 10 секундын турш барьснаар роботыг дахин тохируулж, ажиллахад бэлэн байгаа эсэхийг шалгаарай.
- Энд хамгийн түрүүнд MATLAB хэрэгтэй болно. Roomba -ийн файлуудыг эхлээд суулгах ёстой бөгөөд эдгээр файлуудыг ажиллуулахын тулд энэ холбоос дээр өгсөн код л шаардлагатай болно.
- https://ef.engr.utk.edu/ef230-2017-08//projects/ro…
Алхам 3: Roomba -ийн анхны туршилт
Roomba ажиллаж байгаа эсэхийг шалгахын тулд олон тооны анхны шалгалт хийх шаардлагатай байдаг.
1. Та Roomba -тай ижил WiFi сүлжээнд холбогдсон эсэхээ шалгаарай. Үүнгүйгээр та хэзээ ч MATLAB -ээр холбогдохгүй.
2. Танай roomba ямар дугаараар томилогдсон болохыг олж мэдээд та өөрийн сонгосон Roomba -тай тусгайлан холбогдох боломжтой болно. Жишээлбэл, хэрэв танай өрөөний дугаар 30 байвал та MATLAB -ийн командын цонхонд roomba (30) гэж бичээд түүнтэй холбогдох болно.
3. Roomba -ийг MATLAB -ийн бүтэцээр хянах боломжтой. Жишээлбэл, хэрэв та roomba (30) кодыг 'r' хувьсагчид тохируулсан бол r.moveDistance (0.2, 0.1) командын тусламжтайгаар роботыг урагшлуулж болно.
4. Roomba руу дамжуулж болох олон янзын командууд байдаг бөгөөд үүнийг командын цонхонд 'doc roomba' гэж бичээд харах боломжтой.
5. Гэрэл, овойлт, хадан цохиурын мэдрэгчийг бүгдийг нь 'doc roomba' дээр харагдсан тушаалуудыг ашиглан уншиж болох боловч мэдрэгчийн өгөгдлийг харахын тулд тогтмол, цэвэр цэстэй байх аргыг 'r.testSensors' ашиглан харж болно. '.
6. Энэ бүхнийг туршиж үзсэний дараа роботыг дүрс цуглуулах програмыг ашиглан авсан зургийг уншиж, харах боломжтой болно. Үүний үндсэн код нь img = r.getImage болон imshow (img) байх болно;.
7. Зургийн RGB утгуудыг red_mean = дундаж (дундаж (img (:,,, 1))) кодоор олж болно;
green_mean = дундаж (дундаж (img (:,,:, 2)))); болон blue_mean = дундаж (дундаж (img (:,,, 3))));.
Алхам 4: MATLAB кодын жишээ
Энэ үед та мэдрэгч, зураг авах програм хангамжийг ашиглан Mars Rover-ийн хүний прототипийг өөрийн гараар бүтээхэд бэлэн боллоо. Бидний жишээ бол сансрын нисгэгчийг дагаж цагаан өнгийг хянаж, түүн рүү чиглэх явдал юм. Хэрэв мэдрэгч нь өндөр утгыг уншиж байгаа бол робот дуугарах бөгөөд ингэснээр сансрын нисгэгч гацсан тохиолдолд анхны байдалд нь оруулах эсвэл очоод хадан дээр гацсан бол түүнийг аваад дахин тохируулах боломжтой болно. Гэсэн хэдий ч энэ нь цагаан өнгийг олж харсан л бол эдгээр алдааг уншдаг. Цагаан өнгийг харахгүйгээр робот алдааны горимд орно. Юу харж байгаагаас хамааран хоёр төрлийн имэйлийг гэрийн бааз руу буцааж илгээхээр програмчлагдсан болно. Хэрэв тэр сансрын нисгэгчийн арьсны өнгийг харвал энэ нь тийм ч сайн биш байгаа тул хэрэв сансрын нисгэгч костюмны гэмтэлтэй арьс байгаа бол гэрийн баазад анхааруулах болно. Сансрын нисгэгч зүгээр л нүднээс алга болвол нөгөө мессежийг бэлтгэнэ. Хэрэв камеруудад цагаан эсвэл арьсны өнгийг харуулахгүй бол робот эргэлдэж, өөр өөр имэйл илгээх болно. Сансрын нисгэгчийг харахгүй байгаа зургуудыг имэйл дэх мессежийн хамт илгээнэ. Манай төслийн кодыг доор харуулав.
for i = 1:.1: 3 img = r.getImage; зураг (img) red_mean = дундаж (дундаж (img (:,,,, 1))); green_mean = дундаж (дундаж (img (:,,:, 2)))); blue_mean = дундаж (дундаж (img (:,,: 3))); if red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || овойлт.зүүн> 0 || bump.front> 0 r.beep () r.beep () r.beep () r.stop elseif cliff.left <10 || Cliff.leftFront <10 || хад хад гэрэл.зүүнЗүүн> 700 || light.leftCenter> 700 || light.rightCenter> 700 || гэрэл.баруунФронт> 700 || light.right> 700 r.beep () r.beep () r.beep () r.beep () r.beep () r.st for else for i = 1: 2 r. MoveDistance (0.2, 0.1) r. setDriveVelocity (.3,.2) r.stop end end end green_mean <35 && blue_mean <35 %арьсны өнгийг харуулна (сансрын нисгэгчийн арьсны өнгийг харгалзан тохируулах шаардлагатай) r.beep (); r. beep (); r. beep (); шуудан = '[email protected]'; %костюм харагдсан имэйл илгээсэн байна psswd = 'тийм ээ'; хост = 'smtp.gmail.com'; порт = '465'; emailto = '[email protected]'; m_subject = 'сэдэв'; m_text = 'туршилт'; setpref ('Интернет', 'E_mail', имэйл); setpref ('Интернет', 'SMTP_Server', хост); setpref ('Интернет', 'SMTP_Username', имэйл); setpref ('Интернет', 'SMTP_Password', psswd); тулгуур = 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 (emailto, 'Туслаарай!', 'Сансрын нисгэгчдийн дүрэмт хувцас унтраалттай байна!', img); хэрэв red_mean 135 бол төгсөх || green_mean 135 || blue_mean 135 for j = 1: 2 %хэрэв цагаан өнгийг робот олж чадахгүй бол r.turnAngle (360) mail = '[email protected]'; psswd = 'тийм'; хост = 'smtp.gmail.com'; порт = '465'; emailto = '[email protected]'; m_subject = 'сэдэв'; m_text = 'туршилт'; setpref ('Интернет', 'E_mail', имэйл); setpref ('Интернет', 'SMTP_Server', хост); setpref ('Интернет', 'SMTP_Username', имэйл); setpref ('Интернет', 'SMTP_Password', psswd); тулгуур = 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 (emailto, 'Туслаарай!', 'Сансрын нисгэгч олдохгүй байна!', img); r.stop end end end end
Энд эмх замбараагүй байгаа нь ойлгомжтой боловч хуулж авсны дараа үүнийг задлах хэрэгтэй. Нууц үг, имэйлийг энэ төслийг хэрэгжүүлж буй хүмүүс өгөх ёстой.
Гэсэн хэдий ч бидний жишээ бол энэ роботыг хүн бүрт тохирсон болгох олон арга замуудын нэг юм. Өөртөө тохирсон олон янзын зүйл хийх хэрэгтэй.
Зөвлөмж болгож буй:
TinkerCad Codeblock дээр сансрын станц үүсгээрэй -- Хялбар заавар: 7 алхам (зурагтай)
TinkerCad Codeblock -д сансрын станц үүсгээрэй || Хялбар заавар: Сансарт амьдрах тухай бодох нь шинжлэх ухааны уран зөгнөл мэт санагдаж болох ч үүнийг уншиж байхдаа Олон улсын сансрын станц дэлхийг секундэд 5 милийн хурдтай тойрч, дэлхийг нэг удаа тойрон эргэлдэж байна. 90 минут тутамд. Энэ төсөлд та сурах болно
Arduino сансрын хөлгийн интерфэйс: 3 алхам
Arduino сансрын хөлгийн интерфэйс: Сайн байна уу зааварлагчид аа, энэ удаад би Arduino Uno: сансрын хөлгийн хэлхээг ашиглан хийх хамгийн хялбар төслүүдийн нэгийг хийлээ. Шинжлэх ухааны зөгнөлт телевизийн шоу, кинонд ашиглах боломжтой програмчлал, хэлхээний төрөл учраас үүнийг ингэж нэрлэдэг
Cosmo цаг - Сансрын нисгэгч орон зайд орох бүртээ өнгийг өөрчилдөг: 8 алхам (зурагтай)
Cosmo Clock - Сансрын нисгэгч огторгуйд орох бүрт өнгө өөрчлөгддөг: Сайн байна уу! Та сансрын сонирхогч уу? Хэрэв тийм бол сайн байна уу! Би сансар огторгуйд дуртай. Мэдээжийн хэрэг, би тэнд очоод орчлон ертөнцийг нарийвчлан судлах сансрын нисгэгч биш. Гэхдээ газраас ирсэн хүн тэнгэр рүү аялсан гэдгийг олж мэдэх бүрт би урам зориг авдаг
Кербалын сансрын хөтөлбөрийн физик үе шатыг ашиглан өөрийн сансрын хөөргөлтийг сайжруулаарай: 6 алхам
Кербалын сансрын хөтөлбөрийн физик шатлалын товчлуур ашиглан өөрийн сансрын хөөргөлтийг сайжруулаарай: Би саяхан Кербал сансрын хөтөлбөрийн демо хувилбарыг авлаа. Кербал сансрын хөтөлбөр бол симулятор тоглоом бөгөөд пуужин зохион бүтээх, хөөргөх, алс холын сар, гариг руу чиглүүлэх боломжийг олгодог. Би саран дээр амжилттай буух гэж оролдсоор л байна (o
Arduino UNO хоёр дахь нисгэгч (Авто нисгэгч): 6 алхам
Arduino UNO-ийн нисгэгч (Авто-нисгэгч): Сайн байцгаана уу, энд байгаа бүх хүмүүст би RC тогтмол далавчит онгоцны (Sky Surfer V3) жижиг автомашины туршилтын системийг байрлуулж байна, учир нь тэнгэрт серфинг v3 нь нисдэг тэрэгээр ажилладаг тул бид энэхүү нисгэгч системийг ашиглаж болно. гулсах эсвэл бүр цахилгаан асаах үед. Автомашины тухай санаагаа эхлүүлэхээс өмнө