Мазмуну:

Роботтук кол: Дженсен: 4 кадам
Роботтук кол: Дженсен: 4 кадам

Video: Роботтук кол: Дженсен: 4 кадам

Video: Роботтук кол: Дженсен: 4 кадам
Video: Prolonged Field Care Podcast 139: Return to Duty 2024, Октябрь
Anonim
Роботтук кол: Дженсен
Роботтук кол: Дженсен

Дженсен - индуитивдүү кыймылды пландаштырууга багытталган Arduino платформасында курулган робот колу, PhD доктору Чарльз Б. Маллохтун жетекчилиги астында 1 кредиттик көз карандысыз долбоор катары жасалган. Бул колду кол менен жылдыруу менен программаланган бир катар кыймылдарды кайталай алат. Мен аны UMass Amherst M5 жасоо мейкиндигинде курулган башка роботтук куралдарды көрүп, аны курууга шыктандым. Мындан тышкары, мен CAD программасын колдонууну үйрөнгүм келди жана Arduino өнүккөн долбоорун түзгүм келди. Мен муну бардык нерселерди кылууга мүмкүнчүлүк катары көрдүм.

1 -кадам: Оригиналдуу дизайн жана колдонуу чөйрөсү

Оригиналдуу дизайн жана колдонуу чөйрөсү
Оригиналдуу дизайн жана колдонуу чөйрөсү

Мен бул долбоор үчүн үйрөнүү үчүн тандап алган CAD программасы OnShape болчу жана мен моделдеген биринчи нерсе HiTec HS-422 аналогдук сервосу болду. Мен сервону тандагам, анткени ал мага жергиликтүү деңгээлде жеткиликтүү болгон жана бул баага ылайыктуу болгон. Бул ошондой эле өз бөлүктөрүмдү иштеп чыгууга өтүүдөн мурун OnShapeти үйрөнүү үчүн жакшы практика катары кызмат кылган. Долбоордун ушул башталышында мен колумдун эмнеге жөндөмдүү болушун каалаарымды жалпы түшүнүккө ээ болдум. Мен анын татыктуу кыймыл диапазонуна жана нерселерди жыйноо үчүн кармагычка ээ болушун кааладым. Бул жалпы мүнөздөмөлөр дизайнга маалымат берди, мен аны CADда моделдөөнү уланттым. Дагы бир дизайн чектөөсү менин 3D принтеримдеги керебеттин өлчөмү болчу. Мына ошондуктан жогорудагы сүрөттө сиз көргөн база салыштырмалуу примитивдүү чарчы.

Долбоордун бул стадиясында мен кантип колумду башкаргым келгенине мээ чабуулу жүргүзүп жаттым. Мен жараткан мейкиндикте шыктанган бир робот колу башкаруу үчүн куурчак колун колдонгон. Дагы бирөө интуитивдүү жолду программалоо ыкмасын колдонгон, анда колду колдонуучу ар кандай кызматтарга жылдырган. Кол бул позициялар аркылуу артка кайтмак.

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

2 -кадам: көзөмөлдөө

Control
Control

Мен тандаган башкаруу ыкмасы мындай иштейт: сиз колду колуңуз менен ар кандай кызматтарга жылдырып, ошол позицияларды "сактап" жатасыз. Ар бир позицияда колдун ар бир звеносунун ортосундагы бурч жөнүндө маалымат бар. Позицияны сактап бүткөндөн кийин, ойнотуу баскычын басыңыз жана кол бул позициялардын ар бирине ырааттуулук менен кайтат.

Бул башкаруу ыкмасында түшүнүү үчүн көп нерселер болгон. Ар бир серво сакталган бурчка кайтып келиши үчүн, мен биринчи кезекте ошол бурчтарды кандайдыр бир жол менен "сактап калууга" туура келди. Бул үчүн мен колдонгон Arduino Uno ар бир сервонун учурдагы бурчун ала алышы керек болчу. Бул башкаруу ыкмасын колдонгон робот колун жасаган менин досум Джереми Паради мага ар бир хоббинин сервосунун ички потенциометрин колдонууну түшүндүрдү. Бул потенциометр, бул серво өзүнүн бурчун коддоо үчүн колдонот. Мен тесттик сервону тандадым, зымды ички потенциометрдин ортоңку пинине туташтырдым жана зымды сырттагы тамактандыруу үчүн корпуста тешип койдум.

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

Хобби серво моторлоруна 0 менен 180 градустун ортосунда кандайдыр бир бурчка өтүү керектигин айтуу, бул бурчка туура келген PWM сигналын жөнөтүүнү камтыйт. Тескерисинче, Arduino аналогдук киргизүү пинин колдонуп, потенциометрдин ортоңку пининдеги чыңалууну окуу үчүн, servo мүйүзүн 0 жана 180 градуска жылдыруу өзүнчө маанилер диапазонун кайтарат. Ошондуктан, сакталган киргизүү маанисин сервону ошол эле бурчка кайтаруу үчүн керектүү PWM чыгаруу маанисине которуу үчүн кээ бир математика керек болгон.

Менин биринчи оюм ар бир сакталган бурч үчүн тиешелүү PWMди табуу үчүн жөнөкөй диапазондогу картаны колдонуу болду. Бул иштеди, бирок өтө так болгон жок. Менин долбоорумда, 180 градус бурч диапазонуна туура келген PWM жогорку убакыт баалуулуктарынын диапазону аналогдук кирүү маанилеринин диапазонуна караганда алда канча чоңураак болгон. Андан тышкары, бул диапазондордун экөө тең үзгүлтүксүз болгон эмес жана бүтүн сандан гана турган. Ошентип, мен сакталган кирүү маанисин чыгаруу маанисине салыштырганда, тактык жоголду. Дал ушул учурда менин серволорумду керектүү жерге жеткирүү үчүн мага контролдук цикл керек экенин түшүндүм.

Мен PID башкаруу циклинин кодун жаздым, анда киргизүү орто пин чыңалуусу, ал эми чыгышы PWM чыгышы болгон, бирок тез эле мага интегралдык башкарууга муктаж экенимди ачтым. Бул сценарийде чыгаруу жана киргизүү экөө тең бурчтарды чагылдырат, ошондуктан пропорционалдуу жана туунду башкарууну кошуу аны ашып кетүүгө же жагымсыз жүрүм -турумга алып келген. Интегралдык башкарууну тууралагандан кийин дагы эки көйгөй бар болчу. Биринчиден, эгерде учурдагы жана каалаган бурчтун ортосундагы алгачкы ката чоң болсо, серво өтө тез ылдамдайт. Мен интегралдык контролдун туруктуусун азайта алмакмын, бирок бул жалпы кыймылды өтө жай кылган. Экинчиден, кыймыл дүрбөлөңгө түштү. Бул аналогдук кирүү сигналындагы ызы -чуунун натыйжасы болгон. Башкаруу цикли бул сигналды үзгүлтүксүз окуп турду, андыктан чыңалуунун көтөрүлүшү джиттер кыймылын пайда кылды. (Бул учурда мен дагы бир тесттик серводон жогоруда сүрөттөлгөн жамаатка өттүм. Мен дагы программалык камсыздоонун ар бир сервосу үчүн башкаруу циклинин объектисин жасадым.)

Мен чыгууга экспоненциалдуу салмактуу орточо (EWMA) чыпканы коюу менен өтө тез ылдамдануу маселесин чечтим. Чыгууну орточо эсепке алуу менен, кыймылдагы чоң чукулдар азайтылды (ызы -чуудан чыккан чыракты кошкондо). Бирок, кирүүчү сигналдагы ызы -чуу дагы эле көйгөй болчу, ошондуктан менин долбоорумдун кийинки этабы муну чечүүгө аракет кылды.

3 -кадам: Ызы -чуу

Ызы -чуу
Ызы -чуу

Жогорудагы сүрөт

Кызылда: баштапкы киргизүү сигналы

Көк түстө: иштетилгенден кийин киргизүү сигналы

Кирүүчү сигналдагы ызы -чууну азайтуудагы биринчи кадам анын себебин түшүнүү болгон. Осциллографта сигналды текшерүү чыңалуунун 50 Гц ылдамдыкта болуп жатканын көрсөттү. Мен PWM сигналы 50 Гц ылдамдыгында экенин билдим, ошондуктан чыңалуунун жогорулашынын буга тиешеси бар деп ойлодум. Мен серволордун кыймылы кандайдыр бир жол менен потенциометрлердин V+ пининде чыңалууну пайда кылды деп гипотезаладым, бул болсо өз кезегинде орто пиндеги окууну бузат.

Бул жерде мен ызы -чууну азайтуу боюнча биринчи аракетимди жасадым. Мен ар бир сервону кайра ачтым жана потенциометрдеги V+ пинден келген зымды коштум. Аларды окуу үчүн мага Arduino Uno караганда көбүрөөк аналогдук кириштер керек болчу, ошондуктан мен дагы ушул маалда Arduino Megaга көчтүм. Менин кодумда, бурчтук киргизүүнү орто пиндеги чыңалуунун аналогдук окуусунан орто пиндеги чыңалуунун V+ пиндеги чыңалууга болгон катышына өзгөрттүм. Менин үмүтүм, эгер казыктарда чыңалуу болсо, ал катышта жокко чыгарылат.

