RAG... SAM2... 많은 AI를 서비스화 하기 위한 기업의 도전은 계속된다. 하지만 기업들은 과연 돈을 어떻게 벌고 있을까?
25th July 2024 나스닥은 급락했다. 왤까?
IT 기업들.. 일론 머스크가 이끌고 있는 테슬라, AI 관련 희대의 업체 Google, MS, NVIDIA들의 매출이 생각보다 나오지 않았다.
AI 기술은 모든 사람들에게 WOW 효과를 가져왔지만 수익은 그닥..
"아무튼 나는 지금 나오고 있는 AI Research 및 기술을 로봇에 대입해보고자 한다."
그래서 시작한다. 로봇을 만들기 위한 공부. 내가 공부 할 책은 Introduction to ROBOTICS MECHANICS and CONTROL by JOHN CRAIG.
기본이 탄탄해야 응용이 가능하다. 그래서 난 8주간 아래의 내용을 학습하고자 한다.
- Forward Kinematrics of Manipulators
- Inverse Kinematrics of Manipulators
- Velocities, Static Force, Singularities
- Trajectory Genenration
- Manipulator Design, Sensor, and Programming
여기서 Manipulator가 많이 언급된다. 이는 로봇 그 자체다. 손 모양으로 무언가를 하고 있는 로봇 그 자체를 Manipulator라고 한다.
Forward Kinematics의 기본 개념
Forward Kinematics of a manipulator란 로봇 매니퓰레이터(Manipulator)의 각 관절(Joint)들의 위치나 각도를 기반으로 매니퓰레이터 끝단(End-Effector)의 위치와 자세(Position and Orientation)를 계산하는 과정을 말합니다. 로봇 공학에서 기본적이면서도 매우 중요한 개념입니다.
- 매니퓰레이터: 매니퓰레이터는 여러 개의 링크(Link)와 이 링크들을 연결하는 조인트(Joint)로 이루어진 로봇의 팔과 같은 구조입니다.
- 정방향 운동학 (Forward Kinematics): 주어진 각 조인트 변수(각도나 거리)를 바탕으로 매니퓰레이터의 끝단(End-Effector)의 위치와 자세를 구하는 과정입니다.
수학적 설명
Forward Kinematics는 수학적으로 다음과 같은 과정을 포함합니다:
- 각 조인트의 변수를 사용하여 각 링크의 위치를 계산:
- 조인트 변수를 사용해 각각의 링크가 공간에서 어떻게 위치하는지를 계산합니다. 이는 주로 회전 행렬과 변환 행렬을 사용하여 나타냅니다.
- 변환 행렬을 사용해 End-Effector의 위치와 자세를 계산:
- 각 조인트에서 다음 조인트로의 변환을 나타내는 변환 행렬(Transformation Matrix)을 계산합니다.
- 이 변환 행렬들을 곱해 최종적으로 End-Effector의 위치와 자세를 얻습니다.
실생활 적용
Forward Kinematics는 로봇 팔이 특정 위치로 이동하거나 작업을 수행할 때 그 위치를 정확히 계산하는 데 사용됩니다. 예를 들어, 산업용 로봇이 물건을 특정 위치로 옮길 때, 각 조인트의 각도를 조절해 End-Effector가 정확한 위치에 도달하도록 해야 합니다. 이 과정에서 Forward Kinematics가 사용됩니다.
Additional Information
* Revolute Joint란?
일반적으로 Revolute Joint는 회전 운동을 하는 조인트를 가리키며, 이 조인트는 두 링크를 연결하고, 한 링크가 다른 링크에 대해 특정 축을 중심으로 회전할 수 있도록 합니다.
* Prismatic Joint란?
두 링크가 서로에 대해 일정한 방향으로 미끄러지며 움직일 수 있도록 합니다. Prismatic Joint는 흔히 슬라이더 조인트(Slider Joint)라고도 불립니다.
내가 여기서 풀어야할 문제는?
Manipulator의 위치를 Joint Space에서 Cartesian Space로 변환하는 것이다.
다시 말해, 각 Joint의 Movement로 End-Effector의 위치와 자세를 Set-up 하는것이라고 보면됨.
Inverse Kinematics
Inverse Kinematics의 중요성
Inverse Kinematics는 로봇이 특정 작업을 수행하기 위해 필수적인 문제입니다. 예를 들어, 로봇 팔이 물체를 특정 위치에서 잡으려면, 그 위치로 팔이 이동하도록 각 관절(조인트)의 각도를 설정해야 합니다. 이때 필요한 조인트 변수를 계산하는 것이 Inverse Kinematics의 역할입니다.
Inverse Kinematics의 특징
- 복잡성:
- Inverse Kinematics는 일반적으로 Forward Kinematics보다 계산이 더 복잡합니다. 특히, 다자유도(DoF)를 가진 매니퓰레이터의 경우, 목표 위치를 달성할 수 있는 조인트 변수가 여러 개 존재할 수 있으며, 그 중에서 최적의 값을 찾는 것이 어렵습니다.
- 경우에 따라서는 해가 존재하지 않거나, 여러 개의 해가 존재할 수 있습니다.
- 비선형성:
- Inverse Kinematics 문제는 종종 비선형 방정식으로 나타나며, 이러한 방정식을 푸는 과정에서 수치적 방법(예: 뉴턴-랩슨 방법)이나 최적화 알고리즘을 사용해야 할 때도 있습니다.
- 다중 해:
- 로봇의 구조에 따라 하나의 목표 위치에 대해 여러 가지 조인트 설정이 있을 수 있습니다. 이를 **다중 해(모든 가능한 솔루션)**라고 하며, 어떤 해를 선택할지는 작업의 특성에 따라 다릅니다.
속도 (Velocities)
정의:
- 매니퓰레이터의 속도는 각 조인트의 움직임 속도와 End-Effector의 속도를 의미합니다. 조인트 공간에서의 속도는 각 조인트의 각속도 또는 선속도로 나타내며, Cartesian 공간에서의 속도는 End-Effector의 선속도와 각속도로 나타납니다.
중요성:
- 속도는 로봇의 작업 속도와 반응성을 결정합니다. 예를 들어, 물체를 빠르게 집어 옮겨야 하는 작업에서는 높은 속도를 요구합니다.
- 각 조인트의 속도와 End-Effector의 속도는 Jacobian 행렬을 통해 상호 연관됩니다. 이 Jacobian 행렬은 조인트 속도를 Cartesian 속도로 변환하는 데 사용됩니다.
정적 힘 (Static Forces)
정의:
- 정적 힘은 매니퓰레이터가 정지 상태에서 지탱해야 하는 힘을 의미합니다. End-Effector에 작용하는 외부 힘(예: 중력, 작업에 필요한 힘)을 각 조인트에 분배하여 지탱하는 과정입니다.
중요성:
- 정적 힘 분석은 로봇이 주어진 작업을 수행할 수 있는지, 필요한 토크와 힘을 각 조인트가 감당할 수 있는지 평가하는 데 중요합니다.
- 정적 힘 분석은 또한 로봇의 구조적 안전성을 평가하는 데 사용됩니다.
특이점 (Singularities)
정의:
- **특이점(Singularity)**은 매니퓰레이터의 Jacobian 행렬이 비가역적(non-invertible)인 상황을 의미합니다. 이는 일반적으로 Jacobian 행렬의 행렬식이 0이 되는 경우 발생하며, 이때 매니퓰레이터는 특정 방향으로의 자유도를 잃거나 무한한 조인트 속도를 요구하게 됩니다.
중요성:
- 특이점에서는 로봇이 특정 방향으로 움직일 수 없거나, 작은 힘이나 속도 변화에도 큰 반응을 보이게 됩니다. 이는 로봇 제어에 문제가 발생할 수 있음을 의미합니다.
- 특이점 근처에서는 로봇의 속도와 힘이 비정상적으로 변할 수 있어, 정밀한 작업이 어려워지거나 시스템 안정성이 저하될 수 있습니다.
예시:
- 직렬 매니퓰레이터에서 팔이 직선으로 뻗었을 때, 모든 조인트가 동일 평면에 위치하는 경우 특이점이 발생할 수 있습니다. 이 경우 로봇은 팔을 특정 방향으로 움직이는 것이 불가능해집니다.
Dynamics
Dynamics는 로봇 공학에서 로봇 매니퓰레이터의 운동과 힘을 다루는 분야로, 시간에 따른 움직임을 설명하는 데 중요한 역할을 합니다. Dynamics는 로봇이 어떻게 움직이고, 그 움직임을 일으키는 힘과 토크가 어떻게 작용하는지를 이해하는 데 필수적입니다. Dynamics는 주로 로봇의 움직임을 예측하거나 제어하기 위해 사용됩니다.
Dynamics의 주요 구성 요소
- Kinematics (운동학) vs. Dynamics (동역학):
- **운동학(Kinematics)**은 로봇의 움직임(위치, 속도, 가속도)을 조인트 변수에 따라 설명하지만, 이 움직임을 일으키는 힘과 토크를 다루지는 않습니다.
- **동역학(Dynamics)**은 이 움직임을 일으키는 원인인 힘과 토크를 함께 고려합니다. 즉, Dynamics는 로봇의 물리적 특성과 외부 힘에 의해 로봇이 어떻게 움직이는지를 다룹니다.
- Forward Dynamics:
- Forward Dynamics는 주어진 조인트의 힘(또는 토크)을 사용하여 로봇의 가속도, 속도, 그리고 최종적으로 위치를 계산하는 과정입니다.
- 이는 주어진 힘이 로봇의 조인트에 어떻게 작용하여 로봇의 움직임을 생성하는지를 설명합니다.
- Inverse Dynamics:
- Inverse Dynamics는 로봇의 원하는 궤적(위치, 속도, 가속도)을 달성하기 위해 필요한 조인트의 힘과 토크를 계산하는 과정입니다.
- 이는 로봇이 특정한 경로를 따라 움직이도록 하기 위해 얼마나 많은 힘이 필요한지를 결정합니다. 주로 로봇 제어에 사용됩니다.
Trajectory Generation
Trajectory Generation은 로봇 공학에서 로봇의 End-Effector가 특정 작업을 수행하기 위해 공간에서 이동해야 하는 경로를 계산하는 과정입니다. 이 경로는 시간에 따른 위치, 속도, 가속도를 포함하며, 로봇이 목표 지점에 도달하는 동안 안정적이고 효율적으로 움직이도록 합니다.
Trajectory Generation의 주요 개념
- 경로(Path) vs. 궤적(Trajectory):
- 경로(Path): 로봇이 이동해야 하는 공간상의 점들의 연속적인 집합입니다. 경로 자체는 시간 정보를 포함하지 않으며, 단순히 위치의 순서를 나타냅니다.
- 궤적(Trajectory): 경로에 시간 요소가 포함된 것으로, 시간에 따른 로봇의 위치, 속도, 가속도를 정의합니다. 궤적은 로봇이 일정 시간 내에 특정 경로를 따라 이동하도록 합니다.
- 시간 법칙(Time Law):
- 시간 법칙은 경로 상의 각 지점을 언제 지나갈지를 결정합니다. 이는 경로를 시간에 따라 매핑하는 과정입니다.
- 예를 들어, 경로의 시작점에서 끝점까지 일정한 속도로 이동하는 것처럼 시간에 따른 위치 변화를 정의할 수 있습니다.
- 궤적의 종류:
- 점대점(PtP) 궤적: 로봇이 초기 위치에서 목표 위치까지 중간 경로를 무시하고 이동하는 방식입니다. 이 방법은 주로 직선 궤적을 사용합니다.
- 연속 궤적(Continuous Trajectory): 로봇이 여러 지점을 통과하며 이동하는 방식입니다. 예를 들어, 곡선을 따라 이동하거나 복잡한 모션을 수행할 때 사용됩니다.
- 다항식 궤적(Polynomial Trajectory): 다항식 함수로 궤적을 정의하며, 보통 3차나 5차 다항식을 사용하여 위치, 속도, 가속도를 연속적으로 만들 수 있습니다.
- 스플라인 궤적(Spline Trajectory): 주어진 지점을 부드럽게 연결하는 곡선입니다. 이는 로봇이 부드럽게 움직이도록 보장합니다.
Trajectory Generation의 목적
- 효율적인 움직임:
- 로봇이 에너지를 적게 소비하면서 빠르고 정확하게 목표 지점에 도달하도록 합니다.
- 안전성:
- 궤적은 로봇의 각 조인트가 과도한 속도나 가속도를 요구하지 않도록 설계되어야 합니다. 특히, 충돌이나 불안정한 동작을 방지하기 위해 중요합니다.
- 정밀한 작업 수행:
- 로봇이 특정 작업(예: 용접, 페인팅, 조립)을 수행하는 동안 궤적이 정밀하게 제어되어야 합니다.
Trajectory Generation의 방법
- 지정된 시간(Timed Trajectory):
- 일정 시간 내에 목표 지점에 도달하도록 궤적을 설계합니다. 이를 위해 위치, 속도, 가속도를 시간에 따라 미리 정의합니다.
- 예를 들어, q(t)=a0+a1t+a2t2+a3t3q(t) = a_0 + a_1 t + a_2 t^2 + a_3 t^3 같은 다항식이 사용될 수 있습니다.
- 스플라인(Splines):
- 여러 지점을 매끄럽게 연결하는 방법으로, Cubic Spline이나 B-Spline이 자주 사용됩니다.
- 이 방법은 로봇이 여러 목표 지점을 통과하는 동안 부드럽게 움직일 수 있게 합니다.
- 리니어 인터폴레이션(Linear Interpolation):
- 두 지점 사이를 직선으로 연결하는 방법입니다. 이는 가장 간단한 형태의 궤적 생성 방법입니다.
- 로봇이 직선으로 움직여야 하는 작업에 적합합니다.
- 다항식 인터폴레이션(Polynomial Interpolation):
- 고차 다항식을 사용하여 각 지점을 연결합니다. 이는 더 부드러운 궤적을 생성할 수 있지만, 계산이 복잡해질 수 있습니다.
일단 간략하게 무엇을 배울것인지 정리했다.
위 순서로 더 딥하게 배워보려고 한다.
그럼 이만 :)