0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ROS中XMLRPC是什么

麦辣鸡腿堡 来源:古月居 作者:古月居 2023-09-14 17:40 次阅读

XMLRPC是什么?

关于ROS节点建立连接的技术细节,官方文档说的非常简单,在这里ROS Technical Overview。没有基础的同学看这个介绍必然还是不懂。

在ROS中,节点与节点之间的通信依靠节点管理器(master)牵线搭桥。

master像一个中介,它介绍节点们互相认识。一旦节点们认识了以后,master就完成自己的任务了,它就不再掺和了。

这也是为什么你启动节点后再杀死master,节点之间的通信依然保持正常的原因。

使用过电驴和迅雷而且研究过BitTorrent的同学对master的工作方式应该很熟悉,master就相当于Tracker服务器,它存储着其它节点的信息

我们每次下载之前都会查询Tracker服务器,找到有电影资源的节点,然后就可以与它们建立连接并开始下载电影了。

那么master是怎么给节点牵线搭桥的呢?ROS使用了一种叫XMLRPC的方式实现这个功能。

XMLRPC中的RPC的意思是远程过程调用(Remote Procedure Call)。

简单来说,远程过程调用的意思就是一个计算机中的程序(在我们这就是节点啦)可以调用另一个计算机中的函数,只要这两个计算机在一个网络中。

这是一种听上去很高大上的功能,它能让节点去访问网络中另一台计算机上的程序资源。

XMLRPC中的XML我们在1.1节讲消息序列化时提到了,它就是一种数据表示方式而已。

所以合起来,XMLRPC的意思就是把由XML表示的数据发送给其它计算机上的程序运行。

运行后返回的结果仍然以XML格式返回回来,然后我们通过解析它(还原回纯粹的数据)就能干别的事了。

想了解更多XMLRPC的细节可以看这个XML-RPC:概述。

举个例子,一个XMLRPC请求是下面这个样子的。因为XMLRPC是基于HTTP协议的,所以下面的就是个标准的HTTP报文。

POST / HTTP/1.1
User-Agent: XMLRPC++ 0.7
Host: localhost:11311
Content-Type: text/xml
Content-length: 78


< ?xml version="1.0"? >
< methodCall >
   < methodName >circleArea< /methodName >
      < params >
         < param >
            < value >< double >2.41< /double >< /value >
         < /param >
      < /params >
< /methodCall >

如果你没学过HTTP协议,看上面的语句可能会感到陌生。《图解HTTP》这本小书可以让你快速入门。

HTTP报文比较简单,它分两部分,前半部分是头部,后半部分是主体。

头部和主体之间用空行分开,这都是HTTP协议规定的标准。

上面主体部分的格式就是XML,见的多了你就熟悉了。

所以,XMLRPC传递的消息其实就是主体部分是XML格式的HTTP报文而已,没什么神秘的。

对应客户端一个XMLRPC请求,服务器端会执行它并返回一个响应,它也是一个HTTP报文,如下。

它的结构和请求一样,不再解释了。所以,XMLRPC跟我们上网浏览网页的过程其实差不多。

HTTP/1.1 200 OK
Date: Sat, 06 Oct 2001 23:20:04 GMT
Server: Apache.1.3.12 (Unix)
Connection: close
Content-Type: text/xml
Content-Length: 124


< ?xml version="1.0"? >
< methodResponse >
   < params >
      < param >
         < value >< double >18.24668429131< /double >< /value >
      < /param >
   < /params >
< /methodResponse >
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 节点
    +关注

    关注

    0

    文章

    217

    浏览量

    24386
  • 管理器
    +关注

    关注

    0

    文章

    242

    浏览量

    18490
  • ROS
    ROS
    +关注

    关注

    1

    文章

    276

    浏览量

    16967
收藏 人收藏

    评论

    相关推荐

    系统镜像Ubuntu_ROS2ROS2是什么意思,带有ROS2开发环境吗?

    请问一下,百度文库资料里面,下图所示的系统镜像Ubuntu_ROS2ROS2是什么意思,带有ROS2开发环境吗?与前面4GB版本的镜像有什么区别?
    发表于 03-01 23:06

    如何在ROS2运行小乌龟呢

    ROS2运行小乌龟,其实主要就是安装两个工具,turtlesim和rqt。A: 安装turtlesim。输入【sudo apt update】输入【sudo apt install
    发表于 11-05 06:08

    什么是ROS?如何学习ROS

    什么是ROS?如何学习ROS
    发表于 11-11 07:21

    ROS简介

    目录一、ROS简介1、什么是ROS2、ROS产生、发展和壮大的原因和意义二、在Ubuntu系统,安装对应版本的ROS软件1、确定Ubunt
    发表于 12-17 08:24

    怎样去使用ROS的launch启动文件呢

    怎样去使用ROS的launch启动文件呢?ROS的launch启动文件该怎样去使用呢?
    发表于 02-14 07:23

    基于FreeRTOS的micro(微型)ROS

    编辑整理:strongerHuang 作者:Francesca Finocchiaro 关注我的读者应该有部分是做ROS相关的工作,今天就来分享一个基于FreeRTOS的micro(微型)ROS
    的头像 发表于 09-25 14:16 2319次阅读
    基于FreeRTOS的micro(微型)<b class='flag-5'>ROS</b>

    ROS的序列化实现

    理解了序列化,再回到ROS。我们发现,ROS没有采用第三方的序列化工具,而是选择自己实现,代码在roscpp_core项目下的roscpp_serialization,见下图。这个功能涉及的代码量
    的头像 发表于 09-14 17:26 882次阅读

    ROS是如何实现XMLRPC

    XMLRPC的C++代码在下载后的ros_comm-noetic-develutilitiesxmlrpcpp路径下。 还好,整个工程不算太大。XMLRPC分成客户端和服务器端两大部分。 咱们先看
    的头像 发表于 09-14 17:45 690次阅读

    节点是如何调用XMLRPC

    节点间通过XMLRPC建立连接 在一个节点刚启动的时候,它并不知道其它节点的存在,更不知道它们在交谈什么,当然也就谈不上通信。 所以,它要先与master对话查询其它节点的状态,然后再与其它节点通信
    的头像 发表于 09-14 17:52 747次阅读
    节点是如何调用<b class='flag-5'>XMLRPC</b>的

    ROS核心框架介绍

    ROS核心框架 对于第一个问题,我也没仔细研究过源码,核心代码基本由python和C++组成,运用了xmlrpc机制,每个运行的节点可以理解成一个进程。进程间通讯有些是共享内存的方式(比如
    的头像 发表于 11-21 18:07 955次阅读
    <b class='flag-5'>ROS</b>核心框架介绍

    ROS的TF该如何使用

    TF命令行操作 ROS的TF该如何使用呢?我们先通过两只小海龟的示例,了解下基于坐标系的一种机器人跟随算法。 小海龟跟随例程 这个示例需要我们先安装相应的功能包,然后就可以通过一个launch文件
    的头像 发表于 11-22 17:24 1061次阅读
    <b class='flag-5'>ROS</b><b class='flag-5'>中</b>的TF该如何使用

    ros的基本概念是什么

    基本概念: ROS是一个用于在不同进程间匿名的发布、订阅、传递信息的中间件。 ROS2系统的核心部分是ROS网络(ROS Graph)。 ROS
    的头像 发表于 11-27 11:21 1747次阅读

    ROS2自带例程测试

    如果你是一个ROS2的开发者,可能对刚才我们使用的ROS2命令比较熟悉,这时你可能也会产生一个问题:我们之前也安装了ROS2系统,那ROS2的原生功能还可以正常运行么? 我们再来试一试
    的头像 发表于 11-28 16:29 921次阅读
    <b class='flag-5'>ROS</b>2<b class='flag-5'>中</b>自带例程测试

    在TogetherROS如何安装ROS2功能包

    安装ROS2功能包 接下来,还有一个很重要的配置,那就是安装ROS2功能包,我们说TogetherROS是基于ROS2深度优化的,很多模块还是会复用ROS2
    的头像 发表于 12-01 16:02 932次阅读
    在TogetherROS<b class='flag-5'>中</b>如何安装<b class='flag-5'>ROS</b>2功能包

    ros怎么设置环境变量

    可以使用的动态的值,用于影响运行程序的行为。环境变量通常包含一些关键信息,如路径、用户名、颜色选项等。 在ROS,环境变量是重要的,因为它们用于确定ROS如何运行和找到相关文件和程序。 为什么要设置
    的头像 发表于 12-28 13:52 1965次阅读