티스토리 뷰

단순히 operational space에서 제어하여 특정 위치로 로봇을 이동시키는 목적 외에도 다수의 제어 목적이 있을 수 있다.

 

예를들어

 

1. 특정 위치로 로봇팔 끝단을 움직이면서

2. elbow joint 값을 높인 상태로 유지해라

 

라는 2가지의 목적이 있을 수 있다. 이런 2가지 목적을 달성하기 위해서 문제는 로봇의 자유도에 있다.

만약 operational space가 generalized coordinates과 동일하다면, 즉 만약 operational space가 로봇의 모든 자유도를 제약하고 시스템의 상태가 operational space에 정의 된다면, 1번의 목적을 달성하는 컨트롤러에 대한 성능을 포기하지 않고 2번의 목적을 달성하는 것은 불가능하다.

2링크 로봇팔은 2자유도를 가지는데 이는 도달 지점인 (x,y)에 의해서 제약되버리기 때문에 다른 무언가를 할 수 없게 된다. 물론 자유도가 높은 로봇을 쓸 경우에는 이런 문제가 해결된다.

 

Movement of the KUKA LBR iiwa at the redundancy circle. Movement of the null space of the mobile Manipulator CHIMERA Photocredit: JOANNEUM RESEARCH

 

 

그 예로 Mobile manipulator나 7자유도를 가진 협동로봇의 경우 일반적인 x,y,z,rx,ry,rz 제약조건에서 여자유도가 남기 때문에 primary controller가 아닌 secondary controller를 구성할 수 있다. 이에 대한 내용으로 moveit에서도 null space에 관한 움직임을 실행해볼 수 있도록 되어 있다.

 

실제 primary controller가 작동하면서 이의 null space 에서 secondary controller가 작동 할 수 있게 된다. control 신호의 경우 primary controller에서의 신호와 필터된 secondary control 신호를 합쳐서 보내게 된다.

필터 된 secondary control 신호란 primary controller의 성능에 영향을 주지 않으면서 목적을 만족할 수 있을 경우에만 작동되는 신호를 말한다. 즉, 앞서말한 것과 같이 primary controller의 null space에서만 작동할 수 있도록 filter 한다는 뜻이다.

최대한 수학적 내용은 제외하려고 했지만 약간의 이해를 돕기 위해서 추가하자면, primary controller에서 만들어낸 control 신호를 Ux라고 해보자. 그리고 secondary controller에서 보내는 신호가 Unull이라 하자.

이 두개의 신호를 더하여 최종 control 신호를 만들게 되는데, 필터를 거쳐서 만들어야한다.

primary controller에서 나온 신호와 필터가 거쳐진 Unull 신호의 합이다.

잘보면 Unull - 필터*Unll이라는 걸 알 수 있다. 필터의 형태를 알아보자.

필터는 pseudo-inverse jacobian과 jacobian이 곱해진 형태라는 걸 알 수 있다. 간단하게 생각했을 때 기존 행렬과 그의 역행렬이 곱해졌기 때문에 단위 행렬이 나오겠지만, pseudo라는 특이점 때문에 null space를 제외하고 단위행렬 형태가 된다.

따라서 null space 공간이 아닌 다른 부분의 Unull 신호는 Unull-필터*Unull로 삭제되고 그렇지 않은 null space 부분만 남게 된다. 이렇게해서 오로지 null space에서만 control 신호가 들어가게 된다.

사실 Force, position, velocity control 인지에 따라서 필터의 형태를 바꿔야한다.

pseudo inverse는 제어하려고 하는 것(position)보다 하나의 아래것(Velocity)와 관련이 있다

(velocity null space에서 움직인다는 뜻)

따라서 단순히 pesudo inverse jacobian으로 만들어진 필터를 사용하게 되면 가속도 값이 주는 영향은 필터링 되지 않고 신호에 들어가게 된다. 즉 가속도에 관한 필터링도 해줘야하는데, 이는 추후에 정리해보도록 하겠다.

이런식으로 null space control을 할 수 있다면 제어를 조금 더 용이하게 할 수 있다.

without secondary controller
with secondary controller

첫번째의 gif의 경우 단순히 primary controller만 있어서 Target position1에서 2로 이동할 때 3번조인트가 많이 회전하는 것을 볼 수 있다. 그와 반대로 두번째 gif의 경우 기존의 형태를 유지하면서 도달하는 모습을 볼 수 있다.

자료출처

https://studywolf.wordpress.com/2013/10/31/robot-control-part-7-osc-of-a-3-link-arm/

https://github.com/studywolf/control

https://www.joanneum.at/en/robotics/reference-projects/finalized-projects/redundant-robot-control

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30