ROS中XMLRPC是什么

发布时间:2023-09-14  

XMLRPC是什么?

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

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

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

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

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

我们每次之前都会查询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)
Connecon: close
Content-Type: text/xml
Content-Length: 124


< ?xml version="1.0"? >
< methodResponse >
   < params >
      < param >
         < value >< double >18.24668429131< /double >< /value >
      < /param >
   < /params >
< /methodResponse >
文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    ROS节点是什么 如何诞生的; ** 一个节点的诞生** 在建立连接之前,首先要有节点。 节点就是一个独立的程序,它运行起来后就是一个普通的进程,与计算机中其它的进程并没有太大区别。 一个......
    ROS中XMLRPC是什么; XMLRPC是什么? 关于节点建立连接的技术细节,官方文档说的非常简单,在这里ROS chnal Overview。没有基础的同学看这个介绍必然还是不懂。 在ROS中......
    图。这个功能涉及的代码量不是很多。 为什么ROS不使用现成的序列化工具或者库呢?可能ROS诞生的时候(2007年),有些序列化库可能还不存在(protobuf诞生于2008年),更有可能是ROS的创......
    可获得丰富的支持,从而帮助用户简化其设计和应用。 该技术的工作原理是什么ROS始于2007年,已成为自动驾驶汽车、工业机器人、飞行器等领域备受欢迎的机器人开发原型制作平台。经过不断发展,该技......
    多个平台(Linux、Windows、MacOS和一些嵌入式平台),而且100%开源,并提供商业选项。得益于来自全球技术社区的专用资源,ROS可获得丰富的支持,从而帮助用户简化其设计和应用。 该技术的工作原理是什么......
    ROS是如何设计的 ROS客户端库; 实现的代码在_comm包中,如下。 其中clients文件夹一共有127个文件,看来是最大的包了。 现在我们来到了ROS最核心的地带。 客户......
    ROS与STM32串口通信代码;这里以一个智能车代码工程为例,抽取串口通信部分代码 在头文件中,进行串口头文件的包含 #include < serial/serial.h > 在类......
    ROS主控与STM32的硬件连接和软件设置;硬件连接 ROS主控通过usb线连接到一个TTL电平转换芯片,再由这个电平转换芯片连接STM32芯片 电平转换芯片可以通过PCB设计在STM32芯片......
    弟”。它基于ROS(Robot Operating System,机器人操作系统),并在Apache2.0许可下使用,支持在各种车辆和应用中进行自动驾驶的商业部署。 Autoware的开......
    ROS文件间的依赖关系; ** meBase基类** 首先看time.h文件,它定义了一个叫TimeBase的类。注释中说,TimeBase是个基类,定义了两个成员变量uint32_t sec......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>