Мен баарын ордуна коюп, сынап көрдүм, бирок чукулдар дагы эле болуп жатты. Мен бул учурда эмне кылышым керек эле, менин жеримди изилдөө. Анын ордуна, менин кийинки идеям потенциометрлерди толугу менен өзүнчө электр булагына кошуу болду. Мен V+ зымдарын Arduinoдогу аналогдук кирүүлөрдөн ажыратып, аларды өзүнчө электр булагына туташтырдым. Мен буга чейин казыктарды иликтеп көрчүмүн, ошондуктан аларды кандай чыңалууга берерин билчүмүн. Мен ошондой эле ар бир серводо башкаруу тактасы менен V+ пиндин ортосундагы байланышты үздүм. Мен баарын кайра чогулттум, бурчтук киргизүү кодун мурунку абалына кайтарып, анан сынап көрдүм. Күтүлгөндөй эле, кирүү пининде чыңалуунун секириктери болгон жок. Бирок, жаңы көйгөй пайда болду - потенциометрлерди өзүнчө электр булагына коюу сервопроводдордун ички башкаруу циклдарын толугу менен бузуп салды. V+ төөнөгүчтөрү мурдагыдай эле чыңалууга ээ болсо да, серволордун кыймылы туруксуз жана туруксуз болгон.

Мен эмне үчүн мындай болуп жатканын түшүнгөн жокмун, акыры серверлердеги жер байланышымды текшердим. Жердин орточо чыңалуусу болжол менен 0,3 Вольтко чейин түштү, ал эми серволор ток тартканда ал дагы жогору көтөрүлдү. Мага ошол казыктарды мындан ары "жер" деп эсептөө мүмкүн эместиги түшүнүктүү болду жана аны "шилтеме" төөнөгүчтөр катары сүрөттөө мүмкүн. Серводогу башкаруу такталары потенциометрдин ортоңку пининдеги V+ жана таяныч казыктардагы чыңалууга салыштырмалуу чыңалууну өлчөгөн болушу керек. Потенциометрлерди өзүнчө иштетүү бул салыштырмалуу өлчөөнү бузуп салды, анткени азыр бардык казыктарда чыңалуу өсүшүнүн ордуна, бул шилтеме пинде гана болду.

Менин устатым, доктор Маллох, мунун бардыгын оңдоого жардам берди жана башка казыктарга салыштырмалуу орто пиндеги чыңалууну өлчөөнү сунуштады. Бул бурчтуктун кирүү ызы -чуусун азайтуу боюнча үчүнчү жана акыркы аракетим үчүн кылдым. Мен ар бир сервону ачтым, үзүлгөн зымды кайра туташтырдым жана потенциометрдеги таяныч пинден келген үчүнчү зымды коштум. Менин кодумда, бурч киргизүүнү төмөнкү сөзгө барабар кылдым: (орто пин - таяныч пин) / (V+пин - шилтеме пин). Мен аны сынап көрдүм, ал чыңалуунун кескин өзгөрүшүн ийгиликтүү азайтты. Мындан тышкары, мен бул киришке EWMA чыпкасын койдум. Бул иштетилген сигнал жана оригиналдуу сигнал жогоруда сүрөттөлгөн.

4 -кадам: нерселерди ороп коюу

Things Up
Things Up

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

Мен акыркы жыйынтыкка абдан кубанычтамын. Интуитивдик кыймыл пландаштыруу ырааттуу иштейт жана кыймыл бардыгын эске алуу менен жылмакай жана так болот. Эгерде кимдир бирөө бул долбоорду жасоону кааласа, мен аны эң жөнөкөй версиясын жасоого үндөйт элем. Артка кылчайып карасак, хоббинин серво кыймылдаткычтарын колдонуу менен ушундай нерсе жасоо өтө эле аңкоо болгон, жана аны иштетүүдөгү кыйынчылыктар муну көрсөтүп турат. Колдун жакшы иштешин керемет деп эсептейм. Мен дагы эле компьютер менен иштей турган, татаалыраак программаларды иштете ала турган жана тактык менен кыймылдай ала турган робот колун жасагым келет, андыктан кийинки долбоорумда мен муну жасайм. Мен жогорку сапаттагы санариптик робот техникасынын серволорун колдоном жана бул долбоордо туш болгон көптөгөн көйгөйлөрдөн качууга мүмкүндүк берет деп үмүттөнөм.

CAD документи:

cad.onshape.com/documents/818ea878dda7ca2f…

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