A Benchmark Comparison of Learned Control Policies for Agile Quadrotor Flight (ICRA 2022) 논문 참고
- Drone Control에서 사용될 수 있는 Quadrotor Dynamics Model
- 충분히 simple하게 잘 simulation할 수 있을 정도 수준
Notation
1. Frame 정의
- World frame W : {xW,yW,zW}
- body frame B : {xB,yB,zB} → 드론의 무게중심에 위치
- 드론의 state는 world 좌표계를 기준으로 쓰는게 일반적
- 위치 : pWB
- 자세 : qWB → 쿼터니언으로 표기. 여기서 쿼터니언은 단일 쿼터니언 사용.
2. 벡터 표시
- 벡터 v : world frame에서 p1에서 p2로 향하는 벡터 = Wv12
- 행렬 M
3. 좌표 변환
WpB1=WtWB+qWB⊙pB1
- 여기서 ⊙은
quaternion-vector product → quaternion을 이용해 vector 회전시키는 연산
q⊙v=qvqˉ
Quadrotor dynamics
Dynamics 분석
- 그러므로 state space는 17-차원 (3+4+3+3+4)이며, dynamics는 아래와 같이 기술할 수 있음.
x˙=⎣⎢⎢⎢⎢⎢⎡p˙WBq˙WBv˙WBw˙BΩ˙⎦⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎢⎡vWqWB⋅[0wB/2]m1(qWB⊙(fprop+fdrag))+gWJ−1(τprop−wB×JwB)kmot1(Ωcmd−Ω)⎦⎥⎥⎥⎥⎥⎥⎥⎤
1. 위치 미분
2. 자세 미분
3. 선속도 dynamics
- force = thrust + drag
→ 둘 다 body frame에서 계산 → world frame으로 회전
→ 중력 더해줌
- world frame에서
newton law 적용
- 총 thrust는 각 propellor force의 합산
fprop=i∑fi
- drag force는 속도의 반대 방향으로 생성 (linear drag model)
- 여기서 k는 linear drag coefficients
fdrag=−⎣⎢⎡kvxvB,xkvyvB,ykvzvB,z⎦⎥⎤
4. 회전 dynamics
rigid-body rotational dynamics (euler equation)
- J−1τprop : 모터에서 발생하는 torque가 회전 가속도를 만듬
- 총 torque는 drag torque와 moment arm torque 합
- rP,i는 propeller의 body frame에서의 위치
τprop=i∑(τi+rP,i×fi)
- −w×Jw : coriolis/gyroscopic effect
- 회전하는 좌표계 (body frame)에서 각운동량을 미분할 때 나타나는 항
- 각운동량 L은 inertial frame에서 정의되는데, 이를 body frame에서 표현할 경우 시간 미분 시, 회전 좌표계의 미분 규칙에 의해 w×(Jw)항이 추가로 나타남.
τ=dtdL∣inertial=dtd(Jw)∣body+w×(Jw)=Jw˙+w×(Jw)
5. motor dynamics
- 실제 모터 속도는 입력 모터 속도의 1차 지연 시스템으로 반응
Propeller thrust and torque
- 프로펠러 thrust와 drag는 아래와 같이 모델링한다.
→ 즉, 프로펠러가 공기를 밀어낼 때, 발생하는 모멘텀이 프로펠러 속도의 제곱에 비례한다~
fi(Ω)=[0 0 cl⋅Ω2]Tτi(Ω)=[0 0 cd⋅Ω2]T
-
여기서 cl은 thrust coefficient, cd는 drag coefficient → 모두 실험으로 결정.
-
kmot 값도 실험을 통해 얻어낼 수 있다.
-
dynamics 계산은 1ms time step으로 구현된다.
Dynamics 활용 예시
드론 시뮬레이션 설계 예시
인터페이스 → FC → Dynamics → Simulator → …
-
시뮬레이션 상에서 사용자가 드론을 비행하고 싶다고 해보자.
→ 시뮬레이터 인터페이스를 통해 velocity command, position command 등을 준다
-
이 명령은 FC로 들어감
→ FC에서는 보통 state feedback을 이용한 cascade pid 구조 제어기를 통해 motor speed command 계산
- Motor speed command는 dynamics model의 입력으로 사용됨
→ first-order motor dynamics를 통해 실제 모터 속도를 계산
→ 프로펠러 force / torque 모델을 통해 thrust 및 torque를 계산
→ 해당 힘과 토크를 이용하여 Rigid-body dynamics 정의
→ 수치 적분 수행하여 다음 시점의 state를 계산
- 다음 state가 계산되면 이 state를 기반으로 시뮬레이터는 드론의 위치나 자세, 속도 등을 업데이트 해준다.
- 새로운 pose를 기반으로 시뮬레이션 CG로 이미지를 rendering할 수도 있고, sensor를 simulation할 수도 있다.
- 센서 시뮬레이션 결과는 상태 추정 모듈을 통해 다시 FC로 전달되며, FC는 이를 제어 입력 생성에 활용
→ 반복