5. Learning Agent 적용

date
2월 21, 2026
status
Public
tags
unrealRL

1. Learning Agents 사용할 클래스 정리#

거미 로봇의 관절이 모두 정상적으로 접근하다는 것을 확인했으니, 이제 언리얼에서 지원하는 Learning Agent를 켜서 학습 루프까지 진입이 가능한 지 확인해보자

사용할 Learning Agent 요소는 크게 6개로 구성된다

1. BP_SpiderTrainingManager
2. BP_SpiderInteractor
3. BP_SpiderTrainingEnvironment
4. BP_SpiderPolicy
5. BP_SpiderCritic
6. BP_SpiderPPOTrainer

하나하나 소개를 해보면


1. BP_SpiderTrainingManager#

이미 만든 것#

BP_SpiderTrainingManager
└─ BP_SpiderLearningManager 컴포넌트

역할#

  • 맵에 실제로 배치되는 훈련 총괄 액터
  • 거미 로봇을 Agent로 등록
  • 아래 5개 객체를 생성하고 서로 연결
  • 최종적으로 훈련 시작을 호출

현재 여기까지 했지:

BeginPlay
→ BP_SpiderRobot 찾기
→ Add Agent

2. BP_SpiderInteractor#

방금 만들려던 것#

역할#

Interactor는 거미와 학습기 사이의 입출력 어댑터야.

거미 현재 상태 → Observation
학습기가 낸 값 → Action → 거미 관절 제어

공식 설명도 Interactor가 Observation과 Action을 통해 에이전트가 환경과 상호작용하는 방식을 정의한다고 되어 있어.

여기서 나중에 구현할 것#

Observation#

처음에는 아주 작게 갈 거야.

- 몸체 Pitch / Roll
- 몸체 높이
- 관절 현재 각도
- 관절 각속도

Action#

우리가 이미 만든 관절 제어 컴포넌트 쪽으로 연결해서:

- 각 관절 목표 각도 값

을 넣을 예정이야.


3. BP_SpiderTrainingEnvironment#

새로 만들 것#

역할#

학습에서 **“잘했는지 / 실패했는지”**를 판단하는 곳.

즉:

Reward
Completion
Reset 조건

담당이야.

여기서 나중에 구현할 것#

Reward#

초기에는 너무 욕심내지 않고:

+ 몸을 세우고 버티면 보상
- 몸체가 심하게 기울면 패널티
- 넘어지면 큰 패널티

부터 시작하는 게 좋아.

아직 걷기 보상까지 바로 넣지 말고,

우선 “서 있는 로봇” 학습부터 시키는 방향이 안정적이야.

Completion#

- 넘어짐
- 몸체 높이가 너무 낮아짐
- 일정 시간 경과

Reset#

- 거미 원래 위치로 복귀
- 관절 초기 각도로 복귀
- 물리 속도 초기화

4. BP_SpiderPolicy#

새로 만들 것#

역할#

학습된 행동 네트워크야.

Observation 입력
→ Action 출력

즉, “이 상태에서 관절을 어떻게 움직일까?”를 담당하는 모델이라고 보면 돼. 공식 튜토리얼에서도 Interactor, Policy, Trainer를 핵심 구성으로 다룬다.


5. BP_SpiderCritic#

새로 만들 것#

역할#

PPO 학습에서 사용하는 가치 평가 네트워크야.

쉽게 말하면:

지금 상태가 앞으로 보상을 많이 받을 만한 상태인가?

를 추정해주는 보조 모델.

PPO Trainer는 Policy와 Critic 둘 다 필요로 한다.


6. BP_SpiderPPOTrainer#

새로 만들 것#

역할#

실제 강화학습 실행기야.

Manager
Interactor
Training Environment
Policy
Critic

을 받아서 PPO 학습을 시작한다.

공식 Make PPOTrainer 노드 입력도 정확히 이 구성을 요구해.


최종 연결 모양#

우리가 BP_SpiderTrainingManager의 BeginPlay에서 최종적으로 만들 그래프는 대략 이런 흐름이야.

BeginPlay
BP_SpiderRobot 찾기
Add Agent

Make Interactor
Make Training Environment
Make Policy
Make Critic
Make PPOTrainer
Begin Training

정확히는 몇몇 노드 순서가 조금 달라질 수 있지만, 큰 구조는 이거야. PPO Trainer가 요구하는 구성요소가 이 다섯 개라서 이 방향 자체는 맞다.

2. 작업#

2.1. Learning Agent 세팅#

2.1.1.Learning Agents Manager 추가#

  • 편집 → 플러그인 → Learning Agent 플러그인 켜고 재시작
  • 컨텐츠 브라우저에 LearningAgents 폴더 생성
BP_SpiderActor
 실제 거미 로봇
 다리, 몸체, 관절 제어를 가짐

BP_SpiderTrainingManager
 학습 관리자
 거미 로봇을 “학습 대상”으로 등록하고
   Learning Agents 학습 전체를 관리함
  • 거미 로봇을 학습 대상으로 등록하고, 관찰값/행동값/보상/학습 실행을 관리하는 훈련 감독자를 등록해야 한다. 이를 위해 관리자 블루프린트 액터를 추가해보자(이름 : BP_SpiderTrainingManager)

  • 이제 BP_SpiderTrainingManager 안에 Learning Agents Manager 컴포넌트를 추가해보자

    액터 더블 클릭 → 컴포넌트 패널에서 추가 버튼 → Learning Agents Manager 추가

  • 저장 후 컴파일

2.1.2. BeginPlay에서 거미 로봇 등록하기#

  • BP_SpiderTrainingManager를 레벨에 배치(드래그 앤 드랍)

  • 더블클릭해서 이벤트 그래프로 들어가기

  • 그래프 빈 공간에서 아래 순서대로 노드를 생성

2.1.3. [BP]Agent를 모델에 등록#

  1. Event BeginPlay 끌어오기
  2. 매니저 컴포넌트 끌어오기→ 드래그 후 Get BP_SpiderLearningManager 선택

  1. 에이전트 매니저 → 에이전트 추가 Manager 컴포넌트에서 Add Agent를 호출해 학습 대상으로 쓸 UObject를 등록

(Learning Agents (5.5) | Course)

  1. BeginPlayAdd Agent 실행 핀에 연결
  • BeginPlay를 output 삼각형을 Add Agent 왼쪽 위의 실행 핀에 연결

  1. Agent칸에 거미로봇 추가

  1. 실행 흐름 정리
  • 결국 클래스를 찾아야 학습하게 되어야하니깐 시작→로봇 클래스 찾기→Agent 추가 이 흐름으로 수정하자

Learning Agents의 Manager는 등록된 오브젝트들을 Agent로 추적하고, Add Agent 노드로 학습 대상을 추가하는 구조.(Learning Agents | Unreal Engine 5.7 Documentation | Epic Developer Community)

  • 컴파일 후 저

2.1.4. [BP]Interactor 블루프린트 만들기#

  • LearningAgent 폴더에 Learning Agents Interactor 블루프린트 클래스 추가

    (이름 : BP_SpiderInteractor)

  • Interactor는 에이전트의 Observation과 Action 구조를 정의하는 객체

Be Your Own Lamp