Единица 2 / 9

Вештачка интелигенција во роботика и контрола на движење

Добивки:

  • Способност за поставување и решавање на проблеми со кинематика напред/инверзна и планирање на траекторијата со помош на ВИ
  • Способност да се произведе безбедна орбита со давање ограничувања на зглобот на роботот, ограничувања за брзина и забрзување како контекст на барањето
  • Способност за нумеричка и физичка проверка на кинематскиот и траекторскиот излез произведен од вештачката интелигенција

Доведување на држачот на крајот од раката на роботот до одредена точка во просторот, во одредена ориентација; Звучи едноставно, но зад него стојат кинематички равенки, граници на зглобовите, сингуларитети и планирање на траекторијата. Овде, инженерот за мехатроника користи тригонометрија, линеарна алгебра и теорија на контрола заедно. Вештачката интелигенција е моќна помош во овој процес: може да воспостави напредни кинематички равенки, да предложи пристапи за решенија за инверзна кинематика, да параметриизира траекторија според ограничувањата за брзина/забрзување. Сепак, роботиката е една од областите во мехатрониката со најголем физички ризик; Ако секвенцата на аголот генерирана од вештачката интелигенција е испратена до роботот без потврда, раката може да се удри себеси, околината или операторот. Во оваа единица ќе видиме како да поставиме и потврдиме кинематика и планирање на траекторијата со вештачка интелигенција.

Напредна и инверзна кинематика

Напредна кинематика (FK): Наоѓање на положбата и ориентацијата на крајниот ефектор ако се познати аглите на спојниците. Има само едно решение, тоа е директно.

Инверзна кинематика (ИК): Ако е позната саканата положба на крајната функција, наоѓање на аглите на спојниците што ќе го обезбедат тоа. Обично има повеќе од едно решение (како лактот горе/долу), понекогаш нема решенија (недостижна точка), понекогаш има бесконечни решенија (единечност).

концепт

внесување

излез

Број на решенија

Напредна кинематика

агли на зглобовите

Екстремна положба/ориентација

сингл

Инверзна кинематика

Екстремна положба/ориентација

агли на зглобовите

Повеќекратно/никакво/бесконечно

За рамнина со два зглобови, инверзната кинематика може да се постави во вештачката интелигенција и да се потврди рачно на следниов начин:

увези numpy како npdef inverse_kinematik_2r(x, y, L1, L2): """IK за рамнина со 2 зглобови. Ги враќа аглите во радијани (решение со лактот надолу).""" r2 = x**2 + y**2 # Проверка на пристапноста: е точката во работниот простор? ако np.sqrt(r2) > (L1 + L2) или np.sqrt(r2) < abs(L1 - L2): подигнете ValueError(„Точката е надвор од достапниот работен простор“) cos_t2 = (r2 - L1**2 - L2**2) / (2 * L1 * L2, -npt.) cos. 1.0) # нумеричка безбедност t2 = np.arccos(cos_t2) # лактот надолу t1 = np.arctan2(y, x) - np.arctan2(L2*np.sin(t2), L1 + L2*np.cos(t2)) враќање np.степени:2pt. L1=L2=1, цел (1,1) -> очекувано t2=90 степени принт(инверзно_кинематик_2r(1.0, 1.0, 1.0, 1.0)) # ~ (0.0, 90.0)

Критичните линии овде се местата каде што вештачката интелигенција често прескокнува: проверка на достапноста (е точката во работниот простор) и „np.clip“ (спречува влезот на arccos да оди подалеку од ±1 поради грешка во заокружувањето). Без овие две заштити, кодот ќе произведе NaN или ќе падне на неважечка точка.

Совет: кога барате резолуција IK, јасно кажете му на AI да „додаде контрола за пристапност и да го ограничи влезот на arccos на клипот“. Овие две линии ги спречуваат тивките грешки кои предизвикуваат најмногу главоболки на теренот.

Заеднички граници, сингуларност и повеќекратни решенија

Секој спој на вистински робот има опсег на агол (на пример, -170° до +170°), ограничување на брзината и ограничување на забрзувањето. Дури и ако ИК даде математички валиден агол, не може да се користи ако тој агол е надвор од физичкиот опсег на зглобот. Дополнително, роботот паѓа во сингуларност во некои конфигурации: две оски се порамнети, еден степен на слобода е изгубен, а заедничките брзини се обидуваат да одат до бесконечност за мало движење на врвот.

Затоа само решението за човечки ресурси не е доволно; Секое решение мора да помине филтер за прифатливост:

def solution_gecerli_mi(acilar_deg, limits_deg): """болки: [t1,t2,...], ограничувања: [(min,max),...]""" за болка, (amin, amax) во zip(acilar_deg, limits_deg): ако не (амин <= болка <= факс. ({amine},{amax}) освен" врати Точно, "OK"Limits = [(-170, 170), (-120, 120)]print(cozum_valid_mi([0.0, 90.0], ограничувања)) # (True, 'OK')print.) (cozum_valid_mi). (Неточно, 'Заедничката граница е надмината...')

АИ може да го даде „математичкото“ решение на ИК; но ограничувањата на зглобовите и избегнувањето на сингуларноста се специфични за вашиот систем и мора да бидат дадени како контекст на промптот.

Планирање на орбитата

Донесувањето на роботот од точката А до точката Б не е за цртање права линија помеѓу два агли. Ненадејната промена на брзината создава механички удари и вибрации. Наместо тоа, се користат меки профили: трапезоиден профил на брзина (константно забрзување–константна брзина–константно забавување) или S-крива (помазно, каде што забрзувањето е исто така ограничено). Кога правите вештачката интелигенција да генерира траекторија, мора да ја дадете целта, времетраењето и ограничувањата.

увезете numpy како npdef trapez_yorunge(q0, q1, v_max, a_max, dt=0.01): """Трапезоиден профил на брзина за еден спој. Положната низа е вратена.""" растојание = abs(q1 - q0) насока = np.sign(qs1 - qspeed a q0 = t 0,5 * a_max * t_speed**2 if 2 * distance_speed > растојание: # триаголен профил (v_max не е достапно) t_speed = np.sqrt(растојание / a_max) t_constant = 0,0 v_peak = a_max * t_speed stant = 2 -dance v_max v_peak = v_max T = 2 * t_accelerate + t_constant t = np.arange(0, T, dt) # ... пресметка на позицијата за секој t (врз основа на фазите на забрзување/константа/забавување) врати t, T, v_peak, времетраење, vzdal_0,900. v_max=60.0, a_max=120.0)print(f"Вкупно времетраење: {траење:.3f} s, максимална брзина: {vz:.1f} deg/s")

Логичната проверка овде е следна: ако растојанието е кратко, моторот никогаш нема да достигне v_max и профилот ќе се претвори од трапезоиден во триаголен. Ако вештачката интелигенција ја пропушти оваа состојба, ќе се пресмета погрешно времетраење за кратки движења. Можете да го потврдите ова со тестирање на кодот со позната вредност (на пример, многу кратко растојание).

Слаба навестување / Силен навестување

СЛАБ: „Напишете траекторија што ја носи раката на роботот од А до Б.“ (Без ограничување: ограничување на брзината? забрзување? растојание на зглобовите? Слеп излез.) СИЛНО: „Генерирајте траекторија од точка до точка во зглобниот простор за робот со 6 оски. Ограничувањето на брзината за секој зглоб е 90 степени/с, ограничувањето на забрзувањето од 2 во табела е ^ Трапезоиден профил на брзина, ако растојанието е кратко, падне во триаголен профил.

Верификација: Од симулација до робот

Траекторијата генерирана од вештачката интелигенција се проверува по овој редослед пред да отиде кај роботот:

  1. Нумерички: Дали спојниот агол, брзината и забрзувањето на секој чекор се во граници?
  2. Судир: долж траекторијата, дали раката се судира со себе или со околината (визуелизирајте/симулирајте ако е можно)?
  3. Сингуларност: Дали орбитата минува низ регион на сингуларитет (дали јакобијанската детерминанта се приближува до нула)?
  4. Бавен хардверски тест: Работете со роботот со мала брзина (на пр. 10%) и надгледувајте го визуелно.
  5. Постепено зголемување на брзината: Откако сè ќе се потврди, брзината се зголемува чекор по чекор до номиналната вредност.
Внимание: При стартување на робот со нова траекторија за прв пат, прескокнувањето на брзината секогаш треба да биде мало и E-стоп треба да биде достапно. Дури и ако излезот на вештачката интелигенција е „математички точен“, поместувањето, обратната оска или заглавувањето на кабелот во физичкото поставување ќе се открие само со бавно тестирање.

Мини случај

Инженерот за автоматизација Еце бара од вештачката интелигенција код за траекторија во заеднички простор за апликација за избор и место. Вештачката интелигенција произведува трапезоиден профил, но кога Еце тестира движење на кратко растојание, таа гледа дека времето е негативно: кодот не се справува со триаголниот профил на случајот каде што не може да се достигне v_max. Еце го поправа ова со кажување на промптот „ако растојанието е кратко, паднете во триаголниот профил“. Потоа ги извршува аглите на спојниците дадени од ВИ преку неговата функција за валидација наспроти сопствената гранична табела и открива дека зглобот 5 сакал +125° во една точка, додека границата била +120°. Тој повторно ја планира траекторијата и ја надгледува, овојпат трчајќи го роботот со брзина од 10%. Во првиот круг, тој гледа дека гриперот премногу се доближува до табелата и го коригира офсетот Z. ВИ врати работен преглед за неколку минути; но три одделни валидации (триаголен профил, граница на зглобот, бавен тест) фатија три одделни реални проблеми.

Вообичаени грешки

  • Користење на IK решението без заеднички ограничувања и контрола на пристапност.
  • Не се отсекуваат записите на arccos/arcsin, туку се произведува NaN во случај на грешка во заокружувањето.
  • Барање на орбитата без ограничување на брзината/забрзувањето и создавање механички удар.
  • Игнорирање на зоните на сингуларност и дозволување на брзините на зглобовите до небо.
  • Прескокнување на транзицијата на трапезоидно-триаголен профил на кратко растојание и пресметување на погрешно време.
  • Спроведување на првиот орбитален тест со полна брзина и без E-stop пристап.

Сумирано

  • Напредната кинематика има едно решение; инверзната кинематика може да произведе повеќекратни, непостоечки или бесконечни решенија.
  • Решенијата на ИК се нужно филтрирани во однос на границите на зглобовите, пристапноста и сингуларноста.
  • Планирање на траекторија; Користи меки, гранични компатибилни профили како трапезоидна или S-крива.
  • На кратко растојание профилот се менува од трапезоиден во триаголен; ова треба да се постапува во кодот.
  • ВИ ја забрзува математиката; Ограничувањата и контекстот за физичка инсталација треба да влезат во промптот.
  • Новата траекторија секогаш се вози за прв пат со низок сооднос на брзина и пристапно E-стоп.

Задача за апликација

Изберете модел на рака со две или три зглобови (со реални или имагинарни должини на врски и граници на зглобовите). Нека вештачката интелигенција генерира инверзна кинематичка функција и планер на траекторија со овој контекст. Потоа: (1) рачно потврдете го излезот IK со позната цел (дали ги враќате аглите назад и се враќате во истата точка како FK), (2) тестирајте дали кодот ги доловува со давање најмалку една недостапна точка и една заедничка граница што ја надминува целта, (3) проверете дали на кратко растојание орбиталното време се покажува разумно. Запишете колку проблеми со валидацијата најдовте во првата верзија на кодот и кој слој го фати секој од нив.