'비행콘트롤러'에 해당되는 글 54건

  1. 2017.03.29 고정익의 비행모드 (2)
  2. 2017.01.22 PID 제어기
  3. 2016.12.16 Pixhawk에서 서보 제어하는 방법 (6)
  4. 2016.11.07 Pixhawk 2.1의 기능
  5. 2016.09.20 클린플라이트 설정 - PID 튜닝 - PID Tuning
  6. 2016.09.20 클린플라이트 설정 - 원샷 - Oneshot
  7. 2016.09.20 클린플라이트 설정 - 보드 - SPRacing F3 Evo
  8. 2016.09.20 클린플라이트 설정 - 믹서 - Mixer
  9. 2016.09.20 클린플라이트 설정 - 보드 - Chebuzz F3
  10. 2016.09.20 클린플라이트 설정 - 보드 - Olimexino
  11. 2016.09.20 클린플라이트 설정 - 보드 - CJMCU
  12. 2016.09.20 클린플라이트 설정 - 보드 - CC3D
  13. 2016.09.20 클린플라이트 설정 - 보드 - AlienFlight
  14. 2016.09.20 클린플라이트 설정 - 보드 - Paris Air Hero 32 / Acro Naze 32 Mini
  15. 2016.09.20 클린플라이트 설정 - 보드 - AbuseMark Naze32
  16. 2016.09.20 클린플라이트 설정 - 보드 - RMRC DoDo
  17. 2016.09.19 클린플라이트 설정 - 보드 - MotorLab
  18. 2016.09.19 클린플라이트 설정 - 보드 - Sparky
  19. 2016.09.19 클린플라이트 설정 - 보드 - TBS Colibri RACE
  20. 2016.09.19 클린플라이트 설정 - 보드 - Board - Seriously Pro SP Racing F3
  21. 2016.09.18 클린플라이트 설정 - 보드 - Seriously Pro SP Racing F3 Mini
  22. 2016.09.18 클린플라이트 설정 - 비행 콘트롤러 하드웨어 - Flight Controller Hardware
  23. 2016.09.18 클린프라이트 설정 - Baseflight에서 전환하기 - Migrating from baseflight
  24. 2016.09.16 클린플라이트 설정 - 블랙박스 비행데이터 기록기 - Blackbox flight data recoder
  25. 2016.09.13 클린플라이트 설정 - G튜닝 사용법 - G tune instructions
  26. 2016.09.13 클린플라이트 설정 - 제어 - Controls
  27. 2016.09.12 클린플라이트 설정 - 비행중 조정 - In-flight Adjustments
  28. 2016.09.12 클린플라이트 설정 - 비행 모드 - Modes
  29. 2016.09.11 클린플라이트 설정 - 프로필 - Profiles
  30. 2016.09.11 클린플라이트 설정 - 초음파 센서 - Sonar
드론/쿼드콥터2017. 3. 29. 14:32

비행모드 (Flight Modes)


개요

Plane에는 다양한 비행모드가 있다. 어떤 비행모드와 어떤 옵션을 선택하느냐에 따라, 간단한 비행 안정화 시스템으로 작동할 수도 있고, 복잡한 자동주행, 교습용 시스템 또는 비행안전시스템 등으로 작동된다.


비행모드는 Radio 송신기 스위치, 미션 명령 또는 지상국 또는 보조 컴퓨터의 명령을 통해 제어된다. 


주요비행모드

  • 매뉴얼 MANUAL
  • STABILIZE 
  • FLY BY WIRE_A (FBWA) 
  • FLY BY WIRE_B (FBWB) 
  • AUTOTUNE 
  • TRAINING 
  • ACRO 
  • CRUISE 
  • AUTO 
  • Return To Launch (RTL) 
  • LOITER 
  • CIRCLE 
  • GUIDED

미션 관련 비행모드

AUTO 미션으로 날릴 때, 미션 아이템을 설정할 수 있는 sub-모드가 있다. 두가지 주요한 서브모드가 TAKEOFF와 LAND이다.

  • MANUAL
  • STABILIZE
  • FBWA (FLY BY WIRE_A) 
  • FBWB (FLY BY WIRE_B) 
  • AUTOTUNE 
  • TRAINING
  • ACRO
  • CRUISE
  • AUTO
  • RTL(Return To Launch)
  • LOITER
  • CIRCLE
  • GUIDED
  • TAKEOFF
  • LAND


주요비행모드


아래의 모든 비행모드에는 추가적인 제어를 통해 특정 비행 목적에 맞도록 거동을 변경시킬 수 있다. 아래에 있는 기본적인 정보를 읽은 후에는 비행기 변수(Plane parameter)를 잘 살펴서 전체 기능에서 어떤 것이 가능한지를 확인해 보는 것이 좋다.


MANUAL 모드

일반적인 RC 콘트롤. 안정화 없음. 모든 RC 입력이 바로 출력으로 전달됨. 출력이 입력과 다른 경우는 다음과 같음.

    • 비상안전 혹은 geofence가 실행되어, Plane이 제어를 가져갈 때
    • [VTAIL_OUTPUT]이 활성화되어 있다면, 소프트웨어 VTAIL 믹서가 출력에 적용됨
    • [ELEVON_OUTPUT]이 활성화되어 있다면, 소프트웨어 Elevon 믹서가 출력에 적용됨


STABILIZE 모드

간단한 안정화가 지원되는 RC 콘트롤. 스틱에서 손을 떼면 기체가 평형을 잡게 된다. 상반각(dihedral)이 큰 비행기를 날리는 것과 얼추 비슷하다. STABILIZE 모드 에서도 롤링/루프 와 같은 기동이 가능하지만, 기체를 바로잡으려는 경향이 있어 이러한 기동이 어렵다. 비행기가 주로 알아서 날라주길 원하는 사람의 경우, 어디로 날라가야 할지만 알려주는 경우, FLY BY WIRE_A(FBWA) 모드를 사용하는 것이 좋다.


STABILIZE 모드에서 쓰로틀은 [THR_MIN]과 [THR_MAX] 설정 내에서만 작동된다.


참고 : STABILIZE 모드는 contorl loop 를 튜닝하는 용도로 좋지 않다. 그 용도로는 FLY BY WIRE_A (FBWA) 를 사용하는 것이 좋다.


FBWA(Fly by wire_A)

Plane의 지원을 받는 모드중 가장 인기있는 모드로서, 초보자들에게 가장 좋은 모드이다. 이 모드에서는 제어스틱에서 지정한 roll 과 pitch 각을 고정한다. 따라서 aileron 스틱을 오른쪽 끝까지 밀 경우, 비행기는 피치 레벨이 고정되고 [LIM_ROLL_CD]에서 지정한 각도(centi degree)로 오른쪽으로 기울어진다. 이 제한 각도 이상으로 비행기를 더 넘기는 것은 불가능하며, 비행기의 기수를 [LIM_PITCH_MAX], [LIM_PITCH_MIN] 설정 이상으로 올리거나 내리는 것도 불가능하다.


참고로 피치값을 0으로 유지한다고 하여 비행기가 고도를 유지하는 것은 아니다. 고도가 올라갈지 내려갈지는 기체의 속도에 달려있으며, 이는 주로 Throttle에 의해 제어된다. 따라서 고도를 올리려면 Throttle을 밀어야 하고, 고도를 떨어뜨리려면 Throttle을 낮춰야 한다. Plan이 고도까지 알아서 처리하도록 하려면 FlyByWireB 모드를 보라.


FBWA모드에서 throttle은 수동제어되지만, [THR_MIN] 과 [THR_MAX] 이내에서만 가능하다.


FBWA 모드에서 방향타(rudder)는 수동 + 미리 설정해둔 rudder 믹싱에 의해 제어된다. 따라서 방향타를 ground steering에 사용할 수 있으며, 자동으로 조정되는 회전(coordinating turns)에도 사용된다.


FBWB(Fly by wire_B)

FBWB는 FBWA와 비슷하지만, Plane에서 고도도 유지한다. Roll 제어는 FBWA와 동일하며, 고도는 승강타(elevator)로 제어된다. 목표 속도는 throttle을 사용하여 제어된다.


FBWB 모드에서 고도를 제어하려면 승강타를 사용하여 고도의 변화를 요청한다. elevator에서 손을 떼면 Plane은 현재의 고도를 유지하려고 시도한다. elevator를 이동시키면 움직인 거리에 비례하여 고도를 올리거나 내린다. elevator를 완전히 넣었을 때 얼마나 고도가 올라갈지는 [FBWB_CLIMB_RATE] 변수에 따르며, 그 기본값은 2 m/sec 이다. 참고로 2 m/sec 은 상당히 느린 변화로, 고도변화의 반응성을 높이기 위해 많은 사용자들이 [FBWB_CLIMB_RATE] 값을 올리고 있다.


elevator 스틱을 당겼을 때 고도를 올릴 것인지 스틱을 밀었을 때 고도를 올릴 것인지는 [FBWB_ELEV_REV]  변수 설정에 따른다. 기본값은 elevator를 당겼을 때 고도가 올라간다. 이는 일반적인 RC 모델의 반응 방향과 일치한다. 반대방향이 편하다면 FBWB_ELEV_REV를 1로 두면, FBWB 모드에서 elevator 가 반대로 된다.


참고로, elevator 스틱은 pitch를 제어하지 않고, 목표 고도를 제어한다.  요청된 상승/하강률을 달성하는데 사용되는 pitch의 양은 TECS 튜닝 설정에 따딸 달라지지만, 일반적으로 비행콘트롤러는 기체를 상당히 수평으로 유지하려고 하면서 주로 Throttle을 사용해 상승 또는 하강한다. 이는 pitch를 직접 조정하는 FBWA 모드에 익숙한 사람들에게는 당황스럽다. 


airspeed 센서가 있을 경우, throttle은 목표 속도를 [ARSPD_FBW_MIN]에서 [ARSPD_FBW_MAX] 범위 내로 제어한다. Throttle의 최소로 되면 비행기는 [ARSPD_FBW_MIN] 으로 비행하려고 시도하며, Throttle이 최대로 되면 [ARSPD_FBW_MAX] 로 비행하려고 시도한다.


airspeed 센서가 없을 경우, Throttle은 기체의 목표 Throttle을 설정하고, Plane은 적절한 고도유지를 위해 이 설정 내외로 Throttle을 조정한다. Throttle 스틱은 빠른 비행을 위하여, 필요하다고 계산된 값 이상으로 목표 Throttle 이상으로 올리고자 할 때 사용될 수 있다.


FBWA와 마찬가지로 방향타(rudder)는 수동 제어 및 자동조정 회전(turn coordination)을 위한 자동 제어에 따른다.


CRUISE 모드를 참고하라. 대체로 FBWB보다 CRUISE 모드가 더 낫기 때문이다. 특히 바람이 심할 때 그러하다. CRUISE 모드에서는 보조날개(aileron) 스틱으로 아무런 roll을 입력하지 않을때, 단순히 날개를 수평으로 유지하는 대신 ground track을 유지하는 방식이다.


AUTOTUNE

AUTOTUNE 모드는 FLY_BY_WIRE_A(FBWA)와 동일한 방식으로 비행하나, roll/pitch에 대한 이득을 자동 튜닝한다. 자세한 내용은 AUTUTUNE 문서를 확인할 것


TRAINING

TRAINING 모드는 학생들에게 수동 R/C 제어를 가르치기에 가장 이상적이다. 사용자가 rudder 와 throttle에 대해 완전한 제어가 가능하지만, 최대 roll 과 최대/최소 pitch를 제한하여 그 이상 초과하지는 못한다. Plane 3.4 부터는 TRAINING 모드에서 Stall Prevention(실속 방지) Roll 한계도 제한한다.


좀더 자세하게 설명하면 다음과 같다.

    • Roll 이 [LIM_ROLL_CD] 변수보다 작다면, 조종사가 roll을 수동으로 제어함. 이 한계를 넘어서 roll 을 하려고 시도하면 roll 이 그 한계로 고정된다. 비행기가 자동으로 수평으로 돌아오지 않지만, 그 한계는 넘을 수 없다. 피치도 마찬가지다. [LIM_PITCH_MIN] 또는 [LIM_PITCH_MAX] 한계에 도달하기 전까지는 조종사가 수동으로 제어하지만, 이 한계를 넘어갈 수 없다.
    • 회전을 할때는 비행콘트롤러가 요청된 기울임 각도(bank angle)와 대기 속도를 감시한다. 요청된 기울임 각도가 실속속도 이상으로 충분하다면 그냥 진행된다. 그렇지 않다면 기울임 각도가 안전한 값으로 제한된다. 실속방지 시스템에서는 최소 25도까지 기울임을 허용한다. (대기속도 추정이 아주 나쁘더라도 계속 기동이 가능하도록 하기 위해)
    • 방향타(rudder)와 Throttle은 완전히 사용자가 수동으로 제어할 수 있다.


ACRO

ACRO(acrobatic)은 고급 사용자용 모드로서, attitude lock 이 있는 rate 기반의 안정화를 제공한다. (MANUAL 은 피하면서도) FBWA 나 STABILIZE 모드보다는 더 강하게 밀고 싶은 사람들에게 좋은 선택이다. --- 이하 생략 ---


CRUISE

CRUISE 모드는 FBWB 모드와 약간 비슷하지만, "방향 고정(heading lock)" 기능이 있다. 장거리 FPV 비행에 이상적인 모드이다. 멀리에 있는 물체를 가르키면 정확하게 그 물체를 추적해 가면서 자동적으로 고도, 대기속도 및 방향을 유지한다. --- 이하 생략 ---


AUTO

AUTO 모드는 지상국에서 설정한 미션(GPS 웨이포인트 및 기타 명령)을 따르는 모드이다. AUTO 모드에 들어가면 미션을 재설정하지 않는 이상 최종 수행했던 미션 항목으로부터 다음 항목을 수행한다.


AUTO 모드에서는 기본적으로 조종자가 "stick mixing"을 사용하여 비행에 영향을 미칠 수 있다. 즉 보조익, 승강타, 방향타 입력을 사용하여 FC의 제어를 덮어쓰는 방식으로 비행기를 조종한다. 이 기능은 [STICK_MIXING] 옵션에 의해 결정된다. 기본적으로 stick 믹싱은 FBWA 모드와 동일하게 작동된다.


주의사항 : 

"Home" 위치는 비행기의 실제 GPS 이륙 위치로 가정된다

1. RTL, Loiter, Auto 기타 GPS에 의존적인 모드가 정확하게 작동되려면, 시동을 걸기전 GPS 가 고정되어야 한다.

2. Plane의 경우, 홈 위치는 GPS가 고정된 시점에 최초로 설정된다. 시동해제 될 때까지 계속 갱신된다. 

  - 즉, RTL을 걸면 시동을 건 지점으로 되돌아 온다.
  - 그 위치가 싫다면 랠리점을 설정하면 된다.


Return to Launch(RTL)


RTL 모드는 비행기가 "Home"위치 (비행기를 시동걸었을 때의 위치)로 되돌아가서 다른 명령이 올때까지(혹은 연료가 떨어질 때까지) Loiter 하게 된다. AUTO 모드와 마찬가지로 스틱 믹싱(Stick Mixing)을 사용하여 기체를 수동으로 제어할 수 있다. RTL 모드의 목표 고도는 [ALT_HOLD_RTL] 로 설정한다.


주의사항 : 

"Home" 위치는 비행기의 실제 GPS 이륙 위치로 가정된다

1. RTL, Loiter, Auto 기타 GPS에 의존적인 모드가 정확하게 작동되려면, 시동을 걸기전 GPS 가 고정되어야 한다.

2. Plane의 경우, 홈 위치는 GPS가 고정된 시점에 최초로 설정된다. 시동해제 될 때까지 계속 갱신된다. 

  - 즉, RTL을 걸면 시동을 건 지점으로 되돌아 온다.
  - 그 위치가 싫다면 랠리점을 설정하면 된다.


LOITER

LOITER 모드는 LOITER를 시작한 지점 주변을 선회한다. 고도는 처음 Loiter에 들어온 고도를 유지한다. 선회 반경은 [WP_LOITER_RAD] 변수로 제어하지만,  [NAV_ROLL_CD]와 [NAVL1_PERIOD]에 의해서 제한 받는다. RTL 및 AUTO 모드와 마찬가지로 스틱 믹싱을 사용하여 기체를 수동으로 제어할 수 있다. 


CIRCLE

LOITER 모드와 비슷하지만, 위치를 유지하려고 시도하지 않는다. 기본적으로 비상안전 모드에 사용되며, 비상안전 이벤트가 발생했을 때, RTL로 전환하기 전에 20초간 CIRCLE 모드로 대기한다.


CIRCLE 모드는 의도적으로 매우 보수적인 모드로서, GPS 위치에 의존하지 않는다. GPS가 정지되었을 때 사용되기 때문이다. 기울기 각도는 [LIM_ROLL_CD] /3 으로 설정되며, 가속도계 교정에 GPS 속도 데이터가 없이도 가능한한 안정을 유지하려고 시도한다.


CIRCLE 모드는 처음 선회를 시작한 고도를 유지하기 위해 Throttle 및 핏치 제어를 사용한다.


GUIDED

GUIDED 모드는 미션에서 설정하지 않고 지도상의 한점으로 비행체를 날라가도록 하는데 사용된다. 대부분의 지상국은 "Click to Fly to" 기능을 지원하는데, 여기에서 지도상에 한점을 클릭하면 비행체가 그 지점으로 날라간 후 LOITER 한다.


또다른 주요한 용도는 geo-fencing이다. geo-fence 를 침범하면 비행체는 GUIDED 모드로 들어가서 미리 정해둔 geo-fence 회귀점으로 향하고, 조종자가 제어권을 받을 때까지 LOITER 선회하게 된다.


TAKEOFF

자동 이륙은 미션콘트롤에서만 설정할 수 있다. 이륙 미션은 이륙 핏치와 목표 고저를 지정할 수 있다. 이륙동안, 기체은 THR_MAX에서 지정된 최대 쓰로틀을 사용하여 이륙한다. 이륙미션은 고정익이 지정한 목표고도에 도달했을 때 완료된 것으로 간주된다.


이륙전, 기체가 바람을 향하고, 활주로 방향으로 정렬(wheedled takeoff시)하는 것이 중요하다. 기체는 이륙동안 최초의 비행기 방향을 기준으로 방향을 유지하려고 시도한다. 자동 이륙을 위해서는 전자나침판을 정확하게 교정하고 활성화하는 것이 좋다. GPS 방향은 잘못된 방향으로 이끌기 쉽기 때문이다.


바퀴달린 비행기를 사용할 경우, ground steering 제어를 위하여 WHEELSTEER_* PID 설정을 확인해야 한다. 손으로 이륙시키거나 catapult를 사용할 경우, TKOFF_THR_MINACC 와TKOFF_THR_MINSPD 매개변수를 확인하라.


LAND 

자동 착륙은 미션 콘트롤에서만 사용할 수 있다. 비행콘트롤러가 쓰로틀과 고도를 제어한다. 목표 고도로 부터 LAND_FLARE_ALT 미터만틈 가까워지거나, 목표 착륙점으로부터 LAND_FLARE_SEC초 이내이면, 기체는 LAND_PITCH_CD 피치각(centi degree)로 "flare"하고 마지막 접근을 위해 방향을 고정한다.


안정적인 자동 이착륙을 설정하는 것은 기체에 따라 아주 달라지며, 먼저 기체를 FBWA모드로 날리면서 경험을 쌓은 후, 매뉴얼이나 FBWA모드에서 제어를 넘겨받기
Setting up Plane for reliable auto-takeoff and landing is very airframe dependent, and it is recommended that you first get some experience flying your aircraft in FBWA mode, and be ready to take over control in manual or FBWA mode the first few times you use an automatic takeoff or landing.

아울러 전체 파라미터 목록을 살펴보아야 한다. 여러가지 상황에서 이착륙을 제어할 수 있는 매개변수가 많이 있기 때문이다.


===

원문 : http://ardupilot.org/plane/docs/flight-modes.html


이전글 : http://www.internetmap.kr/entry/arming-your-plane


다음글 : http://www.internetmap.kr/entry/Plane-Tuning


Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

  1. 픽스 호크 plane을 공부하고있습니다.
    미션플레너에서 웨이포인트 설정하고 RTL기동까지 확인 하고나서
    오토 모드를 실행하면 설정한 웨이포인트에 진입을 하지 못하고 계속 주위를 도는 기동을 합니다.
    화면상에 컴퍼스 관련 에러는 없는데 할때마다 이런경우가 있어
    다음 단계로 넘어가지 못하고 있습니다.
    혹 설정에서 제가 빠트린 부분이나 반드시 체크 해야 하는 포인트가있으면 조언 부탁드립니다.

    2016.12.26 13:07 [ ADDR : EDIT/ DEL : REPLY ]
    • 확실하지는 않습니다만, compass calibration이 제대로 안되면 "toilet bowling" 이라고 하여, 한자리에서 뱅뱅 도는 현상이 생긴다고 합니다. 참고하세요~

      2016.12.27 09:31 신고 [ ADDR : EDIT/ DEL ]

드론/쿼드콥터2017. 1. 22. 12:37

PID 제어기(PID Controller)

비례-적분-미분 제어기(PID 제어기)산업 제어시스템에서 널리 사용되는 제어루프(Control loop) 피드백 기법(feedback mechanism)이다. PID 제어기는 끊임없이 원하는 설정값(setpoint)와 측정된 프로세스 변수간의 차이인 오차값 e(t)을 계산하고, 비례항(proportional), 적분항(integral), 미분항(derivative) (각각 P,I,D 라고 표시함)에 기반한 보정량을 적용하는 구조이다. 

기본 동작(Fundamental operation)


PID 제어기는 끊임없이 원하는 설정값(setpoint)와 측정된 프로세스 변수간의 차이인 오차값 e(t)을 계산하고, 비례항(proportional), 적분항(integral), 미분항(derivative) (각각 P,I,D 라고 표시함)에 기반한 보정량을 적용한다. 

PID 제어피드백 루프내에 있는 PID 제어기 블록 다이어그램. r(t)는 목표 프로세스값 혹은 "설정값"이며, y(t)는 측정된 프로세스값이다.

PID 제어기는 제어값(control value) u(t)를 조정함으로써 시간에 따라 오류를 최소화시키는 방식이다. 여기서 제어값은 제어밸브의 위치, 완충기, 열기기에 공급된 전원 등으로서, 새로운 값은 다음과 같은 세개 항의 가중합에 의해 결정된다.

여기에서 Kp, Ki, Kd 등은 모두 음이 아닌, 비례항, 적분항, 미분항의 계수를 의미하며, 각각 P, I, D 라고 표시하기도 한다. 이 모델에서

  • P 오류의 현재값을 설명한다. 예를 들어, 오류가 크고 양수라면, 제어출력도 크고 양수이다.
  • I는 오류의 과거값을 설명한다. 예를 들어, 현재출력이 충분이 강하지 않다면, 오류의 적분은 시간에 따라 축적되고, 제어기는 더 강한 action을 적용하는 것으로 반응을 한다.
  • D는 현재의 변화율에 기반하여 오류의 가능한 미래 경향을 설명한다.

PID 제어기는 측정된 프로세스 변수만 관계하고, 기저를 이루는 프로세스에 대한 지식과는 관계 없으므로, 널리 적용할 수 있다. 이 모델의 세개의 매개변수를 튜닝하면, PID 제어기는 특정 프로세스 요구사항을 처리할 수 있다. 제어기의 반응은 오류에 대한 반응성, 시스템 설정값에 대한 오버슛(overshoot) 정도, 시스템의 진동 정도 등의 항으로 설명할 수 있다. PID 알고리듬을 사용한다고 해서 시스템의 최적 제어안정성을 보장하는 것은 아니다.

일부 응용분야에서는 하나 또는 두개의 항만 이용하여 시스템 제어를 수행하기도 한다. 나머지 매개변수를 0으로 두는 방법이다. 어떤 제어항이 없느냐에 따라 PI, PD, P 또는 I 제어기로 불러진다. 미분항이 잡음 측정에 민감하기 때문에, PI 제어기는 상당히 흔한 편이나, 적분항이 없을 경우에는 목표값에 도달할 수 없는 경우가 발생할 수 있다.

이산형 시간(discrete-time) 시스템의 경우, PSD(비례-합-차(proportional-summation-difference))라는 용어가 널리 사용된다.

역사와 응용


기원(Origin)

PID 제어기의 기원은 19세기 속도 조정기(speed governor) 설계이다. 속도조정기의 작동을 위한 이론적 기반은 제임스 클락 맥스웰(James Clerk Maxwell)의 1868년 세미나 논문 "On Governors"에서 최초 기술되었으나, 1922년에 이르러서야, 러시아출신 미국인 엔지니어 니콜라스 미노스키(Minorsky 1922)가 이론적 분석을 이용하여 자동선박조향을 위한 PID 제어기를 최초로 개발하였다. 미노스키는 미 해군용 자동조향시스템을 설계중이었는데, 선박 키잡이를 관찰한 자신의 분석에 기반하여, 키잡이가 현재 경로 오류에만 기반하는 게 아니라, 과거의 오류 및 현재의 변화율까지 이용해 선박을 조향한다고 언급하였다. 

Scross 키잡이초기 PID 이론은 키잡이가 바람이나 바다의 상태와 같은 변화하는 영향하에서 선박의 방향을 유지하는 키잡이의 행동을 관찰함으로써 개발되었다.

미노스키는 이것을 수학적으로 정리하였다. 그의 목표는 일반적인 제어가 아닌, 문제를 상당히 간단하게 만들 수 있는 안정성이었다. 비례 제어가 작은 교란에 대해서는 안정성을 제공하지만, 지속적인 교란, 특히 (지속상태 오류(steady-state error)로 인한) 강풍을 처리하는데는 불충분하여, 적분항을 추가하는 게 필요하였다. 마지막으로 안정성과 제어를 향상시키기 위하여 미분항이 추가되었다.

USS 뉴 멕시코호에 시범 적용되었는데, 제어기는 Rudder의 각속도(각이 아님)를 제어하였다. PI 제어는 지속적으로 ±2°의 각 오류를 산출하였다. D 항을 추가하자, ±1/6°의 각 오류를 산출하여, 대부분의 키잡이들의 성과보다 뛰어났다.

하지만 미해군은 궁극적으로 사람들의 저항으로 인해 이 시스템을 적용하지 않았다. 1930년대에 비슷한 작업이 수행되었고, 비슷한 성과가 출판되었다.

초기 적용 사례중 하나로, 1911년 Elmer Sperry가 개발한 PID 형 제어기가 있었지만, 그의 작업은 수학적 기반이 아니라, 직관적인 성과였다.

산업적 제어기 개발(Industrial Controller Development)

자동 PID 프로세스 제어의 초기 역사에서 최초의 제어기는 압축공기(pneumatic) 기기로서, 격막 작동 밸브와 같이 압축 공기를 제어기 출력 계산 및 프로세스 제어기 양쪽으로 사용하였다. 이들 제어기는 노즐과 플래퍼 밸브(Nozzle and Flapper) 고이득 압축공기 증폭기 와 P, I, D 제어항을 생산하는 피드백을 사용하였다. 이들은 간단하고 관리가 간단한 기기로, 가혹한 산업환경에서도 잘 작동하고, 위험한 환경에서도 폭발 위험성이 없다. 이들은 이산 전자 제어기와 분산 제어 시스템이 등장하기 전까지 수십년 동안 산업 표준이었다.

압축공기 제어기압축공기 PID(3항) 제어기. P,I,D 3개항의 크기는 위에 있는 손잡이로 조정된다.

이들 제어기의 등장으로, 3-15 psi 표준의 압축공기 산업이 자리를 잡았고, 선형적인 특성내에서 작동하고, 제어 범위가 0-100%를 표현하는 기기를 보장하였다.??? 미터법으로는 0.2 - 1.0 bar에 상당한다.

1950년대 들어 고 이득 전자 증폭기가 저렴해지고 신뢰성이 높아짐에 따라, 전자 제어기가 널리 사용되게 되었으며, 4-20 mA 전류 루프 신호가 압축공기를 모방하여 사용되었다. 하지만, 현장 구동기(field actuator)는 현재에도 압축공기 표준을 널리 사용하고 있다. 플랜트 환경에서는 압축공기 동력을 사용한 제어밸브가 장점이 많기 때문이다.

프로세스 제어 신호의 진화아날로그 제어 루프 신호의 진화. 압축공기 시대에서 전자 시대로

스마트 전류 루프 포지셔너센싱 제어 전송에 사용되는 전류 루프 샘플. 현대의 "스마트" 밸브 포지셔너의 사용예를 보인다.

기타 응용(Other applications)

전자 아날로그 PID 제어루프는 좀 더 복잡한 전자 시스템에서 자주 발견된다. 디스크 드라이브의 헤드 위치, 파워 서플라이의 전원 조절, 현대 지진계의 이동감지 회로 등이 그 예이다. 오늘날 전자 제어기는, PID 알고릳듬을 수행하는 마이크로콘트롤러FPGA 등에 의해 수행되는 디지털 제어기로 대부분 대체되었다. 하지만 아날로그 PID 제어기는 레이저 다이오드 제어기와 같이 high-bandwidth, 저소음 성능이 필요한 일부 응용에서 여전히 사용되고 있다.

현재

대부분의 산업용 현대 PID 제어기는 분산제어환경(DCS)에서, 프로그램 로직 제어기(PLC) 또는 패널 마운트 디지털 제어기로서 구현된다. 소프트웨어 구현은, PID 알고리즘 구현에 있서 상대적으로 저렴하고 유연하다는 점에서 장점이 있다. PID 온도 제어기는 산업용 오븐, 플라스틱 사출기계, 열스탬프 기계, 포장 산업 등에서 적용되고 있다.

제어 루프 기본(Control loop basics)


로봇팔은 제어루프를 사용하여 원하는 위치로 이동시킬 수 있다. 전기 모터에 동력을 전후로 적용하면 로봇팔을 들거나 내릴 수 있고, 로봇팔의 관성질량, 중력에 의한 힘, 물건을 드는 등의 외부 힘을 보정하거나, 외부 물체에 일을 가하는 등이 필요할 수 있다.

감지된 위치는 프로세스 변수(PV : process variable)이다. 목표 위치는 설정값(SP, setpoint)이라고 한다. 프로세스에 대한 입력(모터에 공급되는 전류) 은 PID 제어기로부터 나오는 출력이다. 조작 변수(MV : manipulated variable) 또는 제어 변수(CV : control variable)이라고 한다. 오차(e)는 현재 위치와 설정값의 차이로, 로봇팔이 너무 높은지 낮은지, 얼마나 떨어져 있는지 등의 양이다.

위치(PV)를 측정하고, 설정값(SP)과의 차로부터 오류(e)를 구하고, 이로부터 제어기는 모터(MV)에 얼마나 많은 전류를 공급할 지 계산한다. 명백한 방법은 비례(proportional) 제어이다. 모터 전류를 오류에 비례하여 설정한다. 좀더 복잡한 제어에는 다른 항, 미분(derivative) 동작이 포함될 수 있다. 이것은 오류의 변화율을 고려하여, 오류가 얼마나 빨리 0에 접근하는지에 따라 전류를 더 많이 또는 더 적게 공급한다. 마지막으로 적분(integral) 동작이 세번째 항으로 추가되어, 과거 누적된 위치 오차를 통해 기계 팔의 위치가 너무 낫게 또는 너무 높게 있는지를 감지함으로써, 오류 뿐만 아니라 지속시간의 관계를 통해 전류를 설정한다. 또 다른 형태의 적분동작으로서, 전류 오류에 비례하는 고정된 작은 단계로 전류를 변화시키는 방법도 있다. 시간에 따라 이 단계가 과거의 오류에 따라 축적, 누적된다. 이것이 적분과 동등한 이산 시간(discrete-time) 이다.

오류가 작을 때 추동력(impetus)를 너무많이 적용하면, 오버슛(overshoot)이 발생한다. 오버슛 이후, 제어기가 반대방향으로 큰 보정을 적용하고, 이 결과 목표 위치에 또다시 오버슛이 발생하면, 출력은 설정값을 기준으로 진동한다. 일정한 크기이거나, 커지거나 작아지는 형태의 사인파가 된다. 진동의 크기가 시간에 따라 커지면 시스템은 불안정하다. 시간에 따라 줄어들면 시스템은 안정된다. 진동이 일정한 크기로 유지되면 시스템은 경계 안정적(marginally stable)이다.

적절한 시간에 원하는 지점(SP)에 정확하게 도착할 수 있도록 하기 위해, 제어 시스템은 임계 감쇠(critically damped)될 필요가 있다. 잘 튜닝된 위치제어 시스템은 또한, 원하는 위치로부터 멀어지려고하는 외력에 저항하는 데 필요하도록 전류를 적용하여 모터를 제어하게 된다. 설정값(setpoint) 그 자체는 PLC 혹은 다른 컴퓨터 시스템과 같은 외부 시스템에서 생성될 수 있으며, 로봇 팔이 해야할 일에 따라 끊임없이 달라질 수 있다. 잘 튜닝된 PID 제어시스템은 로봇팔이 이처럼 변경되는 요구조건에 최대한 만족하도록 한다.

제어기가 오류가 없는 (PV=SP) 안정상태에서 출발한다면, 이후의 제어기에 의한 변화는 프로세스에 영향을 주는 별도로 측정되거나 측정되지 않은 입력값의 변화에 대한 대응일 것이다. 조작변수(MV)가 아닌 프로세스에 영향을 미치는 변수는 교란(disturbances)라고 한다. 일반적으로 제어기는 교란을 제거하고, 설정값 변화를 이행하는데 사용된다. 로봇팔에 대한 하중변화는 로봇팔 제어 프로세스에 교란을 일으킨다. 

이론적으로 제어기는 측정가능한 출력(PV), 출력에 대한 이상적인 값(SP) 그리고 관련 PV에 영향을 미치는 입력값(MV)가 있는 어떠한 프로세스도 제어할 수 있다. 제어기는 산업현장에서 온도, 압력, 공급률, 흐름 속도, 화학적 조성, 무게, 위치, 속도, 기타 측정값이 존재하는 모든 변수를 조절하는데 사용된다. 

PID 제어기 이론


참고 : 이절에서는 parallel 혹은 non-interacting 형태의 PID 제어기를 다룬다. 다른 형태는 맨 아래에 있는 Alternative nomenclature and PID forms 를 참고하라.

PID  제어 구조의 이름은 조작변수(MV: manipulated variable)을 구성하는 세가지 교정항으로부터 유래되었다. 비례항, 적분항, 미분항은 모두 합쳐저셔 PID 제어기의 출력을 계산한다. 제어기 출력을 u(t)라고 하면, PID 알고리듬의 최종형태는 아래와 같다.

여기에서,

는 비례 이득 튜닝 파라미터

는 적분 이득 튜닝 파라미터

는 미분 이득 튜닝 파라미터

는 오류(SP는 설정값, PV(t)는 프로세스 변수)

는 시간 또는 현재

는 적분 변수. (시간 0 부터 현재 t까지의 값을 취한다)

결국 PID 제어기의 라플라스 도메인에서의 이전함수(transfer function)은 다음과 같다.

여기에서  는 복합 주파수이다.

비례항 (Proportional term)

비례항은 현재의 오류값에 비례하는 출력값을 생성한다. 비례 반응은 오류에 비례이득상수 Kp를 곱하여 조정할 수 있다.

비례항은 다음과 같다.

비례 이득이 높으면, 주어진 오차의 변화에 대하여 출력에 큰 변화를 일으킨다. 비례항이 너무 클 경우, 시스템은 불안정해진다. (자세한 내용은 루프 튜닝을 볼 것) 반대로 이득이 작아지면 큰 오류에 대해서도 출력이 작아지는 반응이 만들어짐으로써, 제어기의 반응성 또는 민감도가 떨어지게 된다. 비례 이득이 너무 낮을 경우, 시스템 교란에 대해 대응할 때, 제어가 너무 작아질 수 있다. 튜닝 이론과 산업에서의 실무에 따르면, 비례항은 출력변화의 상당부분을 차지해야 한다.

Steady-state 오류

PID 제어기를 운영하려면 오류가 0이면 안되므로, 비례 제어기는 일반적으로 소위 정상상태(steady-state) 오류로 작동한다. 정상상태 오류(SSE)는 프로세스 이득과 비례하며, 비례 이득에 반비례 한다. SSE는 설정값이나 출력에 보상하는 bias 항을 추가하여 완화시키거나, 동적으로 적분항을 추가하는 방법으로 보정한다.

PID 제어기, 비례 이득항세가지 Kp 값에 대한 시간에 따른 프로세스변수. Ki 및 Kd는 고정

적분항 (Integral term)

적분항은 오류의 크기 및 오류의 지속시간에 비례하여 크기가 달라진다. PID 제어기의 적분은 시간에 따른 순간 오류를 합한 것으로, 이미 보정되어야할 누적 오프셋을 만든다. 그 다음 누적된 오류에 적분이득(Ki)을 곱하고, 제어기 출력에 더한다.

.

적분항은 프로세스의 설정값으로 향한 이동을 가속화하며, 순수 비례 제어기에서 일어나는 정상상태 오류를 제거한다. 하지만, 적분항은 과거로부터의 누적 오류에 반응하므로, 현재값을 설정값에 대해 오버슛을 초래한다. (자세한 내용은 루프 튜닝을 볼 것)

PID 제어기, 적분항의 효과세가지 Ki 값에 대한 시간에 따른 PV. (Kp와 Kd는 고정)

미분항 (Derivative term)

프로세스 오류의 미분은 시간에 따른 오류의 기울기를 계산하고, 이 변화율을 미분 이득 Kd에 곱하여 결정한다. 전체 제어에 대한 미분항의 공헌 정도는 미분 이득 Kd 항으로 나타난다.

미분항은 다음과 같다.

미분항은 시스템의 행태를 예측하고, 따라서 안정화 시간과 시스템 안정화를 향상시킨다. 이상적인 미분항은 인과성(causal)이 아니므로, PID 제어기의 구현은 추가적으로 미분항에 대하여 고주파 이득 및 노이즈를 제한 할 수 있는 저주파 필터링이 포함된다. 미분항은 현실에서는 그다지 사용되지 않는다. (어떤 추정에 따르면 실 배치된 제어기중 25%만이 사용) 미분항 변수가 실세계 응용에서 시스템의 안정화에 영향을 미치기 때문이다.

PID 제어, 미분항의 효과세가지 Kd 값에 대한 시간에 따른 PV. (Kp와 Ki는 고정)

루프 튜닝(Loop Tuning)


제어 루프를 튜닝하는 것은 제어 파라미터(비례 band/이득, 적분 이득/reset, 미분 이득/rate)를 원하는 제어 반응이 되도록 최적의 값으로 조정하는 것을 말한다. 안정성(무한 진동이 아님)이 기본 요구사항이지만, 시스템이 다르면 다른 행태를 보이고, 응용분야에 따라 요구사항이 달라지고, 요구사항이 서로간에 충돌을 일으킬 수 있다. 

PID 튜닝은 세가지 항만 존재하고, 이론상으로는 간단히 설명할 수 있지만, 실제론 상당히 어려운 문제이다. PID 제어의 한계내에서 복잡한 기준을 만족시켜야 하기 때문이다. 따라서 루프 튜닝 방법은 매우 다양하며, 좀더 복잡한 기술은 특허의 주제이다. 이 절에서는 몇가지 전통적인 수동 방법론을 설명한다.

PID 제어기를 설계하고 튜닝하는 것은 개념적으로는 직관적으로 보이지만, 실무에서는 어려울 수 있다. 예를 들어 이전시간은 줄이되 안정성을 높여야 하는 것처럼 여러가지(가끔은 서로 충돌하는) 목적을 만족시켜야 하기 때문이다. PID 제어기는 가끔 기본 튜닝만으로 만족할 만한 제어가 되기도 하지만, 주의 깊게 튜닝하면 성능이 향상되고, 튜닝이 좋지 않으면 성능이 떨어지게 된다. 통상적으로 초기 설계는 폐루프(closed-loop) 시스템이 바라는 대로 동작하거나 타협될 때까지 컴퓨터 시뮬레이션을 통해 반복적으로 조정할 필요가 있다. 

일부 프로세스는 일정정도 비선형성이 있으며, 따라서 완전하중 상태에서 잘 작동하는 파라미터가 무하중에서 기동할 때는 작동하지 않을 수 있다. 이러한 현상은 이득 스케줄링(gain scheduling), 즉 운영 조건이 달라지면 다른 파라미터를 사용하도록 하여 교정할 수 있다.

제어이론에서 이득 스케줄링이란 비선형 시스템을 제어하는 방법론으로서, 각각 다른 작동점에서 만족한 제어를 제공하는 선형 제어기 집단을 사용하여 제어한다. 

스케줄링 변수라고 하는 하나 이상의 관측가능 변수(observable variable)을 사용하여 현재 어떤 작동 지역에 들어 있는지를 결정하고, 적절한 선형 제어기를 활성화시킨다. 예를 들어 비행제어시스템에서 고도와 마하 숫자가 스케줄링 변수가 될 수 있다. 이 두가지 변수의 조합에 따라 서로다른 선형 제어기 파라미터가 사용가능하다(자동적으로 제어기에 넣어진다.)

상대적으로 넓은 범위의 기술이 (Survey of Gain-Scheduling Analysis & Design, D.J.Leith, WE.Leithead)에 출간되었다.

안정성(Stability)

PID 제어기 파라미터 (비례/미분/적분항의 이득)가 잘못 선택되면, 프로세스 출력이 불안정해질 수 있다. 즉 진동이 있던 없던 출력이 발산(diverge)하여, 포화시키거나 기계적 파손만으로 정지 시킬 수 있다. 불안정성은 최고 이득, 특히 상당한 지연이 존재할 때 발생한다.

일반적으로, 반응의 안정화가 필요하며, 어떠한 목표값과 프로세스 조건하에서도 프로세스가 진동해서는 안된다. (경우에 따라서는 경계 안정성(marginal stability) (한정된 진동)이 허용되거나 바람직할 수도 있다.)

수학적으로 불안전성의 출발은 라플라스 도메인에서 볼 수 있다. 총 루프 이전 함수(total loop transfer function)은 다음과 같다. 

여기에서

 : PID 이전 함수

 : Plant 이전 함수

이때 폐루프 이전함수가 어떤  에 대하여 발산할 때 시스템이 불안정하다고 한다. 이는  인 상황에서 발생한다. 전형적으로  이고 180도 상전이(phase shift) 될 때 발생한다. 높은 상전이를 겪고 있는 주파수에서   일 때는 안정성이 보장된다. 이 효과에 대한 좀 더 일반적인 공식은 니퀴스트 안정성 조건(Nyquist stability criterion) 이라고 알려져 있다. ????

최적 행태(Optimum behavior)

프로세스 변화 또는 설정값 변경에 따른 최적 행태는 응용분야에 따라 달라진다. 조절(regulation) (교란 배제 - 주어진 설정값에서 머무는 것)과 명령추적(command tracking) (설정값 변화을 이행)이라는 두가지 요구조건이 있다. 이들은 제어 변수가 원하는 값을 얼마나 잘 추적하는지를 말한다. 명령 추적을 위한 특정 조건으로는 rise timesettling time 등이 있다. 어떤 프로세스에서는 프로세스 변수가 설정값 이상으로 오버슛하는 것을 허용해서는 안된다. (예를 들어 안전하지 않는 경우) 또다른 경우로, 새로운 설정값에 이르는데 소요되는 에너지를 최소화해야하는 경우도 있다.

방법론 개요(Overview of methods)

PID 루프를 튜닝하는 방법은 여러가지가 있다.가장 효과적인 방법론은 일반적으로 어떤 프로세스 모델 형태를 개발하고 동적 모델 파라미터에 근거하여 P, I, D를 선택하는 방식이다. 수동 튜닝은 상대적으로 시간이 소요된다. (특히 루프 시간이 긴 시스템의 경우)

방법론 선택은 주로 튜닝을 위해 루프를 "offline"으로 가져갈 수 있는지와, 시스템의 반응시간에 따라 달라진다. 시스템을 오프라인으로 가져 갈 수 있다면, 가장 최적의 튜닝방법은 입력값에 단계적인 변화를 가하고, 출력을 시간의 함수로 측정하고, 이 반응을 통해 제어변수를 결정하는 것이다.

<튜닝 방법의 선택>

방법론 
장점 
단점
 수동  수학 필요 없음. 온라인   경험많은 사람이 필요함
 Ziegler-Nichols  검증된 방법론. 온라인  프로세스 전복, 약간의 시행착오, 아주 공격적인 튜닝
 Tyreus Luyben  검증된 방법론. 온라인  프로세스 전복, 약간의 시행착오, 아주 공격적인 튜닝
 Software 도구  일관성있는 튜닝. 온라인/오프라인 - 컴퓨터 자동 콘트롤 설계(CAutoD)기법을 적용할 수 있음. 밸브 및 센서 분석이 포함될 수 있음. 다운로드 전 시뮬레이션 가능. non-steady-state(NSS) 튜닝도 지원함 비용발생. 교육훈련 필요 
 Cohen-Coon  좋은 프로세스 모델  약간의 수학. 오프라인. 1차 프로세스에만 좋음
 Åström-Hägglund  자동튜닝에 적용가능. 증폭이 최소화되므로 프로세스 전복이 가장 적은 방법임  이 프로세스 자체가 본질적으로 진동적임.


수동 튜닝(Manual Tuning)

시스템이 온라인으로 유지되어야 한다면, 먼저 Ki 와 Kd 값을 0으로 설정한다. 그 다음 Kp를 증가시켜 루프의 출력이 진동하도록 만들고, 이때 Kp는 "1/4 진동 쇠퇴(quarter amplitude decay)" 방식의 반응을 위한 값의 약 절반으로 설정해야 한다. 그 다음 Ki 값을 프로세스에서 오프셋이 충분한 시간내로 수정되도록 증가시킨다. 하지만 Ki를 너무 크게 하면 불안정을 유발한다. 마지막으로 필요하다면 Kd를 증가시켜 교란이 실린 후 루프가 참조점으로 충분히 빨리 접근시키도록 한다. 그러나 Kd를 너무 크게하면 과도한 반응과 오버슛을 초래한다. 빠른 PID 루프 튜닝은 좀 더 빨리 설정값에 도달하기 위해 약간 오버슛이 발생한다. 하지만, 오버슛을 허용할 수 없는 일부 시스템은 over-damped 폐루프 시스템이 필요하며, 이 경우, Kp설정값을 진동을 유발하는 Kp 설정값의 절반보다 상당히 작게 할 필요가 있다.

PID 제어PID 파라미터(Kp, Ki, Kd)의 효과

<파라미터를 독립적으로 증가시켰을 때의 효과>

파라미터 

Rise time

오버슛 

Settling time 

Steady-state error 

안정성 

 Kp

 줄어듦 

 증가함

 약간의 변화

 줄어듬

 나빠짐

 Ki

 줄어듬

 증가함

 증가함

 제거됨

 나빠짐

 Kd

 약간 변화

 줄어듦

 줄어듦

 이론상 영향없음

 Kd가 작으면 증가됨


Ziegler-Nichols 방법

참고 : 보다 자세한 내용은 Ziegler-Nichols 방법를 보라.

공식적으로 Ziegler-Nichols 방법이라고 알려진 또다른 체험적 튜딩 방법은, 1940년대 John G. Ziegler Nathaniel B. Nichols 에 의해 소개되었다. 위에서 소개된 방법과 마찬가지로, 처음에는 Ki 와 Kd 이득을 0으로 설정한다. 비례 이득을 임계이득(Ultimate gain) Ku에 달할 때까지 증가시킨다. 임계이득는 루프의 출력이 진동하기 시작하는 지점이다. Ku와 진동주기 Tu 를 사용하여 다음과 같이 설정한다.

<Ziegler-Nichols 방법>

 제어형태

 Kp 

 Ki

 Kd

 P

 0.50 Ku

 

 

 PI

 0.45 Ku

 0.54 Ku/Tu

 

 PID

 0.60 Ku

 1.2 Ku/Tu

 3 KuTu/40


이들 이득값은 이상적인, parallel 형태의 PID 제어기에 적용된다. 표준 PID 형태에 적용할 때, 적분 시간 파라미터 Ti 와 미신항 시간 파라미터 Td 는 진동주기 Tu에만 의존한다. 자세한 사항은 아래의 "Alternate nomenclature and PID forms"를 참고하라.

PID 튜닝 소프트웨어

대부분의 현대적 산업 시설에서는 위에서 보인 수동 계산 방식을 사용한 루프 튜닝은 더이상 사용되지 않는다. 그 대신, PID 튜닝과 루프 최적화 소프트웨어를 사용하여 일관성있는 결과를 확보한다. 이들 소프트웨어들은 데이터를 수집하고, 프로세스 모델을 개발하고, 최적 튜닝을 제안한다. 일부 소프트웨어 패키지들은 참조값 변화로부터 데이터를 수집하여 튜닝을 더 개발하기도 한다.

수학적 PID 루프 튜닝은 시스템에 자극을 유도하고, 제어 시스템의 주파수 반응을 사용하여 PID 루프 값을 설계한다. 반응시간이 몇 분 정도되는 루프에서는 수학적 루프 튜닝이 추천된다. 시행착오 방법으로는 안정된 루프 값을 찾는데 며칠씩 소요될 수 있기 때문이다. 최적값은 찾기가 힘들다. 일부 디지털 루프 제어기는 셀프 튜닝 지능을 제공하여, 아주 작은 설정값 변화를 프로세스에 보내어, 제어기가 최적의 튜닝값을 계산하고도록 한다.

성능 기준에 따라, 루프를 튜닝하는데 다른 공식이 사용될 수 있다. 많은 특허 공식이 이제 PID 튜닝 소프트웨어 및 하드웨어 모듈에 내장되어 있다.

자동 PID 루프 튜닝 소프트웨어가 진보함에 따라, 동적 또는 비정상상태(NSS : Non-Steady-State) 시나리오의 PID 루프를 튜닝할 수 있는 알고리듬도 보급되고 있다. 소프트웨어는 동적 프로세스를 모델링하고, 교란을 통해 반응으로부터 PID 제어 파라미터를 계산한다.

PID 제어의 한계


PID 제어기는 다양한 제어 문제에 적용할 수 있으며, 대부분 대충 튜닝해도 만족스럽게 작동하지만, 일부 응용에서는 성능이 나쁘며, 전반적으로 최적제어를 제공하지 못한다. PID 제어의 근본적인 어려움은 PID가 파라미터가 일정한 피드백 제어 시스템이며, 프로세스에 대한 직접적인 지식이 없어, 따라서 전체적인 성능이 반응적이고 타협된다는 점이다. PID 제어가 프로세스 모델이 없는 상태 관찰자(observer)에서 최고의 제어기이지만, 관찰자에게 의존하지 않고, 프로세스의 실행자를 명시적으로 모델링할 수 있다면 최적의 성능을 얻을 수 있다.

PID 제어기는 단독으로 사용하면, 제어시스템에 오버슛이 발생하지 않고, 제어 설정값에 대해 진동하지 않도록 PID 루프 이득을 줄일 경우, 성능이 나빠질 수 있다. 또한 비선형성이 존재하면 어려워지고, 잘 조절하는 것과 조절하는 시간 사이에 균형을 맞춰야 하고, 프로세스의 형태 변화에도 반응하지 않으며, 대형 교란이 발생하면 지연이 발생한다.

가장 중요한 향상은, 시스템에 대한 지식을 기반으로 피드 포워드 제어(Feed-Forward-control)를 도입하고 PID는 오류만 제어하도록 하는 것이다. 대안으로, 파라미터를 변경하거나(사용사례에 따라 게인 스케줄링을 하거나, 성능에 따라 게인을 동적 조정) 측정을 향상(샘플링 속도나 정확도, 정밀도를 높이고 필요시 저주파 필터링)시키거나, 다중 PID 제어기를 중첩시키는 등의 방법으로 약간 수정하는 방법도 있다.

선형성(Linearity)

PID 제어기의 또 다른 문제는 PID 제어기가 선형이고 특히 대칭적이라는 것이다. 따라서 비선형 시스템(예: HVAC 시스템)에서는 PID의 성능이 가변적이다. 예를 들어 온도제어에서 가장 일반적인 사용례는 가열요소를 통한 적극적 가열과 수동적 냉각이어서, 오버슈트가 느리게 보정된다. (온도를 강제로 내릴 수 없다. )이러한 경우, PID는 오버슈트를 방지 또는 줄이기 위해 과도하게 억제시키는 방식으로 튜닝할 수 밖에 없어, 성능을 낮추게(settling time이 길어짐) 된다.

미분항에서의 잡음(Noise in derivative)

미분항의 문제는 미분항이 고주파 측정 또는 프로세스 잡음을 중폭시켜, 출력에 큰 변화를 일으킨다는 점이다. 고주파 잡음 성분을 제거하기 위해 측정값에 저주파 필터로 필터링하면 도움이 되는 경우가 많다. 저주파 필터링과 미분제어는 서로 상쇄되므로, 필터링의 양은 제한된다. 따라서 저잡음 기기장치가 중요하다. 비선형 median 필터도 사용될 수 있다. 이 필터는 필터링 효율과 실질적 성능을 향상시킨다. 일부 경우에서는 미분 항을 꺼도 제어는 그다지 영향을 미치지 않는다. 이렇게 하면 PID 제어기를 PI 제어기로 사용하는 것과 동등하다.

