turtlebot3-burger_150.png
turtlebot3-waffle-pi_150.png
turtlebot3-arm_150.png
walking-y2_150.png
turbot3-multi_150.png
turbot3-dl-ros1_150.png
turbot3-ai.png
turbot3-dl-ros2_150.png
turbot3-slam_150.png
turbot3-arm_150.png
turtlebot4-lite_150.png
turtlebot4-pro_150.png
turbot4-dl_150.png
turbot4-ai_150.png
aidriving-racebot_150.png
aidriving-autodrive_150.png
turtlebot-arm_150.png
openmanipulator-x_150.png
Home » Turbot与Python教程 » Turbot与python编程-实现获取kobuki按键信息

Turbot与python编程-实现获取kobuki按键信息

纠错,疑问,交流: 请进入讨论区请点击进入页面,扫码加入微信群或Q群进行交流

获取最新文章: 扫一扫加入“创客智造”公众号

Turbot与python教程-实现获取kobuki按键信息

说明:

  • 介绍如何实现通过python控制turbot实现获取kobuki按键信息

代码:

  • 参考代码:github
  • 实现代码:
#!/usr/bin/env python 
# Monitor the kobuki's button status

import roslib
import rospy
from kobuki_msgs.msg import ButtonEvent

class kobuki_button():

	def __init__(self):
		rospy.init_node("kobuki_button")		

		#monitor kobuki's button events
		rospy.Subscriber("/mobile_base/events/button",ButtonEvent,self.ButtonEventCallback)

		#rospy.spin() tells the program to not exit until you press ctrl + c.  If this wasn't there... it'd subscribe and then immediatly exit (therefore stop "listening" to the thread).
		rospy.spin();


	
	def ButtonEventCallback(self,data):
	    if ( data.state == ButtonEvent.RELEASED ) :
		state = "released"
	    else:
		state = "pressed"  
	    if ( data.button == ButtonEvent.Button0 ) :
		button = "B0"
	    elif ( data.button == ButtonEvent.Button1 ) :
		button = "B1"
	    else:
		button = "B2"
	    rospy.loginfo("Button %s was %s."%(button, state))
	

if __name__ == '__main__':
	try:
		kobuki_button()
	except rospy.ROSInterruptException:
		rospy.loginfo("exception")

演示:

  • 主机,新终端,启动底盘
$ roslaunch turbot_bringup minimal.launch
  • 从机,新终端,启动脚本
$ rosrun turbot_code kobukiButtons.py

纠错,疑问,交流: 请进入讨论区请点击进入页面,扫码加入微信群或Q群进行交流

获取最新文章: 扫一扫加入“创客智造”公众号


标签: turbot与 python编程