13.50 강체 역학의 이동 로봇 및 드론 응용
1. 개요
강체 역학은 이동 로봇과 무인 항공기(드론)의 분석과 제어에서 핵심적인 역할을 한다. 이러한 시스템의 본체는 강체로 모델링되며, 환경과의 상호작용(휠과 지면의 마찰, 공기의 항력 등)이 외력으로 추가된다. 본 절에서는 강체 역학이 이동 로봇과 드론에 어떻게 응용되는지를 다룬다.
2. 이동 로봇의 강체 모델링
2.1 본체
이동 로봇의 본체는 강체로 모델링된다. 본체의 위치, 자세, 속도, 각속도가 상태 변수이다.
2.2 휠
휠은 일반적으로 별도의 강체이며, 본체와 회전 관절로 연결된다. 휠의 회전이 추가 자유도를 제공한다.
2.3 자유도
평면 이동 로봇의 본체는 3자유도(위치 2 + 회전 1)를 가진다. 휠을 포함하면 더 많은 자유도가 있다.
3. 비홀로노믹 제약
3.1 차량의 제약
자동차와 같은 차량은 비홀로노믹 제약을 가진다. 측면 운동이 직접 불가능하다.
\dot x\sin\theta - \dot y\cos\theta = 0
3.2 차륜의 제약
휠이 미끄러지지 않는 조건도 비홀로노믹 제약이다.
\dot{\mathbf{r}}_{\text{contact}} = \mathbf{0}
3.3 분석
비홀로노믹 제약은 운동 분석을 더 복잡하게 만든다. 라그랑주 승수법이나 비홀로노믹 좌표가 사용된다.
4. 모바일 로봇의 운동학
4.1 차륜형 로봇
차륜형 로봇의 운동학은 휠의 회전과 본체의 운동 사이의 관계를 결정한다.
4.1.1 미분 구동
미분 구동(differential drive) 로봇은 두 휠의 회전 속도 차이로 회전한다. 운동학은 단순하다.
4.1.2 아커만 구동
아커만(Ackermann) 구동은 자동차와 같은 조향 시스템이다. 운동학이 더 복잡하다.
4.2 운동 방정식
본체의 운동학적 방정식은 휠의 회전 속도로부터 다음과 같이 결정된다.
\begin{bmatrix}\dot x \\ \dot y \\ \dot\theta\end{bmatrix} = \mathbf{f}(\omega_l, \omega_r, \theta)
여기서 \omega_l, \omega_r은 좌우 휠의 회전 속도이다.
5. 모바일 로봇의 동역학
5.1 본체의 운동 방정식
본체의 운동 방정식은 뉴턴 방정식과 오일러 방정식의 결합이다.
M\ddot{\mathbf{r}}_c = \mathbf{F}_{\text{ext}}
\mathbf{I}\dot{\boldsymbol{\omega}} + \boldsymbol{\omega} \times \mathbf{I}\boldsymbol{\omega} = \boldsymbol{\tau}_{\text{ext}}
5.2 휠과 지면의 상호작용
휠과 지면의 마찰력이 본체에 외력으로 작용한다. 마찰 한계가 가속과 회전의 한계를 결정한다.
5.3 모터 토크
휠을 회전시키는 모터의 토크가 휠의 운동을 결정한다. 휠의 운동이 마찰력을 통해 본체에 전달된다.
6. 자율 주행 차량
6.1 동역학 모델
자율 주행 차량의 동역학 모델은 본체의 운동, 휠의 운동, 타이어 마찰을 모두 포함한다. 매우 복잡할 수 있다.
6.2 단순 모델
제어와 계획에서는 단순한 자전거 모델(bicycle model) 등이 자주 사용된다.
6.3 고급 모델
정확한 시뮬레이션에서는 4륜 모델, 타이어의 비선형 마찰 모델 등이 사용된다.
7. 무인 항공기
7.1 본체의 강체 모델
드론의 기체는 강체로 모델링된다. 6자유도의 운동을 가진다.
7.2 자세 동역학
자세 동역학은 오일러 회전 운동 방정식으로 표현된다.
\mathbf{I}\dot{\boldsymbol{\omega}} + \boldsymbol{\omega} \times \mathbf{I}\boldsymbol{\omega} = \boldsymbol{\tau}
7.3 위치 동역학
위치 동역학은 뉴턴 방정식이다.
M\ddot{\mathbf{r}}_c = \mathbf{F}_{\text{thrust}} + M\mathbf{g} + \mathbf{F}_{\text{drag}}
여기서 \mathbf{F}_{\text{thrust}}는 모터의 추력, \mathbf{F}_{\text{drag}}는 공기 항력이다.
8. 멀티콥터
8.1 동역학 모델
쿼드콥터, 헥사콥터 등 멀티콥터의 동역학은 비교적 단순하다. 본체에 모터의 추력과 토크가 작용한다.
8.2 추력의 분배
각 모터의 회전 속도가 추력과 토크를 생성한다. 추력의 분배가 비행 동특성을 결정한다.
8.3 미분 평탄성
쿼드콥터는 미분 평탄(differentially flat) 시스템이며, 이로 인해 위치와 요 각도만으로 모든 상태와 입력을 결정할 수 있다.
9. 고정익 항공기
9.1 동역학 모델
고정익 항공기의 동역학은 공기력(양력, 항력, 측력)이 지배적이다. 강체 역학에 공기 동역학이 결합된다.
9.2 비행 역학
비행 역학은 항공기의 안정성과 조종성을 분석하는 분야이다. 강체 역학이 토대이다.
10. 수중 로봇
10.1 동역학 모델
수중 로봇은 물의 항력, 부력, 추가 질량 효과를 받는다. 강체 운동 방정식에 이러한 항이 추가된다.
10.2 부력
부력은 중력의 반대 방향으로 작용하며, 수중 로봇의 운동에 큰 영향을 준다.
10.3 추가 질량
물 안에서의 운동은 주변 물도 함께 움직이게 하므로, 효과적인 질량이 증가한다. 이를 추가 질량(added mass) 효과라 한다.
11. 이동 로봇의 시뮬레이션
11.1 Gazebo
Gazebo는 모바일 로봇과 드론의 시뮬레이션을 광범위하게 지원한다. ROS와 통합되어 있다.
11.2 AirSim
AirSim은 Microsoft의 드론과 자동차 시뮬레이터이다. 사실적인 환경과 센서를 제공한다.
11.3 CARLA
CARLA는 자율 주행 차량의 시뮬레이션을 위한 오픈소스 시뮬레이터이다.
12. 응용 예시: 청소 로봇
청소 로봇은 평면 운동을 하는 차륜형 로봇이다. 강체 역학으로 본체의 운동이 분석된다.
13. 응용 예시: 자율 주행
자율 주행 차량의 동역학 모델이 제어와 계획에 사용된다. 강체 역학과 타이어 모델이 결합된다.
14. 응용 예시: 드론
드론의 자세 제어와 위치 제어가 강체 역학에 기반한다. 빠른 응답을 위해 정확한 모델이 필요하다.
15. 응용 예시: 무인 잠수정
수중 로봇의 분석에서 강체 역학에 유체 효과가 추가된다. 부력, 항력, 추가 질량 등이 고려된다.
16. 본 절의 의의
본 절은 강체 역학의 이동 로봇과 드론 응용을 다루었다. 이러한 시스템은 매니퓰레이터와 다른 도전을 가지지만, 강체 역학이 여전히 분석의 토대이다. 환경과의 상호작용(마찰, 공기력 등)이 중요한 추가 요소이다.
17. 학습 권장사항
- 이동 로봇의 강체 모델링을 이해한다.
- 비홀로노믹 제약을 인식한다.
- 드론의 동역학 모델을 학습한다.
- 환경과의 상호작용을 분석한다.
- 다양한 시뮬레이터를 활용해 본다.
18. 본 장의 결론
본 절은 강체 역학 장(Chapter 13)의 마지막 절이다. 본 장은 강체의 정의에서 시작하여 운동학, 동역학, 라그랑주 역학과 해밀턴 역학의 기초, 충돌과 마찰, 다체 시스템, 시뮬레이션, 그리고 다양한 로봇 시스템의 응용에 이르는 강체 역학의 핵심 주제를 다루었다. 이러한 내용은 후속 장과 후속 파트의 기초가 된다.
19. 참고 문헌
- Siegwart, R., Nourbakhsh, I. R., & Scaramuzza, D. (2011). Introduction to Autonomous Mobile Robots (2nd ed.). MIT Press.
- LaValle, S. M. (2006). Planning Algorithms. Cambridge University Press.
- Beard, R. W., & McLain, T. W. (2012). Small Unmanned Aircraft: Theory and Practice. Princeton University Press.
- Fossen, T. I. (2011). Handbook of Marine Craft Hydrodynamics and Motion Control. Wiley.
- Mahony, R., Kumar, V., & Corke, P. (2012). “Multirotor aerial vehicles: Modeling, estimation, and control of quadrotor.” IEEE Robotics & Automation Magazine, 19(3), 20–32.
version: 1.0