目录
3.配置CMakeList.txt(melodic不用配置也行,noetic需要配置)
参考:赵虚左课程+古月的ROS机器人开发实践
一、准备工作——vscode配置
选择在集成终端中打开,输入:
pwd
输出一个路径。
rosmelodic@rosmelodic-virtual-machine:~/catkin_ws/devel/lib/python2.7/dist-packages$ pwd
/home/rosmelodic/catkin_ws/devel/lib/python2.7/dist-packages
将输出的路径加入.vscode文件夹中的setting.json文件
{
"python.autoComplete.extraPaths": [
"/opt/ros/melodic/lib/python2.7/dist-packages",
"/home/rosmelodic/catkin_ws/devel/lib/python2.7/dist-packages"
],
"python.analysis.extraPaths": [
"/opt/ros/melodic/lib/python2.7/dist-packages"
]
}
这是为了vscode开发时能够找到自定义服务数据类型的库。
二、服务端实现
1.创建demo01_server_p.py
demo01_server_p.py
#! /usr/bin/env python
# -*- coding: UTF-8 -*-
import rospy
from server_client.srv import AddInts,AddIntsRequest,AddIntsResponse
def huidiao(request):
# request = AddIntsRequest()
num11 = request.num1
num22 = request.num2
sum12 = num11 + num22
response = AddIntsResponse()
response.sum = sum12
rospy.loginfo("服务器解析数据:num11 = %d, num22 = %d, 响应结果为:sun12 = %d", num11, num22, sum12)
return response
if __name__ == "__main__":
rospy.init_node("jiafa_server_p")
server = rospy.Service(name="add_ints", service_class=AddInts, handler=huidiao)
rospy.loginfo("服务器已经启动了")
rospy.spin()
相较于c++实现精简了很多。
python版本声明,和utf-8编码,不声明编码格式默认ascii码,防止程序中有中文出现报错。
#! /usr/bin/env python
# -*- coding: UTF-8 -*-
调用rospy库,和之前自定义的服务数据类型库,自定义的服务数据类型库中包含了这三个类。
import rospy
from server_client.srv import AddInts,AddIntsRequest,AddIntsResponse
/home/rosmelodic/catkin_ws/devel/li