_test_button.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 
3 import rospy
4 from std_srvs.srv import Empty, EmptyResponse
5 from std_srvs.srv import Trigger, TriggerResponse
6 from std_srvs.srv import SetBool, SetBoolResponse
7 from std_msgs.msg import Bool
8 
10  def __init__(self):
11  rospy.init_node('test_service_node')
12 
13  # Initialize toggle states
14  self.empty_state = False
15  self.trigger_state = False
16  self.setbool_state = False
17 
18  # Publishers with latch=True
19  self.empty_pub = rospy.Publisher('/empty_triggered', Bool, latch=True, queue_size=1)
20  self.trigger_pub = rospy.Publisher('/trigger_triggered', Bool, latch=True, queue_size=1)
21  self.setbool_pub = rospy.Publisher('/setbool_triggered', Bool, latch=True, queue_size=1)
22 
23  # Initial publish so topics have a latched message
24  self.empty_pub.publish(self.empty_state)
25  self.trigger_pub.publish(self.trigger_state)
26  self.setbool_pub.publish(self.setbool_state)
27 
28  # Service servers
29  self.empty_srv = rospy.Service('/test_empty', Empty, self.handle_empty)
30  self.trigger_srv = rospy.Service('/test_trigger', Trigger, self.handle_trigger)
31  self.setbool_srv = rospy.Service('/test_setbool', SetBool, self.handle_setbool)
32 
33  rospy.loginfo("Test service node ready.")
34  rospy.spin()
35 
36  def handle_empty(self, req):
37  self.empty_state = not self.empty_state
38  self.empty_pub.publish(self.empty_state)
39  rospy.loginfo("Empty service triggered, state: %s", self.empty_state)
40  return EmptyResponse()
41 
42  def handle_trigger(self, req):
43  self.trigger_state = not self.trigger_state
44  self.trigger_pub.publish(self.trigger_state)
45  rospy.loginfo("Trigger service triggered, state: %s", self.trigger_state)
46  return TriggerResponse(success=True, message="Trigger service called")
47 
48  def handle_setbool(self, req):
49  self.setbool_state = req.data
50  self.setbool_pub.publish(self.setbool_state)
51  rospy.loginfo("SetBool service triggered, state: %s", self.setbool_state)
52  return SetBoolResponse(success=True, message="SetBool service called")
53 
54 if __name__ == '__main__':
55  try:
57  except rospy.ROSInterruptException:
58  pass
59 
_test_button.TestServiceNode.trigger_pub
trigger_pub
Definition: _test_button.py:20
_test_button.TestServiceNode.setbool_state
setbool_state
Definition: _test_button.py:16
_test_button.TestServiceNode.setbool_pub
setbool_pub
Definition: _test_button.py:21
_test_button.TestServiceNode.handle_setbool
def handle_setbool(self, req)
Definition: _test_button.py:48
_test_button.TestServiceNode.trigger_state
trigger_state
Definition: _test_button.py:15
_test_button.TestServiceNode.trigger_srv
trigger_srv
Definition: _test_button.py:30
_test_button.TestServiceNode.__init__
def __init__(self)
Definition: _test_button.py:10
_test_button.TestServiceNode
Definition: _test_button.py:9
_test_button.TestServiceNode.setbool_srv
setbool_srv
Definition: _test_button.py:31
_test_button.TestServiceNode.empty_pub
empty_pub
Definition: _test_button.py:19
_test_button.TestServiceNode.empty_srv
empty_srv
Definition: _test_button.py:29
_test_button.TestServiceNode.empty_state
empty_state
Definition: _test_button.py:14
_test_button.TestServiceNode.handle_empty
def handle_empty(self, req)
Definition: _test_button.py:36
_test_button.TestServiceNode.handle_trigger
def handle_trigger(self, req)
Definition: _test_button.py:42


vizanti
Author(s): MoffKalast
autogenerated on Wed May 21 2025 02:34:06