ROS SIM Time
본 페이지에서 MORAI SIM Time과 ROS TIME을 동기화 하기 위한 방법을 소개한다.
참고 페이지 : http://wiki.ros.org/Clock, http://wiki.ros.org/roscpp/Overview/Time
ROS 의 Time System
ROS의 Node 들은 서로 간의 상호작용에 있어 동기화 된 시간 흐름을 사용하기 위해 ROS Time을 사용한다.
동작 주기, 메시지 간 동기 확인 등에서 ROS Time은 필수적이다.
메시지 간 동기를 확인할 때는 메시지의 Header에 들어가는 Time을 사용한다.
ROS Time의 기본 설정으로는 동작 중인 PC Time이 사용된다.
use_sim_time 활성화 및 /clock topic 발행 시 PC Time이 아닌 '/clock topic'이 ROS Time으로 사용된다.
MORAI SIM Time Management에서 ROS Time 연동 : use_sim_time 사용한다.
use_sim_time을 활성화하지 않으면 ROS와 MORAI SIM 간의 Time 동기가 불가능하다.
ex) Sensor Message subscribe node
MORAI SIM에서는 SIM내에 정의된 시간으로 Sensor Message Header에 Time을 입력한다.
ROS Node는 ROSTIME을 호출해서 현재 시간 정보에 접근한다.
ROSTIME과 SIM Time이 다르기에 정상적인 동작 불가능하다.
MORAI SIM Time을 /clock topic으로 발행하여 ROSTIME을 시뮬레이터와 동기화한다.

개발 시 고려 필요 사항
토픽 발행 시 IP/Port를 설정할 수 있어야 함 → ROS 사용하는 모든 IP에 보내는 방향
현재 시뮬레이터에서 데이터를 주고 있는 모든 ROS IP에 대해 /clock topic을 발행
토픽 발행 시기/주기 결정 필요
Time Management 실행 시 자동으로 /clock topic을 발행
1ms 주기
User Guide (ROS)
roscore 실행 후 rosparameter 중 use_sim_time을 true로 설정한다.
- CODE
rosparam set use_sim_time true
MORAI SIM에서 /clock topic을 발행하도록 설정한다.