Мазмуну:

Roomba MATLAB менен: 4 кадам (сүрөттөр менен)
Roomba MATLAB менен: 4 кадам (сүрөттөр менен)

Video: Roomba MATLAB менен: 4 кадам (сүрөттөр менен)

Video: Roomba MATLAB менен: 4 кадам (сүрөттөр менен)
Video: i movie mistakes 😯 Full Movie in Hindi #shorts 2024, Ноябрь
Anonim
Roomba MATLAB менен
Roomba MATLAB менен

Бул долбоор MATLAB жана iRobot Create2 программалуу роботун колдонот. MATLAB боюнча билимибизди сыноо менен, биз Create2ди сүрөттөрдү чечмелөө жана сигналдарды аныктоо үчүн программалай алабыз. Роботтун иштеши негизинен MATLAB мобилдик тиркемесинен жана Raspberry Pi камера модулунан көз каранды.

1 -кадам: Бөлүктөр жана материалдар

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

1. iRobot түзүү, 2 -версия

- Бул Roomba окшогон программалоочу робот. IRobotтон алынган бул продукт боштук эмес экенин билиңиз. Бул колдонуучу тарабынан ыңгайлаштырылган программалоо үчүн арналган.

2. MATLAB 2017a

- Көпчүлүк эски версиялар биз колдонгон кодго шайкеш келет. MATLAB сиздеги версияга туура келбеген буйрукту аныктайт жана эң ылайыктуу буйрукту сунуштайт.

3. Raspberry Pi 3 Model B, Version 1.2

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

4. Камера модулу V2 (Raspberry Pi үчүн)

- Сиз таң калышыңыз мүмкүн; анын көлөмүнө карабастан, Raspberry Pi Камера Модулу абдан жакшы сапатта. Бул долбоор үчүн эң арзан жана эң ылайыктуу вариант.

Кошумча: 3D басылган стенд. Бул камераны турукташтыруу үчүн колдонулат. Бул роботтун иштешине таасирин тийгизбейт, бирок түстү жана/же объектти таануу үчүн сүрөт иштетүүчү маалыматтарды колдонууну кааласаңыз, бул сиздин коддоого жардам берет.

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

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

1. Raspberry Pi менен камера модулун туташтыруу (Hardware)

- Raspberry Pi'ди иштетүү үчүн, микроконтроллердеги аялдын кубат портуна эркек микро USB иштетүү керек болот. Кошумча: Чыңалуу 5 В ашпашын камсыздоо үчүн чыңалуу жөндөгүчүн колдонсо болот. Raspberry Pi'ди күйгүзгөндөн кийин, аны роботко туташтырсаңыз болот, эркек учу USB a, аналык платадан микроконтроллердеги USB портуна А.

- Пиди Roomba менен туташтыргандан кийин, камера орнотууга даяр. Камера модулу сиз күткөндөн бир топ кичине болот. Белгилей кетсек, линза сенсорго орнотулган жана камерадан ак лента жайылган. Тасманы алып салбаңыз же үзбөңүз! Бул Raspberry Pi менен туташуу үчүн керек болгон кабель. Биринчиден, лентанын аягынан кармап, күмүш туташтыргычтарды жана көк кабелди табыңыз. Булар карама -каршы тарапта. Андан кийин, Raspberry Pi'ңиздеги ethernet жана HDMI портторунун ортосундагы уячаны табыңыз. Белгилей кетсек, аны жапкан кичинекей, ак кулпу бар. Кулпуну акырын көтөрүңүз, бирок аны оюктан чыгарбаңыз, анткени ал үзүлүп кетет жана биротоло бузулат. Кулпуну көтөргөндөн кийин, лентаны кармап, HDMI портуна күмүш туташтыргычтарды караңыз. Көк жагы Ethernet портуна туш болот. Лента дагы эле кулпусун ачып жатканда, уячасына акырын жылдырыңыз. Аны оюкка мажбурлоонун кереги жок. Киргизилгенден кийин, кулпуну кайра ылдый басыңыз. Эгерде камераңыз туура корголгон болсо, лентаны (акырын) тартып, чыңалууну сезе билиңиз. Тасма бош болбошу керек. Камераңызды Пи -ге туташтыргандан кийин, анын канчалык бош экенин байкасаңыз болот. Мына ошондуктан биз аны турукташтыруу үчүн 3D-принтерде орнотулган. Камераңызды жогорку сапатта иштетүү үчүн кандай материалдарды колдонууну каалаарыңызды аныктоо сиздин тандооңуз.

