版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
授课老师:连国云项目3:智能机器人蹒跚学步《智能机器人技术》课程任务要求知识导入任务实施任务评价使用ROS系统中turtlesim功能包,完成如下操作:使用键盘控制turtle的移动查看turtle仿真过程中启动的相关topic、service和计算图利用topic使turtle平移、旋转和转圈利用service清除移动轨迹任务要求知识导入任务实施任务评价ROS中的节点在ROS系统中,最小的进程单元就是节点(node)。由于机器人的功能模块非常复杂,我们往往不会把所有功能都集中到一个节点上,而会采用分布式的方式。ROS系统中不同功能模块之间的通信,就是节点间的通信。任务要求知识导入任务实施任务评价节点管理器机器人的元器件很多,功能庞大,因此实际运行时往往会运行众多的节点,这就需要一个管理工具对节点进行调配与管理ROS提供了节点管理器(master),在整个网络通信架构里相当于管理中心,管理着各个节点。任务要求知识导入任务实施任务评价节点管理器节点启动时,需要首先在节点管理器处进行注册,之后节点之间的通信就由节点管理器进行调配,实现相互之间的通信。运行ROS,首先启动节点管理器,然后依次启动相应的节点。任务要求知识导入任务实施任务评价节点管理器启动节点管理器的命令为:$roscore启动ROSmaster,同时启动rosout和parameter
server,
其中rosout是负责日志输出的一个节点,其作用是告知用户当前系统的状态,包括输出系统的error、warning等等,并且将log记录于日志文件中,parameterserver即是参数服务器,它并不是一个节点,而是一个存储参数配置的服务器。任务要求知识导入任务实施任务评价节点管理器在ROS的文件系统中,程序包(package)中存放着可执行文件,当系统执行这些可执行文件,将这些文件加载到内存中,它就成为了动态的节点。具体启动node的语句是:$rosrunpkg_name
node_name任务要求知识导入任务实施任务评价rosnode命令rosnode命令主要功能rosnodelist列出当前运行的node信息rosnodeinfonode_name显示出node的详细信息rosnodekillnode_name结束某个noderosnodeping测试链接节点rosnodemachine列出在特定机器或列表机器上运行的节点rosnodecleanup清除不可到达节点的注册信息ROS系统中为node专门提供了管理命令rosnode,通过该命令可以查看、操作以及监测已经运行的ros节点,rosnode命令的详细作用列表如下:任务要求知识导入任务实施任务评价ROS的通信机制ROS的通信架构包括数据的处理,进程的运行,消息的传递等。ROS是以节点的形式开发的,节点是根据其目的细分的可执行程序的最小单位。节点则通过特定的数据结构与其他的节点交换数据,最终成为一个大型的程序。节点之间的消息通信可分为三种:
单向消息发送/接收方式的话题(topic);
双向消息请求/响应方式的服务(service);
双向消息目标(goal)/结果(result)/反馈(feedback)方式的动作(action)。任务要求知识导入任务实施任务评价节点管理器节点中使用的参数可以从外部进行修改。在进行ROS编程时,为所实现的控制功能选择合适的通信机制
(话题、服务、动作和参数服务器)是十分关键的开发工作之一。任务要求知识导入任务实施任务评价ROS中的话题ROS节点之间进行通信所使用的机制是消息传递。在ROS中,消息是
有组织地存放在话题里。ROS中消息机制的基本思路是:当一个节点想要分享信息时,它就会发布(publish)消息到对应的一个或者多个话题(topic);当一个节点想要接收信息时,它就会订阅(subscribe)所需要的一个或者多个话题。任务要求知识导入任务实施任务评价ROS中的话题ROS节点管理器负责确保发布节点和订阅节点能找到对方;而且消息(message)是直接地从发布节点传递到订阅节点,中间并不经过节点管理器转交。任务要求知识导入任务实施任务评价ROS中的话题Subscriber(订阅者)接收消息会进行处理,一般这个过程叫做回调(Callback)。回调是提前定义好了一个处理函数,当有消息来就会触发这个处理函数,函数会对消息进行处理。ROS系统中为topic专门提供了管理命令rostopic,通过该命令可以查看、操作以及监测ROS系统中存在的topic的相关信息。任务要求知识导入任务实施任务评价ROS中的话题rostopic命令rosnode命令主要功能rostopiclist列出当前所有的topicrostopicinfotopic_name显示某个topic的属性信息rostopicechotopic_name显示某个topic的内容rostopicpubtopic_name…向某个topic发布内容rostopicbwtopic_name查看某个topic的带宽rostopichztopic_name查看某个topic的频率rostopicfindtopic_type查找某个类型的topicrostopictypetopic_name查看某个topic的类型(msg)任务要求知识导入任务实施任务评价ROS中的消息在ROS中topic有着严格的格式要求,所有的信息需要按照对应所属类别的数据格式要求进行构造、传递和解读,而传递信息对应的数据格式就是消息(message)。消息(message)按照定义解释就是topic内容的数据类型,也称之为topic的格式标准。任务要求知识导入任务实施任务评价ROS中的消息在ROS系统中的元功能包中,提供了许多不同消息类型的功能包,这些系统定义的消息可以满足一些基本的消息发布的需求。基本的msg包括bool、int8、int16、int32、int64(以及uint)、float、float64、string、time、duration、header、可变长数组array[]、固定长度数组array[C]。任务要求知识导入任务实施任务评价ROS中的消息std_msg/Headerheaderuint32seqtimestampstringframe_iduint32heightuint32widthstringencodinguint8is_bigendianuint32stepuint8[]data任务要求知识导入任务实施任务评价ROS中的话题rosmsg命令rosmsg命令主要功能rosmsglist列出系统上所有的msgrosmsgshowmsg_name显示某个msg的内容通过定义图像的宽度,高度等来规范图像的格式。ROS为消息(message)提供了专用的操作命令rosmsg,主要的命令有两个任务要求知识导入任务实施任务评价ROS中的服务topic是ROS中的一种单向的异步通信方式。当一些节点只是临时而非周期性的需要某些数据,如果用topic通信方式就会消耗大量的系统资源,造成系统的低效率高功耗。这种情况下,就需要有另外一种请求-查询式的通信模型--服务(service)。任务要求知识导入任务实施任务评价ROS中的服务service通信是双向的,它不仅可以发送消息,同时还会有反馈。service包括两部分,一部分是请求方(Client),另一部分是应答方/服务
提供方(Server)。这时请求方(Client)就会发送一个request,要等待应答方(server)处理,反馈回一个response,这样通过类似“请求-应答”的机制完成整个服务通信。任务要求知识导入任务实施任务评价ROS中的服务NodeB是应答方
(server),提供了一个服务的接口,叫做/Service,一般都会用string类型来指定service的名称,类似于topic。NodeA向NodeB发起了请求,经过处理后得到了反馈。任务要求知识导入任务实施任务评价ROS中的服务topic与service通信方式对比对比项目TopicService通信方式异步通信同步通信实现原理TCP/IPTCP/IP通信模型Publish-SubscribeRequest-Reply节点映射关系Publish-Subscribe(多对多)Request-Reply(多对一)反馈机制无有传输数据格式*.msg*.srv特点接受者收到数据会回调(Callback)远程过程调用(RPC)服务器端的服务应用场景连续、高频的数据发布任务间歇性逻辑处理任务举例激光雷达、里程计发布数据开关传感器、拍照、逆解计算topic与service是ROS系统最重要的两种通信方式,智能机器人的大部分分布式控制功能都是依靠这两种通信机制进行的,这两种通信机制具有不同的特点。任务要求知识导入任务实施任务评价ROS中的服务rosservice命令rosservice命令主要功能rosservicelist显示服务列表rosserviceinfo打印服务信息rosservicetype打印服务类型rosserviceuri打印服务ROSRPCurirosservicefind按服务类型查找服务rosservicecall使用所提供的args调用服务rosserviceargs打印服务参数ROS系统中为service专门提供了管理命令rosservice,通过该命令可以查看、操作以及监测ROS系统中存在的service的相关信息。任务要求知识导入任务实施任务评价ROS中的服务与topic中msg类似,ROS中的service数据是通过srv来进行定义和实现的。service通信的数据格式定义在*.srv文件中,它声明了一个可以用于service的数据格式,即srv,一个完整的srv包括请求(request)和响应(response)两部分,request与response部分的定义通过“---”分开。任务要求知识导入任务实施任务评价ROS中的服务rossrv命令rossrv命令主要功能rossrvshow显示服务描述rossrvlist列出所有服务rossrvmd5显示服务md5sumrossrvpackage列出包中的服务rossrvpackages列出包含服务的包与msg类似,ROS也为srv提供专用的rossrv命令任务要求知识导入任务实施任务评价ROS中的参数服务器与前两种通信方式不同,参数服务器也可以说是特殊的“通信方式”。特殊点在于参数服务器是节点存储参数的地方、用于配置参数,全局共享参数。参数服务器使用互联网传输,在节点管理器中运行,实现整个通信过程。Key/rosdistro/rosversion/use_sim_time…Value‘kinetic’‘1.12.7’True…任务要求知识导入任务实施任务评价ROS中的参数服务器参数服务器,作为ROS中另外一种数据传输方式,有别于topic和service,它更加的静态。参数服务器维护着一个数据字典,字典里存储着各种参数和配置。
“字典”,其实就是一个个的键值对,ROS中的“字典”可以对比普通意义的字典概念进行理解记忆。键值key可以理解为“索引”,每一个key都是唯一的。Key/rosdistro/rosversion/use_sim_time…Value‘kinetic’‘1.12.7’true…任务要求知识导入任务实施任务评价每一个key不重复,且每一个key对应着一个value。也可以说字典是一种映射关系。ROS中的参数服务器任务要求知识导入任务实施任务评价ROS中的parameterserver机制类似于程序中的全局变量,发送者去更新全局
变量(共享的参数),Listener去获取更新后的全局变量(共享的参数);这个通信过程不涉及
TCP/UDP的通信。任务要求知识导入任务实施任务评价ROS中的参数服务器发送者通过RPC更新ROSMaster中的共享参数(包含参数名和参数值),实现全局变量的更新;接收者通过RPC
向ROSMaster发送参数查询请求(包含要查询的参数名);ROSMaster通过RPC回复接收者的请求(包括参数值)。参数服务器的维护方式非常的简单灵活,总的来讲有三种方式:使用命令进行数据读写launch文件内进行数据读写node代码进行数据读写如果接收者想实时知道共享参数的变化,需要自己不停的去询问
ROSMaster任务要求知识导入任务实施任务评价ROS中的参数服务器rosparam命令rosparam命令主要功能rosparamsetparam_keyparam_value设置参数rosparamgetparam_key显示参数rosparamloadfile_name从文件加载参数rosparamdumpfile_name保存参数到文件rosparamdelete删除参数rosparamlist列出参数名称使用命令行来维护参数服务器,主要使用
rosparam
语句来进行操作的各种命令任务要求知识导入任务实施任务评价ROS中的动作动作(action)机制从原理上看的话,其实是基于topic实现的,相当于制定了一套由目标话题,反馈话题,结果话题组成的高级协议。动作(action)实现一种类似于service的请求/响应通讯机制,区别在于action带有反馈机制,用来不断向客户端反馈任务的进度,并且还支持在任务中途中止运行。任务要求知识导入任务实施任务评价ROS中的动作动作(action)的操作过程主要为:客户端给服务端抛出一个目标,然后客户端就可以去执行其他的处理任务了,在任务执行期间,客户端会以消息的形式,周期性地接收到来自
服务端的进度反馈,如果没有终止任务的话这个过程会一直延续到收到最终的结果。当然也可以随时终止当前的操作,开始一个全新的操作。任务要求知识导入任务实施任务评价action的工作原理是client-server模式,也是一个双向的通信模式。通信双方在ROSactionProtocol下通过消息进行数据的交流通信。client和server为用户提供一个简单的API来请求目标(在客户端)或通过函数调用和回调来执行目标(在服务器端)。任务要求知识导入任务实施任务评价Qt工具箱ROS为机器人开发提供各种GUI工具。这些GUI开发工具被称为rqt,它集成了30多种工具,可以作为一个综合的GUI工具来使用。另外,RVIZ也被集成到rqt的插件中,这使rqt成为ROS的一个不可缺少的GUI工具。另外,rqt是基于Qt开发的,而Qt是一个广泛用于计算机编程的GUI编程的跨平台框架,用户可以方便自由地添加和开发插件。任务要求知识导入任务实施任务评价Qt工具箱在ROS中Qt工具箱需要进行安装,安装命令如下:$sudoapt-getinstallros-melodic-rqt$sudoapt-getinstallros-melodic-rqt-common-plugins任务要求知识导入任务实施任务评价rqt_console$rqt_consolerqt_console工具是用来显示和筛选ROS系统运行过程中的所有日志信息的,所显示的日志包括info、warn、error等级别的日志。rqt_console工具的使用十分简单,只需要在ROS系统中输入以下命令:任务要求知识导入任务实施任务评价根据任务要求,具体的工作任务实施步骤如下:(1)启动新的终端,输入启动ROS命令。$roscore任务要求知识导入任务实施任务评价(2)启动新的终端,输入启动turtle仿真节点命令。$
rosrunturtlesimturtlesim_node任务要求知识导入任务实施任务评价(3)启动新的终端,输入启动turtle仿真键盘控制命令。$rosrunturtlesimturtlesim_teleop任务要求知识导入任务实施任务评价(4)将电脑的焦点放到键盘控制的终端上,通过键盘的方向键控制小海龟移动。任务要求知识导入任务实施任务评价(5)启动新的终端,查看当前的计算图。$rqt_graph任务要求知识导入任务实施任务评价(6)启动新的终端,输入查看当前话题和服务。$
rostopiclist$rosservicelist任务要求知识导入任务实施任务评价(7)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东会计灵活用工协议书
- 民宿运营管理策划
- 满月宝宝体位护理
- 妇科宫外孕科普
- 空调列车服务质量规范
- 老年医学科老年病疼痛管理方案
- 2026云南临沧边境管理支队招聘边境地区专职辅警备考题库含答案详解(a卷)
- 2026年上半年长信保险经纪(四川)有限公司第二批人员招聘1人备考题库附答案详解(综合卷)
- 2026安徽安庆市皖宜项目咨询管理有限公司招聘派遣人员3人备考题库及答案详解一套
- 2026重庆奉节县教育事业单位招聘25人备考题库及完整答案详解一套
- 商铺门面关闭协议书
- 向量为基,几何为本-以2025年全国新高考数学Ⅰ卷17题为例说题比赛
- 2026-2031年中国鲜冻马肉行业市场发展趋势与前景展望战略研究报告
- 军人二次召回通知书
- 曲臂车安全施工方案
- 《制氢现场氢安全管理规范》
- 防溺水事故应急预案
- 室分业务发展操作指导手册(试行)
- 水泥厂安全事故培训内容课件
- 上市公司再融资困境深度剖析与突围路径探寻
- 乌兹别克斯坦国家介绍
评论
0/150
提交评论