Мазмұны:

MATLAB басқарылатын Roomba: 5 қадам
MATLAB басқарылатын Roomba: 5 қадам

Бейне: MATLAB басқарылатын Roomba: 5 қадам

Бейне: MATLAB басқарылатын Roomba: 5 қадам
Бейне: Executive interview - Freedom Holding Corp (full) 2024, Шілде
Anonim
MATLAB басқаратын Roomba
MATLAB басқаратын Roomba
MATLAB басқаратын Roomba
MATLAB басқаратын Roomba

Бұл жобаның мақсаты - MATLAB, сонымен қатар өзгертілген iRobot бағдарламаланатын роботы. Біздің топ iRobot -тың көптеген функцияларын қолданатын MATLAB сценарийін құру үшін кодтау дағдыларын біріктірді, соның ішінде жартасты, бамперді, жарық сенсорларын және камераны. Біз бұл сенсор мен камераның көрсеткіштерін кіріс ретінде қолдандық, бұл бізге MATLAB кодының функциялары мен ілмектерін қолдана отырып, белгілі бір шығыс жасауға мүмкіндік береді. Біз сонымен қатар iRobot -қа қосылу мен оны басқару әдісі ретінде MATLAB мобильді құрылғысы мен гироскопты қолданамыз.

1 -қадам: Бөлшектер мен материалдар

Бөлшектер мен материалдар
Бөлшектер мен материалдар
Бөлшектер мен материалдар
Бөлшектер мен материалдар
Бөлшектер мен материалдар
Бөлшектер мен материалдар
Бөлшектер мен материалдар
Бөлшектер мен материалдар

MATLAB 2018а

-MATLAB -тың 2018 нұсқасы -бұл ең қолайлы нұсқа, себебі ол мобильді құрылғыға қосылатын кодпен жақсы жұмыс істейді. Дегенмен, біздің кодтың көп бөлігін MATLAB нұсқаларының көпшілігінде түсіндіруге болады.

iRobot құрылғы жасау

-Бұл құрылғы -бағдарламалау мен кодтауға арналған арнайы құрылғы. (Бұл нақты вакуум емес)

Raspberry Pi (камерамен)

- Бұл қымбат емес компьютерлік тақта, ол iRobot-тың миы ретінде жұмыс істейді. Бұл кішкентай болуы мүмкін, бірақ ол көп нәрсеге қабілетті. Камера қосымша қосымша болып табылады. Ол сондай -ақ таңқурай пиін өзінің барлық функциялары мен командаларын алу үшін қолданады. Жоғарыда бейнеленген камера Теннесси университетінің Инженерлік негіздер кафедралары жасаған 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 -қадам: Кодекс

Кодекс
Кодекс
Кодекс
Кодекс

Біз төменде толық кодты тіркедік, бірақ біздің сценарийдегі маңызды элементтерді көрсететін қысқаша шолу. Біз барлық сенсорларды, сондай -ақ камераны пайдаланып, роботтың әлеуетін барынша арттырдық. Біз сондай -ақ мобильді құрылғыны роботқа қосуға және оны гриоскопты қолмен басқаруға мүмкіндік беретін кодты енгіздік.

Біз роботтың алға жылжу жылдамдығын.06 м/с етіп орнататын «r.setDriveVelocity (.06)» қарапайым командасынан бастадық. Бұл роботты алдын ала қозғау үшін

Содан кейін біздің негізгі сценарий төмендегі шартты мәлімдемеде сілтеме жасай алатын құрылымдарды құру арқылы берілген роботтың деректерін алатын уақытша циклден басталады, осылайша роботқа құрылымдық деректерге негізделген белгілі бір команданы орындауға айтуға мүмкіндік береді. робот сенсорлармен оқиды. Біз оны робот өзінің жарғыш сенсорларын оқып, қара жолмен жүретін етіп орнаттық

шын % while циклы «жалған» нәрсе пайда болғанша жүреді (бұл жағдайда ол шексіз жалғасады) data = r.getCliffSensors; data2 = r.getBampers; % қия сенсорының мәндері туралы мәліметтерді үздіксіз шығарады және оларды % img = r.getImage айнымалысына тағайындайды; % Орнатылған камерадан % сурет түсіреді % image (img); % Түсірілген суретті көрсетеді % red_mean = орташа (орташа (img (:,:, 1)))); % егер data.rightFront <2000 r.turnAngle (-2) жасыл түс үшін орташа мәнді қабылдайды; оң жақтағы қиғаш сенсорлардың мәні 2000 r.setDriveVelocity (.05) астына түскенде % Roomba -ны шамамен.2 градусқа айналдырады; 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);

Осы циклден кейін біз камера арқылы алынған деректерді іске қосатын басқа циклді енгіземіз. Біз if операторын қолданамыз, бұл кезде цикл белгілі бір бағдарламаның көмегімен (alexnet) кескінді таниды, ал суретті анықтағаннан кейін ол мобильді құрылғының қашықтан басқару пультін бірден іске қосады

желі = alexnet; % Alexnet терең оқытуды true % Infinite айнымалысына тағайындайды img = r.getImage; img = imresize (img, [227, 227]); label = жіктеу (anet, img); егер жапсырма == «қағаз сүлгі» || label == «тоңазытқыш» белгісі = «су»; соңғы сурет (img); титул (таңба (белгі)); тартылған;

Уақытша цикл құрылғыны телефонмен басқаруға мүмкіндік береді, бұл мәліметтерді телефон гироскопынан алады және біз оны MATLAB -қа компьютерде үздіксіз жіберетін матрицаға қосамыз. Біз матрицаның мәліметтерін оқитын және телефон гироскопының белгілі бір мәніне негізделген құрылғыны жылжытатын шығыс беретін if операторын қолданамыз. Біз мобильді құрылғының бағдар сенсорларын қолданғанымызды білу маңызды. Жоғарыда айтылған матрицалар телефонның бағдар сенсорларының әр элементі бойынша жіктеледі, олар азимут, қадам және бүйір. Егер мәлімдемелер 50 мәнінен асып кетсе немесе -50 -ден төмен түссе, онда робот белгілі бір қашықтықты алға (оң 50) немесе артқа (теріс 50) жылжытады. Және бұл қадамның құнына қатысты. Егер қадамның мәні -25 -тен төмен түсудің 25 мәнінен асып кетсе, робот 1 градус (оң 25) немесе теріс 1 градус (теріс 25) бұрышпен бұрылады

ал шынайы үзіліс (.1) % Әр тоқталудан 5 секунд бұрын кідірту Controller = iphone. Orientation; % Айфонның бағдар мәндерінің матрицасын Azimuthal = Controller айнымалысына тағайындайды; % Матрицаның бірінші мәнін Pitch = Controller айнымалысына тағайындайды (2); % Матрицаның екінші мәнін айнымалыға тағайындайды (iPhone -ды жанына ұстап тұрғанда алға және артқа еңкейту) Side = Controller (3); % Айнымалыға матрицаның үшінші мәнін тағайындайды (iPhone -ды жанына ұстап тұрғанда солға және оңға еңкейтіңіз) % Телефонның бағытына негізделген шығуды тудырады, егер Side> 130 || 25-ші бүйір жылжу Қашықтық (-. 1) % Егер iPhone артқа еңкейтілсе, кем дегенде 25 градусқа қисайса, Roomba-ны шамамен 1 метрге артқа жылжытады, егер Side 25 r.turnAngle (-1) % Егер iPhone болса, Roomba-ны шамамен 1 градусқа айналдырады. солға еңкейтілгенде, кем дегенде 25 градус, егер Pitch <-25 r.turnAngle (1) % iPhone кемінде 25 градусқа еңкейтілген болса, Roomba -ны шамамен 1 градусқа айналдырады.

Бұл біздің кодтың негізгі бөліктерінің маңызды сәттері, егер сізге бөлімді тез арада көшіру және қою қажет болса, біз енгіздік. Алайда, егер қажет болса, біздің барлық код төменде берілген

5 -қадам: Қорытынды

Біз жазған бұл код біздің роботқа және жобаға жалпы көзқарасымызға арналған. Біздің мақсат - роботтың көптеген мүмкіндіктерін пайдаланатын жақсы дизайн сценарийін жасау үшін барлық MATLAB кодтау дағдыларын қолдану. Телефон контроллерін пайдалану сіз ойлағандай қиын емес, және біздің код iRobot -ті кодтау түсінігін жақсы түсінуге көмектеседі деп үміттенеміз.

Ұсынылған: