Мазмұны:

USB Gamepad арқылы қашықтан басқарылатын 4WD робот: 6 қадам
USB Gamepad арқылы қашықтан басқарылатын 4WD робот: 6 қадам

Бейне: USB Gamepad арқылы қашықтан басқарылатын 4WD робот: 6 қадам

Бейне: USB Gamepad арқылы қашықтан басқарылатын 4WD робот: 6 қадам
Бейне: Теледидарға телефонды қосу 2024, Маусым
Anonim
Image
Image

Келесі робототехника жобасы үшін мен күтпеген жағдайларға байланысты өз робот платформамды жобалауға/жобалауға мәжбүр болдым.

Мақсат-бұл автономды болу, бірақ алдымен мен оның негізгі жүргізу қабілетін сынауым керек еді, сондықтан мен RC (радиобасқарылатын) автокөлік сияқты өзін ұстау және бақылауды қызықты жоба деп ойладым., бірақ оның орнына USB Gamepad пайдаланыңыз.

Нәтижелер мен күткеннен де жақсы немесе жақсы болды.

USB Gamepad маршрутымен жүрудің артықшылығы - көптеген бағдарламалау, мен оны баптай аламын және бұрын жасаған нәрсеге қосамын. Менде RC автокөлігін құрудың нақты тәжірибесі жоқ, бірақ мен RC таратқышы (джойстиктер/түймелер және т.

Мысалы, мен робот қабырғаға соғылғанын мойындадым, тек бағдарламалық қамтамасыз ету жоғары токтарды және кодер жылдамдығының төмен мәндерін анықтады.

Қажет болса, роботқа бірнеше USB веб -камерасын қосуға болады, олардың санына және орналасуына байланысты, роботты тірі аймақтың айналасында және басқа бөлмеге кіргізуге болады, ал басқа жерде USB Гампад қосылған компьютердің алдында отырады. ол

Бұл нұсқаулық шынайы, егжей-тегжейлі, біртіндеп емес, қалай болады, бірақ мен мүмкіндігінше егжей-тегжейлі беруге тырысамын.

Жабдықтар

Ұсынылған бөлшектер: Мен мұның көп бөлігін Servo City -ден алдым (Actobotics).

2 - 13,5 дюймдік U -арналар, негіздің жақтауының бүйірлеріне арналған. Қозғалтқыштар осы жерге бекітілген. Мен қысқа нәрсемен жүрдім, ал моторлар ең бұрыштарда орнатылды, бұл оларды орнатуды қиындатты.

Негізгі жақтаудың алдыңғы және артқы жағындағы 2 - 12 дюймдік каналдар.

2 - 15 «бамперлерге арналған U -арналар, алдыңғы және артқы

2 - 7 (немесе 7,5 дюйм болды ма?) Алдыңғы бағаналарға арналған U -арналар. Бұл өте маңызды емес, ұзындығы әр түрлі болуы мүмкін. Бұл артқы бағандардың биіктігіне және бұрышты қандай биіктікте қоюды таңдауға байланысты. Олардың арасын байланыстыратын U-арна.

2-(ұзындығы?) Тік бағандарды қосатын, алдыңғыдан артқа қарай бұрылатын мүшеге арналған U-арналар. Бұл өте маңызды, өйткені Servo City / Actobotics 45 градус бұрыштық панельдер немесе кронштейндер сатады, бірақ сіз дұрыс ұзындыққа ие болу үшін математика / триг жасауыңыз керек.

2-(ұзындығы?) U-арналар жоғары деңгейлі бүйірлік бамперлер ретінде қызмет етеді, тағы да бұл негізмен не істейтініңізге байланысты

2-(ұзындығы?) U-арналары алдыңғы және артқы бамперлердің жоғары деңгейінде қызмет етеді, бұл жоғарыда берілген.

1 - (ұзындығы?) U -арна жоғарғы мүше ретінде қызмет етеді, артқы бағандарға созылады. Бұл өте маңызды болмауы мүмкін, себебі сіз жоғарыда немесе тік бағандардың алдында / артында орната аласыз.

12 (шамамен) L-арналар немесе жақшалар. Олар бірнеше мақсаттарға қызмет етеді, бірақ негіздің жақтауының бұрыштары мен тік бағаналардың құрылымдық тұтастығын/беріктігін қамтамасыз етеді.

4 (+?) 3-тесіктен 5-тесікке дейін тегіс каналдар. Олар сонымен қатар роботтың құрылымдық беріктігін қамтамасыз етеді.

ServoCity төменгі панельді немесе батарея мен контроллерлер жүретін жердің үстіңгі тақтасы ретінде немесе сенсорлар үшін жоғары беттік тақта ретінде қолдануға болатын кең аумақты жазық панельдердің екі негізгі түрін сатады.

4 (4.5?) «X 12» панелі бар, ал екіншісі 9 (9.5?) X 12 панель деп ойлаймын.

Міне, бұл жерде қызықты нәрселер пайда болады, және шатастыратын және қымбат болуы мүмкін (кішкене бөліктер қосылады). Барлық арналарды және т. Бұл жерде менде бөлшектердің толық, егжей -тегжейлі тізімі жоқ екеніне өкінемін.

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

Мен қолданған нәрселерді тізімдей аламын:

www.servocity.com/90-quad-hub-mount-c

www.servocity.com/side-tapped-pattern-moun…

www.servocity.com/90-quad-hub-mount-d

Келесі екеуі өте ыңғайлы, мен оларды жинақтаймын:

www.servocity.com/single-screw-plate

www.servocity.com/dual-screw-plate

Келесі - барлық бұрандалар (болттар). Мен әр өлшемді пакеттен бастадым, мен олардың көпшілігінен өттім. Мен өлшемі маңызды емес ұзын бұрандаларды қолдандым, ал қысқаларын ҚАЖЕТТІ орынға сақтап қойдым, себебі басқа ұзындық жұмыс істемейді.

Ақырында, сіз 1 пакетті алуыңыз керек:

www.servocity.com/6-32-nylock-nuts-pack

Мен мұны көп қолданған жоқпын, бірақ олар (менің ойымша) сіздің қозғалтқыштарыңыз уақыт өте келе жақтаудан дірілдемеуін қамтамасыз ету үшін маңызды. U-каналдың арқасында бір қозғалтқышта тек екеуі ғана жұмыс істейді

Сізге кем дегенде 4 -і қажет болады, егер сіз зақым келтірсеңіз, қосымша біреуін алуыңыз мүмкін (маған сеніңіз, моторды бірнеше рет қосу / өшіру мүмкін):

www.servocity.com/heavy-duty-clamping-shaf…

Әдетте қозғалтқыш біліктері 6 мм, ал осьтер 1/4 дюйм (0,25 дюйм).

Мен бірнеше қара бұрандаларды аламын, оларды мықтап бекітемін және оларды жоғарыдағы қысқыштар үшін қолданамын, ал қысқыштармен бірге келетін бұрандаларды ЕМЕС:

(Менің ойымша, бұл солар):

Диаметрі 4 - 1/4 «(0,25») мойынтіректер

1 - қара 1/4 дюймдік аралық қапшық

4 - D -хабтарды қысу

www.servocity.com/0-770-clamping-d-hubs

4-D-біліктері (#6340621.375 «(1-3/8»)

4 - 6 дюймдік ауыр дөңгелектер

www.servocity.com/6-heavy-duty-wheel

Назар аударыңыз, мен бұл дөңгелектерді жақсы көремін, бірақ олардың қатты резеңке жиегі бар. Олар қатты едендерде, кілемде және, мүмкін, қатты бетон серуендеуде жақсы жұмыс істейтін сияқты. Шөпте, құмда және т.

Сонымен қатар, олар сіздің кілемді ластауға бейім болады !!!

4 - қозғалтқыштар:

www.servocity.com/motors-actuators/gear-mo…

Мен 223 RPM -мен жүрдім, үй ішіндегі ең жақсы жылдамдық, сонымен қатар роботымды (2 SLA 12V аккумуляторы ауыр) баяу қозғалыста оңай қозғалта аламын.

2 - қозғалтқыштарға арналған моторлы кодерлер. (Servo City's Roboclaw тек 2 кодерді өңдейді)

1 - Roboclaw 2X45A мотор контроллері, түйреуіштер емес, жасыл түйіспелі блоктары бар екеніне көз жеткізіңіз. жақсы … әрқайсысының өз артықшылықтары бар. Артқа қарау.. Мен түйреуіштерді алған болармын.

Менің ойымша, бұл Серво қаласынан.

SparkFun Arduino Uno (мен қолданған), сонымен қатар Redboard Artemis -ті сіздің менеджер ретінде сатады.

Сізге Raspberry Pi 3 (немесе 4?) Сіздің жоғары деңгейлі «миыңыз» және сізге интерфейс ретінде қажет болады.

Сізге сымдар, қосқыштар, сақтандырғыштар және өте берік «ұшатын» диод қажет.

Мен Duracell 12V 14AH терең циклді SLA батареясын қолдандым, бірақ сіз кез келген нәрсені қолдана аласыз.

ЕСКЕРТУ! Бұл роботтың конструкциясы (TALL, WIDE, бірақ SHORT), SLA аккумуляторы сияқты ауырлықтың ауыр орталығын болжайды. Бұл жаңа технологиялық аккумуляторлық пакеттердің басқа түрлерімен жақсы болмауы мүмкін. LiPo, Lion және т.

Pololu -дан Arduino және/немесе Redboard -ды дербес қуаттай алатын бірнеше бөшкеге арналған адаптер алдым, бірақ олар таңқурайға USB арқылы қосылған болса да, мен таңқурайдың қуатына сенгім келмеді.. (Әсіресе орнату камералары, сенсорлар және т.

Сізге 12-ден 5В-қа дейін төмендететін кернеу реттегіші қажет, таңқурай үшін кемінде 5А (?). Қалғандары 7 -ден 15 В дейінгі кез келген нәрсені тікелей SLA аккумуляторымен басқара алады.

Бұл бөлшектерге қатысты.

Мен жасамайтын нәрсе - 90 градусқа бұрылған беріліс.

Тағы да, менің Robotics youtube ойнату тізімімде жоғарыда айтылғандардың көпшілігін сипаттайтын көптеген бейнелер бар.

1 -қадам: құрылыс

Шынымды айтсам, менің барлық құрылыс қадамдарым youtubes түрінде. Сіз менің робототехниканың ойнату тізіміндегі «Wallace Robot 4» -тен бастап көре аласыз. Алдыңғыларда (Уоллес II, Уоллес III) жақсы материал бар

www.youtube.com/playlist?list=PLNKa8O7lX-w…

2 -қадам: Робоклавты, моторларды және кодерлерді тексеріңіз

Roboclaw (BasicMicro) жасаушыларында моторлар мен кодерлерді Roboclaw -қа дұрыс қосқаныңызға көз жеткізу үшін қолдануға болатын Windows қосымшасы бар. Сіз Робоклавқа параллель бір жақты қозғалтқыштарды қосасыз. Сіз кодтаушы сымдарды тек артқы қозғалтқыштарда немесе алдыңғы қозғалтқыштарда қолдана аласыз, немесе одан да жақсы - ДИАГОНАЛДЫ түрде.

Менің ұсынысымның себебі (кейінірек) тұрып қалған роботты тексерумен байланысты. Алдыңғы/артқы дөңгелектер бұрылмаса, диагональ бойынша статусқа ие болу алдыңғыдан немесе артқы жақтан жақсы болуы мүмкін.

ЕСКЕРТПЕ: мен жасамаған нәрсе - Arduino -ны кодерлерге қосылу үшін пайдалану (GPIO түйреуіштері арқылы) - егер сіз осылай жасаған болсаңыз, сізде Roboclaw 2 кодтаушыны, содан кейін Arduino -да қалған екеуін басқара аласыз. Roboclaw -тан оның екі кодер мәнін (және жылдамдығын) сұраңыз.

ЕСКЕРТПЕ: Мен BasicMicro қосымшасын Roboclaw-ты жоғарылату / төмендету үшін алдын ала конфигурациялау үшін қолдандым. Бұл жабдық пен электрониканы қорғау үшін жақсы. Менің Robotics ойнату тізімімде бұл туралы бейне бар.

Мен ұмытып қалдым: мен сонымен қатар мотор кабельдері мен Roboclaw арасындағы оқшаулағыш кабельдерді сатып алдым. ЕСКЕРТПЕ: егер сіз мұны жасасаңыз, кабельдің жалпы ұзындығы НЕҒІЗІН ҰЗЫН екенін байқайсыз. Бірақ мен қажет болмаса, кесуді қаламадым. Мен Raspberry мен Arduino арасындағы USB -мен байланыс мәселелеріне тап болдым (кейінгі қадамдар үшін), мүмкін EMI шуынан болар.

Егер мәселе туындаса, сымдарды қысқартуға болады - металл қорғанысын да сатып алуға болады (Amazon -дан, диаметрі 1 «).

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

Менікі шамамен 12 футтан сәл қисық, бірақ мен бұл үшін ештеңе істеу қажеттілігін сезінбедім.

3 -қадам: Arduino қосу және бағдарламалау

Сізге бөшке ашасы мен сым, сонымен қатар USB кабелі қажет болады. Arduino коннекторы үшін дұрыс нұсқаны алғаныңызға көз жеткізіңіз.

Сізге Arduino IDE жүктеу керек.

Github -да роботты басқаруға арналған соңғы эскиз:

github.com/elicorrales/wallace.robot.ardui…

Сіз Arduino -ны IDE қосылған компьютерге қосасыз және эскиздің қалай жазылғанына байланысты сіз Arduino -да Roboclaw -пен сериялық байланыс (Бағдарламалық қамтамасыз ету) үшін 10 және 11 түйреуіштерді қолданасыз.

Мен Raspberry Pi мен Arduino арасындағы қарапайым байланыс хаттамасын жасадым.

Бұл ASCII-таңбаға негізделген, бұл Arduino IDE-дің «сериялық монитор» терезесі арқылы жөндеуді және тексеруді жеңілдетеді.

Пәрмендер «0» (нөл) санынан басталады және қажет болғанда жоғарылайды

«20-дан» басталатын командалар Roboclaw-тың тікелей командалары болып табылады, ал төмендегілер-қатаң түрде Arduino-мен байланысты командалар.

EMI шуының арқасында мен бақылау сомасын қосу үшін командалық жолды жақсарттым.

Сонымен, кез келген жол мыналарды қамтиды:

Жолдағы # таңбалар саны, соның ішінде

бақылау сомасы

Мысалы, сіз Arduino -ның командалар мәзірімен жауап беруін қалайсыз дейік:

4 0 12 16

«4» - жолдағы төрт таңбалауыш.

«0» - бұл MENU командасы.

«12» - мен таңдаған кездейсоқ сан.

«16» - 4 + 0 + 12 қосындысы.

Сол MENU пәрмені басқаша болуы мүмкін:

4 0 20 24

Мен кездейсоқ басқа санды таңдағандықтан, бақылау сомасы да әр түрлі.

Мысалы, сіз 100 % жылдамдықпен алға жылжуды қалайсыз деп айтыңыз:

5 29 0 134 100

«5» бес белгісі

«29» FORWARD командасы

Кездейсоқ сан «0»

«134» бақылау сомасы

«100» параметрі 1 (бұл жағдайда жылдамдық)

Егер Arduino кіріс жолын тексере алмаса, ол оны тастайды / елемейді, жауап жоқ.

Егер Arduino X миллисекундымен келесі қозғалыс пәрменін алмаса, ол STOC қозғалтқыштарын Робоклавқа жібереді.

Arduino іске қосылады және USB портына автоматты күйді жібере бастайды, егер мұны тоқтату туралы айтылмаса.

Осы сәтте сіз IDE -дегі «сериялық мониторды» пайдалану арқылы Roboclaw -ды басқаруға және қозғалтқыштардың айналуын бақылап көруге дайын болуыңыз керек.

4 -қадам: Raspberry Pi қосу және бағдарламалау (node.js)

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

Мен жылтыратқан бір нәрсе - сізге 5В кернеу реттегіші қажет болады, немесе оған USB кабелін салу, кесу/өзгерту немесе таңқурайды басқа жолмен қосу қажет болады.

Github -да Arduino -мен USB арқылы байланысу үшін Raspberry -де қажет нәрсенің бәрі бар.

github.com/elicorrales/wallace.robot.raspb…

Тіпті тест сценарийлері де бар.

Сіз node.js сервер кодын қарай аласыз және Raspberry сандық нұсқауларды REST түріндегі url жолдарына қалай түрлендіретінін көресіз. Тест командаларын жіберу үшін «curl» қолдануға болады.

Мысал:

сіздің RP3 IP мекенжайыңыз: 8084/arduino/api/forward/50

қозғалтқыштардың дөңгелектерді бір сәтте алға айналдыруына әкеледі.

Егер сіз мұны қабық сценарийінің цикліне қойсаңыз, онда дөңгелектердің айналуын көресіз.

Node.js коды (server.js) Arduino-ға сериялық хабарламалар жоғалған жағдайда қайта қосылу мүмкіндігін қамтиды. Сіз Arduino-ны таңқурайдан ажыратып, оны қайта қосу арқылы тексере аласыз.

Екеуінің арасындағы сериялық беру жылдамдығына сәйкес екеніңізге көз жеткізіңіз.

Arduino деректердің нашар пакеттерін түсіргендіктен, және node.js деңгейінде және JavaScript шолғышында барлығы көптеген «диск» командаларын жіберу үшін кодталған болғандықтан, мен 200000 baud дейін жұмыс істей алдым. (2 Мбит / с).

Егер сіз тест сценарийлерін іске қоссаңыз және дөңгелектердің айналғанын көрсеңіз, онда сіз келесі қадамға дайынсыз.

5 -қадам: Соңғы қадам - Веб -бет клиентін бағдарламалау / пайдалану

Мұның барлығының таңқурай бөлігіне Github сілтемесінде клиент файлдары бар.

index.html. index.js. p5.min.js.

Олар USB Gamepad-ті Gamepad API (браузерге негізделген) арқылы басқарады және сіз веб-бетте қол жетімді түрлі түймелер мен жүгірткілерді көресіз.

JavaScript коды джойстиктердің бірінің X және Y осінің мәндерін сұрайды (сауалнамалар).. (сізде қандай джойстиктерге/геймпадқа байланысты кодты өзгертуге тура келуі мүмкін). Ол өте тез сауалнама жүргізеді және ол барлық мәндерді node.js серверіне 8084 тыңдайды.

Джойстиктердің X және Y осінің шикі мәндері 0 мен 1 аралығында.

Бірақ Arduino -да қозғалтқыштарды басқару үшін пайдаланылатын Roboclaw мотор контроллері кітапханасының функциясы -100 -ден 0 -ге (артқа) немесе (0 -ден 100 -ге дейін) мәнді күтеді.

Су…. p5.min.js. қосу мақсаты осы. Бұл өте жақсы, ыңғайлы map () функциясы бар, онда сіз оған шикі мән бересіз, бұл шикі (ағымдағы) диапазон және жаңа, қажетті диапазон. Және ол бастапқы мәнді жаңа, салыстырылған ауқымдағы мәнге түрлендіреді.

Тағы бір мәселе: 100 жылдамдықта робот өте күрделі болуы мүмкін. Мен үнемі бір нәрсеге тап болдым. Бірақ бұл жақсарған сайын, ол солға немесе оңға бұрылғанда әлі де әсерлі болады.

Сіз қосатын нәрсе веб -беттегі ағымдағы Max Speed жүгірткісіне ұқсас болады. Бұл жүгірткі Xs және Ys джойстиктерін салыстыратын ең жоғары немесе максималды мәнді анықтайды.

Мысал:

Сіз 0 -> 1 -ден 0 -> 100 -ге дейінгі картаны жасайсыз деп айтыңыз. Джойстиктің нүктесін басқанда, сіз 100 -ге жетесіз. Тым жылдам болуы мүмкін.

Бірақ, егер сіз Max Speed жүгірткіні сәл артқа сырғытсаңыз, енді сіз 0 -> 1 -ден 0 -> 80 немесе 70 -ке дейін салыстырасыз.

Бұл node.js (және Arduino) жіберілу жылдамдығының үлкен өзгеруінсіз джойстикті жылжытуға көбірек мүмкіндік бар екенін білдіреді.

Сіз жасай алатын қосымша - X -ді Ys -тен (алға немесе артқа) өздерінің максималды жылдамдықтарына бөлу (солға немесе оңға бұру).

Осылайша, сіз жылдам сызықты қозғалыс үшін Y -ны 0 -ден 100 -ге, 0 -ден -100 -ге қалдыра аласыз, бірақ басқарылатын айналмалы қозғалыс үшін Xs максималды жылдамдығын төмендете аласыз. Екі дүниенің жақсысы.

6 -қадам: Қосымша: роботты тінтуірмен және / немесе сенсорлық оқиғалармен жүргізіңіз

Егер сіз осы уақытқа дейін жетсеңіз, онда сіз браузерден басталатын және Javascript арқылы Raspberry node.js серверіне, ақырында arduino-ға дейін өтетін бағдарламалық жасақтама Gamepad джойстикінің X- және Y-координаттарын «. алға »(немесе« артқа »және т.б.) командалары (және олардың жылдамдық мәні).

Сонымен қатар, сіз джойстиктердің Xs және Ys теріс 1 -ден нөлге дейін 1 -ге дейін, оларды нөлден 100 -ге дейін түрлендіру қажет екенін білесіз. Ал максималды мән веб -беттегі ең жоғары жылдамдық параметріне байланысты.

Со … тінтуірді немесе сенсорлық оқиғаларды (смартфондағыдай) пайдалану үшін жалғыз нәрсе - бұл оқиғаларды түсіру, Xs және Ys -ті алу.

БІРАҚ ---- бұл X-лер мен Y-лер теріс 1 мен 1 арасында ЕМЕС. Олар 0-ден басталады және оң өседі, себебі олар мәні бойынша HTML элементінің пиксельдері немесе салыстырмалы экрандық координаттары (мысалы, жүктеу тақтасы) немесе кенеп.

Сонымен, тағы да P5 Js кітапханасының «map ()» функциясы бізге қажет нәрсені қайта картаға түсіруге өте ыңғайлы.

Мен кодты екі түрлі веб -бетке айналдырдым, олардың бірі Gamepad көмегімен жұмыс үстеліне, екіншісі ұялы телефонға арналған, сенсорлық оқиғаларды қолдана отырып.

Сондай-ақ, Xs және Ys қайта картаға түсірілгеннен кейін, олар геймпадтағы Xs және Ys сияқты код тізбегіне енгізіледі.

Ұсынылған: