Печалби:
- Възможност за настройване и решаване на проблеми с кинематиката напред/обратно и планирането на траекторията с помощта на AI
- Възможност за създаване на безопасна орбита чрез даване на ограничения на ставите на робота, ограничения на скоростта и ускорението като контекст на подканата
- Възможност за числена и физическа проверка на кинематичния и траекторен изход, произведен от AI
Довеждане на грайфера в края на ръката на робот до определена точка в пространството, в определена ориентация; Звучи просто, но зад него стоят кинематични уравнения, граници на ставите, сингулярности и планиране на траекторията. Тук инженерът по мехатроника използва заедно тригонометрия, линейна алгебра и теория на контрола. Изкуственият интелект е мощна помощ в този процес: той може да установи кинематични уравнения напред, да предложи подходи за решение за обратна кинематика, да параметризира траектория според ограниченията на скоростта/ускорението. Въпреки това, роботиката е една от областите в мехатрониката с най-висок физически риск; Ако ъглова последователност, генерирана от AI, бъде изпратена до робота без проверка, ръката може да удари себе си, околната среда или оператора. В тази част ще видим как да настроите и проверите кинематиката и планирането на траекторията с AI.
Права и обратна кинематика
Предна кинематика (FK): Намиране на позицията и ориентацията на крайния изпълнителен механизъм, ако ъглите на ставите са известни. Има само едно решение, то е директно.
Обратна кинематика (IK): Ако е известна желаната позиция на крайната функция, намиране на ъглите на ставите, които ще осигурят това. Обикновено има повече от едно решение (като лакът нагоре/надолу), понякога няма решения (недостижима точка), понякога има безкрайни решения (сингулярност).
концепция
вход
изход
Брой решения
Предна кинематика
ставни ъгли
Екстремна позиция/ориентация
единичен
Обратна кинематика
Екстремна позиция/ориентация
ставни ъгли
Множество/няма/безкрайно
За равнинно рамо с две стави обратната кинематика може да бъде настроена в AI и проверена ръчно, както следва:
import 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) cos_t2 = np.clip(cos_t2, -1.0, 1.0) # numericalsecurity t2 = np.arccos(cos_t2) # лакът надолу t1 = np.arctan2(y, x) - np.arctan2(L2*np.sin(t2), L1 + L2*np.cos(t2)) return np.degrees(t1), np.degrees(t2)# Валидиране: L1=L2=1, цел (1,1) -> очаквано t2=90 градуса отпечатък(inverse_kinematik_2r(1.0, 1.0, 1.0, 1.0)) # ~ (0.0, 90.0)
Критичните редове тук са местата, където изкуственият интелект често прескача: проверка на достижимостта (е точката в работното пространство) и `np.clip` (предотвратява въвеждането на arccos да надхвърля ±1 поради грешка при закръгляване). Без тези две защити, кодът ще произведе NaN или ще се срине в невалидна точка.
Съвет: Когато питате за IK разделителна способност, ясно кажете на AI "да добави контрол на достъпността и да ограничи въвеждането на arccos в клипа". Тези две линии предотвратяват тихите грешки, които причиняват най-много главоболия в областта.
Съвместни граници, сингулярност и множество решения
Всяка връзка на истински робот има диапазон на ъгъл (напр. -170° до +170°), ограничение на скоростта и ограничение на ускорението. Дори ако IK дава математически валиден ъгъл, той не може да се използва, ако този ъгъл е извън физическия диапазон на ставата. Освен това роботът изпада в особеност в някои конфигурации: две оси са подравнени, една степен на свобода е загубена и скоростите на ставите се опитват да стигнат до безкрайност за малко движение на върха.
Ето защо самото HR решение не е достатъчно; Всяко решение трябва да премине филтър за приемливост:
def solution_gecerli_mi(acilar_deg, limits_deg): """болки: [t1,t2,...], граници: [(min,max),...]""" за болка, (amin, amax) в zip(acilar_deg, limits_deg): ако не (амин <= болка <= amax): връщане False, f"Превишено ограничение на ставите: {pain:.1f} deg ({amine},{amax}) освен" return True, "OK"limits = [(-170, 170), (-120, 120)]print(cozum_valid_mi([0.0, 90.0], limits)) # (True, 'OK')print(cozum_valid_mi([0.0, 150.0], ограничения)) # (Невярно, „Съвместното ограничение е надвишено...“)
AI може да даде "математическото" решение на IK; но съвместните ограничения и избягването на сингулярност са специфични за вашата система и трябва да бъдат дадени като контекст на подканата.
Планиране на орбита
Придвижването на робота от точка А до точка Б не означава да начертаете права линия между два ъгъла. Внезапната промяна на скоростта създава механичен удар и вибрации. Вместо това се използват меки профили: трапецовиден профил на скоростта (постоянно ускорение–постоянна скорост–постоянно забавяне) или S-крива (по-плавна, където ускорението също е ограничено). Когато карате AI да генерира траектория, трябва да посочите целта, продължителността и ограниченията.
import numpy като npdef trapez_yorunge(q0, q1, v_max, a_max, dt=0.01): """Трапецовиден профил на скоростта за единична става. Връща се масивът от позиции.""" distance = abs(q1 - q0) direction = np.sign(q1 - q0) t_speed = v_max / a_max distance_speed = 0.5 * a_max * t_speed**2 if 2 * distance_speed > distance: # триъгълен профил (v_max не може да се достигне) t_speed = np.sqrt(distance / a_max) t_constant = 0.0 v_peak = a_max * t_speed else: t_constant = (разстояние - 2 * distance_speed) / v_max v_peak = v_max T = 2 * t_accelerate + t_constant t = np.arange(0, T, dt) # ... изчисление на позицията за всяко t (базирано на фазите на ускорение/константа/забавяне) return t, T, v_peak, duration, vz = trapezoidal_trajectory(0.0, 90.0, v_max=60.0, a_max=120.0)print(f"Обща продължителност: {duration:.3f} s, пикова скорост: {vz:.1f} deg/s")
Логическата проверка тук е следната: ако разстоянието е малко, двигателят никога няма да достигне v_max и профилът ще се превърне от трапецовиден в триъгълен. Ако AI пропусне това условие, грешната продължителност ще бъде изчислена за кратки движения. Можете да проверите това, като тествате кода с известна стойност (например много късо разстояние).
Слаба подкана / Силна подкана
СЛАБО: „Напишете траектория, която отвежда ръката на робота от А до Б.“ (Няма ограничение: ограничение на скоростта? ускорение? разстояние между ставите? Сляп изход.) СИЛНО: „Генерирайте траектория от точка до точка в пространството на ставите за 6-осен робот. Ограничението на скоростта за всяка става е 90 градуса/s, ограничението на ускорението е 180 градуса/s^2, обхватът на ъглите е даден в таблицата. Използвайте трапецовиден профил на скоростта, ако разстоянието е кратко, попада в триъгълен профил. Също така напишете функция за проверка, която проверява дали не надвишава границите на ставите: {{table}}".
Проверка: От симулация до робот
Траекторията, генерирана от AI, се проверява в този ред, преди да отиде до робота:
- Числен: Ъгълът на ставата, скоростта и ускорението на всяка стъпка в границите ли са?
- Сблъсък: По време на траекторията ръката сблъсква ли се със себе си или с околната среда (визуализирайте/симулирайте, ако е възможно)?
- Сингулярност: Орбитата минава ли през област на сингулярност (детерминантата на Якоби доближава ли се до нула)?
- Бавен хардуерен тест: Работете с робота на ниска скорост (напр. 10%) и го наблюдавайте визуално.
- Постепенно увеличаване на скоростта: След като всичко е проверено, скоростта се увеличава стъпка по стъпка до номиналната стойност.
Внимание: Когато стартирате робот с нова траектория за първи път, регулирането на скоростта винаги трябва да е ниско и E-stop трябва да е наличен. Дори ако изходът на AI е „математически правилен“, отместване, обратна ос или запушване на кабела във физическата настройка ще бъдат разкрити само при бавно тестване.
Мини калъф
Инженерът по автоматизация Ece иска от AI код на траекторията в съвместното пространство за приложение за избор и поставяне. AI произвежда трапецовиден профил, но когато Ece тества движение на късо разстояние, тя вижда, че времето е отрицателно: кодът не се справи със случая на триъгълен профил, когато v_max не може да бъде достигнат. Ece коригира това, като казва на подканата „ако разстоянието е малко, паднете в триъгълния профил“. След това проверява ъглите на ставите, дадени от AI чрез неговата функция за валидиране спрямо собствената си гранична таблица и открива, че съединение 5 иска +125° в една точка, докато ограничението е +120°. Той планира отново траекторията и я наблюдава, като този път управлява робота с 10% скорост. В първия рунд той вижда, че грайферът се приближава твърде много до масата и коригира Z отместването. AI върна работеща схема за минути; но три отделни валидации (триъгълен профил, ограничение на ставите, бавен тест) уловиха три отделни реални проблема.
Често срещани грешки
- Използване на IK решението без ограничения на ставите и контрол на достъпността.
- Не се изрязват arccos/arcsin записи, но се произвежда NaN в случай на грешка при закръгляване.
- Изискване на орбита без ограничаване на скоростта/ускорението и създаване на механичен удар.
- Игнориране на зоните на сингулярност и оставяне на скоростите на ставите да скочат до небето.
- Прескачане на прехода трапецовидно-триъгълен профил на кратко разстояние и грешно изчисляване на времето.
- Провеждане на първия орбитален тест на пълна скорост и без достъп до E-stop.
В обобщение
- Предната кинематика има едно единствено решение; обратната кинематика може да произведе множество, несъществуващи или безкрайни решения.
- IK решенията са задължително филтрирани по отношение на съвместни ограничения, достъпност и уникалност.
- Планиране на траекторията; Той използва меки профили, съвместими с граници, като трапец или S-образна крива.
- На малко разстояние профилът се променя от трапецовиден в триъгълен; това трябва да се обработи в кода.
- AI ускорява математиката; Ограниченията и контекстът на физическа инсталация трябва да влязат в подканата.
- Новата траектория винаги се изпълнява за първи път с ниско съотношение на скоростта и достъпно E-stop.
Задача за приложение
Изберете модел на ръка с две или три стави (с реални или въображаеми дължини на връзките и ограничения на ставите). Накарайте AI да генерира обратна кинематична функция и плановик на траектория с този контекст. След това: (1) проверете ръчно изхода на IK с известна цел (връщате ли ъглите обратно и се връщате в същата точка като FK), (2) тествайте дали кодът ги улавя, като даде поне една недостъпна точка и едно съвместно ограничение, превишаващо целта, (3) проверете дали на кратко разстояние орбиталното време се оказва разумно. Запишете колко проблеми с валидирането сте открили в първата версия на кода и кой слой е хванал всеки от тях.