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

MATLAB хяналттай Roomba: 5 алхам
MATLAB хяналттай Roomba: 5 алхам

Видео: MATLAB хяналттай Roomba: 5 алхам

Видео: MATLAB хяналттай Roomba: 5 алхам
Видео: #16 - Хяналттай машин сургалтад ашиглах зарим статистик арга техник @ Магадлал ба Статистик 2024, Арваннэгдүгээр
Anonim
MATLAB хяналттай Roomba
MATLAB хяналттай Roomba
MATLAB хяналттай Roomba
MATLAB хяналттай Roomba

Энэхүү төслийн зорилго нь MATLAB болон өөрчлөгдсөн iRobot програмчлагдах роботыг ашиглах явдал юм. Манай бүлэг кодлох ур чадвараа нэгтгэн iRobot -ийн олон функцийг ашигладаг хадан цохио, бамбай мэдрэгч, гэрэл мэдрэгч, камер зэрэг MATLAB скриптийг бүтээжээ. Бид эдгээр мэдрэгч ба камерын уншилтыг оролт болгон ашигласан бөгөөд энэ нь MATLAB кодын функцууд болон гогцоонуудыг ашиглан хүссэн тодорхой гаралтыг бий болгох боломжийг бидэнд олгосон юм. Мөн MATLAB хөдөлгөөнт төхөөрөмж, гироскопыг ашиглан iRobot -тэй холбогдож, хяналт тавьдаг.

Алхам 1: эд анги, материал

Материал ба эд анги
Материал ба эд анги
Материал ба эд анги
Материал ба эд анги
Материал ба эд анги
Материал ба эд анги
Материал ба эд анги
Материал ба эд анги

MATLAB 2018a

-MATLAB -ийн 2018 оны хувилбар нь мобайл төхөөрөмжид холбогдох кодтой хамгийн сайн ажилладаг тул хамгийн их таалагддаг хувилбар юм. Гэсэн хэдий ч манай ихэнх кодыг MATLAB -ийн ихэнх хувилбаруудад тайлбарлаж болно.

iRobot төхөөрөмж үүсгэх

-Энэ төхөөрөмж нь програмчлах, кодлох зориулалттай тусгай зориулалтын төхөөрөмж юм. (Энэ бол жинхэнэ вакуум биш)

Raspberry Pi (камертай)

- Энэ бол iRobot-ийн тархи болж ажилладаг үнэтэй компьютерийн самбар юм. Энэ нь жижиг байж болох ч олон зүйлийг хийх чадвартай. Камер бол нэмэлт хэрэгсэл юм. Энэ нь бөөрөлзгөнө pi -ийг ашиглан бүх функц, тушаалуудаа олж авдаг. Дээрх зурган дээрх камерыг Теннесси мужийн Инженерийн үндэслэлийн тэнхимүүдээс бүтээсэн 3D хэвлэмэл тавиур дээр суурилуулсан болно.

Алхам 2: Roomba мэдээллийн баазын файл

Roomba мэдээллийн баазын файл
Roomba мэдээллийн баазын файл

Roomba -ийн зохих функц, тушаалуудыг ашиглахын тулд танд хэрэгтэй үндсэн файл байна. Энэ файл нь таны бичсэн кодыг ашиглан өрөөнийхөө үйл ажиллагааг илүү удирдах боломжтой болгоно.

Та энэ линкээр эсвэл доорх татаж авах боломжтой файлыг татаж авах боломжтой

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

Алхам 3: Roomba руу холбогдох

Нэгдүгээрт, та роботыг бөөрөлзгөнө pi самбартай микро USB залгуур ашиглан холбосон эсэхийг шалгах хэрэгтэй. Дараа нь та компьютер болон роботыг ижил WiFi сүлжээнд зөв холбох хэрэгтэй. Үүнийг хийсний дараа та роботыг асааж, роботын мэдээллийн сан дахь өгөгдсөн тушаалыг ашиглан түүнтэй холбогдож болно. (Роботоо ашиглахаасаа өмнө болон дараа нь дахин тохируулах нь үргэлж хэцүү байдаг). Жишээлбэл, бид "r.roomba (19)" командыг ашиглан роботтойгоо холбогдож, r хувьсагчийг төхөөрөмждөө оноодог. Энэ нь өгөгдлийн сангийн файлыг хэлдэг бөгөөд энэ нь бидний хувьсагчийг хүссэн үедээ ашиглах боломжтой бүтэц болгон тохируулдаг.

Алхам 4: Код

Код
Код
Код
Код

Бид доорх кодыг бүрэн хавсаргасан байгаа боловч манай скриптийн чухал элементүүдийг онцолсон товч тоймыг энд оруулав. Бид роботын чадавхийг бүрэн нэмэгдүүлэхийн тулд бүх мэдрэгч, камерыг ашигласан. Бид гар утсаа роботтойгоо холбож, гароскопоо ашиглан гараар удирдах боломжийг олгодог кодыг оруулсан болно.

Бид "r.setDriveVelocity (.06)" гэсэн энгийн тушаалаар роботын урагшлах хурдыг 0,06 м/с болгож тохируулсан. Энэ нь роботыг урьдчилан хөдөлгөхөд л зориулагдсан юм

Дараа нь бидний үндсэн скриптийг өгөгдсөн роботын өгөгдлийг олж авахын тулд доорхи нөхцөлт мэдэгдэлд ашиглах боломжтой бүтцийг бий болгож, роботын бүтцийн өгөгдөл дээр үндэслэн тодорхой тушаалыг гүйцэтгэхийг бидэнд хэлэх боломжийг олгодог. робот мэдрэгчтэйгээ уншдаг. Бид үүнийг робот өөрийн мэдрэгчийг уншиж, хар замаар явахаар тохируулсан

while true % while loop нь "худал" зүйл гарах хүртэл үргэлжилдэг (энэ тохиолдолд энэ нь хязгааргүй үргэлжлэх болно) data = r.getCliffSensors; data2 = r.getBumpers; % нь хадан цохионы мэдрэгчийн утгын талаарх өгөгдлийг тасралтгүй авч, % img = r.getImage хувьсагч руу хуваарилдаг; % Суулгасан камераас зураг авдаг % image (img); % Авсан зургийг харуулна % red_mean = дундаж (дундаж (img (:,,, 1))); % Өгөгдөл байвал ногоон өнгөний дундаж утгыг авна.rightFront <2000 r.turnAngle (-2); % нь Roomba -ийг ойролцоогоор.2 градусын CW эргүүлж, баруун талын хадан цохионы мэдрэгчийн утга 2000 r.setDriveVelocity (.05) -аас доош байвал; elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1); % нь Roomba -д ойролцоогоор.2 м/с хурдтай урагшлахыг хэлдэг бөгөөд хэрэв баруун урд болон зүүн урд талын мэдрэгчийн утга хоёулаа 2000 % -иас доош байвал r.turnAngle (0); % нь Roomba -д дээр дурдсан нөхцөл үнэн бол эргүүлэхгүй байхыг хэлэв

elseif data2.right == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05); elseif data2.left == 1 r.moveDistance (-. 2); r.turnAngle (5); r.setDriveVelocity (.05); elseif data2.front == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05);

Энэ хугацааны давталтын дараа бид камераар олж авсан өгөгдлийг өдөөдөг өөр нэг давталтыг оруулна. Мөн хэрэв бид тодорхой програм (alexnet) ашиглан зургийг таньж, энэ хэлхээ дотор if хэллэгийг ашигладаг бөгөөд дүрсийг таньсны дараа тэр даруй хөдөлгөөнт төхөөрөмжийн алсын удирдлагыг идэвхжүүлдэг

anet = alexnet; % Alexnet -ийн гүнзгийрүүлсэн сургалтыг хувьсагч байхад үнэн % Infinite байхад давталт img = r.getImage; img = imresize (img, [227, 227]); шошго = ангилах (anet, img); хэрэв шошго == "цаасан алчуур" || шошго == "хөргөгч" шошго = "ус"; төгсгөлийн зураг (img); гарчиг (char (шошго)); зурсан;

Утасны тусламжтайгаар төхөөрөмжийг удирдах боломжийг олгодог while давталт нь энэ мэдээллийг утасны гироскопоос авдаг бөгөөд бид үүнийг матрицад холбож өгөгдлийг компьютер дээр MATLAB руу буцааж дамжуулдаг. Матрицын өгөгдлийг уншиж гар утасны гароскопын тодорхой утгыг үндэслэн төхөөрөмжийг хөдөлгөдөг гаралтыг өгдөг if хэллэгийг ашигладаг. Бид хөдөлгөөнт төхөөрөмжийн чиглүүлэх мэдрэгчийг ашигласан гэдгийг мэдэх нь чухал юм. Дээр дурдсан нэгээс гурван матрицыг утсыг чиглүүлэх мэдрэгчүүдийн элемент бүрээр ангилдаг бөгөөд энэ нь азимут, давирхай, хажуу тал юм. Хэрэв мэдэгдэл нь тал нь 50 -аас хэтэрсэн эсвэл -50 -аас доош унасан тохиолдолд робот тодорхой зайг урагш (эерэг 50) эсвэл арагш (сөрөг 50) шилжүүлдэг. Мөн давтамжийн үнэ цэнийн хувьд мөн адил хамаарна. Хэрэв давирхай нь -25 -аас доош унах үед 25 -аас дээш байвал робот 1 градус (эерэг 25) эсвэл сөрөг 1 градус (сөрөг 25) өнцгөөр эргэдэг

байхад жинхэнэ зогсолт (.1) % Утга бүрийг авахаас 5 секундын өмнө түр зогсоох Controller = iphone. Orientation; % IPhone -ийн чиг баримжааны утгуудын матрицыг Azimuthal = Controller (1) хувьсагч руу хуваарилна; % Матрицын эхний утгыг Pitch = Controller (2) хувьсагчид өгнө; % Матрицын хоёр дахь утгыг хувьсагчид өгнө (iPhone -ийг хажуу тийш барих үед урагш, урагш хазайлгана) Side = Controller (3); % Матрицын гуравдахь утгыг хувьсагчид өгнө (iPhone хажуу тийш барьсан үед зүүн, баруун тийш хазайлгана) % Side> 130 || бол утасны чиглэлд үндэслэн гаралтыг үүсгэдэг. Side 25 r.moveDistance (-. 1) % Хэрэв iPhone-ийг 25-аас доошгүй ухарсан тохиолдолд Roomba-ийг ойролцоогоор.1 метр урагш хойшлуулна. 25-р тал. TurnAngle (-1) % Хэрэв iPhone бол Roomba-ийг ойролцоогоор 1 градус эргүүлнэ зүүн тийш хамгийн багадаа 25 градус хазайсан бол Pitch <-25 r.turnAngle (1) % Хэрэв iPhone -ийг 25 градусаас доошгүй хазайлгасан бол Roomba -г ойролцоогоор 1 градус эргүүлнэ.

Эдгээр нь танд ашиг тустай хэсгийг хурдан хуулж буулгах шаардлагатай бол бидний оруулсан кодын гол хэсгүүдийн онцлох үйл явдал юм. Гэхдээ шаардлагатай бол манай кодыг бүхэлд нь хавсаргасан болно

Алхам 5: Дүгнэлт

Бидний бичсэн энэхүү код нь манай роботод зориулагдсан бөгөөд төслийн талаархи ерөнхий төсөөлөл юм. Бидний зорилго бол роботын ихэнх онцлогийг ашигладаг худагны дизайны скриптийг бүтээхийн тулд MATLAB кодлох бүх чадвараа ашиглах явдал байв. Утас хянагч ашиглах нь таны бодож байгаа шиг тийм ч хэцүү биш бөгөөд манай код нь iRobot -ийг кодлох ойлголтыг илүү сайн ойлгоход тусална гэж найдаж байна.

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