최근 저는 pinkwink라는 제 블로그에 오랜 고민(하는 척 한 후 실제로는 즉흥적으로) 후에 Robotics라는 카테고리를 추가했습니다. 그리고 로보틱스적인 뭔가 글을 올리고 싶다는 생각이었는데요. 다른 여타의 로보틱스 고수님들과 달리... 바쁜 직장 생활 중에... 알고보니 전 뭐 딱히 올릴 수 있는 글의 주제가 현실적으로 제한적이더라구요.ㅠㅠ. 때마침 Python으로 시뮬레이션한 결과를 가지고 리뷰라도 해볼까 하는 생각이 최근 Craig의 책 4장까지는 어떻게 글을 올렸네요. 그런데 오늘 글은 뭔가 좀 애매하네요... 그래도 어떤 글을 작성할 때 제가 쓴 글을 reference로 거는걸 좋아하는 제 습관상 자코비안의 정의를 빼놓고 갈 수는 없으니.. 오늘도 글 자체로는 큰 의미가 없는 Craig의 5장 Jacobian을 살짝 이야기할까 합니다.
Velocity ”Propagation” from Link to Link
먼저 i번째 링크에서 i+1번째 링크로 Propagation되는 velocity에 대한 이야기를 해야 합니다. Propagation 번식? 이라는 단어를 어떻게 해야할지 모르겠더라구요. 그냥 링크와 링크 사이의 속도 정의 정도로 의역하고 싶지만 그것도 아닌듯 하고...ㅠㅠ. 뭐 여하튼...
i번째 링크의 속도 벡터의 적의는 위 그림에 있습니다.
그리고 그걸 그 다음 링크로 옮겨가는 과정이 또 위 그림에 있습니다.
i번째 링크에서 본 i+1번째 링크의 속도는 당연히 현재 i번째의 속도에서 상대적인 추가 속도를 합하면 될 겁니다. 여기서 각속도와 z축 위치 벡터의 곱은
의 뜻입니다. 여기서 양변에
를 곱하면
이렇게 각속도를 얻을 수 있습니다.
같은 방식으로 선속도(Linear Velocity)를 구합니다. 여기서 다시
를 곱해서
선속도를 구할 수 있습니다. 만약 선운동을 하는 경우(prismatic)의 각속도는
이고...
선속도는 위와 같습니다. 직선 운동 성분이 마지막에 포함된 형태인거죠.
Example 5-3
언제나 그렇듯 예제는 필요하죠^^
지난번에도 또 그 지난번에도 다루던 예제 two-link입니다. 여기를 속도적으로 분석해 보는 거죠...
일단 이미 이전에 [바로가기]에서 위 변환 행렬들은 다 정의를 내렸습니다. 이제 이를 이용해서 각 선속도와 각속도를 구해봐야죠.. 일단 각속도부터~~
방금 구한 angular velocity에 대입하면 되겠지요.. 그러면 1번 링크의 각속도를 구할 수 있습니다.
그 다음은 2번 링크의 각속도입니다. 각속도는 사실 two-link 시스템의 경우 직관적으로 2번 링크라면 두 각속도의 합이구나라고 유추해 볼 수 있는데 계산 결과도 그러하네요.
3번 링크의 경우는 다음 링크가 붙어 있지 않아서 2번 링크에서 3번 링크로 변환하는 회전행렬이 Identity 행렬이라 2번 링크의 각속도와 같습니다.
이제 선속도의 경우는 1번 링크는 계산 결과 0벡터이구요...
2번 링크도 전 절에서 구한 선속도 식에 대입해서 구할 수 있네요~
마찬가지 3번 링크도 그렇습니다. 이렇게 예제에 쉽게 적용이 되는군요.. 킁~~ 전체 회전행렬은
입니다. 그리고. 0번에서 3번으로 바로 가는 선속도 성분은
으로 구해지네요~
Jacobian
만약,
위 수식처럼 표현되는 시스템이 있다면 당연히...
이렇게 표현이 될겁니다. 그러면...
자코비안 J를 이용해서 표현 가능하네요...
속도 벡터로 표현이 되니까...
이렇게 자코비안 Jacobian J를 위와 같이 정의할 수 있습니다.
Return Example 5-3
다시 Example 5-3으로 돌아가서 표현되어 있던 속도
를
이런 형태로 표현하는 거죠..
이렇게 할 수 있습니다. 그러면 위 행렬이 자코비안이 되는 겁니다.
그럼 0에서 3번링크를 표현하는 속도에 대한 자코비안은 위 수식처럼 되겠죠...
Changing a Jacobian’s frame of reference
자코비안에서 계를 옮기는 변환도 알아야 합니다.
좌표계 {B}에서 속도를 표현한 자코비안이 있고
그것으로 좌표계 {A}를 표현하고 싶다면 선속도(v)와 각속도(w)를 같이 표현하는 경우 위와 같은 표현으로 해야 합니다.
이렇게 자코비안으로 표현될 거구요...
그럼 {B}에서 {A}로의 자코비안 변환은 위와 같이 표현되는 거죠...
Singularities
역기구학에서도 이야기했지만, 이렇게 자코비안으로 이야기할때도 해가 존재하지 않는 지점이 있습니다.
위 수식을 만족하지 않는 경우입니다. 즉 자코비안의 역행렬이 존재하지 않을 때죠...
다시 예제 5-3을 보면 위 자코비안에서... 역행렬이 존재하는지 아닌지는 determinant가 0인지를 판단하면 됩니다.[바로가기]
이 예제에서는 위 수식을 만족하면 역행렬이 존재하지 않는거죠... 상식적으로 길이(l1, l2)를 0으로 해두고 링크를 조사할 리는 없으니 결국 sin(theta2)가 0이 되면 역행렬이 없는거고... 그러면 theta2는 0도 이거나 180도면 역행렬이 존재하지 않는다고 할 수 있네요^^.
오늘은 좀 지루하고 강의.. 그것도 허접한 강의 수준도 안되는 글이지만.. 뭐 이 다음을 설명하기 위한 reference를 확인하고 정리하는 차원이었습니다~~라고 변명하고 싶어요^^
'Theory > ControlTheory' 카테고리의 다른 글
2차계 시스템의 응답 특성 간편히 확인해 보기 (10) | 2016.08.29 |
---|---|
Bode Plot의 기초 중에서도 기초이야기 (28) | 2016.08.17 |
역 Z-변환된 차분 방정식을 C 코드로 계산하기 (4) | 2016.07.22 |
Craig의 Robotics 4장 예제. PUMA 560의 역기구학 풀이 (Inverse Kinematics) (14) | 2016.02.17 |
Craig의 Robotics 3장 예제. PUMA 560 Python으로 확인해보기 (12) | 2016.02.03 |
Craig의 Robotics 3-4예제. RPR Mechanism Arm (20) | 2016.01.22 |
Craig의 Robotics 3-3예제. Three-Link Planar Arm (10) | 2016.01.20 |