from edgefirst.schemas.builtin_interfaces import Duration, Time
from edgefirst.schemas.geometry_msgs import Point, Pose, Quaternion, Vector3
from edgefirst.schemas.std_msgs import ColorRGBA, Header
def example_time() -> None:
print("=== Example: Time ===")
time = Time(sec=1234567890, nanosec=123456789)
print(f"Time: {time.sec}.{time.nanosec:09d} seconds")
print(f"Time (repr): {time!r}\n")
def example_duration() -> None:
print("=== Example: Duration ===")
duration = Duration(sec=5, nanosec=500_000_000)
total_ns = duration.sec * 1_000_000_000 + duration.nanosec
print(f"Duration: {total_ns / 1e9} seconds ({total_ns} nanoseconds)\n")
def example_header() -> None:
print("=== Example: Header ===")
header = Header(
stamp=Time(sec=1234567890, nanosec=123456789),
frame_id="camera_optical_frame"
)
print("Header:")
print(f" timestamp: {header.stamp.sec}.{header.stamp.nanosec:09d}")
print(f" frame_id: {header.frame_id}\n")
default_header = Header()
print(f"Default header: {default_header!r}\n")
def example_color() -> None:
print("=== Example: ColorRGBA ===")
red = ColorRGBA(r=1.0, g=0.0, b=0.0, a=1.0)
transparent_blue = ColorRGBA(r=0.0, g=0.0, b=1.0, a=0.5)
print(f"Red: {red!r}")
print(f"Transparent blue: {transparent_blue!r}\n")
def example_vector3() -> None:
print("=== Example: Vector3 ===")
velocity = Vector3(x=1.5, y=2.0, z=0.5)
magnitude = (velocity.x**2 + velocity.y**2 + velocity.z**2) ** 0.5
print(f"Velocity vector: ({velocity.x}, {velocity.y}, {velocity.z})")
print(f"Magnitude: {magnitude:.3f}\n")
def example_point() -> None:
print("=== Example: Point ===")
origin = Point(x=0.0, y=0.0, z=0.0)
target = Point(x=10.0, y=5.0, z=2.0)
dx = target.x - origin.x
dy = target.y - origin.y
dz = target.z - origin.z
distance = (dx * dx + dy * dy + dz * dz) ** 0.5
print(f"Origin: {origin!r}")
print(f"Target: {target!r}")
print(f"Distance: {distance:.3f}\n")
def example_quaternion() -> None:
print("=== Example: Quaternion ===")
identity = Quaternion(x=0.0, y=0.0, z=0.0, w=1.0)
rotation_z_90 = Quaternion(x=0.0, y=0.0, z=0.707, w=0.707)
print(f"Identity rotation: {identity!r}")
print(f"90° Z rotation: {rotation_z_90!r}\n")
def example_pose() -> None:
print("=== Example: Pose ===")
pose = Pose(
position=Point(x=1.0, y=2.0, z=0.5),
orientation=Quaternion(x=0.0, y=0.0, z=0.0, w=1.0)
)
print("Pose:")
print(f" position: ({pose.position.x}, {pose.position.y}, {pose.position.z})")
print(f" orientation: ({pose.orientation.x}, {pose.orientation.y}, "
f"{pose.orientation.z}, {pose.orientation.w})\n")
def example_serialization() -> None:
print("=== Example: Serialization ===")
header = Header(
stamp=Time(sec=1234567890, nanosec=123456789),
frame_id="test_frame"
)
bytes_data = header.serialize()
print(f"Serialized header to {len(bytes_data)} bytes")
decoded = Header.deserialize(bytes_data)
assert decoded.stamp.sec == header.stamp.sec
assert decoded.stamp.nanosec == header.stamp.nanosec
assert decoded.frame_id == header.frame_id
print("Round-trip successful!")
print(f" Original: {header!r}")
print(f" Deserialized: {decoded!r}\n")
def main() -> None:
print("EdgeFirst Schemas - Basic Types Examples")
print("=" * 50 + "\n")
example_time()
example_duration()
example_header()
example_color()
example_vector3()
example_point()
example_quaternion()
example_pose()
example_serialization()
print("=" * 50)
print("All examples completed successfully!")
if __name__ == "__main__":
main()