티스토리 뷰
출처 : K-mooc 강좌 / Robot manipulator and Underwater Robot Application
자코비안 매트릭스를 활용하는 것에 대한 내용
Singular configuration
특이점(singularity) 혹은 kinematics singularity(기구학적 특이점)이라는 말을 쓴다.
singularity : The joint anlge values for which J^-1 does not exist자코비안의 인버스가 정의 안되는 경우 = determinant가 0이 되는 경우
이러한 싱귤러리티가 가지는 의미는?이건 작업공간상에서의 명령은 들어오는데, 움직일 수 없는 방향, 불가능한 자세로 이동하라고 하는 것과 마찬가지이다.
보통은 어떨 때 발생하냐면, 로봇 팔이 쭉 펴진다거나 접혀가지고 어느 쪽으로 이동을 해야 되는지 판단이 되지 않는 그런 상황에서 일반적으로 kinematics singularity가 발생한다.
자코비안의 인버스가 존재하지 않기 때문에, 작업공간의 궤적이 관절공간의 궤적에 연결되지 않는 문제점이 발생한다.이로 인해 제어적인 측면에서 오차가 누적되게 되고, 오차가 누적됨으로 인해서 더 큰 값이 보정하여 들어가게 되면 시스템이 발산하게 되는 매우 위험한 상황이 발생한다.
그렇다면 이러한 키네매틱스 싱귤러리티가 만약에 스퀘어 매트릭스가 아닌, 옆으로 긴 상태,즉, 관절 공간에 대한 구동자유도가 작업공간의 구동자유도보다 큰 경우,옆으로 긴 자코비안 매트릭스의 형태가 주어진다.
그런 경우에 대해서도 우리가 설명할 수가 있고, 그랬을 경우에는 풀 랭크가 아닐때, 풀 로우 랭크가 아닐 때 보통 발생한다.
이는 앞선 수학적인 백그라운드에서 살펴 보았을 때, singular value decompostion에서의 singular value로서 그러한 부분들을 설명하게 된다.
세타 1과 세타 2로 구성되는 자코비안을 구하면 다음과 같다.
Jr의 det를 구해보면 l1,l2는 링크의 길이기 때문에, s2가 0도이거나 180도 일때 0 싱귤러리티가 발생한다.
사인 세타 2가 0이 되기 위해서는 팔이 쭉 뻗어진 경우다.
만약 팔이 쭉 뻗어진 경우에서 더 뻗으라고 하면 , 위치도 그렇고 속도도 더 낼 수가 없다.
만약에 180가 되게 되면, 완벽하게 접힌 상태가 된다.
완벽하게 접힌 상태에서 팔을 뻗치는 방향이나 팔을 더 안쪽 방향으로 만드는 건 prismatic joint가 아니기에 물리적으로 불가능하다.
따라서 한쪽 방향으로는 운동을 일으킬 수 없는 상황 = Singular Configuration이다.
더 많은 싱귤러리티 종류가 있지만, 가장 많이 발생하는 게 키네매틱스 싱귤러리티이다.
Redundancy
랭크를 가지고 레인지 스페이스를 정의하고, 널스페이스를 활용해서 리던던시를 구현이 가능하다.
만약에 어떠한 매니퓰레이터가 리던던시를 가진다고 하는 경우,
작업공간의 자유도는 2자유도 또는 3자유도만 필요한데, 관절공간의 자유도가 3자유도 4자유도를 가지게 된다.
즉, 모터가 세 개 내지 네 개를 가지고 있는 그런 형태의 매니퓰레이터로 구성이 되어 있따면, 작업공간에서 필요한 수준의 조인트 입력보다 더 많은 자유도를 가지게 되는 것이다.
이랬을 때 우리는 Redundancy를 가진다라고 이야기한다.
이러한 리던던시를 가졌을 때 장점은 사람의 팔로 예시를 들 수 있다.
사람의 팔은 일반적으로 리던던시를 가지고 있다. 쟁반을 나를 때 수평을 유지하면서도 손목을 돌릴 수 있다.
이게 가능한 이유는 그 각도를 유지하면서 다른 조인트들을 활용해서 그 각도를 유지하면서 다른 운동을 만들어 낼 수 있기 때문인데, 이걸 null motion이라고 한다.
키네마틱스 싱귤러리티를 피하는 방법은 매니퓰러빌리티라는 measure를 이용해서 피한다거나, obstacle(장애물)에 대해서 potential funcition을 정의해서 피한다거나 또는 structure limit과 같은 관절에 어떤 limit이 있다고 했을 때 그러한 관절에 대한 limitation을 피한다고 하는 것들을 null motion을 통해서 만들어낼 수 있다.
완벽하게 제거하는 건 불가능하지만, 널 모션을 활용해서 그런 부분들을 일부 회피하는 것이다.
그 다음에 어떠한 합리적인 액션을 충분히 넣어주게 되면, 운동 자체를 에너지가 덜 드는 운동으로, 그리고 기타 다른 정의할 수 있는 널모션에 대한 정의들을 바탕으로 원하는 메저를 만들어 낼 수 있다는 장점이 있따.
예시
만약에 3 자유도 매니퓰레이터가 평면상의 x,y, 파이
즉, 두 위치와 2차원상의 위치와 각도로 표현된다면 이는 리던던트 매니퓰레이터가 아니다.
그렇지만 만약에, 끝점의 각도가 중요하지 않아서 끝점의 각도는 신경쓰지 않는다고 가정하고, 고려하지 않는다고 했을 경우에는, 작업 공간에는 2자유도 매니퓰레이터가 들어가고, 관절 자유도는 3자유도가 된다.
이렇게 2자유도 3자유도로 구성되었을 경우에는 자코비안 매트릭스가 스퀘어 매트릭스가 되지 않는다.
그러면 원래 qdot을 만들어내기 위해서 J의 inverse가 필요한데, J가 스퀘어 매트릭스가 아닐 때에는 J의 수도 인버스가 된다.
J의 수도 인버스 v + 뒤에 붙는 식은 i-j의 수도 J와 K이다.
즉, k라는 어떤 임의의 벡터를 q의 널모션이 가능한 0 공간으로 프로젝션 시키는 그러한 연산자이다.
그렇기 때문에 k라고 하는 것들에서 만들어지는 운동들은 자세라던지 그런 부분들에서는 기여를 하겠지만, 끝점의 위치가 변하지 않아 끝점의 위치는 변화시킬 수 없는 마지막 인자가 된다.
이러한 인자가 매니퓰러빌러티를 최대화 한다던지 조인트 리밋을 회피한다던지 하는 그런 0공간 운동(null motion)을 만들 수 있는 식이 된다.
외부에서 가해지는 힘이 조인트에 포스(force)로 작용하는 방법
어떠한 로봇 매니퓰레이터의 끝점에 어떤 힘 F가 가해져서 델타 r만큼 이동을 했다면,
결과적으로 전체의 모터 토크 * 델타 q = 각각의 관절들이 조금씩 움직인 것에 의해서 움직임을 만들어 내기 위한 토크가 조금씩 전달되었다.
이게 바로 버츄얼 워크이다.
버츄얼 워크는 굉장히 미세하게 움직이는 변위에 대해서는 이렇게 동일하게 취급할 수 있다는 원리이다.
그런데 델타 r은 J 델타 q로 대체 표현이 가능하다.
결국 타우 = J^TF라는 식이 나오는데, F라는 힘에 의해서 자코비안의 transpose가 곱해져서 각각의 조인트로 전달된다는 그런 의미를 가지고 있다.