티스토리 뷰
[SLAM] 양정연 교수 SLAM 강의 6강. Simple Inverse Kinematics of Mobile Robots, 간단한 R-T-R 경로기반 역기구학
무엇보다_빛나는_샤트 2022. 2. 20. 16:082021.4.7. 22:04
안녕하세요
프로그래밍을 배우는 빛나는 샤트입니다.
SLAM 강의 6번째. Jacobian Matrix-based Mobile Robot MovementSimple Inverse Kinematics of Mobile Robots, 간단한 R-T-R 경로기반 역기구학
*이 포스팅은 목원대학교 양정연 교수님의 SLAM강의 유튜브 영상을 보고 제작되었음을 밝힙니다.
출처: 6강. Simple Inverse Kinematics of Mobile Robots, 간단한 R-T-R 경로기반 역기구학
6강. Simple Inverse Kinematics of Mobile Robots, 간단한 R-T-R 경로기반 역기구학
🎉강의요약
1. Inverse Kinematics의 접근법 2가지 소개(간단한 방법, 최적화 기법)
2. 이 강의에서는 간단한 방법인 Rotation, Translation을 순차적으로 해서 모바일 로봇 이동을 보여준다.
3. 자코비안 행렬의 크기 특성과 자유도에 대한 설명. 입력은 2개, 출력은 3개라서 자유도가 부족한 문제(이후 최적화 기법에서 이를 해소하는 방법이 나올 에정)
4. 이전 강의에서 배운 자코비안 행렬 계산 수식을 이용해 간단한 방법을 통해 어떻게 수식으로써 이동이 구현되는 지 알 수 있다.
(회전: 바퀴 각속도(왼쪽, 오른쪽)의 값이 같을 때. 이동: 바퀴 각속도가 서로 부호가 반대인데 절대값이 같을 때)
5. 순차적으로 구동되기 때문에 특정 값 이하가 되면 다음 동작으로 넘어가는 일종의 '탈출 조건'을 코드에 명시
6. 로봇의 최대 속도를 제어하는 Saturation을 이용해 일정 속도까지는 비례해서 증가하지만 일정 수준이 되면 속도가 최대값이 고정되는 것을 이용.
<Inverse Kinematics>
이전 강의에서 입력 2개(바퀴의 각속도)를 이용해 출력 3개(x,y,θ)를 구할 수 있다.
입력이 2개, 출력이 3개
예시: 드론의 경우 6자유도를 가지지만 모터는 4자유도 (roll, yaw, pitch가 하나만 독립적으로 움직이지 않고 연관되어 같이 움직인다)
자동차의 경우 각도와 속도가 종속되어 있는 관계이다.
그리고 자코비안 행렬은 3x2 행렬 --> 정방행렬이 아니다.
<Two Inverse Kinematics Approaches>
1. 간단한 방법
- 이동하고자 하는 목표를 위해 (각도 제어, 속도 제어)를 순차적으로 하는 것
2. Inverse Kinematics with optimality(최적화 기법)
- 부족한 자유도 문제를 해결하는 방법(입력2개인데 출력은 3개이므로)
<EX) rover4>
1. 간단한 방법(회전, 이동의 반복)에서의 코드 구현 시 Steady State Error 해결
- 회전이 입력된 각도만큼 완료가 되야 이동이 되는데 어느 값 이하가(강의에서는 0.5도) 되면 회전을 완료하고 이동을 시작하고 이동을 하다가 어느 값 이하가(강의에서는 0.1) 되면 이동을 종료하는 방식으로 코드를 구현했다. --> 탈출 조건 명시
*모바일 로봇을 만들었다면 인코더를 적용해 바퀴 제어를 하는 것이 중요하다.
(편집자 주: 초반 강의부터 계속 강조하시던 내용)
<rover4 예제 파헤치기>
0. (x,y,q) -> (xd,yd,qd) 이동해야함.
*자코비안 계산식으로 함께 이해하기(이전 강의에서 배웠던 내용)
1.Rotation first: 각도 θ_1는 arctan((yd-y)/(xd-x)) - θ_s(Heading angle) 로 구할 수 있다. w_L, w_R이 절대값은 같은데 부호가 반대라면 cosθ, sinθ부분은 0이 되어 x,y는 0이 되고 이동없이 회전만 하게 된다.
2. Translation: w_L, w_R이 같다면 -1/a, 1/a에 곱해져서 θ는 0이 되어 회전없이 이동
3. Rotation for qd : 원하는 heading angle가 되도록 계산. (원하는 각도) - (현재 각도)를 이용해 제어
<Simple Inverse Kinmatics Strategy>
1. Case1 Only Translation (이동만 하는 제어)
w_L = w_R = w_0
회전이 0이 된다. --> 이동만 한다.
2. Case2 Only Rotation
w_L = -w_R, w_R = w_0 and w_L = -w_0
이동이 0이 된다. --> 회전만 한다.
<Simple Strategt: Rotation - Translation - Rotation>
위 식의 총 정리를 한 페이지에 display.
<로봇 움직임 제어 중 error제어>
1. 이동(Translation): 이동해야할 전체 거리를 e라고 설정. e = sqrt(x**2 + y**2)로 구할 수 있다. 특정한 값보다 작아지면 탈출.
*로봇이 너무 빨리 가는 경우, 너무 느리게 가는 발생
delta = k_p * e인데 바퀴가 움직이는 경우인데,
특정한 값보다 크지 않게 설정한다. (Saturation: 특정 값까지는 비례하게 커지지만 특정 값 이후부터는 최대값으로 고정)
*로봇을 움직이게 하기 위한 바퀴 각속도 제어(코드)
w_L(또는 w_R) = Δθ_L인데, r*θ_L = Δ이므로
w = Δ/r을 이용해 바퀴의 각속도를 구할 수 있다.
다시 말하면 구하고자 하는 것은 움직이는 거리 l(위 설명에서는 Δ)은 r*θ이므로
θ = l/r이 되는 것! 이를 이용해 w를 구할 수 있다.
💡강의 후 느낀 점
강의 내용이 계속 연결되는 느낌이라 복습도 되고 완전 새로운 내용이 아니라 연결되는 느낌이라 좋았다.
이전에 계속 강조하시던 자코비안 행렬의 크기(3*2)와 자유도에 대한 연결을 통해 제어의 2가지 방법의 제시
그리고 그 중 첫 번째로 간단하게 구현해볼 수 있는 R-T-R에 대해 배웠는데
이 안에서도 error제어, sturation 등 다양한 기법으로 제어를 진행하고 있었다.
또한 자코비안 행렬 수식(이전에 배운)을 이용해 직접 값을 넣어서 어떻게 회전과 이동이 일어나는 지에 대한 설명도 유익했다.
전체적으로 강의 흐름과 원리 이해가 잘 되는 강의였다.
피드백은 언제나 환영합니다.😊
틀린 부분 있다면 지적해주시고 도움이 되었다면 댓글과 공감 눌러주세요.
'SLAM' 카테고리의 다른 글
- Total
- Today
- Yesterday
- ros
- 자율주행로봇
- 멋쟁이사자처럼
- Slam
- 아이펠
- IT
- 인공지능교육
- 자율주행기술
- 멘탈관리
- SLAM강의
- 배달로봇
- AIFFEL인공지능과정
- 대전 인공지능
- AIFFEL
- 모두의 연구소
- 양정연SLAM
- 인공지능 교육
- 도전
- SLAM공부
- 광주
- 서빙로봇
- 실내자율주행
- 모두의연구소
- 인공지능
- AIFFEL교육
- 광주인공지능사관학교
- Python
- 해커톤
- AIFFEL후기
- 광주AI
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |