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

    文章

    208

    浏览量

    24080
  • 管理器
    +关注

    关注

    0

    文章

    233

    浏览量

    18322
  • ROS
    ROS
    +关注

    关注

    1

    文章

    272

    浏览量

    16696
收藏 人收藏

    评论

    相关推荐

    Micro-ROS:把ROS2放在MCU上

    对于熟悉机器人应用的读者,ROS想必定是不会陌生的。ROS可以说是目前机器人相关开源社区最流行的项目。每一种类型的机器人都需要以硬件的实际情况编写符合用户需要的功能,起初代码的复用率很低,大大阻碍
    的头像 发表于 04-07 07:13 6623次阅读

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

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

    在Android中使用ROS

    由于ROS提供了Android的对应的开发库,我们可以方便的在Android开发相应的ROS客户端程序。下面介绍一下在Android中使用ROS库的方法。1. 开发环境配置Andro
    发表于 05-16 19:16

    超详细 ROS安装教程

    ROS Kinetic Kame博主分别用过 Indigo 和 Kinetic,其实在使用过程差距并不大,除了极少数第三方库,只支持 Indigo版本,毕竟 Kinetic 刚刚发布,存在一些
    发表于 05-16 19:35

    ROS与STM32之间的联系

    ROS与STM32之间的联系简介ROS主要实现的功能STM32主要实现的功能两者之间的关系两者之间的通信简介1、如何实现ROS与stm32之间的通信,ROS对stm32发送过来的数据做
    发表于 06-28 07:49

    如何在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

    什么是ROSROS产生、发展和壮大的原因和意义

    机器人操作系统(ROS)入门(嵌入式系统应用开发)一、ROS 基本问题1. 什么是 ROS2. ROS 产生、发展和壮大的原因和意义二、安装 ROS
    发表于 12-17 06:08

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

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

    RK3308-CC-PLUS板子启用ROS模块后交叉编译,menuconfig没有ROS选项怎么解决?

    RK3308-CC-PLUS板子启用ROS模块后交叉编译,menuconfig没有ROS选项怎么解决?
    发表于 03-09 06:23

    ROS是如何实现XMLRPC

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

    节点是如何调用XMLRPC

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

    ROS核心框架介绍

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

    ros的基本概念是什么

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