NEW 1
$ cd ~/catkin_ws
$ source ./devel/setup.bash
$ roscd test
NEW FILE ~/catkin_ws/src/test/scripts/add_two_ints_server.py
$ chmod +x scripts/add_two_ints_server.py
$ roscd test
NEW FILE ~/catkin_ws/src/test/scripts/add_two_ints_client.py
$ chmod +x scripts/add_two_ints_client.py
$ cd ~/catkin_ws
$ catkin_make
$ roscore
NEW 2
$ cd ~/catkin_ws
$ source ./devel/setup.bash
$ roscd test
$ rosrun test add_two_ints_server.py
NEW 3
$ cd ~/catkin_ws
$ source ./devel/setup.bash
$ roscd test
$ rosrun test add_two_ints_client.py
注意事项1: 编辑器采用spyder,不要采用gedit,有可能出现BUG
说明1:
from test.srv import *
return AddTwoIntsResponse(req.a * req.b)
第一句中的test.srv所指向的不是一个ros包,而是一个python包这个包的位置是在~/catkin_ws/devel/lib/python2.7/dist-packages/test/srv文件夹
在编写了.srv文件,并catkin_make 以后,就会在该~/catkin_ws/devel/lib/python2.7/dist-packages/test/文件夹下生成一个的库
第二句中的AddTwoIntsResponse就是这些文件中定义的一个class
add_two_ints_server.py,就是一个节点,这个节点作为一个可执行文件,可以调用在之前编译好那些的库
那么,作为python源代码的add_two_ints_client.py也许根本不需要catkin_make,经过实验,成功.