모터 속도 분배 알고리즘

signer do·2024년 1월 4일
1

드론제어

목록 보기
2/3

1. Roll의 균형 값과 모터 속도

1.1 Roll의 균형 값과 모터 속도


드론의 후면을 본 그림이다. 드론이 전진하는 방향이 X축이다. 즉 그림에서 들어가는 축이 x축 +방향. 드론이 ROLL이 시계방향으로 기울어져있기 때문에 θroll\theta_{roll}>0이다. 이때 원래 수평으로 되돌아올려면, AD 모터의 속도가 줄고, BC 모터의 속도가 늘어야. BC 쪽 알짜 돌림힘이 강해져 원래 수평으로 돌아온다.


드론이 ROLL이 반시계방향으로 기울어져있기 때문에 θroll\theta_{roll}<0이다. 이때 원래 수평으로 되돌아올려면, AD 모터의 속도가 늘고, BC 모터의 속도가 증가해야. AD 쪽 알짜 돌림힘이 강해져 원래 수평으로 돌아온다.

θroll\theta_{roll} > 0이면 수평을 맞춘다고 했을 때
Error=setPointInputError=setPoint - Input
Error=0θrollError=0-\theta_{roll} <0이다.
즉 Roll의 균형 힘 값은 음수가 되어야 하므로
Rollbalancing<0Roll_{balancing}<0으로 표현한다.

Roll의 균형 힘A, D프로펠러B, C프로펠러
Rollbalancing<0Roll_{balancing}<0AD 속도 감소BC 속도 증가
Rollbalancing>0Roll_{balancing}>0AD 속도 증가BC 속도 감소

1.2 Pitch의 균형 값과 모터 속도


드론의 옆면을 본 그림이다. 드론이 전진하는 방향이 X축이다. 그림에서 들어가는 축은 Y축 +방향. 드론이 Pitch이 시계방향으로 기울어져있기 때문에 θpitch\theta_{pitch}>0이다. 이때 원래 수평으로 되돌아올려면, AB 모터의 속도가 늘고, BC 모터의 속도가 감소해야. AB 쪽 알짜 돌림힘이 강해져 원래 수평으로 돌아온다.


드론의 Pitch가 반시계방향으로 기울어져있기 때문에
θpitch\theta_{pitch}<0이다. 이때 원래 수평으로 되돌아올려면, AB 모터의 속도가 줄고, CD 모터의 속도가 증가해야. CD 쪽 알짜 돌림힘이 강해져 원래 수평으로 돌아온다.

θpitch\theta_{pitch} > 0이면 수평을 맞춘다고 했을 때
Error=setPointInputError=setPoint - Input
Error=0θpitchError=0-\theta_{pitch} <0이다.
즉 Pitch의 균형 힘 값은 음수가 되어야 하므로
Pitchbalancing<0Pitch_{balancing}<0으로 표현한다.

Pitch의 균형 힘A, B프로펠러C, D프로펠러
Pitchbalancing<0Pitch_{balancing}<0AB 속도 증가BC 속도 감소
Pitchbalancing>0Pitch_{balancing}>0AB 속도 감소BC 속도 증가

1.3 Yaw의 균형 값과 모터 속도

드론의 윗면을 본 그림이다. 드론이 전진하는 방향이 X축. 그림에서 들어가는 축은 Z축 -방향. 드론을 Yaw가 반시계방향으로 회전하고 싶다면, AC 모터의 속도가 늘고, BC 모터의 속도가 감소해야. 각운동량 보존 법칙에 의해서 프로펠러의 알짜 각속도가 시계방향이기에 드론이 반시계방향으로 회전한다.

  • θyaw\theta_{yaw}>0으로 회전하고 싶다면 Yawbalancing<0Yaw_{balancing}<0이어야 하고 AC 속도 증가, BD 속도 감소.

드론을 Yaw가 시계방향으로 회전하고 싶다면, BD 모터의 속도가 늘고, AC 모터의 속도가 감소해야. 각운동량 보존 법칙에 의해서 프로펠러의 알짜 각속도가 반시계방향이기에 드론이 시계방향으로 회전한다.

  • θyaw\theta_{yaw}<0으로 회전하고 싶다면 Yawbalancing>0Yaw_{balancing}>0이어야 하고 AC 속도 감소, BD 속도 증가.
Yaw의 균형 힘A, C프로펠러B, D프로펠러
Yawbalancing>0Yaw_{balancing}>0AC 속도 증가BD 속도 감소
Yawbalancing>0Yaw_{balancing}>0AC 속도 감소BD 속도 증가

A의 속도가 증가해야 하는 경우

  • Rollbalancing>0Roll_{balancing}>0
  • Pitchbalancing<0Pitch_{balancing}<0
  • Yawbalancing>0Yaw_{balancing}>0

B의 속도가 증가해야 하는 경우

  • Rollbalancing<0Roll_{balancing}<0
  • Pitchbalancing<0Pitch_{balancing}<0
  • Yawbalancing<0Yaw_{balancing}<0

C의 속도가 증가해야 하는 경우

  • Rollbalancing<0Roll_{balancing}<0
  • Pitchbalancing>0Pitch_{balancing}>0
  • Yawbalancing>0Yaw_{balancing}>0

D의 속도가 증가해야 하는 경우

  • Rollbalancing>0Roll_{balancing}>0
  • Pitchbalancing>0Pitch_{balancing}>0
  • Yawbalancing<0Yaw_{balancing}<0

throttle은 드론이 상승하기 위해 필요한 프로펠러 회전

motorA_speed = throttle + roll_balancing - pitch_balancing + yaw_balancing;
motorB_speed = throttle - roll_balancing - pitch_balancing - yaw_balancing;
motorC_speed = throttle - roll_balancing + pitch_balancing + yaw_balancing;
motorD_speed = throttle + roll_balancing + pitch_balancing - yaw_balancing;
profile
Don't hesitate!

0개의 댓글