Marker ve InteractiveMarker display'leri, özel görselleştirmeler ve kullanıcı etkileşimi için kullanılır.
Marker Display:
Add → Marker
Topic: /visualization_marker
Add → MarkerArray
Topic: /visualization_marker_array
Marker Türleri (visualization_msgs/Marker):
• ARROW: Ok işareti
• CUBE: Küp
• SPHERE: Küre
• CYLINDER: Silindir
• LINE_STRIP / LINE_LIST: Çizgiler
• POINTS: Nokta seti
• TEXT_VIEW_FACING: Metin
• MESH_RESOURCE: 3D mesh (.stl, .dae)
• TRIANGLE_LIST: Özel geometri
Marker Örneği (Python):
import rospy
from visualization_msgs.msg import Marker
rospy.init_node('marker_publisher')
pub = rospy.Publisher('/visualization_marker', Marker, queue_size=10)
rate = rospy.Rate(1)
while not rospy.is_shutdown():
marker = Marker()
marker.header.frame_id = "map"
marker.header.stamp = rospy.Time.now()
marker.ns = "basic_shapes"
marker.id = 0
marker.type = Marker.SPHERE
marker.action = Marker.ADD
marker.pose.position.x = 1.0
marker.pose.position.y = 2.0
marker.pose.position.z = 0.5
marker.pose.orientation.w = 1.0
marker.scale.x = 0.5
marker.scale.y = 0.5
marker.scale.z = 0.5
marker.color.r = 0.0
marker.color.g = 1.0
marker.color.b = 0.0
marker.color.a = 1.0
marker.lifetime = rospy.Duration()
pub.publish(marker)
rate.sleep()
Interactive Marker:
InteractiveMarker, kullanıcıların 3D objeler ile etkileşime girmesini sağlar:
• 6-DOF (Degrees of Freedom) kontrol
• Move, Rotate, Scale işlemleri
• Context menu desteği
• Feedback sistemi (kullanıcı eylemi → kod tepkisi)
Kullanım: Robot hedef pozisyonu belirleme, obje manipülasyon planlama, vb.
Interactive Marker Örneği: Basit bir etkileşimli marker oluşturmak için aşağıdaki Python kodunu kullanabilirsiniz:
#!/usr/bin/env python3
import rospy
from interactive_markers.interactive_marker_server import *
from visualization_msgs.msg import InteractiveMarker, InteractiveMarkerControl