提示:基于Ubuntu20.04
前言
学习如何制作ROS的服务端和调试。
提示:以下是本篇文章正文内容。
一、创建ROS Server
cd到自己的工作目录下的src文件夹,新建pkg。比如我的工作目录在home/Username/ROSWorkspace/first_ws
那么就执行
cd home/Username/ROSWorkspace/first_ws/src
catkin_create_pkg hello_server rospy rosmsg roscpp
cd ..
source devel/setup.zsh(或者是.bash)
二、编写SERVER
1.用终端的方式打开IDE
cd /snap/clion/139/bin
./clion.sh
2.编写
在hello_server目录下新建scripts,然后建立server_node.py
#!/usr/bin/env python3.8
'''
目标:
客户端 给数字10和20
服务端 把10和20加在一起
'''
import rospy
# 用官方的教程范例来作用
from rospy_tutorials.srv import AddTwoInts, AddTwoIntsRequest, AddTwoIntsResponse
# 这三个分别是服务类型,服务请求和服务响应
# 回调函数
def callback(request):
if not isinstance(request, AddTwoIntsRequest): return
a = request.a
b = request.b
# 业务逻辑处理
c = a + b
response = AddTwoIntsResponse()
response.sum = c
return response
# 主函数
if __name__ == '__main__':
rospy.init_node("server_node")
# 写对应的service通讯对应的服务端
# 服务端service
# 服务名称(地址)
server_name = "hello"
# Service class 服务的数据类型
# 回掉问题 客户端什么时候访问 handler
server = rospy.Service(server_name, AddTwoInts, callback)
rospy.spin()
三、调试
1.GUI调试
rosrun rqt_gui rqt_gui
在plugins的service里找到service caller
选中hello 把a改成8,b改成4。点击Call
2.命令行调试
➜ scripts rosservice call /hello "a: 8
b: 4"
sum: 12