rclpy.time.Time
은 ROS 2에서 시간을 나타내기 위한 클래스rclpy.time.Time
객체는 내부적으로 두 부분, 즉 초(seconds)와 나노초(nanoseconds)로 시간을 저장now()
: 현재 시간을 반환합니다.from_msg()
: builtin_interfaces/msg/Time
-> rclpy.time.Time
to_msg()
: rclpy.time.Time
-> builtin_interfaces/msg/Time
nanoseconds()
: 시간을 나노초로 반환seconds()
: 시간을 초로 반환rclpy.time.Time
VS builtin_interfaces/msg/Time
rclpy
내에서 다양한 시간 관련 함수와 함께 사용됩Time()
생성자를 사용하거나 Time.now()
등의 메소드로 현재 시간을 직접 생성할 수 있음now()
: 현재 시간을 Time
객체로 반환합니다.to_msg()
: ROS 2의 시간 메시지 타입으로 변환합니다.from_msg(msg)
: ROS 2의 시간 메시지를 Time
객체로 변환합니다.builtin_interfaces/msg/Time
은 ROS 2에서 표준 시간 메시지 타입으로, 메시지를 통해 다른 노드나 시스템과 시간 정보를 교환할 때 사용sec
(초)와 nanosec
(나노초) 두 필드로 구성되어 있음Time
객체와 Time
메시지는 상호 변환이 자주 일어남Time
객체를 Time
메시지로 변환해야 하고, Time
객체로 다시 변환해야 함import rclpy
from rclpy.time import Time
from builtin_interfaces.msg import Time as TimeMsg
# Time 객체 생성
time_obj = Time()
# Time 객체를 Time 메시지로 변환
time_msg = time_obj.to_msg()
# Time 메시지를 Time 객체로 변환
new_time_obj = Time.from_msg(time_msg)
위 코드는 Time
객체를 Time
메시지로 변환하는 과정과 그 반대 과정을 보여줍니다. 이처럼 ROS 2에서는 시간 관련 데이터를 다루는 데 두 가지 방식이 효과적으로 상호 작용하여 시스템의 정확성과 효율성을 높입니다.
rclpy.time.Time
객체를 실수형(Float) 타입으로 변환하려면, 일반적으로 시간을 초 단위의 실수로 표현합니다. 이는 시간을 나노초로 가져온 다음, 이를 1e9로 나누어 초 단위로 변환하는 방식으로 수행할 수 있습니다. 이 방법은 시간을 초 단위로 보고 소수점 이하로 나노초를 표현합니다.다음은 rclpy.time.Time
객체를 초 단위의 실수로 변환하는 예시 코드입니다:
import rclpy
from rclpy.time import Time
# Time 객체 생성
time_obj: Time = Time()
# Time 객체를 나노초로 변환 후, 초 단위의 실수로 변환
time_in_seconds: float = time_obj.nanoseconds() / 1e9
print(f"Time in seconds: {time_in_seconds}")