この記事では、ROS (Robot Operating System) の中でパブリッシャーとサブスクライバーをPythonで作成する方法について説明します。このチュートリアルは初心者向けで、基本的なPythonの知識があれば理解できます。

パブリッシャーの作成

まずは、メッセージを発信するパブリッシャーのノードを作成します。以下にそのPythonコードを示します。

#!/usr/bin/env python
import rospy
from std_msgs.msg import String

def talker():
    pub = rospy.Publisher('chatter', String, queue_size=10)
    rospy.init_node('talker', anonymous=True)
    r = rospy.Rate(10)  # 10hz
    while not rospy.is_shutdown():
        str = "hello world %s" % rospy.get_time()
        rospy.loginfo(str)
        pub.publish(str)
        r.sleep()

if __name__ == '__main__':
    try:
        talker()
    except rospy.ROSInterruptException:
        pass

このコードは、chatterというトピックにString型のメッセージを送信するパブリッシャーを作成します。rospy.init_node('talker', anonymous=True)はノード名をROSに通知するためのもので、この場合のノード名はtalkerです。

サブスクライバーの作成

次に、パブリッシャーからのメッセージを受け取るサブスクライバーのノードを作成します。以下にそのPythonコードを示します。

#!/usr/bin/env python
import rospy
from std_msgs.msg import String

def callback(data):
    rospy.loginfo(rospy.get_caller_id() + "I heard %s", data.data)

def listener():
    rospy.init_node('listener', anonymous=True)
    rospy.Subscriber("chatter", String, callback)
    rospy.spin()

if __name__ == '__main__':
    listener()

このコードは、chatterというトピックからString型のメッセージを受け取るサブスクライバーを作成します。callback関数は、新しいメッセージが到着するたびに呼び出されます。

以上が、ROSとPythonを用いてパブリッシャーとサブスクライバーを作成する基本的な方法です。これらのコードを実行することで、ROSのネットワークを通じてメッセージの送受信が可能となります。

参考資料

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です