Мазмұны:

Роботтық қол: Дженсен: 4 қадам
Роботтық қол: Дженсен: 4 қадам

Бейне: Роботтық қол: Дженсен: 4 қадам

Бейне: Роботтық қол: Дженсен: 4 қадам
Бейне: ӨРМЕКШІ ДӘУІТПЕН ШАЙҚАСАРДА СІРІҢКЕНІ ҚОЛДАНЫП, ЖАРЫП ЖІБЕРМЕКШІ …. / қысқаша кино 2024, Қазан
Anonim
Роботтық қол: Дженсен
Роботтық қол: Дженсен

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

1 -қадам: түпнұсқалық дизайн мен қолдану аясы

Түпнұсқалық дизайн мен қолдану аймағы
Түпнұсқалық дизайн мен қолдану аймағы

Мен осы жобаны үйрену үшін таңдаған CAD бағдарламалық жасақтамасы OnShape болды, мен модельдеген бірінші нәрсе HiTec HS-422 аналогты серво болды. Сервоны таңдадым, себебі ол жергілікті жерде қол жетімді болды және бұл қолайлы баға. Бұл сонымен қатар жеке бөлшектерді жобалауға көшпес бұрын OnShape үйренудің жақсы тәжірибесі болды. Жобаның алғашқы кезеңінде мен қолдың не істегісі келетіні туралы жалпы түсінікке ие болдым. Мен оның жақсы қозғалыс ауқымы мен заттарды алу үшін ұстағыш болғанын қаладым. Бұл жалпы сипаттамалар дизайн туралы хабарлады, мен оны CAD -те модельдеуді жалғастырдым. Дизайнерлік шектеулердің бірі мен 3D принтердегі кереуеттің өлшемі болды. Сондықтан сіз жоғарыдағы суретте көріп отырған негіз салыстырмалы түрде қарабайыр квадрат.

Жобаның осы кезеңінде мен қолды қалай басқарғым келетіні туралы миға шабуыл жасадым. Мен жасайтын кеңістікте шабыттанған бір робот қолы басқару үшін қуыршақ қолын қолданды. Тағы біреуі интуитивті жолды бағдарламалау әдісін қолданды, оның көмегімен пайдаланушы қолды әр түрлі позицияға ауыстырды. Содан кейін қол сол позициялар бойынша кері айналады.

Менің бастапқы жоспарым - қолдың құрылысын аяқтау, содан кейін осы екі бақылау әдісін де енгізу. Мен сондай -ақ осыдан кейін оны басқаруға арналған компьютерлік қосымшаны жасағым келді. Сіз айтып отырған боларсыз, мен жобаның осы аспектісінің ауқымын қысқарттым. Мен басқарудың алғашқы екі әдісімен жұмыс жасай бастағанда, мен интуитивті жолды бағдарламалау мен ойлағаннан да күрделі екенін тез байқадым. Дәл сол кезде мен оны басты назарға алып, бақылаудың басқа әдістерін белгісіз тоқтата тұруды шештім.

2 -қадам: бақылау

Бақылау
Бақылау

Мен таңдаған басқару әдісі келесідей жұмыс істейді: сіз қолыңызды қолыңызбен әр түрлі позицияға жылжытып, сол позицияларды «сақтайсыз». Әрбір позицияда қолдың әр буыны арасындағы бұрыш туралы ақпарат бар. Орындарды сақтауды аяқтағаннан кейін, сіз ойнату түймесін басасыз, ал қол сол орындардың әрқайсысына ретімен оралады.

Бұл бақылау әдісінде түсінуге болатын көптеген нәрселер болды. Әр серво сақталған бұрышқа оралуы үшін мен бірінші кезекте сол бұрыштарды «құтқаруым» керек болды. Ол үшін мен пайдаланатын Arduino Uno әр серваның ағымдағы бұрышын алуды қажет етті. Бұл бақылау әдісін қолданатын робот қолын жасаған менің досым Джереми Паради мені әр хоббінің сервосының ішкі потенциометрін қолдануға шақырды. Бұл потенциометр, серво бұрышын кодтау үшін өзін қолданады. Мен сынақ сервосын таңдадым, сымды ішкі потенциометрдің ортаңғы түйреуішіне дәнекерледім және қоршауда тесікті бұрғыладым, сымды сыртқа беру үшін.

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

Хобби серво қозғалтқыштарына 0 -ден 180 градусқа дейін бір бұрышқа жылжу туралы хабарлау, бұл бұрышқа сәйкес келетін PWM сигналын жіберуді қамтиды. Керісінше, сервистік мүйізді 0 -ден 180 градусқа жылжыту кезінде потенциометрдің ортаңғы түйреуішіндегі кернеуді оқу үшін Arduino -ның аналогтық кіріс түйреуішін қолдану жеке мәндер диапазонын қайтарады. Сондықтан, сақталған кіріс мәнін сервоны сол бұрышқа қайтару үшін қажетті 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+ және тірек түйреуіштеріндегі кернеуге қатысты өлшеген болуы керек. Потенциометрлерді бөлек қосу бұл салыстырмалы өлшеуді бұзды, өйткені қазір барлық түйреуіштерде кернеудің жоғарылауының орнына, бұл тек тірек түйреуішінде болды.

Менің тәлімгерім, доктор Маллох осының барлығын түзетуге көмектесті және басқа түйреуіштерге қатысты ортаңғы түйреуіштің кернеуін өлшеуді ұсынды. Бұл мен бұрыштық кірістің шуын азайтудың үшінші және соңғы әрекеті үшін жасадым. Мен әр серводы ашып, кесілген сымды қайта жалғадым және потенциометрдегі тірек істікшесінен келетін үшінші сымды қостым. Менің кодымда бұрышты енгізуді келесі өрнекке эквивалентті қылдым: Мен оны сынап көрдім, ол кернеудің көтерілуінің әсерін сәтті азайтты. Сонымен қатар, мен бұл кіріске EWMA сүзгісін қойдым. Бұл өңделген сигнал мен бастапқы сигнал жоғарыда суретте көрсетілген.

4 -қадам: заттарды жинау

Заттарды орау
Заттарды орау

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

Мен соңғы нәтижеге өте ризамын. Қозғалысты интуитивті жоспарлау жүйелі түрде жұмыс жасайды және қозғалыс бәрін ескере отырып, тегіс және дәл болады. Егер басқа біреу бұл жобаны жасағысы келсе, мен оны алдымен оның қарапайым нұсқасын жасауға шақырамын. Ойлап қарасам, әуесқойлық сервоқозғалтқыштарды қолдана отырып, осындай нәрсе жасау өте қарапайым болды, мен оны жұмыспен қамтамасыз етудегі қиындықтар соны көрсетеді. Мен қолдың жақсы жұмыс жасайтынын керемет деп санаймын. Мен әлі де компьютермен жұмыс жасай алатын, күрделі бағдарламаларды орындай алатын және дәлірек қозғала алатын робот қолын жасағым келеді, сондықтан мен келесі жобада мұны істеймін. Мен жоғары сапалы цифрлық робототехниканы қолданамын, және бұл маған осы жобада кездескен көптеген мәселелерді болдырмауға мүмкіндік береді деп үміттенемін.

CAD құжаты:

cad.onshape.com/documents/818ea878dda7ca2f…

Ұсынылған: