Мазмуну:

Алыстан USB Gamepad аркылуу башкарылган 4WD робот: 6 кадам
Алыстан USB Gamepad аркылуу башкарылган 4WD робот: 6 кадам

Video: Алыстан USB Gamepad аркылуу башкарылган 4WD робот: 6 кадам

Video: Алыстан USB Gamepad аркылуу башкарылган 4WD робот: 6 кадам
Video: КАК ПОДКЛЮЧИТЬ ТЕЛЕФОН К ТЕЛЕВИЗОРУ 2024, Ноябрь
Anonim
Image
Image

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

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

Жыйынтыктар мен күткөндөн жакшы же жакшыраак болду.

USB Gamepad маршрутуна баруунун артыкчылыгы, көптөгөн программалоо менен, мен аны ыңгайлаштырып, буга чейин кылган нерселериме кошо алам. Менде RC унаасын куруу боюнча эч кандай тажрыйба жок, бирок мен RC өткөргүчүнүн (джойстиктер/баскычтар ж.

Мисалы, мен роботтун дубалды сүзүп кеткенин тааныдым, программалык камсыздоо жогорку агымдарды жана коддогучтун ылдамдыгынын төмөндүгүн аныктады.

Ыктыярдуу түрдө, роботко USB веб -камераларын кошууга болот, алардын санына жана жайгаштырылышына жараша, роботту жашоо аймагынын айланасында жана башка бөлмөгө айдап кирүүгө болот, ал эми USB Гампадына туташкан компьютердин алдында башка жерде отурат. ал

Бул Инструкция чыныгы, деталдуу, баарын камтыган, этап-этабы менен болбойт, бирок мен мүмкүн болушунча деталдуу берүүгө аракет кылам.

Жабдуулар

Сунушталган бөлүктөр: Мунун көбүн мен Servo Cityден (Actobotics) алдым.

2 - 13.5 U -каналдар, базалык алкактын капталдары үчүн. Моторлор буга орнотулган. Мен кыска нерсе менен бардым, моторлорум эң бурчтарга орнотулган, жана аларды орнотуу кыйынга турду.

2 - 12 U -каналдар базанын алкагынын алдыңкы жана арткы бөлүгү.

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 -Hubs

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

4-D-Shafts (#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 - моторлор үчүн мотор коддогучтар. (Серво шаарынын Робоклавы 2 коддогучту гана иштетет)

1 - Roboclaw 2X45A мотор контроллери, пиндерде эмес, үстүндө жашыл терминал блоктору бар экенин текшериңиз …. жакшы … ар биринин өзүнүн артыкчылыктары бар. Hindsight.. Мен казыктарды алган болушу мүмкүн.

Менимче, бул Серво Ситиден келди.

SparkFun Arduino Uno (мен колдонгон нерсе), ошондой эле Redboard Artemisти дисктин менеджери катары сатат.

Сиз Raspberry Pi 3тү (же 4?) Жогорку деңгээлдеги "мээңиз" жана сизге интерфейс катары каалайсыз.

Сизге зымдар, өчүргүчтөр, сактандыргычтар жана абдан күчтүү "учуучу" диод керек болот.

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

ЭСКЕРТҮҮ! Бул роботтун конструкциясы (TALL, WIDE, бирок SHORT), SLA батарейкасы сыяктуу, кандайдыр бир оордук борборун болжолдойт. Бул башка жаңы технологиялык батарейкалар менен жакшы иштебеши мүмкүн. LiPo, Lion ж.б. Оңой эле оодарылып кетиши мүмкүн.

Pololuдон мен бир нече баррель сайгыч адаптерлерин алдым, алар Arduino жана/же Redboardду өз алдынча иштете алам, бирок алар Малинага USB аркылуу туташат, бирок мен Малинанын күчүнө таянгым келбейт.. (Өзгөчө камераларды, сенсорлорду ж.

Сиз Raspberry үчүн минималдуу 5A (?) Чыңалуусун жөнгө салуучу 12-ден 5Вга чейин керек болот. Калгандары SLA батарейкасына түздөн -түз 7ден 15Вга чейин нерсени башкара алышат.

Бул бөлүктөр үчүн.

Мен ЭМЕС кылмакмын - 90 градус кесилген тиш.

Дагы, менин Robotics youtube плейлистимде жогоруда айтылгандардын көбүн чагылдырган көптөгөн видеолор бар.

1 -кадам: Курулуш

Чынын айтканда, менин бардык курулуш кадамдарым youtubes түрүндө. Сиз "Уоллес Робот 4төн" баштап менин Robotics плейлистимде көрө аласыз. Мурунку (Уоллес II, Уоллес III) да жакшы материал бар

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

2 -кадам: Roboclaw, Motors жана Encoders сыноо

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

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

ЭСКЕРТҮҮ: Мен ЭМЕС кылганым - бул Arduino -ны кодерлерге туташуу үчүн колдонуу (GPIO төөнөгүчтөрү аркылуу) - эгер сиз андай кылсаңыз, анда Roboclaw 2 коддогучка ээ болуп, анан Arduino калган экөөнү башкара алат. Roboclawдан анын коддоочу эки маанисин (жана ылдамдыгын) сураңыз.

ЭСКЕРТҮҮ: Мен BasicMicro тиркемесин Roboclawду Ramping Up / Ramping Down үчүн алдын ала конфигурациялоо үчүн колдондум. Бул аппараттык жана электрониканы коргоо үчүн жакшы. Бул тууралуу видео менин робототехникамдын тизмесинде бар.

Мен дээрлик унутуп калдым: мен дагы мотор кабелдери менен Робоклавдын ортосуна өтүүчү кээ бир окко туташтыруучу кабелдерди сатып алдым. ЭСКЕРТҮҮ: эгер сиз муну кылсаңыз, кабелдин жалпы узундугу чындап эле узун экенин байкайсыз. Бирок мен керек болбосо кесүүнү каалабадым. Мен (кийинки кадамдар үчүн) Raspberry менен Arduino ортосундагы USB менен байланыш көйгөйлөрүнө туш болдум, балким EMI ызы -чуусунан.. Бирок мен программалык камсыздоо менен иштедим.

Эгерде бул көйгөй болуп калса, зымдарды кыскарта аласыз - металл коргоосун да сатып ала аласыз (Амазонкадан, диаметри 1 ).

Акыркы нерсе: Мен муну кыла элекмин --- Roboclaw автоматтык конфигурациясы же автоматтык жөндөөсү (коддогучтарды колдонуу менен), сол жана оң жактагы моторлор бирдей ылдамдыкта кыймылдап, робот түз баратат.

Меники 12 футтан бир аз ийри, бирок бул үчүн эч нерсе кылуунун зарылдыгын сезгеним жетишсиз.

3 -кадам: Arduino кошуу жана программалоо

Сизге баррель сайгычы жана кээ бир зымдар, ошондой эле USB кабели керек болот. Arduino туташтыргычына туура келгенин текшериңиз.

Сиз Arduino IDE жүктөп алышыңыз керек.

Бул жерде Github роботту башкарган акыркы эскиз:

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

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

Мен 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" АЛГА командасы

"0" туш келди сан

"134" контролдук суммасы

"100" 1 параметр (бул учурда ылдамдык)

Эгерде Arduino кирүүчү сапты текшере албаса, анда аны түшүрөт / этибарга албайт, жооп жок.

Эгерде Arduino X миллисекунд менен кийинки кыймыл буйругун албаса, анда STOP моторлорун Roboclawго жөнөтөт.

Arduino иштей баштайт жана USB портуна автоматтык статусту жөнөтө баштайт … эгер муну токтотууну айтпаса.

Бул жерде сиз IDEдеги "Сериялык Мониторду" колдонуу менен Roboclawду башкарууга жана моторлордун айлануусун көрүүгө даяр болушуңуз керек.

4 -кадам: Raspberry Pi кошуу жана программалоо (node.js)

Дагы, менин робототехникамдын ойноо тизмесин карап көрсөңүз, мен башынан эле, Малинаны иштетүү үчүн ар бир кадамымды басып өттүм.

Мен жалтыраткан бир нерсе, сизге 5В регулятору керек болот, же кандайдыр бир жол менен ал үчүн USB кабелин куруп, кесип/өзгөртүп же Малинаны башка жол менен иштетип коюңуз.

Бул жерде Githubда Raspberryде USB аркылуу Arduino менен баарлашуу үчүн керектүү нерселердин баары бар.

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 деңгээлинде баары көптөгөн "диск" буйруктарын жөнөтүү үчүн коддолгондыктан, мен 2 000 000 baud чейин иштей алдым. (2Mbps).

Эгерде сиз тесттик сценарийлерди иштете турган болсоңуз жана дөңгөлөктөрдүн бурулганын көрүп жатсаңыз, анда кийинки кадамга даярсыз.

5 -кадам: Акыркы кадам - Web Page Clientти программалоо / колдонуу

Github шилтемесинде Raspberry мунун баарына камтылган, бул кардар файлдары.

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

Алар Gamepad API (браузерге негизделген) аркылуу USB Gamepad менен иштешет жана сиз веб-бетте жеткиликтүү болгон ар кандай баскычтарды жана сыдырмаларды көрүшүңүз керек.

JavaScript коду джойстиктердин биринин X- жана Y огунун баалуулугун сурайт (сурамжылоо).. (сизде кандай джойстиктер/геймпад бар экендигине жараша, кодду оңдоо керек болушу мүмкүн). Ал абдан тез сурамжылоо жүргүзөт жана бул баалуулуктарды node.js серверине 8084 үнүн угат.

Джойстиктердин чийки X- жана Y огу баалуулуктары 0 менен 1дин ортосунда.

Бирок Roboclaw мотор контроллери китепканасынын функциясы Arduinoдо моторлорду айдайт, -100дөн 0гө чейин (артка) же (0дон 100гө чейин) алдыга жылат.

Ошондуктан, оо…. p5.min.js.ти кошуу максаты ушул. Бул абдан жакшы, ыңгайлуу map () функциясына ээ болот, анда сиз ага чийки маанини бересиз, бул чийки (учурдагы) диапазон жана жаңы, каалаган диапазон. Жана ал чийки баалуулукту жаңы, картадагы диапазондогу мааниге айлантат.

Дагы бир жагдай: 100 ылдамдыкта робот абдан татаал болот. Мен дайыма бир нерсеге чуркап жүрдүм. Бирок мунун жакшырышы менен, оңго же солго бурулуп жатканда дагы эле тийип турат.

Сиз кошо турган нерсе веб -беттеги учурдагы Максималдуу ылдамдыкка окшош болмок. Бул сыдырма Xs жана Ys джойстиктерин картага ала турган эң жогорку же эң чоң маанини аныктайт.

Мисал:

0 -> 1ден 0го чейин -> 100 картасын түзүп жатканыңызды айтыңыз. Джойстиктин чекитин басканыңызда, сиз 100дө экенсиз. Мүмкүн өтө тез.

Бирок, эгер сиз ошол Max Speed слайдерин бир аз артка жылдырсаңыз, азыр 0 -> 1ден 0гө -> 80 же 70ке картага түшүрүп жатасыз.

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

Жана сиз жасай турган нерсе - Xsти (солго же оңго буруу) Ysтен (алдыга же артка) өздөрүнүн жеткиликтүү ылдамдыктарына бөлүү.

Ошентип, сиз Ysти 0дон 100гө чейин, 0дон -100гө чейин тез сызыктуу кыймыл үчүн калтырсаңыз болот, бирок башкарылган айлануу кыймылы үчүн Xs max ылдамдыгын төмөндөтө аласыз. Эки дүйнөнүн тең мыктысы.

6 -кадам: Кошумча: Роботту чычкан сүйрөө жана / же тийүү окуялары менен айдоо

Эгер сиз буга чейин жеткен болсоңуз, анда браузерден баштап Javascript аркылуу Raspberry node.js серверине чейин, акырында arduinoго чейин өтүүчү программалык катмарлар Gamepad джойстикинин X- жана Y-координаттарын ". алдыга "(же" артка "ж.б.) буйруктары (жана алардын ылдамдыгынын мааниси).

Андан кийин, сиз билесиз, джойстиктердин Xs жана Ys терс 1, нөл аркылуу плюс 1ге чейин, булар нөлдөн 100гө чейин айландырылышы керек. Ооба, максимум веб -беттеги ылдамдыктын максималдуу ылдамдыгына жараша болот.

Soo… чычканды же окуяларды (смартфондогудай) колдонуу үчүн бир гана нерсе - бул окуяларды тартып алуу, Xs жана Ysди кармоо.

БИРОК ---- бул Xs жана Ys терс 1 менен 1дин ортосунда ЭМЕС. Алар 0 баштап, позитивдүү түрдө жогорулашат, анткени алар негизинен кээ бир HTML элементинин пикселдери же салыштырмалуу экран координаттары (жүктөөчү панель сыяктуу) же кенеп.

Ошентип, дагы бир жолу, P5тин Js китепканасынын "map ()" функциясы бизге керектүү нерсени кайра картага түшүрүү үчүн абдан ыңгайлуу.

Мен кодду эки башка веб -баракчаларга ээ кылдым, бири Gamepad колдонулган рабочий стол үчүн, экинчиси мобилдик үчүн, тийүү окуяларын колдонуу менен.

Ошондой эле, Xs жана Ys кайра картага түшүрүлгөндөн кийин, алар Gamepadдан Xs жана Ys сыяктуу эле коддор тизмегине ж.б.

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