Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 import roslib
00035 roslib.load_manifest('starmac_templates')
00036 import rospy
00037 from starmac_roslib.timers import Timer
00038
00039
00040 from std_msgs.msg import Bool, Float64
00041
00042 class PythonNodeExample(object):
00043 """
00044 Example python node including reading parameters, publishers and subscribers, and timer.
00045 """
00046 def __init__(self):
00047
00048
00049 pass
00050
00051 def start(self):
00052 rospy.init_node('python_node_example')
00053 self.init_params()
00054 self.init_vars()
00055 self.init_publishers()
00056 self.init_subscribers()
00057 self.init_timers()
00058 rospy.spin()
00059
00060 def init_params(self):
00061 self.param_one = rospy.get_param("~param_one", 100.0)
00062 self.param_two = rospy.get_param("~param_two", False)
00063
00064 def init_vars(self):
00065 self.some_variable = 42.0
00066 self.latest_input = None
00067
00068 def init_publishers(self):
00069 self.bool_topic_pub = rospy.Publisher('bool_topic', Bool)
00070
00071 def init_subscribers(self):
00072 self.some_input_sub = rospy.Subscriber('input_topic', Float64, self.some_input_callback)
00073
00074 def init_timers(self):
00075 self.heartbeat_timer = Timer(rospy.Duration(1/10.0), self.heartbeat_timer_callback)
00076
00077 def some_input_callback(self, msg):
00078 rospy.logdebug('Got input: ' + str(msg))
00079 self.latest_input = msg
00080 if self.latest_input.data > self.param_one:
00081 self.bool_topic_pub.publish(Bool(True))
00082 else:
00083 self.bool_topic_pub.publish(Bool(False))
00084
00085 def heartbeat_timer_callback(self, event):
00086 if event.last_real is not None:
00087 dt = (event.current_real - event.last_real).to_sec()
00088 rospy.loginfo('Heartbeat. dt = %f' % dt)
00089
00090
00091 if __name__ == "__main__":
00092 self = PythonNodeExample()
00093 self.start()