본 프로젝트는 ROS 2 Humble 기반 컨테이너 환경에서 실시간 성능 평가를 위한 테스트 시나리오를 자동화하고, 테스트 실행 시점을 모니터링하기 위한 모듈을 포함합니다. monitor 컨테이너와 cyclictest, pi_stress, signaltest 테스트를 하나의 Pod에서 순차적으로 실행하는 totaltest 구성을 제공합니다.
-
monitor (monitor container)
/test_event토픽을 구독하여 테스트의 시작/종료 타임스탬프를 기록 -
cyclictest
주기적 타이머 인터럽트 지연 시간 측정 -
pi_stress
실시간 스케줄링 환경에서 동기화 연산 스트레스 테스트 수행 -
signaltest
실시간 프로세스 간 시그널 처리 지연 측정
CMD=all 환경 변수로 실행 시, 아래 순서대로 실행됩니다:
- cyclictest
- pi_stress
- signaltest
각 테스트의 시작/종료 시점은 ROS2 토픽 /test_event를 통해 모니터링 컨테이너에 전달됩니다.
Kubernetes 배포 monitor.yaml과 totaltest.yaml 파일을 ros-test 네임스페이스에 적용합니다
kubectl apply -f monitor.yaml -n ros-test
kubectl apply -f totaltest.yaml -n ros-testtotaltest.yaml 내에서 각 테스트별 인자값 조정
env:
- name: CMD
value: "all"
- name: CYCLICTEST_ARGS
value: "-l 10000 -i 1000 --json=/output/cyclictest_result.json"
- name: PISTRESS_ARGS
value: "-g 8 -i 100000"
- name: SIGNALTEST_ARGS
value: "-p 30 -l 100"
모든 테스트의 시작과 종료 시점은 ROS2 모니터링 노드를 통해 다음과 같이 출력됩니다:
[2025-04-30 14:31:20] START for cyclictest
[2025-04-30 14:31:23] DONE for cyclictest-
ROS 2 Humble 기반 환경
-
Kubernetes cluster
-
HostNetwork 사용 권장 (ROS2 통신을 위한 DDS discovery 보장)