카테고리 없음

PX4 의 구동기 유효력 분석을 통한 가변피치 틸트로터 조종면 할당기 설계

bu_ctrlMan 2023. 11. 12. 12:13
반응형

 

 

ActuatorEffectivenessRotors.cpp

단일 로터에 대한 구동기 유효력을 정의한다. 

모터 특성은 다음 파라미터와 같이 정의된다. [1]

Parameter Names Descriptions Symbol
CA_ROTOR[X]_AX 동체 축 좌표계 상에서 정의한
로터의 추력 벡터
Thrust vector of rotor
defined on Body frame
${\vec{e}_t}$
CA_ROTOR[X]_AY  
CA_ROTOR[X]_AZ  
CA_ROTOR[X]_PX 동체 축 좌표계 상에서 정의한
로터의 위치
Position of rotor
defined on Body frame
${\vec{p}_m}$
CA_ROTOR[X]_PY  
CA_ROTOR[X]_PZ  
CA_ROTOR[X]_CT 로터의 추력 계수이고,
아래와 같이 정의된다.
Thrust coeff. of rotor
$T = c_t * u^2 $
$c_t$
CA_ROTOR[X]_KM 로터의 모멘트 계수이고,
아래와 같이 정의된다.
자이로 모멘텀은 따로 계산한다.
Moment coeff. of rotor
$M = k_m T$
$k_m$
CA_ROTOR[X]_TILT    

 

 

uint32_t updateAxisFromTilts(tilts, collective_tilt_control)

 : 틸트 모터라면 틸트 각도를 ${\vec{e}_t}$에 틸트 각도를 반영한다. : tiltAxis()

 : 틸트 하지 않는 모터는 마스크를 남긴다.

int number_of_actuators = computeEffectivenessMatrix(motor_geometry, effectivenss_matrix, actuator_start_index)

 : 각 모터에 대한 effectiveness vector를 계산한다.

유효 값이라는 것은 실제 추력이 그렇다는 것이 아닌, 다른 값에 대한 스케일 값이라고 이해하면 편하다.

 

유효 추력 벡터 (Thrust Effectiveness Vector)

${\vec{E}}_t = c_t {\vec{e}_t}$

유효 모멘트 벡터 (Moment Effectiveness Vector, 2nd term is about conservation of angular momentum)

${\vec{E}}_m = - k_m {\vec{E}_t} + c_t {\vec{p}_m}\times {\vec{e}_t}$

유효 벡터 (Effectiveness Vector)

${\vec{E}} = \left[ \vec{E}_m, \vec{E}_t \right]$

 

bool addActuators(configuration)

 : effectiveness vectors를 모은다 :  computeEffectivenessMatrix(_geometry, configuration)

 : 모터를 구동기로써 추가한다. actuatorsAdded(number_of_actuators)

 

bool getEffectivenessMatrix(configuration, external_update)

 : addActuators(configuration) with external_update

 

 

Reference 구조

Lv.1 Lv.2
TiltrotorVTOL Rotors
  Tilts
  ControlSurfaces

 

 

ActuatorEffectivenessHelicopter.cpp

헬기 형태의 구동기 유효력을 정의한다. [1]

Parameter Names Descriptions Symbol
CA_SP0_COUNT Swash plate에 사용하는 서보 갯수 (~4개)  
CA_SP0_ARM_L[X] Swash plate 서보 [X] 번 Arm의 상대 길이 (~4개)  
CA_SP0_ANG[X] Swash plate 서보의 각도 위치  
CA_HELI_THR_C[X] 정규화된 Z축 방향 가속도 명령에 대한 정규화된 추력 보간 점
가속도 명령이 0~1 범위 일 때의 정규화된 추력 점을 5개로 표현한다. (0, 25, 50, 75, 100%)
 
CA_HELI_PITCH_C[X] 정규화된 Z축 방향 가속도 명령에 대한 정규화된 Collective Pitch 각도 보간 점
가속도 명령이 0~1 범위 일 때의 정규화된 콜렉티브 피치 점을 5개로 표현한다. (0, 25, 50, 75, 100%)
 
CA_HELI_YAW_CP_S 콜렉티브 피치에 대한 yawing 보상을 위한 스케일
tail_output += CA_HELI_YAW_CP_S * abs(collective_pitch - CA_HELI_YAW_CP_O)
 
CA_HELI_YAW_CP_O 콜렉티브 피치에 대한 yawing 보상을 위한 오프셋  
CA_HELI_YAW_TH_S 쓰로틀에 대한 yawing 보상을 위한 스케일
tail_output += CA_HELI_YAW_TH_S * throttle
 
CA_HELI_YAW_CCW 로터 회전 방향이 CCW 인지?  
COM_SPOOLUP_TIME Arming하고 거동을 하기 전까지 강제 시간 지연
로터가 idle speed으로 거동하도록 기다리는 시간
 

 

 

 

Reference 구조

Lv.1 Lv.2
Helicopter  

 

 

ActuatorEffectivenessMultirotor.cpp

참고할 겸 찾아본다.

Reference 구조

Lv.1 Lv.2
Multirotor Rotors

 

 

ActuatorEffectivenessFixedWing.cpp

참고할 겸 찾아본다.

Reference 구조

Lv.1 Lv.2
FixedWing Rotors
  ControlSurfaces

 

 

 

 

설계안 : ActuatorEffectivenessMultiTiltRotor.cpp

설계하면..

Reference 구조

Lv.1 Lv.2 참고할 파일
MultiTiltRotor VariablePitchRotor ActuatorEffectivenessHelicopter.cpp
  Tilts ActuatorEffectivenessTilts.cpp
  ControlSurfaces ActuatorEffectivenessControlSerfaces.cpp

 

 

 

Reference

1) https://dev.px4.io/master/en/advanced/parameter_reference.html

 

 

EOF

728x90