Мазмұны:

MATLAB көмегімен Roomba: 4 қадам (суреттермен)
MATLAB көмегімен Roomba: 4 қадам (суреттермен)

Бейне: MATLAB көмегімен Roomba: 4 қадам (суреттермен)

Бейне: MATLAB көмегімен Roomba: 4 қадам (суреттермен)
Бейне: Excel график функции 2024, Қараша
Anonim
MATLAB көмегімен Roomba
MATLAB көмегімен Roomba

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

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

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

1. iRobot Create, 2 -нұсқа

- Бұл бағдарламаланатын робот, ол Roomba -ға ұқсайды. IRobot -тің бұл өнімі вакуум емес екенін біліңіз. Ол пайдаланушының арнайы бағдарламалауына арналған.

2. MATLAB 2017a

- Көптеген ескі нұсқалар біз қолданған кодпен үйлесімді болады. MATLAB сізде бар нұсқаға сәйкес келмейтін пәрменді анықтайды және ең қолайлы пәрменді ұсынады.

3. Raspberry Pi 3 Model B, 1.2 нұсқасы

- Қай Raspberry Pi сіздің iRobot -пен үйлесімді екенін тексеріңіз. Қосымша көмек алу үшін мына сілтемені қараңыз: https://www.irobotweb.com/~/media/MainSite/PDFs/A… Бұл нұсқаулық сіз алдын ала бағдарламаланған Raspberry Pi -мен жұмыс жасайсыз деп болжайды. Келесі қадамдарды орындау үшін сізге алдын ала бағдарламаланған Pi -мен жұмыс істеу керек екенін ескеріңіз. Алдын ала бағдарламаланған Pi қолдану сізге барлық кодтауды MATLAB -та ғана орындауға мүмкіндік береді.

4. V2 камералық модулі (Raspberry Pi үшін)

- Сіз таң қалуыңыз мүмкін; оның көлеміне қарамастан, Raspberry Pi камера модулі өте жақсы сапада. Бұл жоба үшін ең арзан және үйлесімді нұсқа.

Қосымша: 3D басып шығарылған стенд. Бұл камераны тұрақтандыру үшін қолданылады. Бұл роботтың функционалдығына әсер етпейді, бірақ түс пен/немесе объектіні тану үшін бейнелеу деректерін қолданғыңыз келсе, бұл сіздің кодтауға көмектеседі.

2 -қадам: конфигурация

Конфигурация
Конфигурация
Конфигурация
Конфигурация

1. Raspberry Pi мен камера модулін қосу (аппараттық құрал)

- Raspberry Pi -ді қосу үшін сізге микроконтроллердегі аналық қуат портына еркек микро USB қосылуы қажет. Қосымша: кернеудің 5 В аспауын қамтамасыз ету үшін кернеу реттегішін қолдануға болады. Raspberry Pi -ді қосқаннан кейін, сіз оны роботқа еркек USB a -ны аналық платадан микроконтроллердегі USB портына қосуға қосуға болады.

- Pi -ді Roomba -ға қосқаннан кейін камера орнатуға дайын. Камера модулі сіз күткеннен әлдеқайда аз болады. Назар аударыңыз, линза сенсорға бекітілген, ал ақ таспа камерадан таралған. Таспаны алып тастамаңыз немесе жыртып алмаңыз! Бұл оны Raspberry Pi -ге қосу үшін қажет кабель. Алдымен таспаның ұшын ұстап, күміс қосқыштар мен көк кабельді табыңыз. Бұлар қарама -қарсы жақта. Әрі қарай, Raspberry Pi -де Ethernet пен HDMI порттары арасындағы слотты табыңыз. Кішкене ақ құлып бар екенін ескеріңіз. Құлыпты баяу көтеріңіз, бірақ оны ұядан шығармаңыз, себебі ол үзіліп, тұрақты зақымдалады. Құлыпты көтергеннен кейін, таспаны алып, HDMI портына күміс қосқыштармен бетпе -бет келіңіз. Көк жағы Ethernet портына қарайды. Таспаны құлыптан босатылған кезде ұяға баяу сырғытыңыз. Оны ұяға мәжбүрлеудің қажеті жоқ. Енгізгеннен кейін құлыпты төмен қарай итеріңіз. Егер сіздің камераңыз дұрыс бекітілген болса, сіз лентаны (ақырын) тартып, кернеуді сезінуіңіз керек. Таспа бос болмауы керек. Камераны Pi -ге қосқаннан кейін оның қаншалықты бос екенін байқауға болады. Сондықтан біз оны тұрақтандыру үшін 3D басып шығаратын қондырғыны қолдандық. Камераны жоғары сапалы түсіру үшін қандай материалдарды қолданғыңыз келетінін анықтау - сіздің таңдауыңыз.

2. Дұрыс файлдарды орнату және компьютерге Roomba қосу Барлық жабдықтар конфигурацияланғаннан кейін, енді сіз роботпен байланысуға мүмкіндік беретін байланысты m-файлдармен бірге MATLAB орнатуға көшуге болады. Ол үшін MATLAB ашыңыз және барлық қатысты файлдарды бірге сақтау үшін жаңа қалта жасаңыз. Қажетті файлдарды орнату/жаңарту үшін осы сценарийді қолданыңыз:

- Енді барлық файлдар сіз жасаған қалтада көрсетілуі керек. Ағымдағы қалта терезесінде тінтуірдің оң жақ түймешігімен нұқыңыз және MATLAB файлдарды іздейтін каталогтар тізіміне осы жолды қосу үшін «Жолға қосу» таңдаңыз. Барлық файлдар дұрыс жолда екеніне көз жеткізіңіз.

3. Файлдар орнатылғаннан кейін сіз енді роботқа қосылуды бастай аласыз. Роботты қосудан бастаңыз, содан кейін оны іске қосқаннан кейін қатты қалпына келтіріңіз (роботты қолданар алдында және кейін әр уақытта қалпына келтіруді ұмытпаңыз). Екіншіден, робот пен ноутбукті бірдей Wi -Fi желісіне қосыңыз. Осыдан кейін біз MATLAB арқылы алдын ала бағдарламаланған Raspberry Pi -мен Roomba -ға оның аты мен Roomba функциясын пайдаланып қоңырау шалу арқылы сөйлесетін боламыз. Мысалы, мен 28 -роботқа келесі жолды пайдаланып қосылатын едім: R = roomba (28).

- Мен R айнымалысына объектіні қалай тағайындағанымды ескеріңіз, енді R айнымалысын құрылым ретінде қарастыра отырып, орнатылған файлдан Roomba функциясына кіре аламын.

- R.turnAngle (90) Егер бәрі ойдағыдай болса, байланысты растайтын музыкалық тон ойнауы керек.

3 -қадам: MATLAB логикасы

Бұл қадамның төменгі жағындағы PDF құжаты - бұл MATLAB -те кодтау процесінің егжей -тегжейлі логикалық схемасы. Біз роботқа жақын жердегі объектіні анықтаған кезде бізбен байланыс орнатуға мүмкіндік беру үшін жартасты, жарық пен соққы сенсорларын іске қостық. Мысалы, робот алға жылжытқанда, оның жарық сенсорлары жүріп бара жатқан векторға сәйкес оның жолындағы объектілерді іздейді. Біз объектіге жақындаған кезде, ол соқтығыспай, керісінше болатындай етіп, қашықтық шекті таңдадық. Біздің робот сонымен қатар Twitter -де конфигурацияланған, оны біз кодтау процесінде көрсеткенбіз (бұл төменде көрсетіледі).

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

Код Roomba -ға негізгі орнатуды орындауды, содан кейін үздіксіз цикл арқылы жалғастыруды бұйырады. Бастапқыда ноутбук Roomba () пәрмені арқылы Roomba -мен байланыс орнатады. Ол сонымен қатар MATLAB -те webwrite () пәрменін қолдана отырып, твиттер байланысын орнатады. Циклда Roomba қоршаған ортаға байланысты бес негізгі логикалық ағын бар. Алдымен Roomba кедергілерді тексереді және егер ол кедергіге тап болса, артқа қарай реттейді. Бұл циклға кірушілерге Roomba -ны алып кету туралы ескертетін екінші жол. Қатаң Марс соғыс аймағының маңызды утилитасы. Roomba өзінің позициясы қауіпсіз екенін анықтағаннан кейін, ол келесі қозғалысын анықтау үшін мобильді құрылғыға қарайды. Егер мобильді құрылғы алға қарай еңкейтілсе, ол дөңгелектің жекелеген айналу жиілігін қадам дәрежесіне қарай реттеуге қарағанда, орамның өлшеу ауырлығына байланысты базалық жылдамдықты есептейді. Телефон Roomba -ны керісінше жылжыта алады. Бейтарап мобильді құрылғы күйі соңғы екі жолды жабады. Демалып жатқан Roomba шетелдіктердің туын іздейді және пайдаланушыға тиісінше ескертеді.