2. Туура файлдарды орнотуу жана Roomba-ны компьютериңизге туташтыруу Бардык жабдыктар конфигурациялангандан кийин, сиз азыр робот менен баарлашууга мүмкүндүк берген M-файлдар менен бирге MATLAB орнотууга өтсөңүз болот. Бул үчүн, MATLABты ачыңыз жана бардык тиешелүү файлдарды бирге кармоо үчүн жаңы папканы түзүңүз. Керектүү файлдарды орнотуу/жаңыртуу үчүн бул скриптти колдонуңуз:

- Бардык файлдар азыр сиз түзгөн папкада көрүнүшү керек. Учурдагы Папка терезесинде оң баскыч менен чыкылдатыңыз жана "Жолго кошууну" тандап, ошол жолду MATLAB файлдарды издеген каталогдордун тизмесине кошуңуз. Бардык файлдарыңыз туура жолдо экенине ынаныңыз.

3. Файлдар орнотулгандан кийин, сиз азыр роботко туташа баштасаңыз болот. Роботту күйгүзүү менен баштаңыз, андан кийин аны иштеткенден кийин дароо эле баштапкы абалга келтирүү (роботту колдонуунун алдында жана кийин ар дайым катуу баштапкы абалга келтирүүнү унутпаңыз). Экинчиден, роботту да, ноутбукту да бир wifi тармагына туташтырыңыз. Андан кийин, биз 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 алып кетилип жаткандыгын эскерткен экинчи жол. Катуу Martian Warzone маанилүү коммуналдык. Roomba өзүнүн позициясы коопсуз экенин аныктагандан кийин, кийинки кыймылын аныктоо үчүн мобилдик түзмөккө карайт. Эгерде мобилдик түзмөк алдыга эңкейе турган болсо, ал дөңгөлөктүн ылдамдыгын ылдамдыктын даражасына жараша бурууга караганда, ылдамдыкты өлчөөнүн оордугуна жараша эсептейт. Телефон дагы Roombаны тескери жылдыра алат. Нейтралдуу мобилдик түзмөктүн абалы акыркы эки жолду камтыйт. Эс алып жаткан Roomba келгиндердин желегин издейт жана колдонуучуну ошого жараша эскертет.

Төмөндө биздин код (MATLAB 2017a менен толтурулган)

%киргизүү: Wi -Fi туташкан түзмөктөн, камерадан багыттоо маалыматы

%маалымат, сенсор маалыматы

%жыйынтыктары: кыймыл wifi туташкан түзмөк жана кыймыл тарабынан көзөмөлдөнөт

% - бул сенсордун маалыматын окуу менен текшерилген коопсуздук. Эгерде камера аныктаса

% бөтөн желек анда Roomba душмандын желегин твит менен жооп берет

% байкалды.

%максаты: биздин аппарат кимди коргоодон башка эч кандай максатсыз жашайт

% аны жараткан, ал өзүнүн жаратуучусуна кызмат кылат жана кылат

% так айткандары.

%Колдонуу: негизинен программа өз алдынча иштейт.

баарын тазалоо, баарын жабуу, clc

%Объекттерди жана өзгөрмөлөрдү баштоо

r = roomba (28);

m = mobiledev;

%жоопту колдонуу = 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

Relavent маалыматтары бар %структуралар

o = m. багыттоо; %мобилдик түзмөктүн багыты

жарык = r.getLightBampers (); %Жарык Бампердин Мааниси

a = r.getCliffSensors (); %CLiff сенсорунун мааниси

bump = r.getBumpers (); %Бампер сенсорлору

%бамперлерди текшерүү

if bump.right == 1 || bump.left == 1 || bump.front == 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 || a.right <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)));

elseif o (2) = 0

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

башка r.stop

аяктоо

%Артка кыймыл

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

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

r.beep ();

r.beep ();

%resting roomba flourescent катары белгиленген келгиндердин желегин издейт

%жашыл кагаз

башка

r.stop

img = r.getImage (); %сүрөт тартуу

босого = graythresh (img (200: 383,:, 2))+.1; %жашыл деңгээл

эгер босого>.42

tweet = 'Душман байкалды !!'

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

reponse = webwrite (хосттун аты, маалыматтар);

башка

r.stop

аяктоо

аяктоо

аяктоо

4 -кадам: Жыйынтык

Эсиңизде болсун, сиз жогоруда биз жазган сценарийди колдонушуңуз мүмкүн, бирок сиз аны керектөөлөрүңүзгө ылайыкташтыра аласыз. Аны телефонуңуз менен көзөмөлдөөнүн кажети жок! (Бирок, бул дагы кызыктуу кылат.) Роботту башкаруу үчүн кайсы ыкманы колдонууну туура көрүңүз. Роботуңуз менен айланып, ырахат алыңыз!

Сунушталууда: