ROS(로봇 운영체제)에서 sendTransform 함수는 로봇의 위치 및 자세 변환(Transform)을 표현하고, 이를 ROS 네트워크 상에서 다른 노드와 공유하기 위해 사용되는 함수입니다. 이 함수는 tf 라이브러리를 통해 제공되며, 로봇의 각 부분의 상대적인 위치와 자세를 다루는 데 도움이 됩니다.
sendTransform 함수를 사용하여 변환 정보를 보내기 위해서는 다음과 같은 단계를 따를 수 있습니다:
import rospy
import tf
rospy.init_node('your_node_name')
broadcaster = tf.TransformBroadcaster()
while not rospy.is_shutdown():
# Set the translation (position) and rotation (quaternion) values
translation = (x, y, z)
rotation = (qx, qy, qz, qw)
# Specify the time and frame IDs
current_time = rospy.Time.now()
parent_frame = "parent_frame"
child_frame = "child_frame"
# Send the transformation
broadcaster.sendTransform(
translation,
rotation,
current_time,
child_frame,
parent_frame
)
# Add a delay if needed
rospy.sleep(0.1) # Delay for 0.1 seconds
위 코드에서 x, y, z는 로봇의 위치 좌표이고, qx, qy, qz, qw는 로봇의 자세를 나타내는 쿼터니언(Quaternion) 회전 값을 나타냅니다. parent_frame은 부모 프레임의 이름이며, child_frame은 자식 프레임의 이름입니다. 이러한 변환 정보가 지속적으로 업데이트되어 sendTransform 함수를 통해 브로드캐스팅됩니다.
이렇게 하면 다른 ROS 노드에서 tf 라이브러리를 사용하여 변환 정보를 수신하고, 다른 프레임 간의 관계를 효과적으로 추적할 수 있습니다.