ROSで湯婆婆を実装してみた。
最近Qiitaが湯婆婆で溢れているので、便乗すればもしかしたらLGTMもらえるかも せっかくなのでまだ見ていない物を使って実装しようと思ったので、ROSを使用していきます。
srvファイル
Yubaba.srv
string name
---
string new_name
名前を入力したら、新しい名前を返してくれるサービスです。
Service Proxy
import rospy
from std_msgs.msg import String, Empty
from yubaba.srv import Yubaba
def listen_to_yubaba(msg):
print(msg.data)
yubaba_proxy = rospy.ServiceProxy("/yubaba/name_service", Yubaba)
yubaba_words = rospy.Subscriber("/yubaba/words", String, listen_to_yubaba)
greet_yubaba = rospy.Publisher("greet_yubaba", Empty, queue_size=1)
if __name__ == "__main__":
rospy.init_node("client")
greet_yubaba.publish()
name = input()
new_name = yubaba_proxy(name)
Yubaba Node
import rospy
import random
from yubaba.srv import Yubaba
from std_msgs.msg import String, Empty
class YubabaNode:
def __init__(self):
rospy.init_node("yubaba")
self.yubaba_service = rospy.Service("~name_service", Yubaba, self.name_service)
self.word_publisher = rospy.Publisher("~words", String, queue_size=1)
self.greet_subscriber = rospy.Subscriber("greet_yubaba", Empty, self.start)
def start(self, msg):
self.word_publisher.publish("契約書だよ。そこに名前を書きな。")
def name_service(self, req):
name = req.name
self.word_publisher.publish(f"フン。{name}というのかい。贅沢な名だねぇ。")
rospy.sleep(0.5)
new_name = random.choice(name)
self.word_publisher.publish(f"今からお前の名前は{new_name}だ。いいかい、{new_name}だよ。分かったら返事をするんだ、{new_name}!!")
return new_name
if __name__ == "__main__":
yubaba = YubabaNode()
rospy.spin()
おまけのlistener
import sys
import rospy
from std_msgs.msg import String
def listen_to_yubaba(msg):
print(msg.data)
yubaba_words = rospy.Subscriber("/yubaba/words", String, listen_to_yubaba)
if __name__ == "__main__":
args = sys.argv
rospy.init_node(f"listener{args[1]}")
rospy.spin()
実行例
構成
-
Yubaba Node
- /yubaba/words: 湯婆婆様のありがたいお言葉。
- /yubaba/name_service: 名前を新しく変えてくれるやつです。
/greet_yubaba: まずは湯婆婆に挨拶。
まとめ
もしかして ROS + 湯婆婆 = 老婆婆??
Author And Source
この問題について(ROSで湯婆婆を実装してみた。), 我々は、より多くの情報をここで見つけました https://qiita.com/Amijakan/items/a8214c21d82b5856d048著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .