Агуулгын хүснэгт:

Сансрын нисгэгч-туслах Roomba: 4 алхам
Сансрын нисгэгч-туслах Roomba: 4 алхам

Видео: Сансрын нисгэгч-туслах Roomba: 4 алхам

Видео: Сансрын нисгэгч-туслах Roomba: 4 алхам
Видео: IS ARTIFICIAL INTELLIGENCE AI A BLESSING OR A CURSE INTO THE BACKROOMS? 2024, Арваннэгдүгээр
Anonim
Сансрын нисгэгчд туслах Roomba
Сансрын нисгэгчд туслах Roomba

Энэхүү төслийг 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 кодын жишээ

MATLAB кодын жишээ
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

Энд эмх замбараагүй байгаа нь ойлгомжтой боловч хуулж авсны дараа үүнийг задлах хэрэгтэй. Нууц үг, имэйлийг энэ төслийг хэрэгжүүлж буй хүмүүс өгөх ёстой.

Гэсэн хэдий ч бидний жишээ бол энэ роботыг хүн бүрт тохирсон болгох олон арга замуудын нэг юм. Өөртөө тохирсон олон янзын зүйл хийх хэрэгтэй.

Зөвлөмж болгож буй: