단위 2 / 9

로봇 공학 및 모션 제어의 인공 지능

이득:

  • AI의 도움으로 순/역 운동학 및 궤도 계획 문제를 설정하고 해결하는 능력
  • 프롬프트에 대한 컨텍스트로 로봇 관절 제한, 속도 및 가속도 제약을 제공하여 안전한 궤도를 생성하는 기능
  • AI가 생성한 운동학 및 궤적 출력을 수치적, 물리적으로 검증하는 기능

로봇 팔 끝에 있는 그리퍼를 특정 방향으로 공간의 특정 지점으로 가져옵니다. 간단하게 들리지만 그 뒤에는 운동 방정식, 관절 한계, 특이점 및 궤적 계획이 있습니다. 여기서 메카트로닉스 엔지니어는 삼각법, 선형 대수학 및 제어 이론을 함께 사용합니다. 인공 지능은 이 프로세스에 강력한 도움이 됩니다. 인공 지능은 순운동학 방정식을 설정하고, 역운동학에 대한 솔루션 접근 방식을 제안하고, 속도/가속 제약 조건에 따라 궤적을 매개변수화할 수 있습니다. 그러나 로봇공학은 메카트로닉스 분야에서 물리적 위험이 가장 높은 분야 중 하나입니다. AI가 생성한 각도 시퀀스를 검증 없이 로봇에 전송하면 팔이 스스로 부딪칠 수도 있고, 환경이나 조작자에게 부딪힐 수도 있다. 이번 단원에서는 AI를 사용하여 운동학 및 궤도 계획을 설정하고 확인하는 방법을 살펴보겠습니다.

순방향 및 역운동학

순운동학(FK): 관절 각도가 알려진 경우 엔드 이펙터의 위치와 방향을 찾습니다. 해결책은 단 하나뿐입니다. 그것은 직접적입니다.

역운동학(IK): 최종 기능의 원하는 위치가 알려진 경우 이를 제공할 관절 각도를 찾습니다. 일반적으로 두 개 이상의 솔루션(예: 팔꿈치 위/아래)이 있고 솔루션이 없는 경우(도달할 수 없는 지점), 때로는 무한한 솔루션(특이점)이 있는 경우도 있습니다.

개념

입력

출력

솔루션 수

순운동학

관절 각도

극단적인 위치/방향

싱글

역기구학

극단적인 위치/방향

관절 각도

다중/없음/무한

2개의 관절 평면형 팔의 경우 역운동학을 AI에서 설정하고 다음과 같이 수동으로 확인할 수 있습니다.

import numpy as npdef inverse_kinematik_2r(x, y, L1, L2): """2-관절 평면 팔의 IK. 각도를 라디안으로 반환합니다(팔꿈치 아래 방향 솔루션).""" r2 = x**2 + y**2 # 접근성 검사: 작업 공간에 점이 있습니까? if np.sqrt(r2) > (L1 + L2) 또는 np.sqrt(r2) < abs(L1 - L2): raise ValueError("점은 접근 가능한 작업 공간 외부에 있습니다.") cos_t2 = (r2 - L1**2 - L2**2) / (2 * L1 * L2) cos_t2 = np.clip(cos_t2, -1.0, 1.0) # 수치 보안 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 Degreeprint(inverse_kinematik_2r(1.0, 1.0, 1.0, 1.0)) # ~ (0.0, 90.0)

여기서 중요한 줄은 AI가 종종 건너뛰는 부분입니다: 도달 가능성 검사(작업 공간의 지점) 및 `np.clip`(반올림 오류로 인해 arccos 입력이 ±1을 초과하는 것을 방지). 이러한 두 가지 보호 기능이 없으면 코드는 NaN을 생성하거나 잘못된 지점에서 충돌합니다.

팁: IK 해상도를 요청할 때 AI에게 "접근성 제어를 추가하고 클립에 대한 arccos 입력을 제한"하라고 명확하게 지시하세요. 이 두 줄은 현장에서 가장 골치 아픈 원인이 되는 소리 없는 오류를 방지합니다.

공동 한계, 특이성 및 다중 솔루션

실제 로봇의 각 관절에는 각도 범위(예: -170° ~ +170°), 속도 제한 및 가속도 제한이 있습니다. IK가 수학적으로 유효한 각도를 제공하더라도 해당 각도가 관절의 물리적 범위를 벗어나면 사용할 수 없습니다. 또한 로봇은 일부 구성에서 특이점에 빠지게 됩니다. 두 개의 축이 정렬되고, 1개의 자유도가 손실되며, 관절 속도가 작은 팁 움직임에 대해 무한대로 이동하려고 합니다.

이것이 바로 HR 솔루션만으로는 충분하지 않은 이유입니다. 모든 솔루션은 수용성 필터를 통과해야 합니다.

def Solution_gecerli_mi(acilar_deg,limits_deg): """pains: [t1,t2,...],limits: [(min,max),...]""" 통증의 경우,(amin,amax) in zip(acilar_deg,limits_deg): 그렇지 않은 경우(amine <= pain <= amax): return False, f"관절 제한 초과: {pain:.1f}deg ({amine},{amax}) 제외" return True, "OK"limits = [(-170, 170), (-120, 120)]print(cozum_valid_mi([0.0, 90.0], 제한)) # (True, 'OK')print(cozum_valid_mi([0.0, 150.0], 제한)) # (False, '관절 제한 초과했습니다...')

AI는 IK의 "수학적" 솔루션을 제공할 수 있습니다. 그러나 관절 한계 및 특이점 회피는 시스템에 따라 다르며 프롬프트에 대한 컨텍스트로 제공되어야 합니다.

궤도 계획

로봇을 A 지점에서 B 지점으로 이동시키는 것은 두 각도 사이에 직선을 그리는 것이 아닙니다. 급격한 속도 변화는 기계적 충격과 진동을 발생시킵니다. 대신, 부드러운 프로파일이 사용됩니다: 사다리꼴 속도 프로파일(일정한 가속도 - 일정한 속도 - 일정한 감속) 또는 S-곡선(더 부드럽지만 가속도 제한됨). AI가 궤적을 생성하게 할 때 목표, 지속 시간, 제약 조건을 제공해야 합니다.

import numpy as npdeftrapez_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 = (distance - 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}초, 최대 속도: {vz:.1f}도/초")

여기서 논리 확인은 다음과 같습니다. 거리가 짧으면 모터는 결코 v_max에 도달하지 않으며 프로파일은 사다리꼴에서 삼각형으로 변합니다. AI가 이 조건을 놓치면 짧은 움직임에 대해 잘못된 지속 시간이 계산됩니다. 알려진 값(예: 매우 짧은 거리)으로 코드를 테스트하여 이를 확인할 수 있습니다.

약한 프롬프트 / 강한 프롬프트

WEAK: "A에서 B로 로봇 팔을 이동하는 궤적을 작성합니다."(제약 없음: 속도 제한? 가속도? 관절 간격? 블라인드 출력)STRONG: "6축 로봇의 관절 공간에서 지점 간 궤적을 생성합니다. 각 관절의 속도 제한은 90deg/s이고 가속 제한은 180deg/s^2이며 각도 범위는 표에 나와 있습니다. 거리가 다음인 경우 사다리꼴 속도 프로필을 사용합니다. 짧으면 각 관절의 출력은 다음과 같습니다. 또한 관절 제한({{table}})을 초과하지 않는지 확인하는 함수를 작성합니다.

검증: 시뮬레이션에서 로봇까지

AI가 생성한 궤적은 로봇으로 가기 전에 다음 순서로 검증됩니다.

  1. 수치: 각 단계의 관절 각도, 속도 및 가속도가 한계 내에 있습니까?
  2. 충돌: 궤적을 따라 팔이 자체 또는 환경과 충돌합니까(가능한 경우 시각화/시뮬레이션)?
  3. 특이점: 궤도가 특이점 영역을 통과합니까(야코비안 행렬식이 0에 접근합니까)?
  4. 느린 하드웨어 테스트: 로봇을 낮은 속도(예: 10%)로 작동하고 시각적으로 모니터링합니다.
  5. 점진적인 속도 증가: 모든 것이 확인되면 속도가 공칭 값까지 단계적으로 증가합니다.
주의: 처음으로 새로운 궤적으로 로봇을 시작할 때 속도 오버라이드는 항상 낮아야 하며 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을 통해 처음으로 실행됩니다.

응용과제

2개 또는 3개 관절 팔 모델을 선택합니다(실제 또는 가상 링크 길이 및 관절 제한 포함). AI가 이러한 맥락을 바탕으로 역기구학 기능과 궤적 플래너를 생성하도록 하세요. 그런 다음 (1) 알려진 대상을 사용하여 IK 출력을 수동으로 확인하고(각도를 다시 놓고 FK와 동일한 지점으로 돌아가는지), (2) 접근할 수 없는 지점 하나 이상과 대상을 초과하는 관절 제한 하나를 제공하여 코드가 IK 출력을 캡처하는지 테스트하고, (3) 짧은 거리에서 궤도 시간이 합리적인 것으로 판명되는지 확인합니다. 코드의 첫 번째 버전에서 발견한 유효성 검사 문제 수와 각 문제를 발견한 레이어를 기록해 보세요.