PID 알고리듬에 대한 변경


기본적인 PID 알고리듬은 제어 응용에서 몇가지 도전을 제시한다. 이는 PID 형태에 minor 한 변경을 가하면 해결된다.

Integral windup

참고 : Integral windup에대한 자세한 사항은 여기를 참고하라.

PID가 이상적으로 구현될때 흔히 발생하는 문제가 integral windup 이다. 설정값이 크게 변한 후, 적분항이 조절 변수(windup)에 대한 최대 값보다 오차가 더 크게 축적될 수 있어, 시스템에 오버슛이 발생하고, 축적된 오차가 해소될 때까지 오버슛이 증가하게 된다. 이러한 문제는 다음과 같이 해결될 수 있다.

  • 프로세스 변수(PV)가 제어가능한 범위에 들어올 때까지 적분항을 비활성화 시킨다.
  • 미리 지정한 범위 이상 혹은 이하로 축적되지 못하도록 적분항을 제한한다.
  • 조절 출력이 가능한 경계에 들어오도록 제한할 수 있도록 적분항을 재계산한다.

알려진 교란에 의한 오버슛(Overshooting from known disturbances)

예를 들어, PID 루프는 전기저항용광로의 온도제어에 사용되어 시스템이 안정화되었다. 이제 문이 열리고, 냉기가 용광로 안으로 들어와 온도가 설정값 이하로 떨어진다. 제어기의 적분기능은 플러스 방향으로 또다른 오류를 도임함으로써 오류를 보상하려는 경향이 있다. 이러한 오버슛은 문이 열린 후 제어루프가 용광로를 재가열하는 동안 적분항을 동결함으로써 방지할 수 있다. 

PI 제어기(PI Controller)

PI 제어기는 PID 제어기의 특별한 경우로, 미분항을 사용하지 않는다.

제어기 출력은 다음과 같다.

여기에서 오류 또는 설정값(SP)와 실제 측정값(PV)의 차이 이다.

\Delta =SP-PV

PI 제어기는 Simulink 또는 Xcos와 같은 소프트웨어에서 Laplas 오퍼레이터를 포함하는 "flow chart" 박스를 사용하여 쉽게 모델링할 수 있다.

여기에서

 = 비례 이득

 = 적분 이득

G 값을 설정에는 오버슛 감소와 안정화 시간 증가의 타협이 필요하다.

미분항이 없음으로 인해 데이터에 잡음이 있는 경우, steady state에서 시스템이 좀더 안정적이 될 수 있다. 이는 미분항이 입력의 고주파 성문에 좀더 민감하기 때문이다.

반대로 미분항이 없음으로 인해 PI 제어기는 상대적으로 상태가 빨리 바뀌는 경우 반응성이 떨어지고, 따라서 잘 튜닝된 PID 시스템에 비해 설정값에 도달하는 시간이 느려지고, 교란에 대한 반응성이 떨어지게 된다.

Deadband (불감대역)

많은 PID 루프는 밸브와 같은 기계적 장치를 제어한다. 기계적 유지관리는 많은 비용이 소요되며, 입력 신호에 대한 기계적 반응에서 정지마찰(stiction) 또는 불감대역(deadband, 완충지대) 와 같은 형태로 제어 품질 저하를 발생시킨다. 기계적 마모 비율은 주로 변화를 만들기 위해 장치가 작동되는 횟수에 비례한다. 마모가 상당한 문제가 되는 경우, PID 루프에서 출력(밸브)의 활동 주기를 줄이기 위해 출력 불감대역(deadband)를 설정할 수 있다. 이는 변화가 작을 때(즉 지정한 불감대역 범위 내)에는 제어기가 출력을 일정하게 유지하도록 하는 방법을 사용한다. 계산된 출력은 실재 출력이 변화되기 전에 불감대역을 떠나야 한다.

설정값 단계 변화(Setpoint step change)

설정값을 크게 변경시킬 때와 같이 시스템의 오류가 순간적으로 증가하게 되면, 비례항과 미분항은 출력에 과도한 이동을 초래할 수 있다. 미분항의 경우, 오류의 미분을 취하는데, 순간 변화는 미분(기울기)가 매우 크기 때문이다. 따라서 일부 PID 알고리듬에서는 다음과 같은 변경을 도입하는 경우가 있다.

설정값 램플링(Setpoint Rampling)

설정값을 예전 값에서 새로운 값으로, 선형 혹은 1차미분 ramp 함수를 사용하여 천천히 움직이도록 하는 방식이다. 이렇게 하면 한 단계 변화로 인한 불연속성(discontinuity)을 방지할 수 있다.

프로세스 변수의 미분(Derivative of Process variable)

이 방법은 PID 제어기가 오류의 미분 대신 측정된 프로세스 변수(PV ; process variable)의 미분을 측정하는 방식이다. 이 양은 항상 연속적이다.(즉 설정값 변화 등으로 인한 급변이 없음) 이 방법은 아래에 있는 설정값 가중치의 간단한 경우이다.

설정값 가중치(Setpoint weighting)

설정값 가중치 방법은, 제어기의 비례항 및 미분항에서의 오류에 대한 설정값에 조정가능 factor(대부분 0-1)를 추가한다. 적분항 오류는 steady-state 제어 오류를 방지하기 위해 실제 제어 오류가 되어야 한다. 이들 두가지 추가 파라미터는 하중교란과 측정 잡음에 대한 반응에 영향을 미치지 않으며, 제어기의 설정값 반응이 향상되도록 튜닝할 수 있다.

피드 포워드(Feed-forward)

제어시스템의 성능은 PID 제어기의 피드백(또는 폐루프 closed-loop)과 피드포워드(또는 개루프 open-loop) 제어를 결합함으로써 향상될 수 있다. 시스템에 대한 지식(예: 바람직한 가속도와 관성 등)을 미리 공급하고, 전반적인 시스템 성능을 향상시키기 위하여 PID 출력을 결합한다. 피드포워드 밸브만으로 제어기 출력의 대부분을 공급할 수 있다. PID 제어기는 주로 설정값(SP)와 개루프 제어에 의한 시스템 반응 간의 차이 또는 잔류오차를 보상해야 한다. 피드포워드 출력은 프로세스 피드백에 의해 영향을 받지 않으므로, 제어 시스템의 진동을 유발하지 않으며, 따라서 안정성에 영향을 주지 않고 시스템 반응을 향상시킨다. 피드 포워드는 설정값과 기타 축정된 교란 기반할 수 있다. 설정값 가중치(Setpoint weighting)은 피드포워드의 간략한 형태이다.

예를 들어, 대부분의 운동제어시템에서 제어중인 기계적하중을 가속화하려면 구동기로부터 더 많은 힘이 필요하다. 하중의 속도를 제어하는데 속도 루프 PID 제어기가 사용되고 있고, 구동기에 의해 힘이 전달된다면, 원하는 순간 가속을 취하여, 이값을 적절하게 확대하여 이것을 PID 속도 루프 제어기의 출력에 추가할 수 있다. 즉 하중이 가속되거나 감속될 때, 힘의 비례항이 피드백 값에 관계없이 구동기로부터 명령을 받는다는 뜻이다. 이 상황에서 PID 루프는 피드백 정보를 사용하여 프로세서 설정값과 피드백 값과의 잔류차이를 줄일 수 있도록 합계 출력을 변화시키게 된다. 이처럼 개루프 피드포워드 제어기와 폐루프 PID 제어기를 결합하여 사용하면, 좀더 반응성이 뛰어난 제어시스템을 만들 수 있다.

Bumpless Operation

PID 제어기는 가끔 "bumpless" 초기화 기능과 함께 수행된다. 적분항을 재계산하여, 프라미터가 변경되더라도 프로세스 출력이 일정하게 유지되도록 하는 것을 말한다. 부분적으로는 적분이득에 의한 후처리값과 오류를 적분하여 저장하는 게 아니라, 적분 이득과 오류를 적분하여 저장하면, 적분 이득이 변경되었을 때 불연속한 출력을 방지할 있다. 단, 비례 이득과 미분 이득의 변화에는 대응할 수 없다.

기타 향상방법

피드포워드에 추가하여, PID 제어기는 PID 이득 스케줄링(운영환경에 따라 파라미터를 변경하는 방식), Fuzzy logic 또는 Computational verb logic 등과 같은 방법으로 향상시킨다.

좀 더 실용적인 응용문제는 제어기에 연결된 기기로부터 발생한다. 적절한 제어 성능을 확보하려면 충분한 샘플링 속도, 측정 정확도, 측정 정밀도 등이 필요하다. PID 제어기를 향상시킬 수 있는 또 다른 새로운 방법은, fractional order를 사용하여 자유도를 증가시키는 것이다. 적분항과 미분항의 급수를 높이면 제어기의 유연성을 증대시킬 수 있다.

다층 제어(Cascade control)

PID 제어기는 두개의 PID를 함께 사용하면 훨씬 나은 동적 특성이 생긴다는 명백한 이점이 있다. 이것을 다층 PID 제어라고 한다. 다층 제어에서는 두개의 PID 를 배열하되, 어떤 PID를 다른 PID의 설정값을 제어하는데 사용된다. 즉, 하나의 PID 제어기는 외부 루프 제어기로 작동하여, 주로 물리적인 파라미터, 예를 들어 유체의 깊이나 속도를 제어한다. 다른 PID 제어기는 내부 루프 제어기로 작동하여, 외부 루프제어기의 출력을 설정값으로 읽어들이고, 좀더 빠른 변화, 예를 들어 유체 속도나 가속도 등을 제어한다. 다층 PID 제어기를 사용함으로써, 제어기의 흐름 주기는 증가하고, 물체의 시간 상수는 줄어든다는 것을 수학적으로 증명될 수 있다.

예를 들어, 온도제어 순환 목욕탕에 두개의 PID 제어기를 다층으로 구성하되, 각각 온도센서를 갖도록 한다. 외부 제어기는 히터로부터 멀리 떨어져 있어, 물 전체의 온도를 정확하게 측정할 수 있는 센서를 사용하여 물의 온도를 제어한다. 이 PID 제어기의 오류항은 원하는 목욕탕온도와 측정된 온도간의 차이이다. 히터를 직접 제어하는 대신 외부 제어기는 히터 온도 목표를 내부 PID 제어기에 설정한다. 내부 PID 제어기는 히터에 부착되어 있는 센서를 사용하여, 히터의 온도를 제어한다. 내부 제어기의 오류항은 히터 온도 설정값과 히터의 측정온도 간의 차이이다. 이들 출력은 히터를 원하는 설정값으로 유지하도록 제어한다.

두 제어기의 비례항, 적분항, 미분항은 매우 다르게 된다. 외부 PID 제어기는 장시간 상수를 갖는다. 탕 속의 모든 온를 올리거나 내린다. 내부 루프는 훨씬 더 빠르게 반응한다. 각가의 제어기는 각기 제어하는 시스템의 물리학에 맞춰 튜닝될 수 있다. 총 통의 온도질량과 열전달계수, 혹은 히터의 온도질량과 열전달계수. 따라서 더 나은 반응을 얻을 수 있다.

-----(이하 생략)

====

원문 : https://en.wikipedia.org/wiki/PID_controller

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 12. 16. 00:08

Servo

이 글은 Pixhawk와 APM2에 서보를 연결하는 방법, 송신기 또는 미션플래너에서 제어하는 방법에 대해 설명하는 글이다.

개요

콥터, Plane, 로버는 카메라 셔터 누르기, 낙하산 펴기, 테니스 공 떨어뜨리기 등, 다양한 목적을 위하여 서보를 제어할 수 있다. 이들 서보는 조종사가 송신기 스위치를 통해 직접 제어할 수도 있고, 지상국 혹은 미션의 일부로 전달된 명령을 통해 제어할 수도 있다.

아날로그 서보 또는 디지털 서보 모두 사용가능하다.

픽스호크에 서보를 연결하는 방법

  • 콥터를 사용할 경우, 서보를 AUX OUT 1-4에 연결하라, MAIN OUT 1-8은 400hz로 갱신되므로 피해야 한다.
  • Plane 이나 로버를 사용할 경우, 모든 핀은 50hz로 갱신되므로, MAIN OUT 또는 AUX OUT에서 사용되지 않는 것은 어떤 것이든 사용할 수 있다.
  • AUX OUT 5/6는 기본값으로 Relay로 설정되어 있어 사용할 수 없다. BRD_PWM_COUNT 변수를 6으로 두고, RELAY_PIN 과 RELAY_PIN2 를 -1로 바꾸면 이들 핀들도 서보 제어에 사용할 수 있다.
  • 픽스호크 비행콘트롤러는 서보에 전원을 공급하지 않으므로, 반드시 외부 BEC 혹은 5V를 공급하는 ESC를 사용하여야 한다.

AMP 2.x 에 서보를 연결하는 방법

  • 콥터의 경우 서보의 신호선을 APM 왼쪽면에 있는 A10 또는 A11에 연결하라. 
  • Plane의 경우, APM 뒤쪽에 있는 RC1~RC8 에도 연결할 수 있다.
  • 전원 및 접지선을 후면 파워레일(JP1 점퍼를 제거했을 경우) 또는 외부 BEC(JP1 점퍼가 그대로 있을 경우)에 연결한다. 서보 전원과 접지선을 절대 A10 또는 A11의 +/- 에 연결해서는 안된다. 그렇게 되면 서보가 전원을 메인 CPU와 공유하게 되고, 서보의 움직임에 따라 CPU의 전원이 등락하게 되어 CPU가 정지될 수 있기 때문이다. 동일한 이유로 JP1 점퍼가 그대로 있을 때 후면 파워레일은 사용해서는 안된다. 

서보를 카메라 셔터로 동작시키는 방법

서보를 카메라 셔터를 누르는 것처럼 설정하고 제어하는 방법은 카메라 짐벌 위키페이지에 상세히 나와 있다. 이렇게 설정하면 다음과 같은 장점이 있다.

  • 서보를 CH7/CH8 보조 스위치로부터 작동시킬 수 있다.
  • 서보를 한쪽 위치로 이동시키고자 할 경우, 잠시 지연된 후 원래 위치로 돌아오는 것을 하나의 미션 명령으로 수행할 수 있다.
  • 서보를 작동시킬 때마다 콥터의 위치와 자세가 데이터플래시에 기록된다.

단, 카메라 셔터 방식을 사용하면 미리 정해진 두 지점간의 이동만 가능하다는 단점이 있다.

아래는 Sparkfun’s AVC 2012 에 출품된 테니스 공 떨어뜨리기 비디오이다.



서보를 서보로 제어하는 방법

서보를 전통적인 방식으로 제어하는 것은 미션에서만 가능하다(즉 AUTO 모드). 다음과 같은 절차를 따른다.

  • APM 이나 Pixhawk를 미션플래너에 접속한다.
  • Config/Tuning > Full Parameter List 페이지에서 해당 서보가 연결된 RCxx_FUNCTION을 0으로 설정한다. (예 : APM 왼쪽면 A10에 연결하였을 경우 RC10_FUNCTION, 픽스호크 AUX OUT 1에 연결하였을 경우 RC9_FUNCTION)
  • Write Params 버튼을 누른다.

  • 비행시키고자하는 미션을 생성하고, DO_SET_SERVO 명령을 추가하고, "Ser No" v필드에 서보 번호(예: 9)를, "PWM" 필드에 원하는 PWM 값(대부분 1000~2000)을 입력한다.

참고로 DO_SET_SERVO 명령은 "do 명령"이므로, 웨이포인트와 웨이포인트 사이에만 실행시킬 수 있다. 따라서 미션의 최초 또는 마지막 명령으로는 사용할 수 없다. DO_SET_SERVO 명령은 그 바로앞에 있는 웨이포인트가 도달하면 즉시 시행된다.

미션플래너에서 테스트하기

미션플래너의 Flight Data 화면의 하단에 "Servo" 탭이 있다. 이 화면에서 서보가 정확하게 동작하는지 테스트할 수 있다.

===

원문 : http://ardupilot.org/copter/docs/common-servo.html

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

  1. Roraring

    안녕하세요 궁금한게 있어서 댓글을 달게되었습니다.
    다름이아니라 픽스호크로 무인자동차를만들려고 하는데요
    서보모터 설정방법이 따로 있나요 ? 아무리검색해도 안나와서 실례를무릅쓰고 여쭈어봅니다.

    2017.01.12 10:42 [ ADDR : EDIT/ DEL : REPLY ]
    • 무인자동차는 Rover쪽을 보시면 됩니다. 펌웨어가 다릅니다만, 전반적으로는 비슷한 걸로 압니다. 서보모터는 물론 동일할 걸로 생각됩니다.

      2017.01.12 21:44 신고 [ ADDR : EDIT/ DEL ]
  2. 산이아빠

    픽스호크 고정익 auto 비행 및 autolanding 에 관한 포스터는 작성 안하시나요~?^^

    2017.08.31 01:31 [ ADDR : EDIT/ DEL : REPLY ]
  3. 픽스호크로 현재 드론 제작중에 있습니다.
    미션플래너에서ㅓ RC function 이 없습니다ㅠㅠㅠ

    2018.07.25 17:28 [ ADDR : EDIT/ DEL : REPLY ]

드론/쿼드콥터2016. 11. 7. 00:25

오랫동안 기다리던 Pixhawk 2.1 이 11월 중 발매될 예정입니다. 당연히 3dr.com 에서 제작할 줄 알았는데, 이번에는 호주의 ProFiCNC 와 중국 Hex Technology 에서 제작중인 것 같습니다. (3dr.com 에서는 Pixhawk mini 라는 걸 판매중입니다.)

Pixhawk 2.1은 Pixhawk 에 비해 여러가지 장점들이 많은 것 같습니다. 일단 간단히 정리해보려 합니다. 아래는 ProFiCNC 및 Hex Technology 사이트 첫 화면에 나오는 내용을 정리한 것입니다.

Pixhawk2 는 최신 오플소스 AutoPilot 이다

  • 모듈식 설계, 접속보드(Carrier board)를 자유롭게 선택할 수 있음 - 위 그림에서 정사각형 모양의  Cube 쓰여져 있는 것이 IMU 등 여러가지 센서와 FC로 구성된 Pixhawk2 본체? 이고, 아래쪽에 여러가지 주변기기에 대한 인터페이스가 있는 것이 접속보드입니다.
  • 100% RTK GPS 사용가능. 다중 GPS가 표준 - GPS/Glonass/Galileo 등 여러가지 GNSS 신호를 사용하는 것은 물론, 10cm 이내까지 측정가능한 RTK GPS 까지 지원한다고 합니다.
  • 3중 중복 IMU 시스템 - 여러개의 센서를 중복으로 설치함으로써, 하나의 센서가 망가지더라도 안정적으로 운영이 가능하도록 했답니다.
  • 분리된, 진동방지, 온도조종식 IMU - IMU 가 분리되어 있고, 자체적인 진동방지체계가 갖춰져 있어서 방진장치가 필요없으며, 온도를 유지시켜 한겨울에도 사용가능하답니다.
  • 인텔에디슨(Intel Edison) 포트가 내장 -  인텔 에디슨은 "인텔에서 착용 컴퓨터와 사물 인터넷 장치의 개발 시스템으로 제공하는 초소형의 컴퓨터 온 모듈"(from 위키피디아)로서, 픽스호크2 와 에디슨을 연결해서 사용하면, 이미지 처리등의 고난이도 연산을 에디슨에서 수행하여 결과를 픽스호크2에 보내어 충돌 회피를 하는 등, 다양한 기능을 추가할 수 있을 것으로 생각됩니다.

CUBE

독립된 진동방지 IMU

  1. IMU와 FMU(Flight Management Unit)이 분리되어 있어 센서의 간섭을 효과적으로 감소시킴
  2. Foam(발포고무를 사용하여 고주파 진동필터링, IMU 측정시 잡음 감소

온도 조절 IMU

온도조절 IMU를 위해 발열저항 내장. 영하에서도 사용가능

3중 중복 IMU

3x 가속도계
3x 자이로
3x 전자나침반
3x 기압계

모듈식 비행콘트롤러

간결성을 위한 모듈식 큐브 설계. 모든 입출력은 하나의 DF17 커넥터를 통해 이루어짐. 특정 어플용으로 별도의 접속보드(Carrier Board) 사용가능. 자체적인 접속보드의 설계 및 제작도 간단함

접속 보드(Carrier Board)

접속보드에는 인텔 에디슨(Intel Edison)용 포트가 내장되어 있어, 에디슨을 Pixhawk 2.1 보조 컴퓨터로 연결할 수 있음. 인텔 에디슨은 강력한 처리능력과 개발자 중심의 개발환경이 갖춰져 있어, Pixhawk 2.1에 다양한 기능을 추가할 수 있는 가능성을 부여함.

표준 접속 보드

다양한 입출력 포트 제공

핵심 설계 포인트

  • IMU 가열 시스템을 내장하여, 극단적인 온도(영하)에서도 비행 가능
  • 튼튼한 DF17 인터페이스 커넥터를 채택하여, 추락/충돌시 저항성 향상
  • 수직이착륙기(VTOL), 고정익, 멀티콥터, 헬리콥터, 모형자동차, 보트, 잠수함, 일반 로봇 등 지원
  • 인텔 에디슨 포트를 내장하여, 끼우기만 하면 에디슨의 처리 능력과 연결 가능
믿음직한 능력 정확안 위치 유연한 사용성

성능

오픈 자동 무인 기체를 위한 세계 최고의 고급 비행콘트롤러.

 

 픽스호크

픽스호크2.1 

고정익, 회전익, 수직이착륙 

O

개방형 개발환경

O

O

모듈식 설계

x

O

방진 IMU

O

3중 중복 IMU

x

O

cm 수준의 GPS 

x

O

다중 GNSS

x

O

극단적환경에서의 비행

x

O

Pixhawk2.1은 이전 버전인 Pixhawk에 비해 모든 면에서 성능이 훨씬 향상됨



Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 20. 17:15

PID 튜닝 (PID Tuning)

비행역학의 모든 면은 선택된 "PID 제어기(controller)"에 의해 제어됩니다. PID 제어기란 조종간 입력에 대한 반응과, 자이로/가속도계(비행모드에 따라 달라짐)를 사용하여 공중에서 기체를 안정화시키는데 책임을 맡고있는 알고리듬입니다.

"PIDs"란 PID제어기의 작동을 제어하는 여러가지 튜닝 변수의 집합입니다. 최적의 PID 설정은 매 기체에 따라 다르므로, 정확한 세팅값을 공유해줄수 있는 사람이 없다면 최고의 성능을 발휘하는 PID 설정을 찾으려면 시행착오를 겪어야 합니다. 

아래의 비디오는 PID 설정에 의해 야기될 수 있는 여러가지 비행 문제를 인식하고 바로잡는 방법을 다루고 있습니다.

https://www.youtube.com/watch?v=YNzqTGEl2xQ

기본적으로 PID 제어기의 목표는 세개의 축에 따른 기체의 회전률을 조종간으로 입력하는 명령의 비율로 가져오자는 것입니다. ?? 목표 회전률과 자이로스코프로 측정한 실제 회전률의 차가 오류가 되며, 제어기는 이 에러를 0으로 만드는 게 목표입니다.

PID 변수(PIDs)

P 항(P Term)은 기체를 목표각 또는 목표 회전각 방향으로 향하도록하는 보정량의 강도를 제어합니다. P 항이 너무 낮으면 기체를 제어하기 힘듧니다. 안정을 유지할 만큼 빠르게 반응할 수 없기 때문입니다. P 항이 너무 높으면 기체는 빠르게 진동 또는 흔들립니다. 끊임없이 목표를 넘어서게(Overshoot) 되기 때문입니다.

I 항(I Term)은 크기가 작지만 오래 지속되는 오류를 보정합니다. 너무 낮게 설정되면 기체의 자세가 천천히 흐르게 됩니다. 너무 높게 설정되면 기체가 진동합니다. (하지만, P를 높게 설정한 것에 비해 진동 속도는 떨어집니다.)

The D term attempts to increase system stability by monitoring the rate of change in the error. If the error is rapidly converging to zero, the D term causes the strength of the correction to be backed off in order to avoid overshooting the target.

D 항(D Term)은 오류의 변화율을 감시함으로써 시스템의 안성성을 높이고자 시도합니다. 오류가 급격하게 0에 수렴하면, D 항은 목표에 Overhoot 가 발생하지 않도록 교정 강도를 낮추게 됩니다.

TPA 와 TPA 중단점

TPA stands for Throttle PID Attenuation and according to AlexYork.net:

TPA는 Throttle PID 감쇠(Throttle PID Attenuation)의 약자로서 AlexYork.net 에 따르면 

"TPA basically allows an aggressively tuned multi-rotor (one that feels very locked in) to reduce its PID gains when throttle is applied beyond the TPA threshold/breakpoint in order to eliminate fast oscillations.."

"TPA는 기본적으로 공격적으로 튜닝된 멀티로터(locked in 된 것처럼 느껴지는 것)에 throttle이 TPA 한계/중단점 이상으로 적용될 때 빠른 진동을 막고자 PID 이득(gain)을 낮추도록 한다..." 

참고로 TPA는 CLI 나, GUI의 PID 튜닝 탭에서 설정할 수 있습니다. [tpa_breakpoint]는 CLI를 통해 설정됩니다.

아울러 TPA와 tpa_breakpoint 는 어떤 PID 제어기에는 사용할 수 없을 수 있습니다. 이에 대해서는 개별 제어기에 대한 설명을 확인해 보세요.

TPA는 throttle이 최대일 때와 관련하여 PID값 감소를 적용합니다. 이는 throttle이 최대에 가까와지면 PID 값을 약화시키는 데 사용됩니다.

TPA = throttle 최대시 발생하는 약화율 (%)

tpa_breakpoint = TPA가 적용되기 시작하는 throttle curve상의 지점

An Example: With TPA = 50 (or .5 in the GUI) and tpa_breakpoint = 1500 (assumed throttle range 1000 - 2000)

예 : TPA=50 (GUI에서는 0.5)이고 tpa_breakpoint = 1500일 때(throttle 범위가 1000-2000이라고 가정)

  • throttle 채널이 1500이 되면, PID 변수가 약화되기 시작합니다.
  • At 3/4 throttle (1750), PIDs are reduced by approximately 25% (half way between 1500 and 2000 the dampening will be 50% of the total TPA value of 50% in this example)
  • 3/4 throttle(1750)에서 PID 변수는 약 25% 정도 줄어듭니다. (이 예에서 1750은 1500과 2000의 중간이므로, 약화율이 50%가 되는데, 총 TPA 값이 50%이므로 25%가 됨)
  • 최대 throttle (2000)이 되면, 총 약화율은 TPA 값으로 적용됩니다. (이 예에서는 50%)
  • TPA can lead into increase of rotation rate when more throttle applied. You can get faster flips and rolls when more throttle applied due to coupling of PID's and rates. Only the PID controllers MWREWRITE and LUX are using a linear TPA implementation, where no rotation rates are affected when TPA is being used.
  • TPA는 throttle이 더 많이 적용되면 회전률의 증가로 이어질 수 있습니다. PID 변수와 비율의 결합으로 인하여 throttle의 저 많이 적용되면 filp 과 roll이 빨라질 수 있습니다. PID 제어기 중에서MWREWRTE 및 LUX 만이 선형 TPA 구현을 사용하므로, TPA가 사용되면 rotation rates는 더이상 적용되지 않습니다.???

TPA를 어떻게, 왜 사용하는가?

예를 들어 3/4 throttle에서 진동이 발생하기 시작했다면, [tpa_breakpoint = 1750] 혹은 이보다 낮은 값으로 설정합니다. (이 것은 throttle 범위가 1000-2000이라는 가정입니다.), 그리고 진동이 사라질 때까지 TPA 값을 높여주면 됩니다. 일반적으로 [tpa_breakpoint]를 진동이 발생하는 시점보다 약간 빠르게 설정함으로써, 진동을 낮추거나 제거할 수 있는 값으로 실험해보고 싶을 것입니다. ??? 

PID 제어기(PID Controller)

클린플라이트에는 3개의 PID 제어기가 내장되어 있으며, 각각 비행특성이 다릅니다. 각 제어기는 최적의 성능을 내기 위한 PID 설정값이 다르므로, 기체를 어떤 PID 제어기를 사용하여 튜닝했다면, 이 값들은 다른 제어기에는 올바르게 먹히지 않을 가능성이 높습니다. 클린플라이트 v1.13.0에서 MWREWRITE 와 LUX PID 콘트롤러는 (약간의 오차는 있지만,) 동일한 PID 설정을 공통으로 사용할 수 있도록 평활화되어 있었습니다. 

PID 제어기를 변경하려면 설정프로그램(Configurator)의 CLI 탭에서 [set pid_controller=x] 를 입력하면 됩니다. 여기에서 x는 사용하고자하는 제어기입니다. 먼저 여기에 있는 내용을 읽고 나서 시험해보시기 바랍니다.

참고로 오래전 버전의 클린플라이트는 6개의 PID 제어기가 있었습니다. 실험적인 혹은 오래된 제어기는 클린플라이트 버전 1.11.0 (API 버전 1.14.0) 부터 제거되었습니다.

PID 제어기 "MW23"

이 PID 제어기는 MultiWii 2.3(및 이후) 에 들어있던 PID 제어기를 직접 포팅한 것입니다.

이 알고리듬은 roll/pitch 와 yaw를 별도로 취급합니다. yaw 에 문제가 있는 사용자라면 이 제어기를 사용해 보시기 바랍니다.

HORIZON 모드와 ANGLE 모드에서 이 제어기는 LEVEL "P"와 "I" 설정을 사용하여, ACRO 비행모드에서 P와 I 설정이 roll 및 yaw 축에 적용되는 방법과 유사한 방법으로 자동레벨링 보정을 시행합니다. LEVEL "D" 항은 LEVEL "P"항에 의해 적용되는 최대 보정량을 제한하는 용도로 사용됩니다.

클린플라이트 1.12.0 부터 P_Level의 기본값을 90에서 20으로 변경하였습니다. MWREWRITE 가 기본 PID 제어기가 되었기 때문입니다. MW23을 사용한다면, P_Level 값을 90으로 변경한 뒤 날리기 바랍니다.

PID 제어기 "MWREWRITE"

MWREWRITE 제어기는 클린플라이트 v1.12.0 부터 기본 PID 제어기가 되었습니다.

이 제어기는 MultiWill 2.3에 있던 제어기보다 새로운 제어기입니다. 많은 사람들에 따르면 MWREWRITE는 성능이 더 좋으며, 예전 버전에 따라다녔던 문제를 수정하였습니다. 아울러 튜닝이 훨씬 쉬워졌고, 좀더 넓은 범위의 PID 값에도 관용을 보입니다.

ANGLE 모드에서 이 제어기는 LEVLE "P" PID 설정을 사용하여, 자동레벨 교정이 어느정도 강해야 하는지를 결정합니다.

클린플라이트 1.12.0 에서 [p_level]의 기본값이 20으로 변경되었습니다. 이는 MWREWRITE PID제어기에서 추천되는 값으로서, ANGLE 모드에서 안정적인 비행을 제공합니다. 예전의 기본값인 90 을 사용할 경우, 일부 사용자들은 매우 불안정한 비행을 경험했었습니다.

HORIZON 모드에서 이 제어기는 LEVEL "I" PID 설정을 사용하여, 자동레벨 교정을 얼마나 많이 적용해야 하는지 결정합니다. LEVEL "I" 항 : horizon 자동레벨의 강도. 설정프로그램에서 값 0.030은 [i_level]에서 3.0 과 동일합니다. LEVEL "D" 항 : horizon 천이의 강도. 이 값을 올리면 자동레벨링이 더 잘되고, 0로 설정하면 자동레벨링이 하나도 적용되지 않습니다. 아래의 HORIZON 모드 명령에 대한 설명을 확인하세요.

PID 제어기 "LUX"

LUX는 새로운, 부동소숫점 기반의 PID 제어기입니다. MW23 과 MWREWRITE는 정수 산술연산을 사용합니다. 정수로 연산할 경우, 8비트 기반의 MultiWii 콘트롤러에서도 빠르게 수행할 수 있었으나, 정확도는 떨어집니다.

클린플라이트 v1.13에서 PID 제어기 LUX 는 MWREWRITE와 동일한 PID 설정을 사용하도록 변경되었습니다.

이 제어기는 looptime의 차이를 보상하도록 시도하는 코드가 있어서, looptime 설정이 변경되었을 때 PID를 되돌릴 필요가 없습니다.

처음에는 HORIZON 모드에 약간의 문제가 있었고, ACRO 모드에서 느린 문제가 있었지만, nebbian 님이 v1.6.0에서 수정하였습니다.

LUX는 32비트 프로세서에 맞도록 설계되고, MultiWii에서 유래되지 않은 최초의 PID 제어기입니다.

ANGLE 모드동안 적용되는 자동레벨 보정 강도는 LEVEL "P" PID 항에 의해 제어됩니다. "P"항은 GUI에서 "LEVEL Proportional"로 표시되어 있습니다.(v1.13.0 이전에는 [level_angle]로 표시되어 있었습니다.) 이 항은 HORIZON 모드와 비교하여 ANGLE 모드에서 자동레벨 강도를 튜닝하는데 사용될 수 있습니다. 기본값은 5.0입니다.

HORIZON 모드동안 적용되는 자동레벨 보정강도는 LEVEL "I" PID 항에 의해 제어됩니다. "I" 항은 GUI에서 "LEVEL Integral"로 표시되어 있습니다.(v1.13.0 이전에는 [level_horizon]으로 표시되어 있었습니다.) 기본값은 3.0으로, HORIZON 모드는 ANGLE 모드에 비해 자동레벨을 약하게 적용합니다. 참고 : 현재 설정프로그램(Configurator)에는 버그가 있어서, 이들 변수를 100으로 나눈 값으로 표시합니다. 즉, 3.0 대신 0.03으로 보입니다.

Horizon 모드에서 자동레벨과 ACRO 행태간의 전이는 LEVEL "D" 항에 의해 제어됩니다. 이 항은 GUI에서 "LEVEL Derivative"로 표시되어 있습니다. (v1.13.0 이전에는 [sensitivity_horizon] 변수가 사용되었습니다.) 이것은 자동레벨이 적용되는 조종간 범위의 비율을 설정합니다. 작게 설정하면 더 넓은 범위를 자이로만 사용하여 비행하게 됩니다. 기본값은 75%입니다.

예를 들어, [sensitivity horizon]을 "100"으로 설정하면, 조종간이 중앙에 있을 때 자동레벨 강도가 100%가 적용되며, 조종간이 50%일때 자동레벨 강도가 50%가 적용되고, 조종간이 100%일때는 자동레벨이 0, 즉 적용되지 않습니다. sensitivity를 75로 내리면 조종간이 중앙에 있을 때 100% 자동레벨, 조종간 63%일때 50% 자동레벨, 조종간 74%부터는 자동레벨이 적용되지 않게됩니다.

자세한 사항은 HORIZON 모드 명령 부분의 설명을 보세요.

RC 비율, Pitch/Roll 비율(분리전에는 P/R rate),  Yaw 비율

RC 비율(RC rate)

Roll/Pitch/Yaw RC 조종간 입력에 대한 전반적인 승수(multiplier)d입니다.

PID 제어기 MW23의 경우, 조종간이 중앙 부근에 있을 때, 약간씩 움직일 때의 "느낌"을 설정하는 데 사용되었습니다. (RC Expo도 영향을 미칩니다.) PID 제어기 MWREWRITE와 LUX의 경우, 기본적으로 기본 조종간 민감도(baseline stick sensitivity)를 설정하는데 사용됩니다.

Pitch/Roll 비율 (Pitch and Roll rates)

PID 제어기 MW23의 경우, P/D 부분의 PID 오류항의 영향을 조종간이 중앙에서 멀어질수록 점차 감소합니다. 즉, Pitch 비율 혹은 Roll 비율을 0.3으로 두면, 조종간을 100%밀었을때 P/D항을 30%감소시킴으로서, 조종간이 90%이하일 경우 PID 제어기의 안정화효과를 가져오게 됩니다. 그 결과 회전 속도가 빨라집니다. 따라서 위에서 설명한 RC 비율로 조종간이 중앙부분에 있으 때의 제어 움직임 민감도를 설정하고, 스틱이 멀어질수록 회전속도를 훨씬 뻘리할 수 있습니다. 

PID 제어기 MWREWRITE와 LUX의 경우, Pitch/Roll 비율은 RC 비율과 마찬가지로 전반적인 조종간 민감도에 대한 승수(multiplier)이지만, roll과 pitch에 독립적으로 작용합니다. (난기류와 같은 외뷰효과에 대한) 안정성은 조종간이 양끝으로 가도 줄어들지 않습니다. 0로 설정하면 위의 RC비율로 설정한 조종간 민감도(stick sensitivity)를 증가시키지 않습니다. 높은 값으로 설정하면 전체 조종간 범위를 걸쳐 조종간 민감도를 증가시킵니다. 

Yaw 비율(Yaw rate)

PID 제어기 MWREWRITE와 LUX에서 Yaw 비율은 위와 같이 조종간 민감도 승수로 작용합니다.

필터(Filters)

[gyro_ldf]는 하드웨어 자이로 저대역 통과 필터(low pass filter)를 설정합니다. 0 또는 256으로 두면 gyro는 하드웨어 필터링을 최소한으로 사용하며, 지연이 최소화되어 내부 샘플속도가 최대한 빠르게(8kHz)됩니다. 숫자가 낮을 수록 필터링이 강해집니다. 필터링을 강하게 하면 자이로 신호의 노이즈를 감쇠시켜서 데이터를 PID 계손에 보내게 됩니다. 하지만 강한 필터링은 지연을 초래하여, 불안정과 반응성 저하로 이어질 수 있습니다. 필터링은 필요합니다. 특히 부피가 작고 빠르게 제동되는 ESC를 부착한 쿼드의 경우 "D" 항이 모터/프레임 노이즈가 모터의 과열을 가져올 수 있기 때문입니다. 188 이하로 설정할 경우, 자이로 샘플링은 내부적으로 1kHz 로 되고 지연이 더욱 커집니다. 반응성이 높아지기 때문에 빠른 샘플링이 좋지만, aliasing 잡음을 초래할 수 있습니다. 188로 설정하면 FC와 자이로가 1 kHz에서 동기화되어 ([gyro_sync]를 활성화시키고 코드에서 존재할 경우), aliasing이 많이 줄어들게 됩니다. 

[gyro_soft_ldf]는 IIR(Infinte Impulse Response: 무한 충동 반응) 소프트웨어 저대역 통과필터로, 원하는 주파수에 맞춰 설정할 수 있습니다. 0 이상의 값으로 설정하면 활성화됩니다. 이는 하드웨어 필터 이후에 작동하여(FC 코드에서) 노이드를 더 줄여줍니다. 두개의 필터를 모두 사용하면 하나만 사용할 때보다 cut 비율이 2배가 됩니다. [gyro_soft_ldf]를 [gyro_ldf] 보다 높은 값으로 설정하는 것은 그다지 의미가 없습니다. 일반적으로 소프트웨어 필터는 하드웨어 필터 비율의 반정도로 설정하여, 보다 높은 주파수의 차단을 강화한 후 PID 계산으로 보냅니다. 100Hz 이상의 주파수는 비행 콘트롤의 관점에서 우리에게 관심이 없습니다. - 이러한 주파수는 반드시 신호에서 제거한 후 PID 계산에 보내야 합니다.

[dterm_cut_hz] 는 원하는 주파수에 맞춰 설정할 수 있는 IIR 소프트웨어 저대역 통과 필터입니다. 이 필터는 [gyro_cut] 필터 이후 작동하며 특히 "D" 항 데이터에만 필터링합니다. D 항 데이터는 주파수에 의존적으로 주파수가 높을 수록 계산되는 D 항 값이 커집니다. 이 필터는 자이로 필터링에도 불구하고 D 항 잡음이 많이 남을 경우에 필요합니다. 전형적으로 이 필터는 상당히 낮게 설정할 필요가 있습니다. D 항 잡음이 일반 IIR 필터의 주요 문제이기 때문입니다. 단 너무 낮게 설정하면, D 항의 위상 천이(phase shift)로 인해 제어에 있어 불안정을 막아주는 D항의 효과를 감소시키므로, 변경할 때 신중할 필요가 있습니다. 이 필터의 값을 적절하게 최적화 하려면 블랙박스 기록이 필요합니다.

HORIZON 모드 명령(Horizon Mode Commands)

CLI 명령 [horizon_tilt_effect]와 [horizon_tile_mode]는 Horizon 비행모드에서 현재의 기울기(current inclination)가 자동 레벨에 미치는 효화를 제어합니다. (현재의 기울기는 기체가 수평에서 벗어난 피치와 롤 각도입니다. ?? The current inclination is the number of degrees of pitch or roll that the vehicle is away from level, whichever is greater)

[horizon_tilt_effect] : 현재의 경사도(tilt)가 HORIZON 비행 모드에서 자동레벨에 미치는 효과를 제어합니다. 큰 값으로 설정하면 기체가 기울어질 수록 자동 레벨을 줄이는 결과(좀더 "ACRO"에 가깝게) 를 가져옵니다. 기본값은 75로서, 회전은 크게하고 빠리게 전진하는 비행에서 좋은 성능을 발휘합니다. 0으로 설정하면 자동레벨의 강도는 조종간의 위치와는 완전히 독립적으로 됩니다.

[horizon_tilt_mode] SAFE|EXPERT: "horizon_tilt_effect"의 성능 모드를 설정합니다.

SAFE = 조종간이 중앙에 오면 레벨링이 항상 활성화됩니다. 조종간을 놓으면 자동 레벨이 활성화되므로, "안전한" 범위입니다. 따라서 기체가 뒤집혔을 때 (180도 회전) 조종간이 중앙으로 오면, 기체는 그 죽시 자동레벨이 적용되어 똑바로 평형을 잡습니다. (참고로 : 이와 같이 매우 빠르게 180도 자동레벨이 수행된 후에는 기체의 방향이 예측하지 못하게 될 수 있습니다.)

EXPERT :  뒤집어지면 레벨링이 완전히 꺼질 수 있습니다. : 이 범위에 있으면 기체의 기울기가 자동레벨을 완전히 "덮어쓸" 수 있습니다. 이 모드에서 "horizon_tilt_effect' 변수를 약 75 정도로 설정하면 기체는 뒤집히고. 이때 조종간이 중앙으로 오면 기체는 자동레벨이 되지 않습니다. 좀더 ACRO에 가까운 기동을 수행할 경우 (3D 모드 비행도) 이쪽이 더 바람직합니다. 

"horizon_tilt_effect" 와 "horizon_tilt_mode" 값은 각각의 프로필별로 분리되어 있으며, LUX 및 MWREWRITE를 위해 구현되었습니다.

===

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/PID%20tuning.md

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 20. 17:13

원샷(Oneshot)

원샷을 사용하면 비행콘트롤러와 ESC사이에 더빠르게 통신할 수 있습니다.

아래와 같은 두가지 방법이 있습니다.

  1. 125µs 와 250µs 사이로 변하는 신호를 사용합니다. ?? (일반 PWM 타이밍은 1000µs 에서 2000µs 정도)
  2. 비행콘트롤러 루프마다 한번의 "샷"을 보내며, 비행콘틀러가 필요한 모터 속도를 계산하자마자 이를 수행합니다.

지원되는 ESC

FlyDuino KISS의 ESC는 원래부터 Oneshot125 프로토콜을 사용할 수 있습니다. 단 한번의 납땜만 필요합니다. BLHeli rev13.0 도 Oneshot125를 지원하며, 추가적인 작업없이 ESC에 의해 자동적으로 선택됩니다.

지원되는 보드

Naze 보드는 지원되며, 여러가지 설정에서 이미 테스트 되었습니다.

CC3D 보드는 PPM 수신기로 테스트 했지만, 병렬식 PWM 수신기는 이 보드와 잘 안맞을 수 있습니다.

원샷 모드 활성화

원샷모드를 구성하려면 먼저 ESC의 전원을 꺼야 합니다.

이 단계에서 ESC를 원샷모드로 구성하는 게 좋습니다. (KISS ESC의 경우 JP1을 납땜합니다.)

USB 케이블을 보드에 연결하고, 크롬 GUI 앱을 사용하여 연결합니다.

CLI 탭에서 다음과 같이 입력합니다.

feature ONESHOT125
save

이제 ESC에 다시 전원을 넣으면 됩니다.

설정(Configuration)

원샷 ESC를 설정하는 절차는 다른 ESC와 동일합니다.

  1. ESC에 전원이 안들와 있는지 확인합니다.
  2. 보드를 USB 케이블로 연결하고, 모터 테스트 페이지로 들어갑니다.
  3. 주 슬라이더를 사용하여 모터 속도를 최대로 설정합니다.
  4. ESC에 전원을 공급합니다. 이때 삑 소리가 들립니다.
  5. 슬라이더를 클릭하여 모터 속도를 0으로 가져옵니다. ESC에서 (대부분의 경우 여러번) 삑 소리가 다시 들립니다. 
  6. ESC에서 전원을 차단합니다.
  7. ESC에 다시 전원을 연결하고, 모터 슬라이더를 움직여서 정상적으로 회전하는지 확인합니다.

참고 문헌

====

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Oneshot.md

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 20. 17:11

SPRacing F3 Evo 보드

Seriously Pro Racing F3 Evo(SPRacingF3Evo)는 특별히 클린플라이트를 위해 설계된 첫번째 비행콘트롤러 보드의 진화된 모델입니다.

SeriouslyPro / SP Racing 또는 공식 리셀러를 통해 이 보드를 구입하면, 클린플라이트 개발에 도움이 됩니다. 이것이 Serious pro 보드가 존재하는 이유입니다. 공식 리셀러는 항상 SerouslyPro.com 웹사이트에 나열되어 있습니다.

상세한 내용은 아래 웹사이트를 방문하세요.

http://seriouslypro.com/spracingf3evo

하드웨어 기능(Hardware Feature)

  • 효율적인 비행 계산을 위한 하드웨어 부동소숫점 프로세서와 더 빠른 ARM-COrtex M4 코어를 장착한 차세대 STM32 F3 프로세서
  • 블랙박스 비행로그 기록기를 위한 MicroSD 카드 소켓 - 튜닝 최적화 및 설정 결과를 직접 볼 수 있음 (Acro 및 Delux)
  • 레이싱 무선중계기(transponder) 내장 - 레이싱시 켜기만 하면 lap time이 기록됨
  • 최신 가속도계, 자이로, 전자나침판 및 기압계/고도계 센서 기술 탑재
  • Wire up using using pin headers for all major connections for excellent crash-durability. Use either right-angled or straight pin-headers.
  • 탁월한 충돌 내구력을 위하여 모든 주요 연결부위에 pin headers를 이용하여 결선. 직각형(right angled) 또는 직선형(strait) pin-header를 사용
  • I/O 동시사용가능. 모든 기능을 동시에 사용가능. 예를 들어, USB + OSD + SmartPort + SBus + GPS + 띠형 LED + 배터리 모니터링 + 8 모터 를 한꺼번에 연결 가능 (초음파센서는 CF 1.14에서 지원 예정)
  • ESC 및 서보를 위한 8개의 PWM 출력선. 표준 pin header로 쉽게 결선할 수 있도록 배열
  • SBus, SumH, SumD, Spektrum 1024/2045, XBus 수신기를 직접 연결 지원. 외부 인버터(inverter) 불필요 (내장)
  • 3 pin through - hole JST-ZH 커넥터를 통해 3.3v Spektrum Satellite 수신기 직접 연결 지원
  • 전용 PPM 수신기 입력
  • 3 시리얼포트 - USB 소켓과 공유되지 않음
  • 텔레메트리 포트
  • 마이크로 USB 소켓
  • 프로그램가능 LED를 위한 전용 출력 - 방향잡기, 레이싱, 야간 비행에 최고 (현재 무선중계기(Transponer)와 둘중 하나만 사용가능)
  • 비행용 배터리가 필요없이 OLED 표시장치를 연결할 수 있는 전용 I2C 포트
  • 전압과 전류를 확인할 수 있는 배터리 모니터링
  • 수신신호강도(RSSI) 감시 (아날로그 또는 PWM)
  • 음향 경고 및 신호를 위한 부저 포트
  • 개발자가 사용하기 쉬운 디버깅용 포트(SWD)와 부트모드 선택, unbrickable bootloader.
  • 아주 깔끔한 결선 작업을 위한 대칭 설계
  • JST-SH sockets only for I2C, UART2 and SWD. UART2 also on through-hole pins.
  • I2C, UART2 와 SWD 만을 위한 JST-SH 소켓. UART2 also on through-hole pins.
  • USB 또는 시리얼포트를 통한 재설치(flash)
  • 다층적재가능형 설계 - OSD 및 전원분배기(PDB)와 통합할 때 최적
  • 표준 설치 - 표준 30.5mm 설치홀이 있는 36x36mm 보드
  • 3v, 5v 용 LED와, 쉬운 진단을 위한 Status??
  • 구리로 에칭한 Cleanflight 로고

시리얼 포트(Serial Ports)

ValueIdentifierRXTX5v TolerantNotes
1USART1PA10PA9YES2 through-hole pins. Use for connecting to OSD/GPS/BlueTooth.
2USART2PA15PA14 / SWCLKYESJST socket and PPM header. Use to connect to RX.
3USART3PB11 / AF7PB10 / AF7NOAvailable on 4 through-hole pins. 3.3V signals only ! Use for GPS, Spektrum Satellite RX, SmartPort Telemetry, HoTT telemetry, etc.
  • SWD와 USART2를 동시에 사용할 수 없습니다.
  • 시리얼 RX 수신기를 사용할 때, TXD(T2) 핀은 텔레메트리로 사용할 수 없습니다. UART3 TXD 를 사용하세요.
  • 소프트웨어 시리얼은 지원하지 않습니다.
  • Windows DFU Flushing은 Zadig(configurator를 보세요)가 필요합니다.

배치도(Pinouts)

상세 배치도는 매뉴얼에 들어 있습니다.

http://seriouslypro.com/files/SPRacingF3EVO-Manual-latest.pdf

IO_1

6 핀 IO_1 커넥터의 배치(RX_SERIAL 모드)는 아래와 같습니다.

PinFunctionNotes
1Ground
2VCC_INVoltage as-supplied by BEC.
3RX_SERIALEnable feature RX_SERIAL
4
5+V BATTERYVoltage as-supplied by Battery.
6-V BATTERYVoltage as-supplied by Battery.

RX_PPM 모드의 경우 IO_1 배치는 다음과 같습니다.

PinFunctionNotes
1Ground
2VCC_INVoltage as-supplied by BEC.
3RX_PPMEnable feature RX_PPM
4TELEMETRYEnable feature TELEMETRY
5+V BATTERYVoltage as-supplied by Battery.
6-V BATTERYVoltage as-supplied by Battery.

IO_2

TRANSPONDER 가 사용되고 IR 땜질 패드를 합선시킬 때 6 핀 IO_2 의 배치는 아래와 같습니다.

PinFunctionNotes
1IR-Short leg of the IR LED
2IR+Long leg of the IR LED
3CURRENTCurrent Sensor
4RSSIRSSI (PWM or Analog - select by solder pads)
5BUZZER+5V Source
6BUZZER-Buzzer signal

LEDSTRIP 이 사용되고 LED 납땜패드를 합선시켰을 때 6 핀 IO_2 커넥터의 배치는 아래와 같습니다.

inFunctionNotes
1
2LEDSTRIPWS2812 Ledstrip data
3CURRENTCurrent Sensor
4RSSIRSSI (PWM or Analog - select by solder pads)
5BUZZER+5V Source
6BUZZER-Buzzer signal

UART1

PinFunctionNotes
3TXD
4RXD

UART2/3

PinFunctionNotes
1Ground
2VCC_INVoltage as-supplied by BEC.
3TXD
4RXD

Spektrum Satellite

PinFunctionNotes
33.3V
2Ground
1RXD

I2C

PinFunctionNotes
1Ground
25.0vVoltage as-supplied by BEC OR USB, always on
3SCL
4SDA

SWD

이 포트는 UART2와 동시에 사용할 수 없습니다.

PinFunctionNotes
1Ground
2NRST
3SWDIO
4SWDCLK

===

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Board%20-%20SPRacingF3Evo.md


Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 20. 17:09

믹서(Mixer)

클린플라이트는 custom mixing외에도 여러가지 mixing 설정을 지원합니다. Mixer 설정은 기체를 제어하기 위해 서보와 모터가 어떻게 함께 작동하는지를 결정합니다.

설정(Configuration)

내장 믹싱 설정을 사용하려면, 크롬 설정프로그램 GUI를 사용합니다. GUI에는 여러가지 믹서 우ㅠ형이 그림으로 있어, 적절한 연결을 만드는 데 도움이 됩니다. GUI에 관한 더 많은 정보는 이 문서의 설정(Configuration) 부분을 보세요.

명령어 입력방식(CLI)으로 믹서 유형을 설정할 수도 있습니다.

  1. [mixer list] 를 사용하여 지원되는 믹서의 리스트를 살펴봅니다.
  2. 믹서를 선택합니다. 예를 들어 [select TRI]를 쓰면 TRI 믹서를 사용하게 됩니다.
  3. [save] 명령을 사용하여 변경된 내용을 저장합니다.

지원되는 믹서 유형 (Supported Mixer Types)

NameDescriptionMotorsServos
TRITricopterM1-M3S1
QUADPQuadcopter-PlusM1-M4None
QUADXQuadcopter-XM1-M4None
BIBicopter (left/right)M1-M2S1, S2
GIMBALGimbal controlN/AS1, S2
Y6Y6-copterM1-M6None
HEX6Hexacopter-PlusM1-M6None
FLYING_WINGFixed wing; elevonsM1S1, S2
Y4Y4-copterM1-M4None
HEX6XHexacopter-XM1-M6None
OCTOX8Octocopter-X (over/under)M1-M8None
OCTOFLATPOctocopter-FlatPlusM1-M8None
OCTOFLATXOctocopter-FlatXM1-M8None
AIRPLANEFixed wing; Ax2, R, EM1S1, S2, S3, S4
HELI_120_CCPM
HELI_90_DEG
VTAIL4Quadcopter with V-TailM1-M4N/A
HEX6HHexacopter-HM1-M6None
PPM_TO_SERVO
DUALCOPTERDualcopterM1-M2S1, S2
SINGLECOPTERConventional helicopterM1S1
ATAIL4Quadcopter with A-TailM1-M4N/A
CUSTOMUser-defined
CUSTOM AIRPLANEUser-defined airplaneM1-M2S1-S8
CUSTOM TRICOPTERUser-defined tricopter

서보 설정 (Servo Configuration)

CLI [servo] 명령을 사용하면 서보 출력 설정을 정의할 수 있스빈다. CLI mixer [smix] 명령은 믹서가 내부 FC 데이터 (RC 입력, PID 안정화 출력, 채널 포워딩 등)와 서보 출력를 매핑하는 방법을 제어할 수 있습니다.

채널 포워딩 (Channel Forwarding)

채널 포워딩을 사용하면, AUX 채널을 PWM 5-8번 핀을 통해 직접 서보로 전달할 수 있습니다. 이 기능을 사용하려면, GUI에서 features 탭에서 설정하거나, CLI 명령 [feature CHANNEL_FORWARDING]를 사용합니다. 이렇게 하려면 PPM 또는 또다른 시리얼 RC 프로토콜을 작동시켜야 하는데, 현재 NAZE 와 SPRACINGF3 target에서 지원됩니다. 참고로, NAZE target에서 LED 기능을 활성화시켰다면 AUX1-2는 PWM13-14로 매핑됩니다. 따라서, 예를 들어, 이 기능을 수신기로 부터 Naze AUX1 에서 활성화시켰다면 서보 명령으로서 PWM5로 전달될 것입니다.?? So for instance if you enable this feature on a Naze AUX1 from your receiver will automatically be forwarded to PWM5 as a servo signal.

cli [servo]

[servo <min> <max> <middle> <angleMin> <angleMax> <rate> <forwardFromChannel> ]

  • <min>, <max> - 서보값의 최대 최소. 단위 uS
  • <middle> - 포워딩하지 않을 때 중간값. 서보 믹서로부터 나온 값이 여기에 더해짐
  • <anglemin>, <anglemax> - 사용하지 않음
  • <rate> - 서보믹서나 짐벌 입력에서 온 값에 대한 비율, -100% .. 100%
  • <forwardfromchannel> - <middle> 대신 RC 채널 값을 기준값으로 사용함. 서보는 주어진 RC 채널을 따르되, 서보 믹서에서 온 보정값이 적용됨. <min>, <max>는 계속 존중됨

서보 필터링 (Servo Filtering)

서보에 저대역 통과필터를 활성화시킬 수 있습니다. 예를 들어 airframe 에서 structural modes?? 를 피하는데 유용할 수 있습니다.

설정 (Configuration)

현재 CLI를 통해서만 설정할 수 있습니다.

  1. [set servo_lowpass_freq = nnn]를 사용하여 cutoff 주파수를 선택합니다. 유효한 값은 10Hz 에서 400 Hz로, 2급(second order) 필터가 사용됩니다.
  2. [set servo_lowpass_enable = ON]을 사용하면 필터링을 활성화시킬 수 있습니다.

튜닝(Tuning)

아래는 필터 cutoff를 튜닝하는 방법중 하나입니다.

  1. 먼저 기체가 문제 있는 축에서 적어도 어느정도 자유롭게 이동할 수 있는지 확인합니다. 예를 들어, tricopter에서 yaw가 진동한다면, 콥터가 적어도 좌측 우측으로 몇도 정도 회전할 수 있지 확인합니다. 무게중심 인근 서스펜션이 이상적입니다. 다른 방법으로, 비록 튜닝이 약간 더 지루해질지라도 그냥 기체를 날리고, 없애고자하는 문제 상황을 촉발시켜봅니다. (Ensure your vehicle can move at least somewhat freely in the troublesome axis. For example, if you are having yaw oscillations on a tricopter, ensure that the copter is supported in a way that allows it to rotate left and right to at least some degree. Suspension near the CG is ideal. Alternatively, you can just fly the vehicle and trigger the problematic condition you are trying to eliminate, although tuning will be more tedious.)
  2. 기체의 평가하고자하는 축의 끝부분을 살짝 건드립니다. 의문시되는 서보를 움직이도록 직접 명령하는 것도 사용할 수 있습니다. tricopter 예에서는 꼬리쪽 봉의 끝을 옆쪽에서 밀어보거나, 송신기를 사용해 yaw 명령을 내립니다.
  3. 기체가 몇초 정도 흔들리거나, 계속해서 진동한다면, 필터 cutoff 주파수를 줄여야 합니다. [servo_lowpass_freq]의 값을 반으로 줄이고, 이전 단계를 반복합니다.
  4. 진동이 약 1초 이내에 줄어들거나, 아얘 나타나지 않으면 완료된 것입니다. 저장을 하시고 나가세요.

맞춤식 모터 믹싱(Custom Motor Mixing)

맞춤식 모터 믹싱을 사용하면 완전히 맞춤화된 모터 설정이 가능합니다. 각각의 모터는 해당 모터를 위한 맞춤식 믹싱 테이블로 정의되어야 합니다. 비행 콘트롤러의 무게중심을 기준으로 각 모터가 얼마나 가까운지를 반영해야 합니다. 무게중심에 가까운 모터는 멀리있는 모터보다 조금 움직이게 할 필요가 있습니다. (Custom motor mixing allows for completely customized motor configurations. Each motor must be defined with a custom mixing table for that motor. The mix must reflect how close each motor is with reference to the CG (Center of Gravity) of the flight controller. A motor closer to the CG of the flight controller will need to travel less distance than a motor further away.)

CLI에서 맞춤식 믹서를 설정하는 순서:

  1. [mixer custom] 명령으로 맞춤식 믹싱을 가능하게 합니다.
  2. [mmix reset] 을 사용하여, 기존의 맞춤식 믹싱을 삭제합니다.
  3. [mmix load <name>]을 사용하여 기존의 믹서를 불러올 수도 있습니다.
  4. 각각의 모터에 mmix 명령을 일으킵니다.

The mmix statement has the following syntax: 

mmix 문의 문법은 : mmix n THROTTLE ROLL PITCH YAW

믹싱테이블 변수정의
n

모터 ordering 번호

THROTTLE

Indicates how much throttle is mixed for this motor. All values used in current configurations are set to 1.0 (full throttle mixing), but other non-zero values may be used. Unused set to 0.0.

ROLL

Indicates how much roll authority this motor imparts to the roll of the flight controller. Accepts values nominally from -1.0 to 1.0.

PITCHIndicates the pitch authority this motor has over the flight controller. Also accepts values nominally from -1.0 to 1.0.
YAWIndicates the direction of the motor rotation in relationship with the flight controller. 1.0 = CCW -1.0 = CW.

참고 : mmix 명령은 활성화되지 않은 모터믹스를 보여줄 수도 있습니다. 맞춤식 모터 믹스는 막춤식 믹서를 사용하는 모델에 대해서만 활성화됩니다.

참고 : 모든 모터 번호가 0에서 시적하도록 설정해야 합니다. 이전의 모터번호에 대한 mmix 명령이 없을 경우, 명령이 무시됩니다. (믹서는 THROTTLE 값이 0인 첫번째에서 정지합니다.

맞춤식 서보 믹싱(Custom Servo Mixing)

(이하 생략합니다.)

===

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Mixer.md

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 20. 15:56

Chebuzz F3 보드

ChebuzzF3 보드는 "딸" 보드로 STM32F3Discovery의 바닥에 부착하여, pin header와 여러가지 FC 연결을 위한 포트를 제공합니다.

모든 연결은 multimeter를 사용하여 추적되며, 아래의 리비전에 사용되는 TauLabs 소스코드로 검증됩니다.

https://github.com/TauLabs/TauLabs/blob/816760dec2a20db7fb9ec1a505add240e696c31f/flight/targets/flyingf3/board-info/board_hw_defs.c

(이하 생략합니다.)

====

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Board%20-%20ChebuzzF3.md

이전글 : Olimexino 보드

다음글 : 없음

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 20. 15:47

Olimexino 보드

Olimexino는 저렴하고 널리 사용되는 개발용 보드입니다.

이 보드는 클린플라이트 개발용으로는 좋지 않습니다. 많은 핀들이 header pin으로 나오지 않기 때문입니다. 개발에 더 좋은 것은 Port103R, EUSTM32F103RB (F1), STM32F3Discovery (F3) 등입니다.

(이하 생략합니다)

===

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Board%20-%20Olimexino.md

이전글 : CJMCU 보드

다음글 : Chebuzz F3 보드

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 20. 14:56

CJMCU 보드

CJMCU 보드는 STM32F103기반의 아주작은(80mm) 보드로, 3축 지자게(compass)와 가속도계/자이로(MPU6050)을 포함하고 있습니다.

이 보드에는 USB-Serial 변환기가 없으므로, 외부 어댑터가 필요합니다.

Hardware revisions

Revision

참고사항

1

LED1에 의해 boot jumper pad 없음??. 파랑, 빨강 LED를 사용함

2

Boot jumper pad가 핀과 LED1 점퍼에 미리 납땜되어 있음. ???

초록 및 빨강 LED를 사용함

버전2 보드는 펌웨어 v1.4.0 이후만 지원합니다. 버전2 보드에 이전의 버전을 쓰려고 시도하지 마세요.

(이하 생략합니다.)

===

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Board%20-%20CJMCU.md

이전글 : CC3D 보드

다음글 : Olimexino 보드

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 20. 13:55

CC3D 보드

OpenPilot의 Copter Control 3D(약칭 CC3D)는 아크로바틱비행 또는 GPS기반의 자동주행에 맞체 좀더 튜닝된 보드입니다. CC3D는 MPU6000 SPI 기반의 가속도계/자이로 만을 사용합니다. 16MBit 기반의 EEPROM 칩을 탑재하고 있습니다. 6개의 포트에는 입력으로 표시되어 있고, 6개의 포트는 모터/서보 출력(각각 3개의 칩)으로 표시되어 있습디다.

이 보드에서 문제를 발견하시면 github issue tracker 를 통해 알려주시기 바랍니다.

이보드에는 프로세서에 직접 연결된 USB가 있습니다. Naze 와 Flip32와 같은 보드는 보드상에 USB - UART 어탭터가 있어, 이것이 프로세서의 시리얼 포트에 연결됩니다.

이 보드는 헥사콥터나 옥타콥터에는 사용할 수 없습니다.

트라이콥터나 고정익은 아직 테스트를 안해봤습니다. 사용해보시면 성공했는지 실패했는지 알려주세요.

(이하 생략합니다.)

====

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Board%20-%20CC3D.md

이전글 : AlienFlight 보드

다음글 : CJMCU 보드

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 20. 10:08

보드 - AlienFlight (ALIENFLIGHTF1 과 ALIENFLIGHTF3 가 대상)

AlienWii가 AlienFlight로 바꼈습니다. 목표는 여러가지 다양한 변종의 비행콘트롤러를 지원하기 위함입니다. 설계는 아래 사이트에서 볼 수 있습니다.

http://www.alienflight.com

모든 공개된 설계는 여러 사람들의 비행테스를 거쳤습니다. 여기에서는 비행콘트롤러를 공개하고, 숙련된 사용자나 RC vender들이 이 설계를 구현하게 하는 것이 목적입니다.

아래는 이 보드의 일반적인 하드웨어 사양입니다.

  • STM32F103CBT6 MCU (ALIENFLIGHTF1)
  • STM32F303CCT6 MCU (ALIENFLIGHTF3)
  • MPU6050/6500/9250 가속도계/자이로(/전자나침반) 센서
  • MPU 센서 interrupt는 모든 새로운 F3 설계를 위한 MCU에 연결되어 있으며, 펌웨어에서 활성화됩니다. ??
  • 4-8개의 4.2A-9.5A 브러쉬 ESC, 튼튼한 마이크로모터를 돌리기 위해 통합???
  • power 처리량을 최대로 올리기 위해 PCB에서 매우 넓은 traces. ???
  • USB 포트가 통합됨
  • (*) 외부 DSM2/DSMX sat 수신기 (예 Spektrum SAT, OrangeRx R100, Lemon RX, Deltang Rx31)를 위한 시리얼 연결
  • CPPM 입력
  • 수신기를 위한 접지 및 3.3V
  • 쉬운 바인딩을 위한 하드웨어 bind plug
  • 전선을 줄이고 깨끗하게 보이도록 모터는 가장자리에 연결
  • footprint 작음 ??
  • 1S 리포배터리로 직접 구동
  • 3.3V LDO 전원 정압기(오래된 제품)
  • 3.3V buck-boost 전원 변환기(모든 새로운 버전)
  • FPV를 위한 5V buck-boost 전원 변환기 (일부 버전)
  • LED를 사용한 배터리 체크(일부 ALIENFLIGHTF3 변형제품에만)

(*)Spektrum 호환형 DSM2 satellites는 즉시 지원니다.. DSMX sat은 기본값(DSM2, 11bit, 11ms)으로 DSM2 프로토콜로 작동됩니다.이는 최대한의 호환성을 확보하기 위함입니다. 최족의 연결을 위해서는 가지고 계신 수신기와 Satellite 수신기의 성능에 맞춰 설정을 변경하는 것이 좋습니다. 가능하다면 DSMX 프로토콜을 사용하세요. 신뢰성이 높다고 합니다. 아울러 추가 채널을 사용하려면 클린플라이트 설정프로그램에서 아래 두 변수를 변경하셔야 합니다.

set serialrx_provider = 1   (0 for 1024bit, 1 for 2048bit) 
set spektrum_sat_bind = 5

여러가지 바인드 모드에 대한 자세한 내용은 Spektrum Bind 문서를 확인하세요.

시리얼모드에서 Deltang 수신기는 다른 Spektrum satellite 수신기처럼 작동합니다. (10bit, 22ms) 바인드 절차만 다릅니다.

ALIENFLIGHTF1 핀 배치는 NAZE32 또는 관련있는 짝퉁(MW32, Flip32 등)과 매우 유사합니다. 하드웨어 bind pin는 41번핀(PB5)에 연결되어 있습니다. ALIENFLIGHTF3 핀 배치는 Sparky와 유사합니다. 하드웨어 bind pin은 25번핀(PB12)에 연결되어 있습니다. 새로운 AlienFlightF3 V2 설계는 센서가 SPI를 통해 연결되며, 핀 배치가 약간 다릅니다. 모든 AlienFlight/AlienWii F3 는 동일한 펌웨어로 작동되며, 펌웨어에서 하드웨어의 차이를 감지합니다.

AlienFlgiht 펌웨어는 ALIENFLIGHTF1 또는 ALIENFLIGHTF3 을 대상으로 제작되었습니다. 펑뭬어 이미지는 사용자에게 Plug & Play 경험을 주고자, alternative default setting으로 옵니다.?? 작은 쿼드콥터의 경우, 별도의 컴퓨터가 없이도 기체를 띄울 수 있습니다. 옥타콥터를 위한 미리 설정된 custom mixer 는 AlienFlight과 깔끔하게 직결할 수 있는 기본 설정의 일부입니다. ?? 이 Mixer는 CLI에서 "mixer custome"으로 활성화 시킬 수 있습니다. AlienFlight을 헥사콥터 혹은 옥타콥터에서 사용하려면 좀더 많은 튜닝이 필요합니다. 추가적인 설정변경은 CLI 또는 설정프로그램을 통해 수행할 수 있습니다.

펌웨어설치(Flashing the firmware)

펌웨어는 다른 FC와 마찬가지로 Cleanflight 설정프로그램으로 갱신할 수 있습니다. 모든 AlienFlight 보드는 부트 점퍼(boot jumper)가 있는데, 최초의 설치 혹은 망가진 펌웨어 재복구 등의 경우, 반드시 막아주어야 합니다.

===

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Board%20-%20AlienFlight.md

이전글 : Paris Air Hero 32 / Acro Naze 32 Mini 보드

다음글 : CC3D 보드

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 20. 10:00

Paris Air Hero 32 / Acro Naze 32 Mini 보드

이 보드들은 Naze32 보드와 동일한 펌웨어를 사용합니다.

센서(Sensors)

MPU6500 (SPI 인터페이스)

포트(Ports)

6 x 3핀 ESC / 서보출력 1 x 8핀 JST 커넥터 (PPM/PWM/UART2) 1 x 4핀 JST 커넥터 (UART3/I2C)

(이하 생략합니다.)

===

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Board%20-%20Paris%20Air%20Hero%2032.md

이전글 : AbuseMark Naze32 보드

다음글 : AlienFlight 보드

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 20. 09:34

AbuseMark Naze32 보드

Naze32의 목표는 모든 버전의 Naze 하드웨어를 지원하는 것입니다. 주요한 사람들이 Revition 4와 5를 사용하고 많이 날리고 있습니다. 예전 버전의 Naze 하드웨어는 문제가 있을 수 있으며, 문제가 발견되면 github issue tracker를 통해 알려주시면 감사하겠습니다.

(이하 생략합니다.)

====

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Board%20-%20Naze32.md

이전글 : RMRC DoDo 보드

다음글 : Paris Air Hero 32 / Acro Naze 32 Mini 보드

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 20. 09:14

RMRC DoDo 보드

RMRC DoDo 보드는 Ready Made RC에서 제작 판매하고 있습니다. CUP pin mapping 의 관점에서 볼 때, SPRacingF3 보드의 짝통입니다. (자세한 내용은 SPRacingF3 문서를 보세요.) 현재 하드웨어가 약간씩 다른 세가지 버전 (Rev. 1, 2, 3)가 존재합니다.

Revision 3 보드는 메모로를 128kB에서 256kB로 CPU를 변경하였습니다. 하지만 호환성 문제때문에 Cleanflight 는 128kB 만 지원하고 사용하비낟. 동일한 바이너리 코드를 모든 DODO 보드에서 사용할 수 있습니다.

하드웨어 특징(Hardware Features)

  • 128kB 또는 256kB 플래시 메모리(Rev 3만 256kB)를 장착한 STM32 F3 ARM Cortex-M 프로세서 
  • 저장을 위한 외부 플래시 메모리 2MB
  • MPU6050 가속도계/자이로 (Rev. 2: MPU6000)
  • BMP280 기압계
  • 전자나침반 센서는 없음
  • GPS, 텔레메트리, OSD 등에 사용할 수 있는 3개의 하드웨어 UART (+ software). 5v 사용가능
  • 내장 5V/0.5A BEC (2-6S 배터리에서 전원 공급) 외장 BEC/정압기 필요 없음
  • Spektrum satellite 수신기 등의 주변기기를 위한 내장 3.3V 정압기 
  • 표준 36x36mm 보드 (30.5mm 설치구멍) (CC3D/Naze32 등과 동일. 핀배치는 다름)

참고 : 초기버전에서는 부저 회로에 문제가 있었음

(이하 생략합니다)

====

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Board%20-%20RMDO.md

이전글 : MotorLab 보드

다음글 : AbuseMark Naze32 보드

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 19. 15:17

보드 - MotorLab

MOTOLAB build는 MotoLab에서 공급되는 STM32F3 기반의 보드를 지원하는 것이 목표입니다.

현재 .TornadoFC, CycloneFC, MotoF3 등이 해당됩니다.

CycloneFC 와 TornadoFC 에 대해서는 다음 글을 확인하세요.

http://www.rcgroups.com/forums/showpost.php?p=32330479&postcount=2

MotoF3 는 아래 글을 참고하세요.

http://www.rcgroups.com/forums/showpost.php?p=28508139&postcount=3

모든 보드는 STM32F303 를 사용하며, 다음과 같은 특징이 있습니다.

  • 플래시 메모리 256kB
  • 부동 소숫점 연산 코프로세서
  • 하드웨어 시리얼포트 UART 3개
  • 내장 USB phy를 사용하는 USB. 하드웨어 UART와 간섭이 없습니다.
  • 안정적인 전압 정압기
  • 고전압/고전류 부저/LED 출력
  • 시리얼 LED 인터페이스
  • 1/10 divider 비율의 저주파 필터링 VBAT 입력 
  • 저주파 필터링된 PWM 혹은 아날로그 RSSI 입력
  • 8개의 합선방지 PWM 출력. TornadoFC의 경우 5V buffering
  • 4S-호환가능한 switching regulator 내장 (CycloneFC and MotoF3)
  • 6S 리포 작업이 가능한 Pololu switching regulator 옵션의 직접 설치가능(TornadoFC)
  • 클린플라이트 설정프로그램(Configurator)을 통하여 BLHeli 기반의 ESC의 Pass-through 프로그래밍 및 설정

MotoF3는 4개의 ESC, 부저, 데이터 로그를 위한 2MB SPI flash를 위한 전원분배체계를 내장하고 있습니다.

(이하 생략합니다.)

===

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Board%20-%20MotoLab.md

이전글 : TBS Colibri RACE 보드

다음글 : RMRC DoDo 보드

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 19. 14:36

Sparky 보드

Sparky는 매우 저렴하면서도 매우 강력한 보드입니다.

  • 하드웨어 시리얼포트 3개
  • 시리얼포트 인버터가 내장되어 외부 인버터 없이도 S.BUS 수신기 연결 가능
  • USB (다른 시리얼포트와 동시에 사용 가능)
  • 10 PWM 출력
  • 전용 PPM/SerialRX 입력 핀
  • MPU9150 I2C 가속도계/자이로/전자나침반 사용
  • 기압계

revision 1 & 2 보드에 대해 테스트를 완료했습니다.

해야 할 일(TODO)

  • 디스플레이(Flex 포트를 통해)
  • SoftSerial - 하드웨어 시리얼포트가 3개가 있어 약간 중복되긴 하지만..
  • Airplane PWM mappings.

전압 및 전류 체크 (ADC 지원)

PWM9 핀을 활성화하면 전압 체크가 가능하며, PWM8 핀을 통해 전류도 체크할 수 있습니다. 전압 divider 와 전류 sensor는 외부적으로 연결해야 합니다. 이때 센서의 사양에 맞도록 [vbatscale] CLI 변수를 조정해야 합니다. 센서 하드웨어에 대한 자세한 사항은 아래 주소를 확인하세요.

https://github.com/TauLabs/TauLabs/wiki/User-Guide:-Battery-Configuration

(이하 생략합니다.)

====

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Board%20-%20Sparky.md

이전글 : 보드 - Seriously Pro SP Racing F3

다음글 : 보드 - MotoLab

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 19. 14:13

TBS Colibri RACE 보드

Colibri RACE는 STM32F3 기반 비행 콘트롤러로서, 특별히 TBS POWERCUBE multi rotor stack 과 작동하도록 설계되었습니다.

하드웨어 기능(Hardware Feature)

  • 뛰어난 성능을 위한 STM32F303 기반의 칩셋
  • PPM, SBUS, DSM, DSMX 입력(5V 와 3.3V 내부 BUS를 통해 공급됨) 별도의 인버터나 해킹 필요없음.
  • 6 개의 PWM ESC 출력 채널 (자동연결, 내부 BUS)
    • RGB 띠형 LED 지원 + 전원 관리
    • GPS를 위한 확장 포트 / 외부 전자나침반 / 압력 센서
    • 주변기기((Blackbox, FrSky telemetry 등)를 위한 UART 포트
    • R/C 및 부저를 위하여 Plug & Play 소켓 또는 납땜 패드(Solder pad)를 선택 가능
    • 5V 부저 출력
    • MPU6500 차세대 가속도계/자이로
    • 상태 LED 3개(DCDC pwr/ 3.3V pwr/ status)
    • 12V, 5V, VBat 공급을 위한 배터리 모니터링
    • 크기: 36mmx36mm (30.5mm 표준 raster)
    • 무게 : 4.4g

자세한 내용은 여기를 방문하세요.

(이하 생략합니다.)

===

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Board%20-%20ColibriRace.md

이전글 :  Seriously Pro SP Racing F3 보드

다음글 : 보드 - Motolab


Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 19. 11:35

보드 - Board - Seriously Pro SP Racing F3

Seriously Pro Racing F3(SPRacingF3) 는 특별히 클린플라이트를 위해 설계된 첫번째 비행콘트롤러 보드입니다.

SeriouslyPro / SP Racing 또는 공식 리셀러를 통해 이 보드를 구입하면, 클린플라이트 개발에 도움이 됩니다. 이것이 Serious pro 보드가 존재하는 이유입니다. 공식 리셀러는 항상 SerouslyPro.com 웹사이트에 나열되어 있습니다.

상세한 내용은 아래 웹사이트를 방문하세요.

http://seriouslypro.com/spracingf3

하드웨어 기능(Hardware Feature)

  • I/O 동시사용가능. 모든 기능을 동시에 사용가능. 예를 들어, OSD + SmartPort + SBus + GPS + 띠형 LED + 배터리 모니터링 + 초음파센서(Sonar) + 8 모터 를 한꺼번에 연결 가능
  • 대용량 블랙박스 비행로그 기록기 내장 - 튜닝 최적화 및 설정 결과를 직접 볼 수 있음 (Acro 및 Delux)
  • 효율적인 비행 계산을 위한 하드웨어 부동소숫점 프로세서와 더 빠른 ARM-COrtex M4 코어를 장착한 차세대 STM32 F3 프로세서
  • 적층 가능형 설계 - OSD 및 전원분배기(PDB)와 통합할 때 최적
  • ESC 및 서보 및 구식 수신기를 위한 16개의 PWM I/O 선.  8 개의 핀은 표준 pin header로 결선. 나머지 8개의 핀은 side mounted connectors 로 연결
  • SBus, SumH, SumD, Spektrum 1024/2048, XBus, PPM, PWM 수신기를 직접 연결 지원. 외부 인버터(inverter) 불필요 (내장)
  • 프로그램가능 LED를 위한 전용 출력 - 방향잡기, 레이싱, 야간 비행에 최고
  • 비행용 배터리가 필요없이 OLED 표시장치를 연결할 수 있는 전용 I2C 포트
  • 전압과 전류를 확인할 수 있는 배터리 모니터링
  • 음양 경고 및 신호를 위한 부저 포트
  • Solder pads in addition to connectors for Sonar, PPM, RSSI, Current, GPIO, LED Strip, 3.3v,\
  • 초음파센서, PPM, RSSI, 전류, GPIO, 띠형 LED, 3.3v 를 위한 커넥터와 별도의 납땜용 패드(solder pad)개발자가 사용하기 쉬운 디버깅용 포트(SWD)와 부트모드 선택, unbrickable bootloader.
  • 아주 깔끔한 결선 작업을 위한 대칭 설계
  • pin header, JST-SH 소켓 또는 납땜 패드(solder pad)를 이용한 결선. 직각형(right angled) 또는 직선형(strait) pin-header를 사용
  • 바람을 차단하기 쉽도록 보드 하단에 설치한 기압계

시리얼 포트(Serial Ports)

ValueIdentifierRXTX5v TolerantNotes
1USART1PA10PA9YESInternally connected to USB port via CP2102 IC. Also available on a USART1 JST connector and on through hole pins.
2USART2PA15PA14YESAvailable on USART2 JST port only.
3USART3PB11 / IO2_3PB10 / IO2_4NOAvailable on IO_2, USART3 JST port and through hole pins.
  • SWD와 USART2를 동시에 사용할 수 없습니다.
  • USART1 RX/TX에 무언가 연결되어 있으면 flashing 작업시 문제가 발생할 수 있습니다. 다른 기기는 전원을 끄거나 연결을 끊으세요.

배치도(Pinouts)

상세 배치도는 매뉴얼에 들어 있습니다.

http://seriouslypro.com/spracingf3#manual

IO_1

8 핀 IO_1 커넥터의 배치(RX_PARALLEL_PWM 모드)는 아래와 같습니다.

PinFunctionNotes
1Ground
2VCC_INVoltage as-supplied by BEC.
3RC_CH1
4RC_CH2
5RC_CH5
6RC_CH6
7LED_STRIPEnable feature LED_STRIP
8VCC3.3v output for LOW CURRENT application only

8 핀 IO_1 커넥터의 배치(RX_PPM/RX_SERIAL 모드)는 아래와 같습니다.

PinFunctionNotes
1Ground
2VCC_INVoltage as-supplied by BEC.
3RX_PPMEnable feature RX_PPM
4GPIO
5SoftSerial1_RX
6SoftSerial1_TX
7LED_STRIPEnable feature LED_STRIP
8VCC3.3v output for LOW CURRENT application only

IO_2

8 핀 IO_2 커넥터의 배치(RX_PARALLEL_PWM 모드)는 아래와 같습니다.

PinFunctionNotes
1Ground
2VCC_INVoltage as-supplied by BEC.
3RC_CH3
4RC_CH4
5RC_CH7/SONAR_TRIG
6RC_CH8/SONAR_ECHO
7ADC_1Current Sensor
8ADC_2RSSI

8 핀 IO_2 커넥터의 배치(RX_PPM/RX_SERIAL 모드)는 아래와 같습니다.

PinFunctionNotes
1Ground
2VCC_INVoltage as-supplied by BEC.
3RX_SERIALUART3 RX
4UART3_TX
5SONAR_TRIG/SoftSerial2_RXEnable feature SONAR/SOFTSERIAL
6SONAR_ECHO/SoftSerial2_TXEnable feature SONAR/SOFTSERIAL
7ADC_1Current Sensor
8ADC_2RSSI

UART1/2/3

PinFunctionNotes
1Ground
2VCC_INVoltage as-supplied by BEC.
3TXD
4RXD

I2C

PinFunctionNotes
1Ground
25.0vVoltage as-supplied by BEC OR USB, always on
3SCL
4SDA

SWD

PinFunctionNotes
1Ground
2NRST
3SWDIO
4SWDCLK

====

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Board%20-%20SPRacingF3.md

이전글 : Seriously Pro SP Racing F3 Mini 보드

다음글 :  TBS Colibri RACE 보드

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 18. 19:50

Seriously Pro SP Racing F3 Mini 보드

Seriously Pro Racing F3 Mini(SPRacingF3Mini) 는 특별히 클린플라이트를 위해 설계된 두번째 비행콘트롤러 보드입니다. 이 보드는 최신 클린플라이트의 기능을 모두 지원하는 유일한 FC이며, 표준 36x36mm 설치홀 뿐만 아니라, 미니프레임에서 설치할 수 있는 모든 기능을 갖춘 유일한 미니 보드입니다. 새로운 무선중계기(transponder) 기능을 갖추고 있어 현재 구입 가능한 유일하고도 진정한 레이싱 보드입니다.

완전한 기능을 지원하며 크기와 무게가 작아, USA 드론 규정을 만족하면서도 250g 이하의 드론에 장착하는데 최적입니다.

SeriouslyPro / SP Racing 또는 공식 리셀러를 통해 이 보드를 구입하면, 클린플라이트 개발에 도움이 됩니다. 이것이 Serious pro 보드가 존재하는 이유입니다. 공식 리셀러는 항상 SerouslyPro.com 웹사이트에 나열되어 있습니다.

상세한 내용은 아래 웹사이트를 방문하세요.

http://seriouslypro.com/spracingf3mini

하드웨어 기능(Hardware Features)

  • 효율적인 비행 계산을 위한 하드웨어 부동소숫점 프로세서와 더 빠른 ARM-COrtex M4 코어를 장착한 차세대 STM32 F3 프로세서
  • 블랙박스 비행로그 기록기를 위한 MicroSD_Card 소켓. 튜닝 최적화 및 설정 결과를 직접 볼 수 있음
  • 레이싱 무선중계기(Transponer) 내장 - 레이싱때 켜기만 하면 랩타임이 기록됨
  • FC, 수신기, 소형 서보에 전원을 공급할 수 있는 레귤레이터(BEC) 탑재
  • 최신의 가속도계, 자이로, 전자나침반, 기압계/고도계 기술을 장착
  • Skektrum Satellite 수신기 바인딩, USB boutlader 모드 활성화 또는 설정 재설정(resetting the configuration)에 사용할 수 있는 2개의 버튼 더 많은 기능이 추가될 예정!
  • 탁월한 충돌내구력을 위하여 모든 주요 연결부위에 pin headers를 이용하여 결선. 직각형(right angled) 또는 직선형(strait) pin-header를 사용
  • I/O 동시사용가능. 모든 기능을 동시에 사용가능. 예를 들어, USB + OSD + SmartPort + SBus + GPS + 띠형 LED + 배터리 모니터링 + 초음파센서 + 8 모터 를 한꺼번에 연결 가능
  • ESC 및 서보를 위한 8개의 PWM 출력선. 표준 pin header로 쉽게 결선할 수 있도록 배열
  • SBus, SumH, SumD, Spektrum 1024/2045, XBus 수신기를 직접 연결 지원. 외부 인버터(inverter) 불필요 (내장)
  • 3 pin through - hole JST-ZH 커넥터를 통해 3.3v Spektrum Satellite 수신기 직접 연결 지원
  • 1-5 채널 PWM 수신기*1 직접 연결 지원
  • 전용 PPM 수신기 입력
  • 3 시리얼포트 - USB 소켓과 공유되지 않음
  • 텔레메트리 포트 (pin header 또는 USART2 JST-SH 소켓을 통해)
  • 마이크로 USB 소켓
  • 프로그램가능 LED를 위한 전용 출력 - 방향잡기, 레이싱, 야간 비행에 최고 (현재 무선중계기(Transponer)와 둘중 하나만 사용가능)
  • 비행용 배터리가 필요없이 OLED 표시장치를 연결할 수 있는 전용 I2C 포트
  • 전압과 전류를 확인할 수 있는 배터리 모니터링
  • 수신신호강도(RSSI) 감시 (아날로그 또는 PWM)
  • 음향 경고 및 신호를 위한 부저 포트
  • 개발자가 사용하기 쉬운 디버깅용 포트(SWD)와 부트모드 선택, unbrickable bootloader.
  • 아주 깔끔한 결선 작업을 위한 대칭 설계
  • I2C/UART2 와 SWD 만을 위한 JST-SH 소켓
  • 바람을 차단하기 쉽도록 보드 하단에 설치한 기압계
  • USB 또는 시리얼포트를 통한 재설치(flash)
  • 다층적재가능형 설계 - OSD 및 전원분배기(PDB)와 통합할 때 최적
  • 모듈형 설계 - 보드 핵심부는 36x22mm 이지만, 표준 30.5mm 설치홀에도 설치할 수 있음
  • 3v, 5v 용 LED와, 쉬운 진단을 위한 Status??
  • 구리로 에칭한 Cleanflight 와 #RB 로고

*1 - PWM 수신기는 반드시 3.3v 출력을 사용해야 함. 멀티로터 모드에서만 작동됨. 모터출력 5-8 과 PPM 핀을 RC1-5 입력으로 사용 ???

핀배치도(Pinouts)

상세 배치도는 매뉴얼에 들어 있습니다.

http://seriouslypro.com/spracingf3mini#manual

주요부(Main Section)

주요부는 30.5mm 설치홀이 있는 보드의 직사각형 부분입니다.

왼쪽 면 IO (앞면에서 뒤로) Left Side IO (Front to Back)

PinFunctionNotes
1RX3Square Pad
2TX3Round Pad
3PWM8 / SoftSerial 1 RX / RC4Square Pad
4PWM7 / SoftSerial 1 TX / RC3Square Pad

PWM7과 PWM8의 왼쪽에는 2개의 핀이 더 있습니다. 왼쪽에서 오른쪽으로 GND, VIN PWM7/8 입니다. RX3의 오른쪽에는 구멍을 통해 2개가 있습니다. RX3와 2개의 구멍을 사용하여 Spektrum Satellite 3v 용 JST-ZH 커넥터를 부착합니다.

오른쪽 면 IO (앞면에서 뒷면으로) Right Side IO (Front to Back)

PinFunctionNotes
1RSSIRound Pad / PWM
2CURRENTRound Pad
3PWM6 / RC2Square Pad
4PWM5 / RC1Square Pad
5T1Round Pad
6R1Round Pad
75vRound Pad
8GNDRound Pad
95vRound Pad
10PPMSquare Pad

PWM5 및 PWM6 오른쪽에 2개의 핀이 더 있습니다. 왼쪽에서 오른쪽으로 PWM5/6, VIN, GND 입니다.

8/9/10 번 핀을 사용하면 표준 3핀 케이블로 PPM 수신기를 부착할 수 있습니다.  8/7/6 번 핀을 사용하면 표준 3핀 케리블로 SBus/SerialRX 수신기(5v)를 부착할 수 있습니다.

위쪽면 IO (왼쪽에서 오른쪽으로) Top IO(Left to Right)

PinFunctionNotes
1BATTERY -Round Pad
2BATTERY +Square Pad

최고 25V 까지 부착할 수 있습니다. 역방향 입력방지 회로가 없으니 주의하세요!

바닥 왼쪽 IO (왼쪽에서 오른쪽으로) Bottom Left IO (Left to Right)

텔레메트리/LED/IR 용입니다.

A 는 바닥쪽 줄(보드 경계쪽) B는 위쪽줄 입니다.

PinRowFunctionNotes
1ATELEMETRY / T2Square Pad
2AGNDRound Pad
3BVINSquare Pad (Suface)
4BLED_STRIP/IRRound Pad

바닥 오른쪽 IO(왼쪽에서 오른쪽으로) Bottom Right IO (Left to Right)

부저용입니다.

A 는 바닥쪽 줄(보드 경계쪽) B는 위쪽줄 입니다.

PinRowFunctionNotes
1ABUZZER -Round Pad
2AGNDSquare Pad
3B5vRound Pad (For Buzzer)
4B3.3vSquare Pad (Surface)

바닥 가운데 IO (왼쪽에서 오른쪽으로) Bottom Center IO (Left to Right)

ESC / 서보 용입니다.

A는 바닥쪽 줄(보드 경계쪽) B는 가운데 줄, C는 위쪽줄(보드 중심 방향) 입니다.

PinRowFunctionNotes
1AGNDRound Pad
2AGNDRound Pad
3AGNDRound Pad
4AGNDRound Pad
1BVINRound Pad
2BVINRound Pad
3BVINRound Pad
4BVINRound Pad
1CPWM1Square Pad (Suface)
2CPWM2Round Pad
3CPWM3Round Pad
4CPWM4Round Pad

바닥쪽 IO (더 아래쪽, 왼쪽에서 오른쪽) Bottom IO (Underside, left to right)

PadFunctionNotes
TRIGSONAR TRIGGERAlso Switch B, 3.3v signal only
ECHOSONAR ECHOAlso Switch A, 3.3v signal only

UART2

PinFunctionNotes
1Ground
25vVoltage as-supplied by BEC OR USB, always on
3TXD
4RXD

I2C

PinFunctionNotes
1Ground
25vVoltage as-supplied by BEC OR USB, always on
3SCL
4SDA

SWD

이 포트는 UART2와 동시에 사용할 수 없습니다.

PinFunctionNotes
1Ground
2NRST
3SWDIO
4SWDCLK

무선중계기 부(Transponder Section)

무선중계기 부는 race timing transponder system을 위해 최대 두개의 IR LED까지 부착할 수 있는 부분입니다. 필요에 따라 부착하지 않을 수도 있고, 메인보드 위 아래로 적층하거나, 케이블로 연결할 수도 있습니다.

무선중계기 부분은 작은 활성화 점퍼가 있어서, IR 무선중계기 기능을 사용하기 전에 반드시 납땜으로 붙여줘야 합니다.

바닥 왼쪽 및 오른쪽 무선중계기 IO - Bottom Left and Bottom Right Transponder IO (Left to Right)

LED/IR 용. 무선중계기 보드 설치구멍 옆에 4개의 핀이 사각형으로 배열되어 있습니다. 좌우측에 동일하게 배열되어 있며, 동일하므로, 어느쪽에 부착해도 무방합니다.

A는 바닥쪽 줄(보드 경계쪽) B는 위쪽줄(보드 중심 방향) 입니다.

PinRowFunctionNotes
1AN/CSquare Pad
2AGNDRound Pad
3B5vRound Pad
4BLED_STRIP/IRRound Pad

바닥 왼쪽 및 오른쪽 IR (Bottom Left and Bottom Right IR)

무선중계기(transponder) 부분의 좌측 우측에 각각 2개의 핀홀이 있습니다. either side of some surface mount components. 적외선 LED를 두개까지 부착할 수 있습니다. 

A는 바닥쪽 줄(보드 경계쪽) B는 위쪽줄(보드 중심 방향) 입니다.

PinRowFunctionNotes
1AIR+Round Pad
2BIR-Square Pad

참고 : 초기 생산물량 일부에서는 IR+ 과 IR- 이 반대로 인쇄되어 있습니다. 인쇄와 관계없이 이렇게 결선하면 됩니다.

스위치 부(Switch Section)

스위치 부 맨아래에는 4개의 pad가 있습니다. 스위치 부분은 4 way 케이블을 사용해 재배치하거나 주요부(Main section)에 재 부착할 수 있습니다.

Pad On Switch SectionPad on main section
AECHO
BTRIG
GNDAny GND
3v3Any 3.3v

====

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Board%20-%20SPRacingF3Mini.md

이전글 : 비행콘트롤러 하드웨어(Flight Controller Hardware)

다음글 : Seriously Pro SP Racing F3 보드

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 18. 17:36

비행 콘트롤러 하드웨어(Flight Controller Hardware)

현재의 초점은 STM32F303 과 구식 STM32F103 시리즈 프로세서를 사용하는 비행콘트롤러 하드웨어에 맞춰져 있습니다. 핵심 로직(core logic)이 하드웨어 드라이버와 분리되어 있으며, 다른 프로세서로 포팅하는 것도 가능합니다.

완전한 버전의 클린플라이트를 원한다면, STM32 F3 기반의 보드(플래시 메모리 256KB)를 구입하는 것을 추천합니다. F3 프로세서는 빠르고 USB 를 지원하고, 추가적인 어댑터나 케이블이 없이도 더 많은 하드웨어를 지원합니다.

추천하는 보드:

구식보드 :

클린플라이트는 다음과 같은 개발자용 보드에서도 작동됩니다.:

  • STM32F3Discovery - Recommended for developers.
  • Port103R - Recommended for F1 developers.
  • EUSTM32F103RB - Legacy.

다음 보드들도 한정적이지만 지원되지만, 사용자가 부족하거나 상업성이 떨어져 제거될 수 있습니다.

  • Olimexino
  • Naze32Pro
  • STM32F3Discovery with Chebuzz F3 shield.

참고 : EEPROM 이 256KB 이하인 CPU를 가진 보드는 구입하지 않으시는 게 좋습니다. 사용가능한 기능이 제한됩니다. 또한 하드웨어 개발자들도 256KB 이하의 EEPROM 공간을 가진 보드는 설계하지 않는 게 좋습니다.

각각의 보드는 장단점이 있습니다. 하드웨어 구입전 반드시 체크해야 할 것은 보드에 시리얼포트가 충분히 있으며, 사용하고자 하는 하드웨어를 위한 입출력핀이 존재하는지 동시에 사용할 수 있는지 등입니다. 일부 보드에서는 어떤 기능들의 경우 동시에 사용할 수 없습니다.

자세한 결선방법은 보드별 문서를 확인하시기 바랍니다.

STM32F4 프로세서를 지원하는 분기(off-shoots, forks) 프로젝트들도 있습니다. Revo 혹은 Quanton 보드가 그 예입니다.

보드별 문서에는 가능하다면 수신기나 부저와 같이 클린플라이트에 호환되는 기타 하드웨어에 대한 링크도 제공하고 있습니다.

===

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Boards.md

이전글 : Baseflight에서 전환하기(Migrating from baseflight)

다음글 : Seriously Pro SP Racing F3 Mini

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 18. 16:57

Baseflight에서 전환하기(Migrating from baseflight)

절차(Procedure)

먼저 배터리를 분리하거나, 프롭을 제거하세요.

클린플라이트로 새로 깔기전, CLI 명령을 사용하여 각 프로필의 설정내용을 텍스트파일로 덤프받습니다.

profile 0
dump
profile 1
dump
profile 2
dump

그다음 클린플라이트를 설치한 후, dump 명령에서 나온 결과를 CLI에 붙여넣어주고, 사용하고자 하는 프로필로 바꿉니다.

이 작업을 하면 일부 명령이 Cleanflight에서 인식하지 못하는 것을 보시게 될 것입니다. 인식하지 못한 명령들은 새로운 설정옵션을 찾아보고, 적당한 설정값을 선택합니다. 아래는 차이가 있는 설정의 목록입니다.

첫번째 프로필에서 작업을 마치면 설정을 저장합니다. 그리고 기능들이나 시리얼포트등 설정이 맞는지 확인합니다. 첫번째 프로필이 문제가 없으면 다른 프로필들도 이를 반복합니다.

아룰러 baseflight 설정프로그램으로부터 AUX 설정을 화면캡쳐 해두면, Cleanflight 에서 설정한 후 AUX 설정이 맞는지 확인할 때 참고할 수 있습니다. AUX 설정은 역방향 호환성이 보장되지 않습니다.

baseflight 와 CLI 명령의 차이

일반적으로 모든 CLI 명령은 단어를 분리할 때 밑줄(underscore) 문자를 사용합니다. baseflight의 CLI 명령 포맷은 약간 일관성이 없습니다.

gps_baudrate

이유 : 새로운 시리얼프트 설정

[serial] 명령을 확인하세요.

gps_type

이유 : 일관성을 위해 gps_provider 로 변경

serialrx_type

이유 : 일관성을 위해 serialrx_provider 로 변경

rssi_aux_channel

이유 : 향상된 기능을 위해 rssi_channel로 변경

클린플라이트는 모든 RX 채널을 신호수신강도(rssi)용으로 사용할 수 있습니다. Baseflight는 AUX1 - AUX4 까지만 지원합니다.

클린플라이트에서 0 은 이 기능을 해제하는 용도이며, 1 이상의 값은 RSSI 정보를 읽어올 채널 번호를 나타냅니다.

예 : 클린플라이트에서 AUX1을 RSSI 용으로 사용하려면 [rssi_channel = 5] 로 설정합니다. 5가 최초의 AUX 채널이기 때문입니다. (Baseflight에서는 [set rssi_aux_channel = 1]에 해당합니다.)

failsafe_detect_threshold

이유 : 기능 향상

비상대책(Failsafe) 문서의 [rx_min_usec] and [rx_max_usec]을 보세요.

emfavoidance

이유 : 일관성을 위해 emf_avoidance 로 변경

yawrate

이유 : 일관성을 위해 yaw_rate 로 변경

yawdeadband

이유 : 일관성을 위해 yaw_deadband 로 변경

midrc

이유 : 일관성을 위해 mid_rc 로 변경

mincheck

이유 : 일관성을 위해 min_check 로 변경

maxcheck

이유 : 일관성을 위해 max_check 로 변경

minthrottle

이유 : 일관성을 위해 min_throttle 로 변경

maxthrottle

이유 : 일관성을 위해 max_throttle 로 변경

mincommand

이유 : 일관성을 위해 min_command 로 변경

deadband3d_low

이유 : 일관성을 위해 3d_deadband_low 로 변경

deadband3d_high

이유 : 일관성을 위해 3d_deadband_high 로 변경

deadband3d_throttle

이유 : 일관성을 위해 3d_deadband_throttle 로 변경

neutral3d

이유 : 일관성을 위해 3d_neutral 로 변경

alt_hold_throttle_neutral

이유 : 일관성을 위해 alt_hold_deadband 로 변경

gimbal_flags

이유 : 기능 분리

[gimbal_mode]와 [CHANNEL_FORWARDING] 기능을 보세요.

====

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Migrating%20from%20baseflight.md

이전글 : 블랙박스 비행데이터 기록기(Blackbox flight data recoder)

다음글 : 비행 콘트롤러 하드웨어(Flight Controller Hardware)

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 16. 23:35

블랙박스 비행데이터 기록기(Blackbox flight data recorder)

개요(Introduction)

이 기능은 모든 control loop iteration 상의 비행데이터 정보를 시리얼포트를 통해 OpenLog to be recorded 와 같은 외부 저장장치, 일부 비행콘트롤러에 존재하는 내장 데이터플래시 칩 또는 내장 SD 카드 소켓으로 전송합니다.

비행후에는 아래의 대화식 로그 뷰어(log viewer)를 사용하여 결과 로그를 볼 수 있습니다.

https://github.com/cleanflight/blackbox-log-viewer

아울러 블랙박스 해독 도구를 사용하여 로그를 해석용 CSV 파일로 변환하거나, 블랙박스 렌더링 도구를 사용하여 비행로그를 비디오로 생성할 수 있습니다. 이들 도구는 아래 저장소에 있습니다.

https://github.com/cleanflight/blackbox-tools

로그 데이터(Logged data)

블랙박스는 비행콘트롤 루프의 모든 반복(every iteration of the flight control loop) 마다 비행 데이터를 기록합니다. 블랙박스는 현재시간(ms), 각각의 축에 대한 P/I/D 보정, RC의 조종간 위치(expo 커브를 적용한 뒤), 자이로 데이터, 가속도계 데이터(low-pass filtering을 설정한 후), 기압계, 초음파 값, 3축 전자나침반 값, 원시 VBAT 및 현재 측정값, 신호수신강도(RSSI), 각각의 ESC에 보내진 명령 등을 기록합니다. 이들 자료는 근사치 혹은 정밀도 희생없이 완전히 기록되므로, 아주 미묘한 문제도 비행 데이터 로그로부터 탐지할 수 있습니다.

GPS 데이터는 새로운 GPS 데이터가 존재하면 기록됩니다. CSV 해독기가 이 데이터를 해독하지만, 비디오 생성기는 아직 GPS 정보는 전혀 표시하지 못합니다. (추후 추가 예정)

지원되는 콥터(Supported configurations)

비행로그에 기록될 수 있는 최대 데이터 속도는 상당히 제한적이어서, load가 증가되면 비행 로그에 프레임이 빠지거나 에러가 발생할 수 있습니다.

블랙박스는 일반적으로 트리콥터와 쿼드콥터에서 사용됩니다. 헥사콥터나 옥타콥터에서도 작동하지만, 기록해야 할 모터가 많아서 비행데이터로 전송할 데이터가 많습니다. 이로 인해 생략되는 프레임이 많습니다. 브라우저 기반의 로그 뷰어가 헥사/옥타 콥터를 지원하지만, 명령어기반 블렉박스 렌더링 도구는 현재 트리콥터와 쿼드콥터만 지원합니다.

클린플라이트의 looptime 설정이 비행로그에 저장되는 갱신 속도를 결정합니다. 클린플라이트의 looptime 기본값은 3500 입니다. looptime 설정을 2400 보다 작게 하면 전송 데이터가 많아 일부 프레임이 빠지게 되는 걸을 경험할 수도 있습니다. 그러한 경우 블랙박스 설정에서 sample rate를 줄이 거나, 로거의 baudrate를 25000으로 올릴 필요가 있습니다. 블랙박스 기능에 대한 설정에 대한 자세한 내용은 마지막 절을 참고하세요.

Setting up logging

먼저 블랙박스 기능을 활성화시켜야 합니다. 클린플라이트 설정프로그램에서 설정(Configuration) 탭으로 들어간 뒤, 페이지 맨 아래 쪽에 있는 "BLACKBOX" 기능을 체크하고, "Save and reboot"를 클릭합니다.

이제 비행로그를 어떤 장치에 저장할 지 결정해야 합니다. 로그 데이터를 시리얼포트를 통해 OpenLog serial data logger 와 같은 외부 저장장치를 사용하여 microSDHC 카드에 기록하거나, 호환가능한 비행콘트롤러가 있다면 로그를 내장 데이터플래시 저장장치에 저장할 수도 있습니다.

OpenLog serial data logger

OpenLog는 시리얼포트를 사용하여 비행콘트롤러에 부착하여, 비행 로그를 MicroSC 카드에 기록할 수 있는 소형 기록장치입니다.

OpenLog는 SkarkFun에서 표준 "OpenLog 3" 펌웨어를 설치하여 판매중입니다. 이 오리지널 OpenLog 펌웨어가 블랙박스와 잘 동작하기는 하지만, 빠지는 프레임의 수를 줄이기 위해서는 좀더 성능이 높은 OpenLog Blackbox 펌웨어로 재설치해야 합니다. OpenLog 펌웨어의 변종인 OpenLog Blackbox 펌웨어는 아울러, OpenLog가 클린플라이트 호환가능한 설정과 115200 baud를 기본값으로 하도록 확실하게 해줍니다.

블랙박스 버전의 OpenLog 펌웨어와 OpenLog에 설치하는 방법은 여기에서 찾을 수 있습니다.

microSDHC

어떤 microSDHC 카드를 쓰느냐는 시스템의 성능에 매우 중요합니다. OpenLog는 카드에 매우 작은 데이터를 지연없이 자주 기록할 수 있어야 하므로, 모든 카드가 가능하지 않습니다. SD-카드 속도가 등급이 높다고 하여 반드시 성능이 높다는 보장은 할 수 없습니다.

성능이 늦은 microSDHC 카드
  • Generic 4GB Class 4 microSDHC card - 프레임이 빠지는 비율이 약 1%로, 특히 가장 흥미로운 부분에 집중됩니다.
  • Sandisk Ultra 32GB (16GB 버전과는 달리 이 버전은 기록 지연이 매우 나쁩니다.)
성능이 확인된 microSDHC 카드
  • Transcend 16GB Class 10 UHS-I microSDHC (전형적인 오류율 < 0.1%)
  • Sandisk Extreme 16GB Class 10 UHS-I microSDHC (전형적인 오류율 < 0.1%)
  • Sandisk Ultra 16GB (이론적 성능의 절반뿐이 안되지만, it performs only half as well as the Extreme in theory, 그래도 좋은 편입니다.)

반드시 모든 카드는 SD Association의 특별 포맷 도구를 사용하여 포맷해야 합니다. OpenLog가 가장 높은 속도로 기록할 수있도록 보장해주기 때문입니다. FAT로 포맷해도 무방하지만, FAT32로 포맷하는 것을 추천합니다.

OpenLog를 위한 시리얼포트 선택

먼저 블랙박스를 (내장 플래시메모리가 아닌)시리얼포트를 통해 로그하도록 설정해야 합니다. 설정프로그램(Configurator)의 CLI 탭으로 들어가서 [set blackbox_device=SERIAL] 을 입력하고 저장합니다.

클린플라이트에서 어떤 시리얼포트를 OpenLog 에 (즉 블랙박스 포트) 연결할지 설정해야 합니다. 설정프로그램의 포트(Ports) 탭에서 설정할 수 있습니다.

이때 반드시 하드웨어 시리얼포트(예: Naze32의 중앙에 있는 2핀 Tx/Rx 헤더가 있는 UART1)를 사용해야 합니다. SoftSerial 포트로 사용할 수 있지만, 19200 baud로 제한 되어 있기 때문에, 로그 속도(logging rate)를 많이 줄여야 합니다. 따라서 SoftSerial 포트는 추천하지 않습니다.

하드웨어 시리얼 포트를 사용할 때, 블랙박스는 최소 115200 baud 이상으로 설정해야 합니다. looptime이 빠를 때(<2500)에는 최소한 250,000 이상으로 설정해야만 프레임이 빠지는 걸 줄일 수 있습니다.

블랙박스용 시리얼포트는 MSP 프로토콜외에 다른 기능(예: GPS, 텔레메트리)과 공유하면 안됩니다. MSP가 블랙박스와 동일한 포트를 사용하면, 보드의 시동이 꺼졌을 때만 MSP가 활성화되고, 시동이 켜지면 블랙박스가 활성화됩니다. 즉, 시동을 넣은 상태에서는 설정프로그램(Configurator)과 MSP가 필요한 다른 기능 (OSD, 블루투스 무선통신 설정 앱 등)을 사용할 수 없습니다.

시리얼포트의 "TX"핀을 OpenLog의 "RXI" 핀에 연결합니다. 시리얼포트의 RX 핀은 OpenLog에 연결해서는 안됩니다. 시동이 꺼졌을 때 해당 시리얼포트를 공유한 다른 기능과 간섭이 발생하기 때문입니다.

Naze32 시리얼포트 선택

Naze32에서 보드위쪽에 있는 TX/RX 핀은 UART1에 연결되어 있으며, USB 커넥터와 공유되어 있습니다. 따라서, USB를 통하여 설정프로그램을 사용하기 위해서는 MSP를 UART1에 대해 활성화시켜야 합니다. 블랙박스가 Naze32위에 있는 핀에 연결되면, 시동을 건 상태에서는 설정프로그램이 정지됩니다. 하지만, 시동이 걸린 상태에서 동일한 핀을 사용하는 OSD 가 설치되어 있지 않고, FrSky 텔레메트리를 사용하지 않는다면, 이 설정이 가장 좋은 방법입니다.

보드 아래쪽의 RC3 핀은 UART2의 Tx 핀입니다. 블랙박스를 UART2에 설정했다면, 시동이 걸렸을 때도 MSP를 UART1에서 사용할 수 있으며, 따라서 블랙박스와 함께 설정프로그램도 계속하여 사용할 수 있습니다. 참고로 병렬식 PWM(PARALLEL_PWM) 모드에서는 입력채널이 6개인 보드의 경우, RC3/RC4 핀이 UART2의 Tx와 Rx로 사용됩니다. 클린플라이트에서는 포트(Ports)텝에서 UART2가 활성화되었을 때 자동적으로 논리적 채널을 이동시키므로, Naze32의 3번부터 6번 핀에 연결된 수신기 핀을 2만큼 이동시켜야 합니다.

OpenLog는 3.3V에서 12V까지 사용할 수 있습니다. 표준 5V BEC에 Naze32 를 연결한 경우, spare motor header의 +5V와 GND 핀을 OpenLog에 전원으로 사용할 수도 있습니다.

기타 비행콘트롤러 하드웨어

Naze32 이외의 보드에서는 사용할 수 있는 하드웨어 시리얼 장치가 더 많을 수 있습니다. 이 경우, 블랙박스에 어떻게 연결할지는 해당 장치의 문서를 참고하세요. 아래는 중요한 기준입니다.

  • SoftSerial 보다는 하드웨어 시리얼포트를 사용하세요.
  • MSP를 제외한 다른 기능(GPS, 텔레메트리)와 공유할 수 없습니다.
  • MSP가 동일한 UART를 사용하게되면, 시동상태에서 MSP는 작동을 정지합니다.

OpenLog 설정

microSC 카드를 꼽은 상태로 OpenLog에 전원을 넣고 10초 정도 기다렸다가 전원을 내리고 microSD 카드를 컴퓨터에 연결합니다. 카드에 있는 "CONFIG.TXT" 파일을 텍스트 에디터로 엽니다. OpenLog의 현재 설정된 baud rate(대부분 115200 또는 9600)이 보이실 겁니다. 이 baud rate를 설정프로그램(Configurator)의 포트(Ports) 텝에서 입력한 값(대부분 115200 또는 250000)에 맞춰 고쳐줍니다.

이제 파일을 저장하고 다시 OpenLog에 삽입합니다.

If your OpenLog didn't write a CONFIG.TXT file, create a CONFIG.TXT file with these contents and store it in the root of the MicroSD card:

OpenLog가 CONFIG.TXT 파일을 생성하지 못할 경우, 이러한 내용으로 CONFIG.TXT 파일을 만들고 MicroSD 카드의 최상위 폴더에 저장합니다.

115200
baud

original OpenLog 펌웨어를 사용할 경우, 아래의 설정을 사용하세요.

115200,26,0,0,1,0,1
baud,escape,esc#,mode,verb,echo,ignoreRX

오픈로그 보호

OpenLog는 검정색 전기테이프 또는 열수축튜브를 사용하여 탄소섬유와 같은 전도성 프레임과 격리시킬 수 있지만, 이렇게 할 경우, 상태 LED가 보기 힘들게 됩니다. 투명 열수축 튜브를 사용하는 게 좋습니다.

내장 dataflash 메모리

일부 비행콘트롤러는 보드상에 SPI NOR dataflash 칩이 있는데, OpenLog를 사용하는 대신 여기에 비행로그를 저장할 수 있습니다.

Naze32 풀버전 과 CC3D는 "m25p16" 2 MB dataflash 저장칩이 있습니다. 이 칮은 8개의 발이 달린 작은 칩으로, Naze32의 화살표 방향 표시의 바닥면에 있습니다. 이 칩은 Naze32 "아크로(Acro)" 버전에는 없습니다.

SPRacingF3에는 이보다 큰 8 MB 플래시메모리가 달려있어 훨씬 오랫동안 저장할 수 있습니다.

아울러 다음과 같은 칩들도 지원됩니다.

  • Micron/ST M25P16 - 16 Mbit / 2 MByte
  • Micron N25Q064 - 64 Mbit / 8 MByte
  • Winbond W25Q64 - 64 Mbit / 8 MByte
  • Micron N25Q0128 - 128 Mbit / 16 MByte
  • Winbond W25Q128 - 128 Mbit / 16 MByte

dataflash 기록 활성화

설정프로그램의 CLI 탭에서 [set blackbox_device=SPIFLASH] 라고 입력하고 저장하시면 됩니다.

블랙박스 설정

블랙박스는 현재 데이터 로그 속도를 조절할 수 있는 두 가지(blackbox_reate_num 과 blackbox_rate_denom)) 설정이 존재합니다. 이 두 인수로 분수를 취하면 (blackbox_rate_num / blackbox_rate_denom) 비행콘트롤러의 control loop iterations 중 어떤 부분을 로그할 것인지 결정할 수 있습니다. 기본값은 1/1 즉, 모든 iteration을 로그하는 것입니다.

속도가 늦은 MicroSD 카드를 사용할 경우, 데이터 로그 속도를 낮추어 망가진 로그 프레임의 수를 줄일 수 있습니다. 1/2 로 설정하면 대부분의 기체에서 작동합니다.

로그 속도 설정은 클린틀라이트 설정프로그램의 CLI 탭에서 다음과 같은 명령을 입력하면 됩니다.

set blackbox_rate_num = 1
set blackbox_rate_denom = 2

looptime이 2400 이고 rate가 1/1 인 제 쿼드콥터의 데이터 속도는 약 10.25kB/s 입니다. 이 속도라면 제가 사용중인 OpenLog의 16GB MicroSD카드로는 18일치의 비행로그를 저장할 수 있습니다.

SoftSerial을 사용하여 로그하는 경우, 로그속도를 1/32 로 낮추어야 합니다. 이 로그속도에서도 looptime이 1000 보다 빠르다면 성공적인 로그를 장담할 수 없습니다.

OpenLog가 아닌 내장 dataflash 칩에 저장하는 경우, 2MB가 아주 작은 용량이라는 걸 명심하셔야 합니다. 로그속도 1/1 에 looptime 2400의 경우 약 3분 정도면 끝납니다. 비행중 발생하는 기체문제를 조사하는데는 충분하지만, 저장시간을 늘리기 위해서는 로그 속도를 낮추어야 합니다.

저장 시간을 최대로 하려면, 로그 속도를 1/32 (최소값)까지 낮춰야 합니다. 이렇게 하면 10-20Hz 정도 (650byte/sec)로 저장됩니다. 이 정도의 로그 속도라면 2MB dataflash 칩으로도 약 50분간의 비행 데이터를 저장할 수 있습니다. 다만 자세한 사항은 거의 사라지고, 진동이나 PID 설정 문제등 비행 문제를 진단하는 데는 사용할 수 없습니다.

사용(Usage)

블랙박스는 기체에 시동을 걸자마자 데이터를 기록하기 시작하며, 시동을 끄면 정지합니다.

기체에 부저가 부착되어 있다면, 클린플라이트의 시동 삐삐소리를 사용하여 블랙박스 로그와 비행 비디오를 동기화 시키면 됩니다. 클린플라이트의 시동 삑삑 소리는 "길고, 짧고" 패턴입니다. 처음 긴 삑 소리의 시작이 비행데이터로그에서는 파란색으로 보이므로, 이것을 사용하여 저장된 음향 트랙과 동기화 시키세요.

기체를 시동해제시킬 경우 몇초 정도 기다려주어야 블랙박스가 데이터 저장을 마무리할 수 있습니다.

사용법 - OpenLog

매번 전원이 꺼졌다 켜지면, OpenLog는 새로운 로그파일을 생성합니다. 전원은 끄지 않고 여러번 시동을 걸었다가 해제했다를 반복하면, 이들 로그는 하나의 파일로 병합됩니다. 이 경우, 명령줄 도구를 사용하려면 그림을 그리거나 해도록하고자 하는 여러번의 비행중 하나를 선택해야 합니다.

OpenLog 에 전원이 들어와 있는 상태로 SD 카드를 삽입하거나 제거하지 마세요.

사용법 - Dataflash 칩

비행이 끝나면 클린플라이트 설정프로그램(Configurator)를 사용하여 내장 메모리에 있는 내용을 컴퓨터로 다운로드 받습니다. "dataflash" 탭으로 가서 "플래시를 파일로 저장(save flash to file...)" 버튼을 클릭합니다. 로그 저장은 2-3분 정도 소요됩니다.

로그를 다운로드 받은 후, "플래시 삭제(erase flash)"버튼을 클릭하여 칩에 들어 있는 내용을 삭제하셔야 합니다.

내장메모리가 가득찬 상태에서 새로운 비행을 기록하려고 하면, 블랙박스 로그기록은 비활성화되고 아무것도 기록되지 않습니다.

사용법 - 보드에 있는 SD 카드 소켓

비행콘트롤러에 전원을 넣기 전에 반드시 SD 카드를 삽입해야 합니다. 전원이 켜진 상태로 SD 카드를 제거할 수는 있지만, 먼저 시동을 해제하고 5초 정도 기다렸다가 빼야 합니다. (아니면 파일시스템이 망가질 수 있습니다.)

클린플라이트는 기체가 시동이 걸릴 때마다 "LOG" 폴더에 새로운 파일을 생성합니다. 블랙박스 로깅 스위치(Logging switch)를 사용하여 전체 비행동안 기록을 중지시시키면, 시동이 해제된 후 빈 로그 파일은 삭제됩니다.

로그를 읽으려면 반드시 SD 카드를 제거하여 컴퓨터에서 읽어야 합니다. (설정프로그램에서는 이 로그들을 직접 읽어낼 수 없습니다.)

사용법 - 로깅 스위치(Logging Switch)

내장 플래시 칩에 기록을 할 경우, 저장공간을 아끼기 위해 블랙박스 저장 기능을 비활성화 하고싶을 수 있습니다. 이렇게 하려면 설정프로그램(Congifurator)의 모드(Modes) 탭에서 AUX 채널중 하나에 블랙박스 비행모드를 추가합니다. 모드를 추가한 후에는 이 모드를 활성화 시켜야만 블랙박스가 활성화됩니다.

로그파일의 헤더는 항상 시동때 기록됩니다. 로그기록이 정지되었을 때도 마찬가지입니다. 비행중에 언제든지 기록을 정지시키거나 재개시킬 수 있습니다.

기록된 로그 보기(Viewing recorded logs)

비행후에는 확장자가 .TXT 인 비행로그파일이 여러개 생성됩니다.

이러한 .TXT 비행로그 파일은 웹브라우저에 Cleanflight Blackbox Explorere 확장프로그램을 설치하면 대화식으로 확인할 수 있습니다.

https://github.com/cleanflight/blackbox-log-viewer

이 확장프로그램을 이용하면 로그를 그래프로 표시하여 자세히 살펴볼 수 있습니다. 로그를 비디오로 내보내어 다른 사람들과 공유할 수도 있습니다.

블랙박스 해독 도구(blackbox decode tool)을 사용하여 비행로그를 CSV 파일로 변환하여 분석하거나, 블랙박스 렌더링 도구(blackbox render tool)을 사용하여 PNG 프레임으로 렌더링하고 이를 사용하여 비디오로 변환할 수도 있습니다.

이러한 도구와 사용법은 아래 저장소를 확인하세요.

https://github.com/cleanflight/blackbox-tools

====

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Blackbox.md

이전글 : G-Tune 사용법(G-Tune Instructions)

다음글 : Baseflight 에서 전환하기(Migrating from baseflight)



Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 13. 23:13

G튜닝 사용법 (G-Tune instructions)

이 알고리듬은 원래 Mohammad Hefny (mohammad.hefny@gmail.com)씨가 개발한 것입니다.

http://technicaladventure.blogspot.com/2014/06/zero-pids-tuner-for-multirotors.html
http://diydrones.com/profiles/blogs/zero-pid-tunes-for-multirotors-part-2
http://www.multiwii.com/forum/viewtopic.php?f=8&t=5190

Cleanflight 에 들어 있는 G-Tune 기능은 Harakiri 펌웨어에서 가져온 것입니다.

안전상 주의 : 각자의 책임임

여기에 구현된 내용은 상당히 다르며, 아크로(Acro)모드에서 ROLL/PITCH/YAW의 P 값만을 조정하기 위한 목적입니다. 아크로모드로 비행할 때(다름모드에서는 yaw tune이 가능함 - 아래를 볼 것) 콥터가 시동이 걸려있는 동안, AUX 박스(스위치)를 사용하여 G-Tune을 활성화시킬 수 있습니다.

미리 정의된 범위(아래를 볼것)에서 원하는/가능한 축(아래를 볼 것)을 튜닝하기 시작할 것입니다.

활성화된 후, 아마 아무런 변화도 보지 못할 것입니다. 즉, G-Tune은 콥터를 흔들기 시작하는 게 아니라, 직접 흔들어야 합니다.(아니면 그냥 날리면 작동합니다.)

G_Tune은 자이로 오류에 기반이므로, RC 입력을 넣지 않았을때(입력을 넣는다는 것은 또다른 오류)만 활성화됩니다. 따라서, roll만 입력하면 pitch와 yaw 가 튜닝됩니다. rolling을 멈추면 G-Tune 이 대략 450 ms 동안 축이 안정되기 기다렸다가 해당 축을 다시 튜닝하기 시작합니다. 각 축은 독립적으로 취급됩니다.

모든 축을 한꺼번에 튜닝하는 가장 좋은 방법은 아크로 모드에서 (RC는 중심에, G_Tune은 활성화 된 상태로) 콥터를 공중점프(air-jump) 시키는 것입니다.

설정프로그램 GUI에서 기본값으로 축들의 P값을 너무 높게 설정하면, 콥터가 불안정하게 흔들기는게 감지되고, P 값이 하향 Tuning 됩니다. (하지만, 강도 설정시 주의해야 함 - 아래를 볼 것)

(트라이콥터와 같이) 모터가 3개 이하인 콥터에서는 Yaw 튜닝이 비활성화됩니다.

수평(Horizon or Level) 모드에서 G-Tune은 Yaw 축에만 영향을 미칩니다. (모터가 3개 이상일 경우)

결과는 GUI에서 볼 수 있습니다. 콥터가 시동해제된 상태에서 G-Tune을 활성화시키는 경우에만 튜닝 결과가 저장되며, 시동을 걸면 전에 사용한 G-Tune이 사용됩니다???(G-Tune was used before when armed). 다른 방법으로 설정을 저장하는 방법도 있습니다.(GUI에서 save 버튼능 누르거나, 트리밍과 함께 eepromwrite를 시행하거나, ACC 교정 등)

TPA와 G_Tune : 테스트되지 않았으며, 아마도 좋은 결과가 나오지 않을 것으로 예상됩니다. 하지만, G_Tune을 TPA 를 대신하여 사용할 수 있을 것입니다.

일반적으로 다음의 순서를 따릅니다.

  1. 시동
  2. G-tune 활성화
  3. 천천히 상승. (Roll, Pitch / Yaw)은 건드리지 말것. 
  4. 결국 콥터는 잘 날것임. 아마도 throttle을 살짝 툭 밀면 약간 날 것임. 툭 밀때마다 진동이 줄어들어 부드러워지고, 전반적인 비행성능이 좋아짐을 유의해서 볼 것.
  5. G-tune 비활성화
  6. 착륙
  7. 시동해제. 단 전원을 끄지는 말것
  8. 원하는 결과를 얻었다면 a) Cleanflight GUI를 접속하여 검토후 설정을 저장 b) G-Tune 을 다시 활성화하여 설정을 저장
  9. 전원끔

결과가 만족스럽지 않다면 아래에 보이는 변수들을 변경시켜보고 다시 시도합니다.

다른 주의할 점 및 상세 설명은 아래 글들을 참고하세요.

http://www.rcgroups.com/forums/showpost.php?p=31321635&postcount=6160
http://www.rcgroups.com/forums/showpost.php?p=31525114&postcount=7150

관련 변수 및 기능(Parameters and their function)

gtune_loP_rll        = 10  [0..200] G-Tune 중 Roll P 값의 하한선 10은 GUI에서 1.0 임
gtune_loP_ptch       = 10  [0..200] G-Tune 중 pitch P 값의 하한선 10은 GUI에서 1.0 임
gtune_loP_yw         = 10  [0..200] G-Tune 중 yaw P 값의 하한선 10은 GUI에서 1.0 임
gtune_hiP_rll        = 100 [0..200] G_Tune 중 Roll P 값의 상한선. 0은 해당 축은 
                        튜닝하지 않겠다는 뜻. "100" 은 GUI에서 10.0 임
gtune_hiP_ptch       = 100 [0..200] G_Tune 중 Pitch P 값의 상한선. 0은 해당 축은 
                        튜닝하지 않겠다는 뜻. "100" 은 GUI에서 10.0 임
gtune_hiP_yw         = 100 [0..200] G_Tune 중 Yaw P 값의 상한선. 0은 해당 축은 
                        튜닝하지 않겠다는 뜻. "100" 은 GUI에서 10.0 임
gtune_pwr            = 0   [0..10] 조정 강도(Strength of adjustment)
gtune_settle_time    = 450 [200..1000] 안정화 시간 (ms)
gtune_average_cycles = 16  [8..128] 자이로 평균 계산시 사용되는 looptime cycles의 수

따라서, 모든 축의 P에 대해 하한선 및 상한선이 존재합니다. 미리 정해진 범위(GUI: 1.0 - 10.0)는 대부분의 설정을 대표하는 상당히 넓은 범위입니다.???

좀더 빡빡한 또는 느슨한 범위가 좋다면 여기에서 변경합니다. gtune_loP_XXX는 10 이하(GUI에서 1.0)로 설정할 수 있습니다. Zero P로 둘 수 있지만, 처음에 상당히 느릿느릿 반응하는 걸 보실 것입니다.

어떤 한 축을 튜닝하고 싶지 않다면, gtune_hiP_XXX를 0 로 두셔야 합니다. 예를 들어 yaw 튜닝을 비활성화 하고 싶다면, CLI에서 [set gtune_hiP_yw = 0] 라고 씁니다. 참고 : MultiWii Wiki서는, yaw 축에 대한 트림은 송신기에서 하는 것을 추천합니다. 만약에 그렇게 한다면 (yaw가 RC에서 중앙이 아님) yaw 튜닝을 비활성화해야 합니다.

튜닝 강도는 [set gtune_pwr = N]으로 조정할 수 있습니다. 저의 작은 콥터는 0 으로 잘 동작하고 "3"은 싫어합니다. 제 큰 콥터는 "gtune_pwr = 5"를 좋아합니다. It shifts the tuning to higher values and if too high can diminish the wobble blocking! 튜닝결과 P 값이 원하는 것보다 낮을 경우, gtune_pwr를 올립닏. 하지만, 이 값이 너무 높으면 약간 불안정해 집니다.

====

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Gtune.md

이전글 : 제어(Controls)

다음글 : 블랙박스 비행데이터 기록기(Blackbox flight data recorder)

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 13. 21:53

제어(Controls)

시동걸기(Arming)

시동을 걸면 기체는 비행 준비상태가 되며 throttle이 적용되면 모터가 회전합니다. 시동이 걸리면 모터는 낮은 상태로 회전하는데, MOTOR_STOP 을 설정하면 이 기능을 비활성화할 수 있습니다. 하지만, 안전상의 이유로 이는 추천하지 않습니다.

기본값은 시동과 시동해제를 조종간(stick)의 위치로 작동시키는 것입니다. (스위치를 사용하여 시동을 걸 경우 이 기능은 해제됩니다.)

조건에 따라 시동이 비활성화 됩니다. 이 경우 보드에 있는 경고 LED가 정해진 수만큼 반짝입니다. 그 내용은 다음과 같습니다.

Reason for disabled ArmingLED Flashes

설정프로그램(Configurator)에서 CLI가 활성화 되어 있음

2
비상대책 모드가 활성화 되어 있음3
기체가 비상대책 모드로 착륙한 상태임3
최대 시동 각도를 초과했음4

교정(Calibration)이 활성화되어 있음

5

시스템이 과적재되어 있음

6

조종간 위치(Stick Positions)

세가지 조종간 위치는 :

위치(Position)대략적인 채널 입력
낮음(LOW)1000
중앙(CENTER)1500
높음(HIGH)2000

조종간 위치에 따라 여러가지 기능을 활성화 시킬 수 있습니다.

FunctionThrottleYawPitchRoll
시동(ARM)LOWHIGHCENTERCENTER
시동해제(DISARM)LOWLOWCENTERCENTER

프로필 1(Profile 1)

LOWLOWCENTERLOW
프로필 2(Profile 2)LOWLOWHIGHCENTER
프로필 3(Profile 3)LOWLOWCENTERHIGH
자이로 교정LOWLOWLOWCENTER
가속도계 교정HIGHLOWLOWCENTER
전자나침반 교정HIGHHIGHLOWCENTER
비행중 교정 제어LOWLOWHIGHHIGH

Trim Acc Left

HIGHCENTERCENTERLOW
Trim Acc RightHIGHCENTERCENTERHIGH
Trim Acc ForwardsHIGHCENTERHIGHCENTER
Trim Acc BackwardsHIGHCENTERLOWCENTER
LCD 페이지 순환 해제LOWCENTERHIGHLOW

LCD 페이지 순환 활성화

LOWCENTERHIGHHIGH
설정 저장LOWLOWLOWHIGH

Yaw 조정

조종간으로 시동/시동해제를 하는 동안, Yaw 조종간은 끝 위치로 가게 됩니다. 지상에서 시동/시동해제를 하는 동안 Yaw가 작동하는 것을 막기 위하여, throttle이 낮은(LOW)위치 (즉, min_check 설정 아래)에 있는 동안은 yaw 입력이 기체에 영향을 주지 않습니다.

트라이콥터(tricopter)의 경우, 이륙전 꼬리 서보(tail servo)가 올바르게 작동하는 지 확인하기 위하여 지상에 있는 동안에도 yaw 기능을 유지하고 싶을 수 있습니다. CLI에서 tri_unarmed_server를 ON으로 설정하면 됩니다.(기본값입니다.) 시동/시동해제시 꼬리 로터가 지표면에 닿는데 따른 문제가 있다면, 이를 0으로 설정하실 수 있습니다. 아래 테이블을 통해 어떤 값이 적절한지 결정하세요.

Is yaw control of the tricopter allowed?
DisarmedArmed
Throttle lowThrottle normalThrottle lowThrottle normal
tri_unarmed_servo = OFFNoNoNoYes
NoNoNoYes
tri_unarmed_servo = ONYesYesYesYes
YesYesYesYes

Throttle 설정 및 상호작용(interaction)

[min_command] - motor stop이 활성화된 상태에서 throttle이 min_check 이하로 내려가거나 시동해제 되었을 때, ESC로 보내지는 명령입니다. motor stop이 비활성화된 상태에서는 콥터가 시동해제 되었을 때만 명령이 보내집니다. 안전을 위하여 반드시 모터 회전 이하로 설정해야 합니다.

[min_check] - 스위치 시동 모드가 사용중일 때, throttle을 min_check 이하로 내리면 모터가 min_throttle 속도로 회전하게 됩니다. 기본 조종간 시동을 사용할 경우, throttle을 min_check 이하로 내리면 모터가 min_throttle 로 회전하고, 시동을 걸거나 끌 수 있도록 yaw가 비활성화 됩니다. motor stop이 활성화된 상태에서 throttle을 min_check 이하로 내리면 모터가 꺼지고 ESC에는 min_command 가 보내지게 됩니다. Min_check 는 반드시 throttle throw에 100% 신뢰하게 만족시킬 수 있는 수준으로 설정해야 합니다. ??? 너무 낮은 값으로 설정하면 콥터가 시동해제 되지 않는 위험한 상황이 발생할 수 있습니다. 이 값을 min_throttle 이하로 설정하는 것은 무방합니다. FC가 자동적으로 ESC에 출력을 조절하게 됩니다.

[min_throttle] - 일반적으로 모든 모터가 안정적으로 회전하는 수준 바로 위로 설정합니다. 때로는 고급 기동시 stall 방지를 위하여 약간 높게 설정하거나, 원하는 결과가 나오도록 상당히 높게 설정하기도 합니다. 모터가 스톱된 상태로 시동되면, 모터는 이 명령으로 회전하므로, 안전상 반드시 유념해야 합니다.

[max_check] - Throttle이 이 수준 이상이 되면 ESC에 max_command를 보냅니다.

[max_throttle] - 이는 비행 콘트롤러로부터 ESC에 보내는 최대 명령(max command)입니다.

이 용어에 대한 상세한 설명은 아래 Josha Bardwell의 유튜브를 참고하세요.

https://www.youtube.com/watch?v=WFU3VewGbbA

https://www.youtube.com/watch?v=YNRl0OTKRGA

Deadband

Yaw, roll, Pitch 조정간이 신뢰성있게 중앙으로 돌아오지 못하거나, 무선이 중앙점 부근에서 상당히 많은 잡음이 발생할 경우, deadband를 적용할 수 있다. deadband의 값은 각각 상하측에 적용된다. 상측에 반, 하측에 반이 적용되는 것이 아니다. deadband 값은 조종간 끝 값에 영향을 준다. axis 값은 적용된 deadband 값만큼 축소된다.

[deadband] - roll, pitch 에 적용됨

[yaw_deadband] - Yaw에만 적용됨

===

원본 : https://github.com/cleanflight/cleanflight/blob/master/docs/Controls.md

이전글 : 비행중 조정(In-flight Adjustments)

다음글 : G-Tune instructions

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 12. 18:12

비행중 조정(In-flight Adjustments)

Cleanflight를 사용하면 기체가 비행중에도 송신기로부터 AUX 채널을 사용하여 여러가지 설정을 조정할 수 있습니다. 

경고(Warning)

비행중 설정을 변경시키면 기체가 불안정해지고 추락할 수 있습니다.

추천사항(Recommendations)

  • 설정을 변경할 때는 반드시 넓은 지역에서 비행하세요.
  • 약간만 조정하고 조심스럽게 비행하면서 테스트하세요.
  • 충분한 공간과 시간을 투자하여 기체의 반응을 변경시킬 수 있는 조정을 하세요.
  • 조정 채널 스위치/포트 등을 중앙 위치로 변경을 한뒤 TX와 기체에 전원을 넣어야 합니다.
  • 가능하다면 송신기의 경고 스위치를 전용 조정 스위치로 설정하세요???
  • 임시로 3 Position 스위치를 사용하는 것이 가장 바람직 합니다. 즉, 손을 놓으면 자동으로 중앙으로 돌아가는 스위치를 사용하세요.

개요(Overview)

동시에 4개의 RX 채널까지 조정에 사용할 수 있습니다.

한 채널의 조정은 다른 채널로 제어할 수 있습니다.

지상에서는 물론 비행중에 아래와 같은 조정을 할 수 있습니다.

  • RC Rate 
  • RC Expo 
  • Throttle Expo 
  • Roll & Pitch Rate 
  • Yaw Rate 
  • Pitch+Roll P I and D 
  • Yaw P I and D

시나리오 예 : 최대 4개의 3 position 스위치/포트를 사용하여 4가지 설정을 동시에 변경할 수 있습니다. 하나의 2/3/4/5/6/x position 스위치를 사용하면 3position 스위치가 하나의 설정을 한번에 변경할 수 있습니다.???

스위치와 포트를 결합하여 사용할 수 있습니다. 따라서 6개의 POS 스위치까지 사용할 수 있습니다.??

설정은 자동적으로 설정되지 않으므로, GUI를 연결하여 refresh 후 저장하거나, 시동해제시 조종간을 사용하여 저장합니다. 저장하지 않고 전원을 끄면 조정한 내용이 사라집니다.

설정은 시동해제시 조종간 위치로 저장할 수 있습니다. Throttle 낮음, Yaw 왼쪽, Pitch 낮음, Roll 오른쪽. (조종간을 둘다 낮게 + 각각 바깥쪽으로)

조정 스위치(Adjustment Switches)

스위치는 ON-OFF-ON, PORT 혹은 순간 ON-OFF-ON을 사용할 수 있습니다. 마지막을 추천합니다.

스위치를 가운데 위치로 되돌리면 값은 증가하거나 감소하지 않습니다.

스위치를 높음/낮음 쪽으로 누르고 다시 가운데로 되돌리면 값은 적어도 한번은 변경됩니다. 좀더 빠른 속도로 증가/감소 시키고자 할 때 기다렸다가 스위치를 누를 필요는 없습니다.??? 조종 스위치를 높음/낮음으로 유지하는 동안 조종 함수가 적용되며, 값이 1초에 두 번씩 증가/감소되며, 이때 비행콘트롤러는 짧은 신호음, 긴 신호음을 각각 내보냅니다. 키보드 반복과 비슷한 방법으로 작동됩니다.

힌트 : OpenTX 송신기의 경우, 두개의 임시 OFF-ON 스위치로 하나의 채널을 제어할 수 있습니다. 왼쪽 임시 스위치는 값을 감소시키도록 설치하고, 오른쪽은 값을 증가하도록 합니다. 믹서를 사용하여 실험해 보세요.

설정(Configuration)

CLI 명령인 [adjrange]를 사용하여 범위를 조정할 수 있습니다.

12개의 조종 범위를 정의할 수 있습니다. 4개의 조종을 동시에 할 수 있으며, 각각의 동시 조종은 하나의 조종 슬롯(solt)이 필요합니다.

다음 명령을 사용하면 현재의 범위를 알 수 있습니다.

adjrange

범위를 설정하려면 다음 명령을 사용합니다.

adjrange <index> <slot> <range channel> <range start> <range end> <adjustment function> <adjustment channel>

ArgumentValue

의미

Index0 - 11

설정할 조정 범위(adjustment range)

슬롯(Slot)0 - 3사용할 조정 슬롯(adjustment slot)
Range Channel0 based index, AUX1 = 0, AUX2 = 1조정할 스위치/포트에 할당할 AUX 채널
Range Start900 - 2100. Steps of 25, e.g. 900, 925, 950...시작 범위
Range End900 - 2100End of range
Adjustment function0 - 11

아래 조정 함수 참고

Adjustment channel0 based index, AUX1 = 0, AUX2 = 13 position 스위치로 제어되는 채널

범위 시작/끝 값은 수신기에서 보내주는 값과 일치해야 합니다.

일반적으로 범위채널과 슬롯 값은 다중 조정 범위로 서로 묶습니다. 

범위 채널과 조정 채널은 같은 채널이 될 수 있습니다. 3 position 스위치를 다른 스위치 위치에 관계없이 하나의 조정 함수로 대응 시키고자 할때 유용합니다. 

조정채널이 범위값 사이에 있을 때 조정 함수(Adjustment function)가 조정 채널에 적용됩니다. 조정 채널이 높음/낮은 위치에 있을 때 조정이 이루어집니다. high = mid_rc + 200, low = mid_rc - 200.기본 값은 각각 1700과 1300입니다. 

When the Range Channel does not fall into Start/End range the assigned slot will retain it's state and will continue to apply the adjustment. For this reason ensure that you define enough ranges to cover the range channel's usable range.

범위 채널이 시작/끝 범위에 들어오지 않을 때, 할당된 슬롯은 현재의 상태를 보유하며 계속하여 조정을 적용합니다. 따라서 범위 채널의 사용가능 범위를 충분하게 커버할 수 있도록 정의해야 합니다. ???

조정 함수(Adjustment function)

ValueAdjustmentNotes
0None
1RC RATE
2RC_EXPO
3THROTTLE_EXPO
4PITCH_ROLL_RATE
5YAW_RATE
6PITCH_ROLL_P
7PITCH_ROLL_I
8PITCH_ROLL_D
9YAW_P
10YAW_I
11YAW_D
12RATE_PROFILESwitch between 3 rate profiles using a 3 position switch.
13PITCH_RATE
14ROLL_RATE
15PITCH_P
16PITCH_I
17PITCH_D
18ROLL_P
19ROLL_I
20ROLL_D

예 1) 3 position 스위치로 pitch/roll rate를 조정할 때

adjrange 0 0 3 900 2100 4 3

설명 : 

adrange 0를 AUX4(3)이 900-2100 범위 내에 들어 올 때 조정 슬롯 1에 배정합니다. AUX4(3)이 적당한 위치에 들어오면 조정 4(Pitch/Roll rate)를 사용합니다.

예 2) 2position 스위치로  3 position 스위치를 통해 RC rate 의 조정을 활성화하는데 사용합니다.

adjrange 1 1 0 900 1700 0 2
adjrange 2 1 0 1700 2100 1 2

설명 :

  • adrange 1을 AUX1(0)이 800-1700 내에 들어올 때 조정슬롯 2에 배정합니다. AUX3(2)이 어떤 위치에 있든 아무것도 하지 않습니다.(0)
  • adrange 2를 AUX1(0)이 1700-2100 내에 들어올 때 조정슬롯 2에 배정합니다. AUX 3(2)가 적당한 위치에 들어오면 조정 1(RC rate)를 사용합니다.

Without the entire range of aux1 being defined there is nothing that would stop aux 3 adjusting the pitch/roll rate once aux 1 wasn't in the higher range.

AUX1 이 완전한 범위로 정의되지 않으면, AUX 1의 높은 범위에 있지 않을 때, AUX3 이 pitch/roll 을rate 를 조정하는 것을 막을 방법이 없습니다.???

예 3) 6 position 스위치로, 3position 스위치를 통해 PID 튜닝 조정을 선택하는데 사용합니다.

adjrange 3 2 1 900 1150 6 3
adjrange 4 2 1 1150 1300 7 3
adjrange 5 2 1 1300 1500 8 3
adjrange 6 2 1 1500 1700 9 3
adjrange 7 2 1 1700 1850 10 3
adjrange 8 2 1 1850 2100 11 3

설명 :

  • configure adjrange 3 to use adjustment slot 3 (2) so that when aux2 (1) in the range 900-1150 then use adjustment Pitch/Roll P (6) when aux 4 (3) is in the appropriate position. 
  • configure adjrange 4 to use adjustment slot 3 (2) so that when aux2 (1) in the range 1150-1300 then use adjustment Pitch/Roll I (7) when aux 4 (3) is in the appropriate position. 
  • configure adjrange 5 to use adjustment slot 3 (2) so that when aux2 (1) in the range 1300-1500 then use adjustment Pitch/Roll D (8) when aux 4 (3) is in the appropriate position. 
  • configure adjrange 6 to use adjustment slot 3 (2) so that when aux2 (1) in the range 1500-1700 then use adjustment Yaw P (9) when aux 4 (3) is in the appropriate position. 
  • configure adjrange 7 to use adjustment slot 3 (2) so that when aux2 (1) in the range 1700-1850 then use adjustment Yaw I (10) when aux 4 (3) is in the appropriate position. 
  • configure adjrange 8 to use adjustment slot 3 (2) so that when aux2 (1) in the range 1850-2100 then use adjustment Yaw D (11) when aux 4 (3) is in the appropriate position.

예 4) 3 position 스위치로 3가지 다른 rate 프로필을 변경합니다.

adjrange 11 3 3 900 2100 12 3

설명 :

  • adjrange 11을 AUX4(3)가 900-2100 사이에 있을 때 조정 슬롯 4(3)으로 사용하도록 설정합니다. 그러면 AUX(4)가 적절한 위치에 있을 때 조정 Rate 프로필(12) 을 사용합니다.

스위치가 낮은 위치면 rate 프로필 0 이 선택됩니다. 스위치가 중간 위치면 rate 프로필 1이 선택되고, 높은 위치면 rate 프로필 2가 선택됩니다.

GUI 설정프로그램 예제

아래 5개의 이미지는 유효한 설정입니다. 모든 경우에서 Range 채널을 위하여 전체 사용가능한 범위가 사용됩니다.???





아래 예는 잘못된 설정입니다. - 두가지 경우 모두, Range 채널을 위해 전체 사용가능한 범위가 사용되지 않았습니다.


다음의 예는 잘못된 설정(위)에 "No changes" 용 범위를 추가하여 수정한 것입니다.

====

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Inflight%20Adjustments.md

이전글 : 비행 모드(Modes)

다음글 : 제어(Controls)

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 12. 09:24

비행 모드(Modes)

Cleanflight는 여러가지 모드가 있어서 켜거나 끌 수 있습니다. 모드는 조종간(stick) 위치 보조 수신기 채널, 기타 비상대책 감지 같은 이벤트를 통해 활성화 비활성화 할 수 있습니다.

MSP IDCLI IDShort NameFunction
00ARM모터와 비행 안정화 활성화
11ANGLE예전의 자동레벨(auto-level) 비행 모드
22HORIZON자동레벨(Auto-level) 비행 모드
33BARO

고도고정(Altitude hold) 모드
(기압계 센서 필요)

4N/AVARIOUnused
54MAG방향 고정(Heading lock)
65HEADFREE

방향 자유(Head Free) - yaw 가
pitch/roll 입력에 영향을 주지 않음

76HEADADJ

방향 변경(Heading Adjust) - HEADFREE
모드에새로운 yaw 원점 부여

87CAMSTAB카메라 안정화(Camera Stabilisation)
98CAMTRIGUnused
109GPSHOME

HOME 위치로 자동 비행

1110GPSHOLD동일한 좌표 유지
1211PASSTHRU

RX로부터 roll/yaw/pitch 값을 

Airplane에 직접 전달

1312BEEPERON소리 활성화 - 추락기체 탐색에 편리함
1413LEDMAX
1514LEDLOW
1615LLIGHTS
1716CALIB
1817GOVUnused
1918OSD

OSD 활성/비활성화

2019TELEMETRY텔레메트리 활성화(스위치로)
2120GTUNE

G-Tune - Pitch/Roll/Yaw P 값을
자동 튜닝

2221SONAR

고도고정(Altitude hold) 모드
(초음파 센서 전용)

2322SERVO1Servo 1
2423SERVO2Servo 2
2524SERVO3Servo 3
2625BLACKBOX블랙박스 기록 활성화
2726FAILSAFE비상대책 2단계 수동으로 진입
2827AIRMODE

안정적인 콥터를 위한
별도의 Mixer와 추가 PID 로직

모드 상세(Mode details)

방향 자유(Headfree)

방향 자유 모드에서는 멀티콥터의 "방향(head)" 가 항상 최초로 기능이 활성화된 때와 동일한 방향을 가르킵니다. 즉, 멀티콥터가 Z 축(yaw)방향으로 회전하여도, 동일한 "head" 방향에 따라 반응합니다.

이 모드를 사용하면 멀티콥터를 조종하기가 쉽습니다. 기체의 앞쪽이 물리적으로 나를 향하고 있다고 해도 이와 관계없이 조종 되기 때문입니다. 특히 이 모드는 멀티콥터 초보자에게 친숙한 모드로, 앞쪽 방향을 몰라도 조종을 할 수 있습니다.

GPS Home위치로 복귀(Return To Home)

현재 작업중입니다. 이 모드는 아직 안정적이 아니므로, 사용하다가 경험하신 부분을 개발자에게 알려주시면 감사하겠습니다.

이 모드에서는 기체가 시동걸렸을 때 기록된 GPS 위치로 기체가 돌아옵니다.

이 모드는 Angle 혹은 Horizon 모드, 고도고정(Altitude hold) 모드와 함께 사용해야 합니다.

GPS가 3D 고정이 되어야 하며 최소 5개의 위성이 보여야 합니다.

GPS 위치 고정(GPS Position Hold)

현재 작업중입니다. 이 모드는 아직 안정적이 아니므로, 사용하다가 경험하신 부분을 개발자에게 알려주시면 감사하겠습니다.

이 모드에서는 이 모드가 활성화된 시점의 GPS 위치에 계속 머무르려고 시도합니다.

비활성화하고 다시 활성화하면 GPS 위치를 재설정합니다.

이 모드는 Angle 혹은 Horizon 모드, 고도고정(Altitude hold) 모드와 함께 사용해야 합니다.

GPS가 3D 고정이 되어야 하며 최소 5개의 위성이 보여야 합니다.

에어모드(AirMode)

In the standard mixer / mode, when the roll, pitch and yaw gets calculated and saturates a motor, all motors will be reduced equally. When motor goes below minimum it gets clipped off. Say you had your throttle just above minimum and tried to pull a quick roll - since two motors can't go any lower, you essentially get half the power (half of your PID gain). If your inputs would asked for more than 100% difference between the high and low motors, the low motors would get clipped, breaking the symmetry of the motor balance by unevenly reducing the gain. Airmode will enable full PID correction during zero throttle and give you ability for nice zero throttle gliding and actobatics. 

표준적인 믹서 모드에서는 roll/pitch/yaw가 모터를 계산하고 포화시켜서 ???, 모든 모터가 동등하게 속도를 줄이게 됩니다. 모터가 최하한선 밑으로 가게 되면 꺼지게 됩니다. 현재 throttle의 최하한선 바로 위에 있다고 가정하고 빠르게 roll을 당겼다고 해보죠. 두개의 모터는 하한 아래이기 때문에 출력이 반으로 떨어지는 결과가 됩니다. (half of your PID gain ???) 빠른 모터와 늦은 모터간에 100%이상 차이나도록 조작할 경우, 늦은 모터는 꺼지게 되어 이득(gain)이 불균등하게 감소함으로써 모터 균형의 대칭성이 깨어지게 됩니다. 에어모드(Airmode)는 throttle 0 동안 PID 조정을 최대로 하여, zero throttle gliding 과 acrobatics를 할 수 있도록 해줍니다.???

But also the cornering / turns will be much tighter now as there is always maximum possible correction performed. Airmode can also be enabled to work at all times by always putting it on the same switch like your arm switch or you can enable/disable it in air. Additional things and benefits: Airmode will additionally fully enable Iterm at zero throttle. Note that there is still some protection on the ground when throttle zeroed (below min_check) and roll/pitch sticks centered. This is a basic protection to limit motors spooling up on the ground. Also the Iterm will be reset above 70% of stick input in acro mode to prevent quick Iterm windups during finishes of rolls and flips, which will provide much cleaner and more natural stops of flips and rolls what again opens the ability to have higher I gains for some. Note that AIRMODE will also overrule motor stop function! It will basically also act as an idle up switch.

그뿐 아니라, 최대한 많은 조정이 시행되므로, 코너링/턴이 훨씬 빡빡하게 이루어지게 됩니다. 에어모드는 또한 시동스위치와 동일한 스위치에 설정하여 항상 동작하도록 할 수도 있고, 공중에서 활성화/비활성화 시킬 수도 있습니다. 추가적인 장점 : 에어모드는 추가적으로 0 throttle에서 Iterm을 완벽하게 활성화시킵니다. 참고로 0 throttle (below min_check)이고 roll/pitch 가 중앙에 있을 때 기본적인 약간의 보호장치가 있습니다.???? 지상에서 모터가 떠오르지 못하도록 제한하는 기본적인 보호장치입니다. ??? 아울러 Iterm 은 70% 스틱 입력 위에서 재설정됩니다. Roll/Flip 을 끝낼 때 너무 빠른 Iterm 마무리를 방지하기 위해서 입니다. 이렇게 되면 Roll/Flip이 훨씬더 깔끔하고 자연스러워지며, I 게인을 어느정도 더 높일 수 있는 길이 열리게 됩니다. 참고로 에어모드는 모터정지 기능을 덮어쓰게 됩니다!! 또한 기본적으로 idle up 스위치로 작동됩니다. ????

보조채널 설정(Auxiliary Configuration)

예비용 보조 수신기 채널을 사용하여 여러가지 모드를 활성화/비활성화 시킬 수 있습니다. 일부 모드는 이 방법으로만 활성화시킬 수 있습니다.

수신기를 설정하여, 스위치 혹은 다이얼을 조작하면 5번 채널 이상의 채널 데이터를 송신하도록 합니다. (처음 4개의 채널은 일반적으로 throttle, aileron, rudder, elevator 채널로 할당되어 있습니다.)

예를 들어 3 positon 스위치를 낮은 위치에서 1000을 보내도록 설정하고 중간 위치에서 1500, 높은 위치에서 2000을 보내도록 설정할 수 있습니다.

tx/rx 채널 한계를 1000부터 2000까지의 값을 사용하도록 설정합니다. 모드 range에서 사용하는 범위는 900 부터 2000으로 고정됩니다.

채널이 지정된 범위 이내에 들어오면 해당되는 모드가 활성화됩니다. 

GUI 설정 도구를 이용하면 쉽게 설정할 수 있습니다.

CLI

CLI 명령 [aux] 를 사용하면 보조채널 설정이 가능합니다. 다음과 같은 5개의 매개변수가 필요합니다.

  • AUD 범위 슬롯 번호 (0 - 39) 
  • 모드 id (위에 있는 리스트를 보세요.)
  • AUX 채널 인덱스 (AUX1 = 0, AUX2 = 1,... etc) 
  • 낮은 위치, 900 부터 2100. 25의 배수여야 합니다.
  • 높은 위치, 900 부터 2100. 25의 배수여야 합니다.

낮은위치와 높은위치가 동일한 값을 사용하면 무시됩니다.

예를 들어 AUX 범위 슬롯 0를 AUX1이 1700-2100 사이에 들어오면 ARM을 활성화하도록 설정할 경우, 다음과 같이 설정합니다.

aux 0 0 0 1700 2100

아무런 매개변수없이 [aux] 명령을 사용하면 현재의 AUX 설정 정보가 표시됩니다.

====

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Modes.md

이전글 : 프로필(Profiles)

다음글 : 비행중 조정(In-flight Adjustments)

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 11. 22:41

프로필 (Profiles)

프로필이란 설정 값의 모음입니다.

현재 프로필은 3개까지 지원됩니다. 기본 프로필은 0입니다.

프로필 변경(Changing Profiles)

프로필은 GUI를 통해 바꿀 수 있습니다. 다음과 같은 스틱 조합을 통해서도 바꿀 수 있습니다.

ProfileThrottleYawPitchRoll
0DownLeftMiddleLeft
1DownLeftUpMiddle
2DownLeftMiddleRight

CLI [profile] 명령으로도 가능합니다.

profile <index>

Rate 프로필

Cleanflight는 일반 프로필외에 Rate 프로필을 지원합니다.

Rate 프로필에는 조종 입력에 따은 기체 반응 방법을 조정하는 설정이 들어 있습니다.

세가지 Rate 프로필이 지원됩니다.

Rate 프로필은 비행중 조종 기능을 사용하여 비행하는 동안에도 선택할 수 있습니다.

각각의 일반 프로필은 'default_rate_profile'이라는 설정이 있습니다. 프로필이 활성화되면, 해당되는 rate 프로필도 활성화됩니다.

프로필 0 는 기본 rate 프로필이 0 입니다. 프로필 1 은 기본 rate 프로필이 1 이고 Profile 2는 기본 rate 프로필이 2입니다.

이처럼 기본적으로 프로필과 rate 프로필을 쉽게 설정할 수 있도록 되어 있습니다. ????

현재의 rate 프로필은 CLI [rateprofile] 명령을 사용하여 설정하거나 볼 수 있습니다.

rateprofile <index>

rate 프로필에 포함된 값들은 CLI [dump reates] 라는 명령을 사용하여 볼 수 있습니다. 아래는 그 예입니다.

# dump rates

# rateprofile
rateprofile 0

set rc_rate = 90
set rc_expo = 65
set thr_mid = 50
set thr_expo = 0
set roll_pitch_rate = 0
set yaw_rate = 0
set tpa_rate = 0
set tpa_breakpoint = 1500

====

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Profiles.md

이전글 : 초음파센서(Sonar)

다음글 : 모드(Modes)

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

드론/쿼드콥터2016. 9. 11. 17:33

초음파 센서(Sonar)

초음파 센서는 기압계(BARO)와 초음파(SONAR) 고도 고정 모드를 사용하여 높이를 측정하는데 사용될 수 있습니다.

초음파 센서는 낮은 고도(지상 3.5미터 이하)에서 압력센서(기압계) 대신 사용할 수 있습니다. 초음파센서는 기체 기울기(자세)가 작을 때(22.5도 이하)만 사용할 수 있습니다.

하드웨어(Hardware)

현재 주 지원 센서는 HCSR04 센서입니다. Parallax 28015 단선(single-wire) 소나도 Trigger와 Echo 핀에 1k 저항을 연결하면 사용할 수 있습니다. 또한 저항 반대편은 서로 연결하고 소나 모듈과 연결시키면 됩니다. ???

          1k
TRIGGER--/\/\--\
                \_______ 28015 SONAR
          1k    /
ECHO-----/\/\--/

연결(Connections)

Maze/Flip32+

ModeTriggerEchoInline 1k resistors
Parallel PWM/ADC current sensorPB8 / Motor 5PB9 / Motor 6NO (5v tolerant)
PPM/Serial RXPB0 / RC7PB1 / RC8YES (3.3v input)
제한

전력계는 병렬식 PWM, 초음파 센서와 함께 사용할 수 없습니다.

Olimexino

TriggerEchoInline 1k resistors
PB0 / RC7PB1 / RC8YES (3.3v input)
제한

전력계는 초음파 센서와 함께 사용할 수 없습니다.

CC3D

TriggerEchoInline 1k resistors
PB5 / RC4PB0 / RC5YES (3.3v input)
제한 

초음파 센서는 Softserial 또는 병렬식 PWM과 함께 사용할 수 없습니다.

SPRacingF3

TriggerEchoInline 1k resistors
PB0 / RC7PB1 / RC8YES (3.3v input)
제한

초음파 센서는 SoftSerial2 또는 병렬식 PWM과 함께 사용할 수 없습니다.

===

원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Sonar.md

이전글 : 부저(Buzzer)

다음글 : 프로필(Profiles)

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요