키보드를 이용해서 Service Request를 날리고 이벤트를 Subscription하는 예제(Python)
05 Aug 2018
|
ROS
키보드를 이용해서 Service Request를 날리고 이벤트를 Subscription하는 예제
import threading
import rclpy, os
import datetime
from tts_service.srv._tts_request import TtsRequest
from tts_service.msg import TtsEvent
NODE_NAME = "tts_service_controller"
client = None;
def callback_on_tts_event_arrived(msg):
curTime = datetime.datetime.now()
if msg.event == TtsEvent.EVENT_ON_TTS_STARTED:
print("[{0}] EVENT_TTS_STARTED".format(curTime))
elif msg.event == TtsEvent.EVENT_ON_TTS_FINISHED:
print("[{0}] EVENT_TTS_FINISHED".format(curTime))
def handle_keyboard():
global client
while True:
print("\n")
print(" 1. Request to Speech Text ('Hello')")
print(" 99. Exit")
menu = input('Input the menu: ')
if menu == '1':
req = TtsRequest.Request()
req.text = "Hello"
client.call_async(req)
elif menu == '99':
rclpy.shutdown()
os._exit(1)
def main(args=None):
global client
rclpy.init(args=args)
node = rclpy.create_node(NODE_NAME)
client = node.create_client(TtsRequest, TtsRequest.Request.NAME)
subscription = node.create_subscription(TtsEvent, TtsEvent.NAME, callback_on_tts_event_arrived)
th = threading.Thread(target=handle_keyboard)
th.start()
try:
rclpy.spin(node)
finally:
node.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
</pre>