8.ROS编程学习:自定义服务数据python调用

目录

一、准备工作——vscode配置

二、服务端实现

1.创建demo01_server_p.py

2.添加可执行权限

3.配置CMakeList.txt(melodic不用配置也行,noetic需要配置)

4.测试服务端

三、客户端实现

1.创建demo01_client_p.py

2.添加可执行权限+CMakeList.txt配置

3.测试客户端

4.客户端优化

参考:赵虚左课程+古月的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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值