Testing Publisher and Subscriber nodes

$ cd catkin_ws $ catkin_make $ source devel/setup.bash

$ roscore $ rosrun beginner_tutorials talker.py $ rosrun beginner_tutorials listener.py

Rospy Service & Client

Step1: Define the service message(srv file) Step2: Create a ROS server node Step3: Create a ROS client node Step4: Execute the service Step5: Consume the service by the client

Create srv folder inside beginner_tutorials. Make a service file AddTwoInts.srv inside srv folder.

int64 a

int64 b

---

int64 sum

Make changes in package.xml by adding these 2 lines, These lines will generate request and response It is responsible for reading service file and converting it to source code.

message_generation

message_runtime

Make changes in CMakelist.txt

Inside find_package Add the following line:

message_generation

Add Service file

add_service_files( FILES AddTwoInts.srv )

After making changes in package.xml and CMakelist.txt, Build your package

catkin_make source devel/setup.bash

Make a file add_two_ints_server.py inside scripts folder

#!/usr/bin/env python

from beginner_tutorials.srv import *
import rospy

def handle_add_two_ints(req):
    print "Returning [%s + %s = %s]"%(req.a, req.b, (req.a + req.b))
    return AddTwoIntsResponse(req.a + req.b)

def add_two_ints_server():
    rospy.init_node('add_two_ints_server')
    s = rospy.Service('add_two_ints', AddTwoInts, handle_add_two_ints)
    print "Ready to add two ints."
    rospy.spin()

if __name__ == "__main__":
    add_two_ints_server()

make the script executable by chmod +x add_two_ints_server.py

Last updated

Was this helpful?