how to run both talker and listener codes at the same moment by one Enter or click.

asked 2019-11-26 20:19:14 -0600

Redhwan gravatar image

I am using the codes of talker and listener on two computers and running them separately. they are working fine but I'd like to run both by one enter instead of two. I used these codes here

I don't know if I need to add IP address. if yes, please help.

computer 1:

#!/usr/bin/env python
# license removed for brevity
import rospy
from std_msgs.msg import String

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

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

computer 2:

#!/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():

    # In ROS, nodes are uniquely named. If two nodes with the same
    # name are launched, the previous one is kicked off. The
    # anonymous=True flag means that rospy will choose a unique
    # name for our 'listener' node so that multiple listeners can
    # run simultaneously.
    rospy.init_node('listener', anonymous=True)

    rospy.Subscriber("chatter", String, callback)

    # spin() simply keeps python from exiting until this node is stopped
    rospy.spin()

if __name__ == '__main__':
    listener()
edit retag flag offensive close merge delete

Comments

You probably want to use launch file.

ahendrix gravatar imageahendrix ( 2019-11-26 22:00:53 -0600 )edit

@ahendrix how? could you give me some hints, please?

Redhwan gravatar imageRedhwan ( 2019-11-26 22:16:46 -0600 )edit

Sorry; I haven't been able to find a simple tutorial for roslaunch and I don't really have time to write one.

ahendrix gravatar imageahendrix ( 2019-11-26 23:11:40 -0600 )edit

@ahendrix thanks for your help and reply.

Redhwan gravatar imageRedhwan ( 2019-11-27 01:29:40 -0600 )edit

I am guessing you already have your network configured for communication between your pcs. One way to solve your problem is to use machine tag.

Choco93 gravatar imageChoco93 ( 2019-11-27 07:33:29 -0600 )edit

Do you want to start two processes on two different computers with one command? Did you take a look at: https://answers.ros.org/question/2014... ?

Wilco Bonestroo gravatar imageWilco Bonestroo ( 2019-11-27 15:31:03 -0600 )edit