Төменде біздің код (MATLAB 2017a толтырылған)

%кірістер: Wi -Fi қосылған құрылғыдан, камерадан бағдарлау деректері

%ақпарат, сенсор деректері

%шығыс: қозғалысты wifi қосылған құрылғы мен қозғалыс басқарады

% - сенсор мәліметтерін оқу арқылы тексерілетін қауіпсіздік. Егер камера анықтаса

% бөтен жалау болса, онда бөлме жауы жалауын твиттер арқылы жауап береді

% анықталды.

%мақсаты: біздің құрылғы қорғаушыларды қоспағанда, ешқандай мақсатсыз өмір сүреді

% оны құрды, ол өз жасаушысына қызмет етеді және жасайды

% дәл айтқандары.

%Қолданылуы: бағдарлама өздігінен жұмыс істейді.

бәрін тазалау, барлығын жабу, clc

%Объектілер мен айнымалыларды инициализациялау

r = бөлмеба (28);

m = ұялы телефон;

%use answer = webwrite (хост атауы, деректер)

хост атауы = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';

API = 'SGZCTNQXCWAHRCT5';

tweet = 'RoboCop - бұл операциялық… команда күтілуде';

data = strcat ('api_key =', API, '& status =', tweet);

reponse = webwrite (хост атауы, деректер);

%үнемі жұмыс істейтін цикл

ал 1 == 1

Релевантты деректері бар құрылымдар

o = m. бағдарлану; Мобильді құрылғының %бағдары

жеңіл = r.getLightBampers (); %Light Bamper мәндері

a = r.getCliffSensors (); %CLiff сенсорының мәндері

соққы = r.getBampers (); %Бампер сенсорлары

%бамперлерді тексеріңіз

егер bump.right == 1 || соққы.солға == 1 || бөртпе.алға == 1

r.moveDistance (-. 2,.2);

%датчиктерді тексеріңіз

elseif light.left> 60 || light.leftFront> 60 || light.leftCenter> 60 || жарық.оң> 60 || light.rightFront> 60 || light.rightCenter> 60

r.moveDistance (-. 2,.2);

%Cliff датчиктерін тексеріңіз

%Ұрлыққа қарсы сигнал және хабарландыру

elseif a.left <300 && a.right <300 && a.leftFront <300 && a.rightFront <300

r.stop ();

r.beep ();

tweet = 'RoboCop жойылды!'

data = strcat ('api_key =', API, '& status =', tweet);

reponse = webwrite (хост атауы, деректер);

%Қиырдан құтылу қалыпты әрекеті

elseif а.солдан <300 || а. дұрыс <300 || a.leftFront <300 || a.rightFront <300

r.moveDistance (-. 2,.2);

%Roomba тексерулерден өтті және енді қалыпты жұмыспен жұмыс істейді.

%Бастапқыда құрылғының орамы өлшенеді және негізге айналады

Дөңгелектің айналу жылдамдығын есептеу үшін %жылдамдығы қолданылады

Алға қозғалыс %

elseif o (3)> = 0 && o (3) <= 60

baseVel = (-. 5/60)*(o (3) -60);

егер o (2)> =-70 && o (2) <0

r.setDriveVelocity (baseVel+(. 3/50)*abs (o (2)), baseVel-(. 3/50)*abs (o (2)));

басқа o (2) = 0

r.setDriveVelocity (baseVel-(. 3/50)*abs (o (2)), baseVel+(. 3/50)*abs (o (2)));

else r.stop

Соңы

%Кері қозғалыс

elseif o (3)> 100 && o (3) <150

r.setDriveVelocity (-. 2, -.2)

r.beep ();

r.beep ();

%resting roomba флоресцентті деп белгіленген шетелдіктердің туын іздейді

%жасыл Қағаз бөлігі

басқа

r.stop

img = r.getImage (); %сурет алады

табалдырық = сұр түс (img (200: 383,:, 2))+. 1; %жасыл жасыл деңгей

егер шекті>.42

tweet = 'Дұшпан тапты!'

data = strcat ('api_key =', API, '& status =', tweet);

reponse = webwrite (хост атауы, деректер);

басқа

r.stop

Соңы

Соңы

Соңы

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

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

Ұсынылған: