ABOUT ME

양자컴퓨팅 엔지니어를 꿈꾸는 아기 물개의 물리학, 수학, 컴퓨터공학 이야기가 시작됩니다.

Today
Yesterday
Total
  • 로켓 비행 시뮬레이터
    프로젝트 2024. 11. 19. 23:02

    ✅프로젝트 소개✅
    로켓과 미사일(이하 로켓) 설계 및 운용에서 로켓에 가해지는 외력의 영향을 최소화 하고 안정적으로 원하는 자세로 비행할 수 있도록 제작하는 것이 매우 중요하다. 로켓의 자세 제어를 통해 로켓 발사 과정에서의 안전을 확보하고 원하는 궤도 혹은 목표로 비행할 수 있다. 로켓의 자세 제어에는 대표적으로 카나드핀을 사용하거나 TVC(추력 벡터 제어)를 사용한다. (space x의 starship등의 로켓에서는 grid pin을 사용하기도 한다.) 본 프로젝트에서는 카나드핀을 사용한 로켓 자세 제어기를 효과적으로 설계할 수 있는 솔루션을 제공한다. 
    카나드핀이란 로켓의 몸체에 붙어있는 날개로 이 날개를 조정하여 로켓이 안정적으로 비행할 수 있도록 제어한다. 

    카나드핀

    카나드핀을 적절하게 움직이는 제어 알고리즘으로 다양한 방법이 선택 될 수 있다. 산업 현장에서 제일 효과적이면서도 간단하게 사용되는 제어 알고리즘 중 하나로 PID 알고리즘을 이야기 할 수 있다. 내가 유지하고자 하는 목표 상태와 현재 상태와의 차이인 에러를 계산하고 그 에러에 상수를 곱한 값, 시간에 대해 미분하여 상수를 곱한값, 시간에 대해 적분하여 상수를 곱한 값을 합하여 제어값을 구할 수 있는 간단한 알고리즘이다. 

    PID

    PID 알고리즘은 매우 간단하게 구현 가능하지만 효과적이다. 하지만 제어 대상을 가장 효과적으로 제어 할 수 있는 상수 계수 3개(KP, KI, KD)를 구해 주어야 한다. 일반적으로 PID의 3개의 계수를 구하기 위해서는 여러번의 반복 실험을 통해 수작업으로 계수를 조정해주는 과정을 거쳐야 한다. 하지만 로켓과 같은 개발 비용이 천문학적으로 많이 드는 프로젝트에서 반복적으로 로켓을 발사해보며 최적의 PID 계수를 찾기란 현실적으로 쉽지 않다. 따라서 본 프로젝트에서는 로켓 엔진 연소에 따른 열역학적 변화, 공기의 흐림에 따른 유체역학적 변화, 엔진 추력, 중력, 로켓의 구조에 따른 물리적 성질 등을 종합적으로 고려하여 로켓 설계에 따른 비행 시뮬레이터를 제작하고 해당 시뮬레이터에 카나드 제어 기능을 탑재한 로켓을 시뮬레이션하여 최적의 PID 계수 3개를 실제 로켓 제작 및 발사 없이도 추정 할 수 있도록하는 솔루션을 제공한다. 또한 사람이 직접 감으로써 조정하던 PID 계수를 강화학습과 지글러-니콜스 방법을 함께 적용한 인공지능 모델이 자동으로 튜닝해줌으로써 시간과 비용을 획기적으로 아낄 수 있도록 돕는다. 또한 로켓 설계 값에 따른 비행 시뮬레이션 결과를 제공하기 때문에 로켓의 길이나 무게, 날개의 크기 등을 결정하고 디자인하는데에도 활용할 수 있다.
     
    ✅주요 기능✅
    1. 로켓 설계의 각종 요소들을 입력으로 로켓의 비행을 시뮬레이션한다.
    2. 카나드핀 제어를 위한 PID 제어기의 계수를 인공지능 모델이 자동으로 튜닝한다.
     
    ✅시뮬레이션 알고리즘✅

    시뮬레이션 알고리즘

     
    아래는 시뮬레이션을 위해 사용자가 입력해야 하는 파라메터이며 각 파라메터에 따라 로켓이 어떠한 비행 궤적을 그리는지를 비교해가며 적절한 로켓 설계를 수행 할 수 있다.

    번호매개변수
    1질량 중심
    2압력 중심
    3질량
    4관성 모멘트
    5초기 피치, 요 각도
    6공기 밀도
    7바람 속도
    8시간 간격
    9카나드 위치, 면적
    10카나드, 꼬리날개의 양력, 항력 계수 cfd 데이터
    11카나드 최대 각도
    12꼬리날개 위치, 면적
    13로켓 길이
    14연료 질량, 유량, 내경, 외경
    15엔진 추력 데이터
    16엔진 압력 데이터
    17Kp, Ki, Kd
    18로켓 외경
    19발사대 길이

     
    시뮬레이션은 위 파라메터를 바탕으로 아래의 요소들을 계산한다.
    1. 연료 연소에 따른 로켓의 질량 중심 및 관성 모멘트 변화
    2. 각 카나드핀, 꼬리날개, 몸체에 진입하는 유체의 상대속도 벡터 및 aoa(angle of attack)
    3. 유체의 상대속도 벡터 및 aoa에 따른 각 날개와 몸체가 받는 양력과 항력 계산
    4. 로켓의 추력, 중력 및 양력, 항력을 종합적으로 계산한 알짜힘 계산
    5. 로켓의 각 파트가 받는 토크 계산
    6. 로켓의 시간에 따른 회전 및 병진 운동 계산
    7. 로켓의 자세에 따른 PID 제어기의 출력 값 계산 및 카나드핀 상태 변화 계산
     
    위 계산을 수행하는데 사용한 좀더 정확한 내용은 현재 학회 학술지 논문 심사 과정에 있기에 추후 심사가 완료 된 후 업로드 하도록 하겠습니다.
     
    ✅소프트웨어 사진✅

    비행 시뮬레이터

     
    ✅소프트웨어 신뢰도 검증✅
    시뮬레이션의 신뢰도가 낮으면 PID 튜닝 결과도 신뢰할 수 없을 것이다. 제일 좋은 방법은 시뮬레이션에 사용된 설계 값대로 로켓을 만들어 발사해보는 것이다. 실제로 경희대학교 로켓 및 위성 동아리 TUSI에서 로켓을 제작하여 발사하였다. 하지만 발사 후 낙하하는 과정에서 낙하산이 펴지지 않아 비행 데이터가 전부 날라가버렸기에 실제 데이터와의 검증은 시도하지 못하였다. 대신 신뢰도 검증을 위해 2가지의 다른 방법으로 테스트 해보았다.
     
    1. 오픈 로켓과의 테스트 비교
     오픈 로켓은 모델 로켓 설계 및 시뮬레이션 부분에서 유명한 오픈소스 소프트웨어이다. 우리 소프트웨어와 다른 점은 pid 제어 기능 및 튜닝 기능을 제공하고 있지 않고 설계에 중점을 둔 소프트웨어라는 것이다. 하지만 많은 사람들이 사용하는 만큼 신뢰성이 높은 시뮬레이션 결과를 제공한다. 우리 소프트웨어의 경우 오픈 로켓과 비교했을때 더 높은 DOF의 시뮬레이션을 지원하기 때문에 오픈 로켓과 비교를 위해 일부 요소들(PID 제어 활성화 등)을 배제하고 시뮬레이션하여 결과를 비교하였다. 특히 시뮬레이터가 로켓의 연료 연소, 회전 운동, 병진 운동을 잘 모델링하고 있는지를 판단하여야 하기에 이 부분을 중점적으로 두 시뮬레이터를 비교했으며 그 결과는 아래와 같다. (RCTS는 우리 소프트웨어의 이름이다.)

    2. 실제 발사 영상과의 간접적인 비교
    실제 발사 당시의 로켓 파라메터와 pid 계수를 입력하여 시뮬레이션 했을때의 그래프와 발사 당시의 촬영 영상 비교를 통한 간접적 검증을 시도했다. 시뮬레이션 그래프에서는 pitch축에서 5도로 기울려 발사한 로켓이 빠르게 0도로 수렴하며 yaw축의 경우 빠르게 기울어 지는 경향을 보였다. 실제 발사 영상에서도 동일한 현상을 확인 할 수 있었다.

    시뮬레이션 결과
    pitch
    yaw

     
    ✅강화학습을 통한 PID 튜닝✅
    DQN 알고리즘을 이용하여 시뮬레이터를 환경으로 한 PID 튜닝 모델을 학습시켰다. 이때 단순히 강화학습만 사용하는 것이 아닌 고전적인 PID 튜닝 알고리즘은 지글러-니콜스 기법을 함께 적용하여 튜닝 성능을 획기적으로 높일 수 있었다. 이는 단순히 강화학습만 사용한다면 KP,KI,KD 세개를 튜닝하여야 하지만 지글러-니콜스 기법을 함께 사용하면 KP만 튜닝하면 KI,KD는 자동으로 결정 되므로 모델의 용량을 줄일 수 있다는 가정을 하였고 실제 실험 결과 단순히 강화학습만 사용했을 떄와 비교해 훨씬 효과적인 성능을 보였다. 
     

     
    최종적으로 인공지능 모델이 추출해준 PID 계수를 입력하여 시뮬레이션 한 결과 로켓의 자세 제어를 안정적으로 수행하는 것을 보여주었다.

    AI가 튜닝해준 PID 제어 결과

     
    ✅시연 영상✅
    시연 영상은 경희대학교 로켓 동아리 투지에서 올해 여름에 발사한 로켓의 스펙을 가지고 시뮬레이션을 수행한 결과이다. 초반에 초기화 작업이 다소 오래 걸리는 것은 추력과 압력 데이터를 분석하는데 시간이 걸리기 때문이다. 이후 PID 계수를 0으로 초기화 한 후 튜닝을 누르면 AI가 총 10번의 튜닝을 거쳐 최종적으로 계수를 반환하여 준다. 10번의 튜닝이 시간이 조금 걸릴 수 있다.

     

Designed by Tistory.