Мазмуну:

Марс чалгындоо роботу: 4 кадам
Марс чалгындоо роботу: 4 кадам

Video: Марс чалгындоо роботу: 4 кадам

Video: Марс чалгындоо роботу: 4 кадам
Video: Чанги 1ба 1👍👍 2024, Июль
Anonim
Марс чалгындоо роботу
Марс чалгындоо роботу

Бул Instructable Марстын чалгындоо роботун программалоо жана башкаруу боюнча этап-этабы менен көрсөтмө болуп саналат.

Баштоо үчүн, сиз төмөнкү материалдардын тизмесин алышыңыз керек: Теннесси штатындагы Эннингинг Университетинин Тикле Колледжи тарабынан ыңгайлаштырылган заряддалган iRobot, iRobotто Raspberry Pi менен туташкан зымсыз тармак, UTK iRobot заряддагыч түзүлүш, Wifiга жөндөмдүү MATLAB жана интернетке кирүү мүмкүнчүлүгү бар компьютер.

1 -кадам: Roomba Toolbox

Roomba Toolbox
Roomba Toolbox

MATLABты ачыңыз жана долбооруңуздан сактала турган код файлдары үчүн жаңы папканы түзүңүз. MATLABда жаңы скрипт ачыңыз жана төмөнкү кодду иштетиңиз. Скрипт иштетилгенден кийин, жаңы папканы MATLAB файлдарды издеген каталогго кошуңуз.

Код:

functionbabaInstallclc; Файлдарды орнотуу үчүн % тизмеси = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; опциялардан орнотуу үчүн % жайгашуу = weboptions ('CertificateFilename', ''); % тастыктаманын талаптарын этибарга албоону айт = server = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Roomba орнотуу/жаңыртуу'; % display максаты жана ырастоо көрсөтмөсүн алуу = {'Бул программа бул EF 230 Roomba файлдарын жүктөйт:' '' strjoin (файлдар, '') '' 'бул папкага:' '' cd '' 'Улантууну каалайсызбы? '}; бип yn = questdlg (ыкчам,… dlgTitle,… 'Ооба', 'Жок', 'Ооба');

if ~ strcmp (yn, 'Yes'), return; аяктоо

% бар файлдардын тизмесин алуу_мумкун болгон файлдар = файлдар (cellfun (@exist, files)> 0); if ~ isempty (existing_files) % аларды алмаштыруу чындыгында туура экенин текшериңиз = {'Сиз бул файлдарды алмаштырып жатасыз:' '' strjoin (existing_files, '') '' '' алмаштырууга макулсузбу? ' }; бип yn = questdlg (ыкчам,… dlgTitle,… 'Ооба', 'Жок', 'Ооба'); if ~ strcmp (yn, 'Yes'), return; аягы аягы

% файлдарды жүктөө cnt = 0; i = 1 үчүн: узундук (файлдар) f = файлдар {i}; disp (['Жүктөө' f]); url = [server f] аракет кылыңыз; websave (f, url, варианттар); % коопсуздук каталарын болтурбоо үчүн опцияларды кошту cnt = cnt + 1; catch disp (['Жүктөө катасы' f]); муляж = [f '.html']; эгер бар болсо (муляж, 'файл') == 2 жок кылуу (муляж) аягы аягы

if cnt == length (files) msg = 'Орнотуу ийгиликтүү'; күтүү (msgbox (msg, dlgTitle)); else msg = 'Орнотуу катасы - чоо -жайын билүү үчүн буйрук терезесин караңыз'; күтүү (errordlg (msg, dlgTitle)); аяктоо

end %roombaInstall

2 -кадам: Туташууга даярдануу

Туташууга даярданууда
Туташууга даярданууда
Туташууга даярданууда
Туташууга даярданууда

Роботтон чыккан micro-USB'ди Raspberry Piдин эң төмөнкү портуна туташтырыңыз. Андан кийин Roomba чокусунда, бир эле учурда док жана spot баскычтарын басып, Roombaдагы жарык өчкөнчө кармаңыз. Сиз чыгаргандан кийин Roomba электрондук таразасын угушуңуз керек.

3 -кадам: Роботко туташуу

Роботко туташуу
Роботко туташуу

Компьютериңиздеги жеткиликтүү тармактарды ачыңыз жана компьютер менен Raspberry Pi ортосундагы учурдагы тармакты тандаңыз. MATLABнын учурдагы папкасында, учурдагы долбоор папкаңызды оң баскыч менен чыкылдатыңыз жана 1 -кадамда жүктөлгөн Roomba курал кутусун тандап, жолго кошуңуз. Бир нече Pi байланыштары үчүн иштелип чыккан тармакта, Roomba класстагы объектти түзүү менен роботыңызды көрсөтүңүз. Төмөндөгү мисалды караңыз

Эгерде сизде 7 номерине дайындалган Roomba бар болсо, төмөнкүлөрдү киргизиңиз:

r = Roomba (7)

Бул өзгөрмө азыр Roomba дайындалганын унутпаңыз, роботко берилген ар кандай буйрук дайындалган өзгөрмө тарабынан жетектелиши керек.

4 -кадам: Код

Code
Code

drive.google.com/drive/folders/1OVR5oTHUsn…

Жогорудагы шилтемени колдонуп, бардык.m файлдарын негизги программа иштей турган папкага сактаңыз. Шилтеме бар бардык адамдар үчүн ачык болушу керек. Учурдагы папкада жаңы скрипт ачыңыз жана төмөндөгүдөй mycontrolprogram.m иштетиңиз:

mycontrolprogram функциясы (r) глобалдык m m = mobiledev; emailInit (); чуркоо = 1; глобалдык f глобалдык эсептөө саны = 0; f = r; глобалдык direc direc = 0; r.getAngle; r.getDistance; глобалдык curLoc curLoc = [0, 0]; глобалдык упайлар pts = нөлдөр (1, 2, 2); manual = true; graphObs (1); v = 0.15; жатканда <50 if (manual == false) obsDetect (r, v, pts); direc = direc + r.getAngle; r.setLEDDigits (num2str (саноо)); else direc = direc + r.getAngle; manualDrive (); end end figSend (); аяктоо

Робот эми ойлоп тапкан ишин аткарышы керек.

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