版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
授课老师:连国云项目6:智能机器人计算好帮手《智能机器人技术》课程任务要求知识导入任务实施任务评价编写server代码文件,发布“/avg_server”service,通过该server求三个数的平均值任务要求知识导入任务实施任务评价自定义srv与
msg文件相类似,ROS系统的
service数据可以通过srv文件进行与语言无关的接口定义,srv文件一般放置在功能包的根目录下的srv文件夹中。该文件包含request与response两个数据域,数据域中的内容与topic的msg数据类型相似,只是在
request与
response数据域之间需要使用“---”分割开来。任务要求知识导入任务实施任务评价要使用自定义的srv类型,还需要编译srv文件。srv文件的编译主要有3个步骤:(1)在pacakge.xml文件中追加功能包的依赖。打开pacakge.xml文件,在该文件的尾部追加以下代码:<build_depend>message_generation</build_depend><exec_depend>message_runtime</exec_depend>自定义srv任务要求知识导入任务实施任务评价(2)在CMakeLists.txt中添加相应的编译选项。(a)在find_package中添加消息生成依赖的功能包message_generation,这样在编译时才能找到所需的文件,find_package(……message_generation)(b)在catkin_package中添加消息生成依赖的功能包message_generation,catkin_package(……message_runtime)(c)在add_message_files和generate_messages中设置需要编译的srv文件,add_service_files(FILESperson_level.srv)generate_messages(DEPENDENCIESstd_msgs)任务要求知识导入任务实施任务评价(3)使用catkin_make进行编译。完成相关的编译设置后,就可以进行编译了,采用catkin_make进行编译。编译成功后,可以使用相关命令查看自定义的person_level,rossrvshowperson_level如果编译的消息类型没有问题,就会把定义的srv显示出来。任务要求知识导入任务实施任务评价代码创建服务器以下的代码在
myturtle_server功能包中实现了一个
turtle_command_server节点。通过该节点的代码构建了一个名字叫做
/turtle_command_server的
service的服务器,通过此服务器控制turtle的运动与停止。任务要求知识导入任务实施任务评价#!/usr/bin/envpython#-*-coding:utf-8-*-#该例程将执行/turtle_command服务,服务数据类型std_srvs/Trigger
import
rospyimport
thread,timefrom
geometry_msgs.msg
importTwistfrom
std_srvs.srv
importTrigger,TriggerResponse
pubCommand=
False;turtle_vel_pub=rospy.Publisher('/turtle1/cmd_vel',Twist,queue_size=10)任务要求知识导入任务实施任务评价def
command_thread():while
True:ifpubCommand:vel_msg=Twist()vel_msg.linear.x=
0.5vel_msg.angular.z=
0.2turtle_vel_pub.publish(vel_msg)
time.sleep(0.1)任务要求知识导入任务实施任务评价def
commandCallback(req):globalpubCommandpubCommand=
bool(1-pubCommand)
#显示请求数据rospy.loginfo("Publishturtlevelocitycommand![%d]",pubCommand)
#反馈数据returnTriggerResponse(1,"Changeturtlecommandstate!")任务要求知识导入任务实施任务评价def
turtle_command_server():#ROS节点初始化
rospy.init_node('turtle_command_server')#创建一个名为/turtle_command的server,注册回调函数commandCallbacks=
rospy.Service('/turtle_command',Trigger,commandCallback)#循环等待回调函数
"Readytoreceiveturtlecommand."
thread.start_new_thread(command_thread,())
rospy.spin()if__name__==
"__main__":
turtle_command_server()任务要求知识导入任务实施任务评价(1)pubCommand=
False;初始化pubCommand参数为0(2)turtle_vel_pub=rospy.Publisher('/turtle1/cmd_vel',Twist,queue_size=10)发布名字为/turtle1/cmd_vel的topic任务要求知识导入任务实施任务评价(3)def
command_thread():while
True:ifpubCommand:vel_msg=Twist()vel_msg.linear.x=
0.5vel_msg.angular.z=
0.2turtle_vel_pub.publish(vel_msg)
time.sleep(0.1)定义command_thread函数,通过该函数封装vel_msg的消息,并以0.1秒的间隔发送vel_msg消息。任务要求知识导入任务实施任务评价(4)defcommandCallback(req):globalpubCommandpubCommand=
bool(1-pubCommand)#显示请求数据rospy.loginfo("Publishturtlevelocitycommand![%d]",pubCommand)#反馈数据returnTriggerResponse(1,"Changeturtlecommandstate!")定义commandCallback回调函数,在该函数中将pubCommand变量取反,并显示成功信息。任务要求知识导入任务实施任务评价(5)defturtle_command_server():rospy.init_node('turtle_command_server')s=rospy.Service('/turtle_command',Trigger,commandCallback)
print"Readytoreceiveturtlecommand."thread.start_new_thread(command_thread,())rospy.spin()任务要求知识导入任务实施任务评价代码创建服务器定义turtle_command_server函数,在该函数中将初始化turtle_command_server节点,创建/turtle_command服务的实例,等待client的请求队列,当队列中有client请求将调用commandCallback回调函数,并发布command_thread函数中定义topic的消息。任务要求知识导入任务实施任务评价代码创建服务器总结起来,通过代码实现service的服务器主要有4个步骤:(1)初始化ROS节点;(2)创建server实例,并指定所要回调函数;(3)循环等待client发出的request,当有request时进入回调函数;(4)执行回调函数,完成定义好的处理功能,并反馈response信息。完成了代码编写之后就可以进行功能包的编译了。任务要求知识导入任务实施任务评价代码创建服务器启动小海龟的仿真程序,用键盘控制小海龟的运动,然后运行如下命令$turtle_command_server当发送client发送第奇数次request时小海龟就会运动,当client发送第偶数次request是小海龟就会停止。任务要求知识导入任务实施任务评价代码创建服务器任务要求知识导入任务实施任务评价根据任务要求,具体的工作任务实施步骤如下:(1)创建功能包。在前面的任务重已经指定catkin_ws为工作空间,在此仍然在此工作空间中创建package$cd~/catkin_ws/src$catkin_create_pkgcalc_average_02std_msgsrospymessage_runtimemessage_generation任务要求知识导入任务实施任务评价(2)自定义srv(a)创建scripts文件夹、srv文件夹$cdcalc_average_02$mkdirscripts$mkdirsrv(b)创建服务文件calcAvg.srv$cdsrv$geditcalcAvg.srvcalcAvg.srv文件的内容如下:float64num1float64num2float64num3---float64avg任务要求知识导入任务实施任务评价(c)在CMakeLists.txt中添加以下内容(可去除相对应的注释)##Generateservicesinthe'srv'folderadd_service_files( FILES caclAvg.srv)(d)打开package.xml,检查是否有以下内容,没有则手动添加<build_depend>message_generation</build_depend><exec_depend>message_runtime</exec_depend>任务要求知识导入任务实施任务评价(e)对自定义的srv进行编译,设置环境变量$cd~/catkin_ws$catkin_make$source./devel/setup.bash(f)查看自定义的calcAvg.srv,检查是否编译成功$rossrvshowcalc_average_02/calcAvg任务要求知识导入任务实施任务评价(3)在CMakeLists.txt中添加以下内容。(可去除相对应的注释)generate_messages( DEPENDENCIES std_msgs)(4)根据server构造的步骤,编写相应的代码$cd~/catkin_ws/src/calc_avg_02/scripts$geditserver.py任务要求知识导入任务实施任务评价(5)对编写的server.py进行编译(a)在编写的python代码文件所在的文件夹下修改python代码文件的权限,使其变成可执行文件:$sudochmod+xserver.py(b)进行package编译操作$cd~/catkin_ws#进入工作空间所在的文件夹$catkin_make#对工作空间内所有的package都进行编译$source~/catkin_ws/devel/setup.bash#更新package对应的环境变量通过这些操作,就可以完成所编写package的编译了任务要求知识导入任务实施任务评价(6)运行server节点,查看消息(a)启动新的终端,输入启动ROS命令$roscore(b)启动新的终端,输入启动talker节点命令$rosru
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB32167-2015《油气输送管道完整性管理规范》专项考试试题及答案
- 2026年《幼儿教师口语》期末测试卷含完整答案
- 温差电器件制造工岗前生产安全效果考核试卷含答案
- 拖拉机铸造加工生产线操作调整工岗前基础评估考核试卷含答案
- 陶瓷雕塑工风险识别考核试卷含答案
- 货装值班员诚信水平考核试卷含答案
- 酸再生工岗前安全意识考核试卷含答案
- 淡水水生植物繁育工技术知识评优考核试卷含答案
- 石膏粉生产工变革管理能力考核试卷含答案
- 棉花收获机操作工岗中应急准备考核试卷含答案
- IPC-JEDEC J-STD-075B-2025 电子元件的工艺敏感性分类
- ESC 2026新版心力衰竭管理指南精读
- 2026年通信工程师初级通信专业综合能力考试真题及答案王牌题库
- 2026中国药食同源产品传统文化价值挖掘与现代消费趋势报告
- 2026山东大学校医院(卫生与健康服务中心)非事业编制人员招聘3人笔试题库带答案详解AB卷
- 2026年知识产权服务行业分析报告及创新报告
- 2026年广东省中考语文试卷(含详细答案解析)
- 2026年幼儿园中班第一学期秋季家长会
- 维持性血液透析合并肾性贫血管理共识2026
- 网络消费者权益保护法律制度实施效果研究-基于网络消费纠纷案件裁判数据分析
- 12《祝福》课件 统编版高一语文必修下册
评论
0/150
提交评论