Добици:
- Способност постављања и решавања проблема напредне/инверзне кинематике и планирања путање уз помоћ вештачке интелигенције
- Способност да се произведе сигурна орбита давањем ограничења зглобова робота, ограничења брзине и убрзања као контекста за упит
- Способност нумеричке и физичке провере кинематичког и трајекторског излаза које производи АИ
Довођење хватаљке на крају руке робота до одређене тачке у простору, у одређеној оријентацији; Звучи једноставно, али иза тога стоје кинематичке једначине, границе зглобова, сингуларности и планирање путање. Овде, инжењер мехатронике заједно користи тригонометрију, линеарну алгебру и теорију управљања. Вештачка интелигенција је моћна помоћ у овом процесу: може успоставити једначине кинематике унапред, предложити приступе решењима за инверзну кинематику, параметризовати путању према ограничењима брзине/убрзања. Међутим, роботика је једна од области у мехатроници са највећим физичким ризиком; Ако се угаона секвенца коју генерише АИ пошаље роботу без верификације, рука може да удари себе, околину или оператера. У овој јединици ћемо видети како да подесите и верификујемо кинематику и планирање путање помоћу вештачке интелигенције.
Предња и инверзна кинематика
Предња кинематика (ФК): Проналажење положаја и оријентације крајњег ефектора ако су познати углови зглоба. Постоји само једно решење, оно је директно.
Инверзна кинематика (ИК): Ако је позната жељена позиција крајње функције, проналажење зглобних углова који ће то обезбедити. Обично има више од једног решења (као лакат горе/доле), понекад нема решења (недостижна тачка), понекад има бесконачна решења (сингуларност).
концепт
унос
излаз
Број решења
Кинематика напред
зглобни углови
Екстремна позиција/оријентација
самац
Инверзна кинематика
Екстремна позиција/оријентација
зглобни углови
Вишеструко/ниједно/бесконачно
За планарну руку са два зглоба, инверзна кинематика се може подесити у АИ и верификовати ручно на следећи начин:
импорт нумпи као нпдеф инверсе_кинематик_2р(к, и, Л1, Л2): """ИК за раван крак са 2 зглоба. Враћа углове у радијанима (решење лактом надоле).""" р2 = к**2 + и**2 # Провера приступачности: да ли је тачка у радном простору? ако је нп.скрт(р2) > (Л1 + Л2) или нп.скрт(р2) < абс(Л1 - Л2): повећајте ВалуеЕррор("Тачка је изван доступног радног простора") цос_т2 = (р2 - Л1**2 - Л2**2) / (2 * Л1 * Л2) цосп.0_ц 1.0) # нумерицалсецурити т2 = нп.арццос(цос_т2) # лакат доле т1 = нп.арцтан2(и, к) - нп.арцтан2(Л2*нп.син(т2), Л1 + Л2*нп.цос(т2)) ретурн нп.дегреесп. Л1=Л2=1, циљ (1,1) -> очекивано т2=90 степени принт(инверсе_кинематик_2р(1.0, 1.0, 1.0, 1.0)) # ~ (0.0, 90.0)
Овде су критичне линије где АИ често прескаче: провера доступности (то је тачка у радном простору) и `нп.цлип` (спречава да унос арццос пређе ±1 због грешке заокруживања). Без ове две заштите, код ће произвести НаН или ће се срушити на неважећој тачки.
Савет: Када тражите ИК резолуцију, јасно реците АИ да „дода контролу приступачности и ограничи унос арццос на клип“. Ове две линије спречавају тихе грешке које изазивају највише главобоља на терену.
Заједничке границе, сингуларност и вишеструка решења
Сваки зглоб правог робота има опсег угла (нпр. -170° до +170°), ограничење брзине и ограничење убрзања. Чак и ако ИК даје математички валидан угао, не може се користити ако је тај угао изван физичког опсега зглоба. Поред тога, робот пада у сингуларност у неким конфигурацијама: две осе су поравнате, један степен слободе је изгубљен, а брзине зглоба покушавају да иду у бесконачност за мали покрет врха.
Зато само ХР решење није довољно; Свако решење мора проћи филтер прихватљивости:
деф солутион_гецерли_ми(ацилар_дег, лимитс_дег): """болови: [т1,т2,...], ограничења: [(мин,мак),...]""" за бол, (амин, амак) у зип(ацилар_дег, лимитс_дег): ако не (амине <= бол <= бол <= амак. лимит:"Ј ретурн Флоф {алсе, ф:" дег ({амине},{амак}) осим" ретурн Тачно, "ОК"лимитс = [(-170, 170), (-120, 120)]принт(цозум_валид_ми([0.0, 90.0], лимитс)) # (Тачно, 'ОК')принт(цозум_валид.)0)0. (Нетачно, 'Заједнички лимит је прекорачен...')
АИ може дати "математичко" решење ИК; али заједничке границе и избегавање сингуларности су специфични за ваш систем и морају се дати као контекст промпту.
Планирање орбите
Довођење робота од тачке А до тачке Б није цртање праве линије између два угла. Нагла промена брзине ствара механички удар и вибрације. Уместо тога, користе се меки профили: трапезни профил брзине (константно убрзање–константна брзина–константно успоравање) или С-крива (глађа, где је убрзање такође ограничено). Када правите да АИ генерише путању, морате дати циљ, трајање и ограничења.
импорт нумпи као нпдеф трапез_иорунге(к0, к1, в_мак, а_мак, дт=0,01): """Трапезни профил брзине за један спој. Враћа се низ положаја.""" дистанце = абс(к1 - к0) дирецтион = нп.сигн = нп.сигн = а_кма к дистанце_спеед = 0,5 * а_мак * т_спеед**2 ако је 2 * дистанце_спеед > дистанце: # троугласти профил (в_мак није доступан) т_спеед = нп.скрт(дистанце / а_мак) т_цонстант = 0,0 в_пеак = а_мак * т_цонстант = дистанце (ди т_спеед - друго): в_мак в_пеак = в_мак Т = 2 * т_аццелерате + т_цонстант т = нп.аранге(0, Т, дт) # ... израчунавање положаја за сваки т (засновано на фазама убрзања/константе/успорења) ретурн т, Т, в_пеак, дуратион, вз = трапезоидал(0._0трајецтори). а_мак=120.0)принт(ф"Укупно трајање: {дуратион:.3ф} с, вршна брзина: {вз:.1ф} дег/с")
Логичка провера овде је следећа: ако је растојање кратко, мотор никада неће достићи в_мак и профил ће се из трапезастог претворити у троугласти. Ако АИ пропусти овај услов, погрешно трајање ће се израчунати за кратке покрете. Ово можете да проверите тестирањем кода са познатом вредношћу (на пример, веома кратка удаљеност).
Слаба порука / јака промпт
СЛАБО:"Напишите путању која води руку робота од А до Б."(Без ограничења: ограничење брзине? убрзање? размак између зглобова? Слепи излаз.)ЈАКО:"Генерирајте путању од тачке до тачке у зглобном простору за 6-осног робота. Ограничење брзине за сваки зглоб је 90 степени/с, ограничење убрзања је 180 степени у табели. ^2 дег. трапезоидни профил брзине, ако је растојање кратка, излаз за сваки спој је Такође напишите функцију за проверу да не премашује границе зглоба: {{табела}}.
Верификација: Од симулације до робота
Путања коју генерише АИ верификује се овим редоследом пре одласка до робота:
- Нумерички: Да ли су зглобни угао, брзина и убрзање сваког корака у границама?
- Судар: Дуж путање, да ли се рука судара са собом или околином (визуализујте/симулирајте ако је могуће)?
- Сингуларност: Да ли орбита пролази кроз област сингуларности (да ли се Јакобијанска детерминанта приближава нули)?
- Спор хардверски тест: Управљајте роботом малом брзином (нпр. 10%) и надгледајте га визуелно.
- Постепено повећање брзине: Када се све провери, брзина се повећава корак по корак до номиналне вредности.
Опрез: Када по први пут стартујете робота са новом путањом, прекорачење брзине увек треба да буде ниско и Е-стоп треба да буде доступан. Чак и ако је АИ излаз „математички исправан“, помак, обрнута оса или заглавље кабла у физичком подешавању ће се открити само уз споро тестирање.
Мини Цасе
Инжењер аутоматизације Еце тражи од вештачке интелигенције код путање у заједничком простору за апликацију бирај и постављај. АИ производи трапезоидни профил, али када Еце тестира кретање на кратким растојањима, види да је време негативно: код није обрадио случај троугластог профила где се не може постићи в_мак. Еце то исправља тако што каже промпту "ако је раздаљина кратка, упадни у троугласти профил". Затим покреће углове зглоба које даје АИ кроз своју функцију валидације у односу на сопствену табелу ограничења и открива да је спој 5 желео +125° у једном тренутку, док је граница била +120°. Он поново планира путању и надгледа је, овог пута покреће робота брзином од 10%. У првој рунди види да се хватаљка превише приближава табели и исправља З оффсет. АИ је вратио радни нацрт за неколико минута; али три одвојене валидације (троугласти профил, ограничење зглоба, спор тест) ухватиле су три одвојена стварна проблема.
Уобичајене грешке
- Коришћење ИК решења без заједничких ограничења и контроле приступачности.
- Не сече арццос/арцсин уносе, али производи НаН у случају грешке заокруживања.
- Захтевање орбите без ограничавања брзине/убрзања и стварања механичког удара.
- Игнорисање зона сингуларности и допуштање да брзине зглобова расту до неба.
- Прескакање прелаза трапезоидно-троугластог профила на малој удаљености и израчунавање погрешног времена.
- Спровођење првог орбиталног теста при пуној брзини и без приступа Е-стоп.
Укратко
- Кинематика напред има једно решење; инверзна кинематика може произвести вишеструка, непостојећа или бесконачна решења.
- ИК решења су нужно филтрирана у смислу заједничких граница, приступачности и сингуларности.
- Планирање путање; Користи меке профиле компатибилне са ограничењима као што су трапезни или С-криви.
- На малој удаљености профил се мења од трапезастог до троугластог; ово треба да се реши у коду.
- АИ убрзава математику; Ограничења и физички контекст инсталације треба да уђу у промпт.
- Нова путања се увек покреће први пут са малим односом брзине и приступачним Е-стоп.
Задатак апликације
Изаберите модел руке са два или три зглоба (са стварним или имагинарним дужинама везе и ограничењима зглобова). Нека АИ генерише инверзну кинематичку функцију и планер путање са овим контекстом. Затим: (1) ручно верификујте ИК излаз са познатом метом (да ли враћате углове назад и враћате се на исту тачку као и ФК), (2) тестирајте да их код хвата тако што даје најмање једну недоступну тачку и једно заједничко ограничење прекорачења циља, (3) проверите да ли се на малој удаљености орбитално време испоставља разумним. Запишите колико сте проблема са валидацијом пронашли у првој верзији кода и који слој је ухватио сваки од њих.