智能机器人技术 课件 项目5智能机器人收电报_第1页
智能机器人技术 课件 项目5智能机器人收电报_第2页
智能机器人技术 课件 项目5智能机器人收电报_第3页
智能机器人技术 课件 项目5智能机器人收电报_第4页
智能机器人技术 课件 项目5智能机器人收电报_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

授课老师:连国云项目5:智能机器人收电报《智能机器人技术》课程任务要求知识导入任务实施任务评价编写subscriber代码文件,接收“/hello_msg”topic,并通过回调函数将接收的msgs在终端在显示出来任务要求知识导入任务实施任务评价自定义msg在ROS的元功能包common_msgs中提供了许多不同消息类型的功能包,如std_msgs(标准数据类型)、geometry_msgs(几何数据类型)、sensor_msgs(传感器数据类型)等。任务要求知识导入任务实施任务评价但是在很多情况下,用户依然需要针对具体的技术需要设计特定的消息类型,ROS也提供了一套语言无关的消息类型定义方法。msg文件是ROS中定义消息类型的文件,一般放置在功能包根目录下的msg文件夹中。在功能包编译过程中,可以使用msg文件生成不同编程语言使用的代码文件。例如下面的msg文件(score.msg),定义了一个学生成绩的消息类型,包括学生姓名,数学成绩,语文成绩:stringstudentuint8mathuint8literature自定义msg任务要求知识导入任务实施任务评价在msg文件中还可以定义常量,例如上面的个人信息中,性别分为男、女和未知,则可以定义“male”为1,“female”为1,“unknown”为2。stringstudentuint8genderuint8mathuint8literature

uint8female=0uint8male=1uint8unknown=2自定义msg任务要求知识导入任务实施任务评价很多ROS消息的定义中还会包含一个标准格式的头消息std_msgs/Header:#Standardmetadataforhigher-levelflowdatatypesuint32seqtimestampstringframe_id其中:seq是消息的顺序标识,不需要手动设置,publisher在发布消息时会自动累加stamp是消息中与时间关联的时间戳,可以用于时间同步fram_id是消息中与数据相关联的参考坐标系id自定义msg任务要求知识导入任务实施任务评价要使用自定义的消息类型,还需要编译msg文件。msg文件的编译主要有3个步骤:(1)在pacakge.xml文件中追加功能包的依赖打开pacakge.xml文件,在该文件的尾部追加以下代码<build_depend>message_generation</build_depend><exec_depend>message_runtime</exec_depend>自定义msg任务要求知识导入任务实施任务评价(2)在CMakeLists.txt中添加相应的编译选项(a)在find_package中添加消息生成依赖的功能包message_generation,这样在编译时才能找到所需的文件find_package(……message_generation)(b)在catkin_package中添加消息生成依赖的功能包message_generationcatkin_package(……message_runtime)(c)在add_message_files和generate_messages中设置需要编译的msg文件add_message_files(FILESscore.msg)generate_messages(DEPENDENCIESstd_msgs)自定义msg任务要求知识导入任务实施任务评价(3)使用catkin_make进行编译完成相关的编译设置后,就可以进行编译了,编译过程与前面节点的编译过程是一致的,也是采用catkin_make进行编译。编译成功后,可以使用相关命令查看自定义的score消息类型,$rosmsgshowscore如果编译的消息类型没有问题,就会把定义的消息显示出来。自定义msg任务要求知识导入任务实施任务评价自定义msg任务要求知识导入任务实施任务评价代码实现话题订阅subscriber的主要作用是订阅指定的话题,并根据接收到的消息进行回调处理。要创建subscriber节点,首先需要创建功能包的工作空间。创建myturtle_topic的package工作空间,之后在该package所属的/script文件夹下创建pose_subscriber.py文件,并在该文件内编制相应代码。任务要求知识导入任务实施任务评价#!/usr/bin/envpython#-*-coding:utf-8-*-#该例程将订阅/turtle1/pose话题,消息类型turtlesim::Pose

import

rospyfrom

turtlesim.msg

importPose

def

poseCallback(msg):rospy.loginfo("Turtlepose:x:%0.6f,y:%0.6f",msg.x,msg.y)任务要求知识导入任务实施任务评价def

pose_subscriber():#ROS节点初始化rospy.init_node('pose_subscriber',anonymous=True)#创建一个Subscriber,订阅名为/turtle1/pose的topic,注册回调函数poseCallbackrospy.Subscriber("/turtle1/pose",Pose,poseCallback)#循环等待回调函数rospy.spin()if__name__==

'__main__':pose_subscriber()任务要求知识导入任务实施任务评价(1)import

rospyfrom

geometry_msgs.msg

importpose这两句分别是导入rospy模块中定义的类、方法或变量和引入geometry_msgs.msg中的pose变量(2)rospy.init_node('pose_subscriber',anonymous=True)初始化名字为pose_subscriber的ROS节点(3)rospy.Subscriber("/turtle1/pose",Pose,poseCallback)订阅一个名字为/turtle/pose的topic,消息类型为Pose,指定处理该消息的callback函数为poseCallback,队列长度为10。代码实现话题订阅任务要求知识导入任务实施任务评价(4)rospy.spin()反复的查看队列,只要检测到队列有消息存在就进入callback函数进行处理。(5)rospy.loginfo("Turtlepose:x:%0.6f,y:%0.6f",msg.x,msg.y)定义callback函数,将接收到的x坐标和y坐标显示出来。(6)if__name__==

'__main__':pose_subscriber()执行pose_subscriber函数,接收订阅的消息。代码实现话题订阅任务要求知识导入任务实施任务评价编译完成之后,启动小海龟的仿真程序,用键盘控制小海龟的运动,然后运行如下命令$rosmyturtle_topicpose_subscriber就可以看到小海龟运动的实时坐标了。代码实现话题订阅任务要求知识导入任务实施任务评价根据任务要求,具体的工作任务实施步骤如下:(1)根据subscriber构造的步骤,编写相应的代码:上一个任务已经指定catkin_ws为工作空间,并建立hello_world_01的package,在本任务中仍然在该package下编写相关节点代码任务要求知识导入任务实施任务评价(2)对编写的listener.py进行编译(a)在编写的python代码文件所在的文件夹下修改python代码文件的权限,使其变成可执行文件sudochmod+xlistener.py(b)进行package编译操作cd~/catkin_ws#进入工作空间所在的文件夹catkin_make#对工作空间内所有的package都进行编译source~/catkin_ws/devel/setup.bash#更新package对应的环境变量通过这些操作,就可以完成所编写package的编译了任务要求知识导入任务实施任务评价(3)运行talker和listener节点,查看消息(a)启动新的终端,输入启动ROS命令roscore(b)启动新的终端,启动上一任务中已经编写的talker节点命令rosrunhello_world_01talker.py(c)启动新的终端,启动listener节点命令rosrunhello_world_01listener.py任务要求知识导入任务实施任务

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论