티스토리 뷰

2021.9.25. 16:47

 

안녕하세요

프로그래밍을 배우는 빛나는 샤트입니다. 

 

SLAM 강의 7번째. Two Inverse Kinematics approaches for Mobile Robots, 모바일로봇 역기구학

 


*이 포스팅은 목원대학교 양정연 교수님의 SLAM강의 유튜브 영상을 보고 제작되었음을 밝힙니다.

출처: 7강.Two Inverse Kinematics approaches for Mobile Robots, 모바일로봇 역기구학

7강.Two Inverse Kinematics approaches for Mobile Robots, 모바일로봇 역기구학

🎉강의요약

1. Jacobian을 활용해 입력대비 출력이 많은 경우의 최적의 해를 구하는 방법

2. 로봇이 멈췄을 때의 x,y,θ를 구하는 방법

3. Slip 현상과 노이즈

 

 

 

<Inverse Kinematics>

좌측 상단의 행렬을 보고 풀기 위한 시도 중 x,θ만 따로 빼서 구하려고 하면 w_L, w_R을 구할 수 있다.

이를 활용해 원래 식에 대입해 y를 구할 수 있고, 결론적으로 우측 하단과 같이 w_L, w_R을 구할 수 있게 된다.

하지만 이 방법은 완벽한 방법은 아니다. 

입력대비 출력이 많은 경우 해가 없거나 최적화를 통해 가까운 해를 구한다.

 

<Limitaion of New Strategy for Inverse Kinematics>

앞서 살펴본 것과 같이 로봇의 움직임을 구해낼 수 있다고 생각하겠지만 종속적으로 움직였다는 가정하에 가능하다.

만약 발렛파킹과 같이 2개의 스탭(옆으로 회전, 뒤로 움직임)을 가지는 움직임이라면 사용할 수 없다.

즉, 짧은 구간이 아니면 사용할 수 없다.

 

<When a Robot Stops?>

그렇다면 로봇이 멈추는 경우를 생각해보자.

일단 회전이 없기 때문에 θ=0이다. 즉 2번째 식처럼 정리가 된다.

행렬 연산을 수행하게 되면 2번째 줄 우측 식처럼 되며 결국 멈추기 때문에 w_L, w_R은 0이 된다.

이러한 식을 정리하면 tanθ을 구할 수 있다.

(짧은 상식)많은 서비스 로봇 업체들이 복잡한 움직임 구현을 위해 OMNI Directional 가능한 바퀴를 사용한다.

 

<If There are Slips on Wheels, Forward Kinematics works well?>

자동차의 스키드 마크처럼 모바일 로봇도 Slip현상이 일어난다. 특히 모바일 로봇의 경우에는 무조건 발생한다고 봐야 한다. 이 문제를 대할 때는 바퀴(각속도)가 error를 가지고 있다고 가정하기 때문에 적당한 노이즈가 필요하다.

아래 예제 코드를 통해 어떻게 노이즈를 부여하는지 살펴보자.

 

<rover3slip2.py>

x,y 좌표에 노이즈를 넣었다. 이런 현상은 거의 일어나지 않는다. 직교 좌표계에서는 잘 일어나지 않는다.
위 좌표계는 드론에서 자주 일어난다.

 

<rover3slip3.py>

좌우 바퀴가 다르게 움직임에 따라 발생한다. 노이즈를 바퀴에 줄 지 직교 좌표계에 줄 지 결정해야 한다. 바퀴에 하중이 달라지기 때문에 슬립현상이 잘 일어나는지 아닌지 알 수 있다.

 

💡강의 후 느낀 점

이 강의를 끝으로 Inverse Kinematics는 종료가 되었다. 내 생각에는 모바일 로봇의 움직임 제어에 있어 가장 기초적인 내용이 아닐까 싶다. 교수님의 차분한 설명을 통해 어떻게 움직이고 어떻게 진행해야할 지 감이 잡힌다. 특히 Slip 부분은 실전에서 많은 활용이 될 것이라고 생각한다.

 

피드백은 언제나 환영합니다.😊

틀린 부분 있다면 지적해주시고 도움이 되었다면 댓글 공감 눌러주세요.




 

LIST
댓글