• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

ros机器人编程实践(4.1)- 发布与使用服务

人工智能 布剪刀石头 3066次浏览 0个评论

前言

  在ros中定义一个服务,计算字符串中单词的数量   实现过程   1、创建服务WordCount.srv   1.1、进入basic包:  

cd ~/catkin_ws/src/basic/

  1.2、创建srv目录:  

mkdir srv

  1.3、在srv目录下创建WordCount.srv文件:  

cd srv
vi WordCount.srv

  1.4、输入如下内容:   ros机器人编程实践(4.1)- 发布与使用服务   2、修改CMakeLists.txt  

cd ..
vi CMakeLists.txt

  2.1、修改CMakeLists.txt的find_package()如下:   ros机器人编程实践(4.1)- 发布与使用服务   2.2、修改add_service_files()去掉注释加入WordCount.srv如下图:   ros机器人编程实践(4.1)- 发布与使用服务   2.3、修改generate_messages()如下图:   ros机器人编程实践(4.1)- 发布与使用服务   3、修改package.xml文件加入message_generation和message_runtime如下图:  

vi package.xml

  ros机器人编程实践(4.1)- 发布与使用服务   4、返回catkin根目录编译:  

cd ~/catkin_ws
catkin_make

  5、编译成功后测试是否有这个服务了:  

rossrv show WordCount

  ros机器人编程实践(4.1)- 发布与使用服务   6、实现服务:   6.1、在basic包的src文件夹下创建service_server.py文件,设置权限:  

cd ~/catkin_ws/src/basic/src
vi service_server.py
chmod 777 service_server.py

  service_server.py  

#!/usr/bin/env python

import rospy

from basic.srv import WordCount,WordCountResponse

def count_words(request):
	return WordCountResponse(len(request.words.split()))

rospy.init_node('service_server')

service = rospy.Service('word_count',WordCount,count_words)

rospy.spin()

  7、打开新终端运行roscore:  

roscore

  8、在原来的终端返回catkin的根目录编译:  

cd ~/catkin_ws
catkin_make
source devel/setup.bash
rosrun basic service_server.py

  ros机器人编程实践(4.1)- 发布与使用服务   这是已经在运行了不过没写现象。   9、用ros的服务包里面的list检查服务是否可见(打开新终端):  

rosservice list

  ros机器人编程实践(4.1)- 发布与使用服务   可以看到word_count已经在服务了。   10、用ros服务包的info来看更多信息:  

rosservice info word_count

  ros机器人编程实践(4.1)- 发布与使用服务   他告诉了我们四项参数:  

  • Node:当前提供服务的节点名字。
  • URL:服务的端口号
  • Type:服务的类型
  • Args:参数

  11、直接命令调用使用服务  

rosservice call word_count 'one two three'

  ros机器人编程实践(4.1)- 发布与使用服务   12、代码方式使用服务   12.1、在basic的src内创建service_client.py文件:  

cd ~/catkin_ws/src/basic/src
vi service_client.py
chmod 777 service_client.py

  service_client.py:  

#!/usr/bin/env python

import rospy

from basic.srv import WordCount

import sys

rospy.init_node('service_client')

rospy.wait_for_service('word_count')

word_counter=rospy.ServiceProxy('word_count',WordCount)

words=' '.join(sys.argv[1:])

word_count=word_counter(words)

print words,'->',word_count.count

  12.2、返回catkin根目录编译运行  

cd ~/catkin_ws
catkin_make
source devel/setup.bash
rosrun basic service_client.py one two three

  ros机器人编程实践(4.1)- 发布与使用服务   ok到此结束啦~enjoy it


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明ros机器人编程实践(4.1)- 发布与使用服务
喜欢 (0)

您必须 登录 才能发表评论!

加载中……