ROS 이종 PC 시간 동기화

OpenJR·2025년 4월 1일

ROS를 사용하다보면 여러 PC를 동시에 사용해야하는 경우가 종종 발생한다.
이러한 상황에서 문제는 Jetson과 같은 임베디드 디바이스는 일반 PC와 달리 RTC 배터리가 없어 컴퓨터 종료 시 시간 정보가 날라간다.
문제는 시간이 맞지 않으면 로봇에서 사용되는 Joint 정보나 TF정보 시간대가 맞지 않아 아주 골치가 아프다.

그래서 Jetson을 다른 일반 PC와 랜선으로 연결해 시간을 항상 일반 PC와 동기화하는 방법을 설명한다.

chrony

시간을 동기화하기 위한 여러 방식이 있지만, NTP 프로토콜 방식인 chrony를 사용하면 손쉽게 세팅이 가능하다. 센서 동기화에 주로 사용되는 PTP 방식도 있지만 chrony도 ms 단위의 오차로 매우 오차도 적고 무엇보다 PTP보다 PTP보다 오버헤드가 낮아서 PC 동기화는 이정도로도 충분하다.

사용법

일단 시간을 맞추고자 하는 PC와 젯슨 모두 sudo apt install chrony로 설치해준다.
systemctl status chronyd로 데몬의 상태도 볼 수 있다.
아마 run 상태일 것이다.

● chrony.service - chrony, an NTP client/server
     Loaded: loaded (/lib/systemd/system/chrony.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2025-04-01 10:11:23 KST; 2s ago
       Docs: man:chronyd(8)
             man:chronyc(1)
             man:chrony.conf(5)
    Process: 1144 ExecStart=/usr/lib/systemd/scripts/chronyd-starter.sh $DAEMON_OPTS (code=exi>
   Main PID: 1153 (chronyd)
      Tasks: 2 (limit: 16633)
     Memory: 1.7M
     CGroup: /system.slice/chrony.service
             ├─1153 /usr/sbin/chronyd -F 1 -x
             └─1154 /usr/sbin/chronyd -F 1 -x

Apr 01 10:11:23 DESKTOP-1TTK8NM systemd[1]: Starting chrony, an NTP client/server...
Apr 01 10:11:23 DESKTOP-1TTK8NM chronyd-starter.sh[1144]: Warning: Running in a container, lik>
Apr 01 10:11:23 DESKTOP-1TTK8NM chronyd-starter.sh[1144]: Adding -x as fallback disabling cont>
Apr 01 10:11:23 DESKTOP-1TTK8NM chronyd[1153]: chronyd version 4.2 starting (+CMDMON +NTP +REF>
Apr 01 10:11:23 DESKTOP-1TTK8NM chronyd[1153]: Disabled control of system clock
Apr 01 10:11:23 DESKTOP-1TTK8NM chronyd[1153]: Using right/UTC timezone to obtain leap second >
Apr 01 10:11:23 DESKTOP-1TTK8NM chronyd[1153]: Loaded seccomp filter (level 1)
Apr 01 10:11:23 DESKTOP-1TTK8NM systemd[1]: Started chrony, an NTP client/server.

일반 PC 세팅

일반 PC에서 /etc/chrony/chrony.conf파일 맨 마지막 중에 아래 줄을 추가한다.

allow 192.168.1.<JETSON_IP>/24

/24는 서브넷마스크이다. 255.255.255.0이 /24다.

Jetson 세팅

이번에는 /etc/chrony/chrony.conf 파일 맨 아래 중에 다음을 추가한다.

server 192.168.1.<PC_IP> iburst

자 이제 두 PC에 sudo systemctl restart chronyd로 데몬을 재시작하면 동기화가 끝난다.

profile
Jacob

3개의 댓글

comment-user-thumbnail
2025년 4월 1일

안녕하세요. 흥미로운 내용이 많은데 혹시 시리즈 별로 게시물 정리하는 것은 어떨까요?

2개의 답글