Rviz可视化交互之Menu

#!/usr/bin/env python
#coding=utf-8
"""
关于菜单的简单例子
"""

import rospy

#导入视觉显示消息
from visualization_msgs.msg import *

#导入交互Marker服务
from interactive_markers.interactive_marker_server import *

#导入菜单库函数
from interactive_markers.menu_handler import *

#菜单回调函数
def CreateCb(feedback):
	rospy.loginfo("CreateCb")

def SaveCb(feedback):
	rospy.loginfo("SaveCb")
	
def SavetoCb(feedback):
	rospy.loginfo("SavetoCb")
	
def LoadCb(feedback):
	rospy.loginfo("LoadCb")

def processFeedback(feedback):
	p = feedback.pose.position
	print feedback.marker_name + " is now at " + str(p.x) + ", " + str(p.y) + ", " + str(p.z)


if __name__=="__main__":
	
	rospy.init_node("menu_handler", anonymous=True)
	
	#InteractiveMarker服务器
	server = InteractiveMarkerServer("menu")
	
	#定义Marker对象box
	box = Marker()
	box.type = Marker.CYLINDER
	box.scale.x = 0.2
	box.scale.y = 0.2
	box.scale.z = 0.4
	box.color.r = 0.5
	box.color.g = 0.5
	box.color.b = 0.5
	box.color.a = 1.0
	box.pose.position.z = 0.2
	
	#定义marker control 
	control = InteractiveMarkerControl()
	
	#BUTTON模式
	control.interaction_mode = InteractiveMarkerControl.BUTTON
	control.always_visible = True
	
	#定义interactive marker
	int_marker = InteractiveMarker()
	int_marker.header.frame_id = "base_link"
	int_marker.name = "my_marker"
	int_marker.scale = 1
	
	#marker --> control
	control.markers.append(box)
	
	#control --> int_marker
	int_marker.controls.append(control)
	
	#int_marker --> server
	server.insert(int_marker, processFeedback)
	
	#创建一个菜单
	menu_handler = MenuHandler()
	
	#插入菜单
	menu_handler.insert("Create a waypoint", callback=CreateCb)
	
	entry = menu_handler.insert("Save waypoints", callback=SaveCb)
	
	#二级菜单
	menu_handler.insert("Save waypoints to", parent=entry, callback=SavetoCb)
	
	menu_handler.insert("Load waypoints", callback=LoadCb)
	
	#应用菜单到my_marker
	menu_handler.apply(server, "my_marker")
	
	#应用变化	
	server.applyChanges()
	
	rospy.spin()
	
	
	
	
	
	
	

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值