ROS에서 유파를 실장해 보았다.
srv 파일
Yubaba.srv
string name
---
string new_name
이름을 입력하면 새 이름을 반환하는 서비스입니다.
서비스 프록시
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)
유바바 때문에
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()
실행 예
구성
유바바 노드
요약
혹시
ROS + 湯婆婆 = 老婆婆??
Reference
이 문제에 관하여(ROS에서 유파를 실장해 보았다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Amijakan/items/a8214c21d82b5856d048텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)