ROS中的一些基本概念

2023-05-16

主节点(master):负责节点到节点的消息与通信
用roscore命令来运行主节点 节点只有在需要注册自己信息或向其他节点发送请求时才能访问主节点

节点(node):是指ros中运行的最小处理器单元 可以把它看作一个可执行程序 节点在运行的同时 需要向主节点注册节点名称/发布者/订阅者/服务服务器/服务客户端的名称

功能包(package)是构成ros的基本单元 ros的应用程序是以功能包为单位开发的 功能包必须包含至少一个节点或拥有运行其他功能包节点的配置文件 它还包用于各种进程的ROS依赖库/数据集和配置文件

元功能包(metapackage):是一个具有共同目的的功能包的集合 例如导航元功能包包含很多个功能包

消息(message):节点之间通过消息来接收和发送数据 消息是诸如integer floating point boolean等类型的变量 根据使用情况使用 单项消息发送/接受方式的话题(topic) 双向消息请求或响应方式的服务(service)

话题(topic):话题就是故事 订阅者和发布者通过主节点取得链接之后 它们通过话题发送和接受消息

发布与发布者:发布是指以与话题的内容相对应的消息的形式发送数据(没太读懂) 为了执行发布,发布者节点在主节点上注册自己的话题等多种信息,并向希望订阅的订阅者节点发送消息

订阅与订阅者:订阅是指以与话题内容对应的消息的形式接收数据 为了执行订阅 订阅者节点要在主节点上注册自己的话题等多种信息 并从主节点接受发布此节点要订阅的话题的发布者节点的信息

发布和订阅概念中的话题是异步的 服务是一种消息同步方法

服务:服务消息通信是服务客户端(service client)和服务服务器(service server)之间的同步双向消息通信

服务服务器:以请求作为输入,以响应作为输出的服务消息通信的服务器 服务和响应都是消息 服务服务器在接受请求之后,执行相应的服务,然后把执行结果反馈给服务客户端,服务服务器用于执行指定命令的节点

服务客户端:以请求作为输出 以响应作为输入的服务消息通信的客户端 服务客户端用于传达给定命令并接受结果值的节点

动作(action):动作是在需要像服务那样的双向请求的情况下使用的消息通信方式,不同是处理请求之后需要很长的响应,并且需要中途反馈值。动作中的目标(goal)和结果(result)对应服务中的请求和响应 此外 还添加了对应于中途的反馈(feedback)它由一个设置动作目标的动作客户端和一个执行动作的动作服务器组成
动作客户端和动作服务器是异步双向消息通信

话说为什么服务是同步 发布订阅和动作是异步???

参数服务器(parameter server):是指在功能包中使用参数时,注册各参数的服务器。参数服务器也是主节点的一个功能。

catkin
catkin是指ROS的构建系统。catkin实际上就是专为ROS定制的CMake构建系统。

roscore
roscore是运行主节点的命令 除了某些特殊情况 一个网络只能运行一个roscore 运行ROS时,将使用用户在ROS_MASTER_URI变量在中列出的URI地址和端口。如果用户没有设置,会使用本地IP作为URI地址并使用端口11311 例如我运行roscore会显示 ROS_MASTER_URI=http://linxiaorui:11311/

rosrun
rosrun是ROS的基本运行命令。它用于在功能包中运行一个节点。节点使用的URI地址将储存在当前运行节点的计算机上的ROS_HOSTNAME环境变量作为URI地址,端口被设置为任意的固有值

roslaunch
如果rosrun是运行一个节点的命令,那么roslaunch是运行多个节点的概念。roslaunch使用*.launch文件来设置可执行节点,它是基于可扩展标记语言(XML),并提供XML标记形式的多种选项。

bag
用来保存ROS中发送和接收消息的数据 可以回放传感器数据 避免多次重复实验

存储库
每一个公开的功能包在该功能包的wiki上指定一个存储库(repository)存储库用来存放功能包的URL地址 并使用源代码管理系统(如github)来管理问题、开发、下载等。许多当前可用的功能包将gihub作为存储库。下图是我在ros.wiki上随便找的一个pakage 可以看到它的repository中存储了pakeage源代码的github网址:
这是我在ros.wiki上随便找的一个pakage 可以看到它的repository中存储了pakeage源代码的github网址状态图:上述描述的节点、话题、发布者、订阅者之间的关系可以通过状态图直观的表示。不能为一次性服务创建状态图。执行它时通过运行rqt_graph功能包的rqt_graph节点完成的。有两种执行命令:

rqt_graph
rosrun rqt_graph rqt_graph

URI:统一资源标识符(Uniform Resource Identifier)是代表Internet上资源的唯一地址。
MD5:Message-Digest algorithm 5,是128位密码散列函数。它主要用于检查程序或文件的完整性,以查看它是否保持原样。在使用ROS消息的通信中,使用MD5来检查消息发送/接收的完整性。
RPC:远程过程调用(Remote Procedure Call),意味着远程计算机上的程序调用另一台计算机中的子程序。
XMLRPC:是一种RPC协议,其编码形式采用XML编码格式,而传输方式采用即不保持链接状态、也不检查链接状态的tingi和响应方式的HTTP协议。
TCPROS:消息和服务中使用的基于TCP/IP的消息方式成为TCPROS,而UDPROS消息及服务中使用的基于UDP的消息方式称为UDPROS。
XML:可扩展标记语言(Extensible Markup Language)。它是通过使用标签来指定数据结构的语言之一。在ROS中用于*.launch、*.urdf和package.xml等部分。
package.xml:包含功能包信息的XML文件,描述功能包名称、作者、许可证和依赖包。
这是我打开的iai_kinect2功能包下的package.xml文件:
在这里插入图片描述发布者、订阅者、服务服务器、服务客户端、动作服务器、动作客户端都存在于不同的节点中,这些节点需要链接才能进行消息通信。主节点是帮助节点之间的链接。主节点就像节点名称、话题和服务、动作名称、URI地址和端口以及参数们的名称服务器。

消息:消息是用于节点之间的数据交换的一种数据形式。ROS中常用的头(header、std_msgs/Header)也可以作为消息来使用。这些消息又两种类型组成:字段类型(fieldtype)和字段名称(fieldname)。
字段类型应填入ROS数据类型,字段名称要填入指示数据的名称。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS中的一些基本概念 的相关文章

  • kinova-jaco2使用Moveit!控制真实机械臂抓取固定点物体

    kinova jaco2使用Moveit 控制真实机械臂抓取固定点物体 一 机械臂坐标系 坐标系方向 位姿方向 轴的起始点 二 启动机械臂和Moveit 三 实现抓取 python代码 python文件建议直接用python启动 四 遇到的
  • 【硬核】 ROS Navigation 局部路径规划常见算法

    简介 最近 作者参加了关于RMUS 高校 SimReal挑战赛 首次接触到了机器人导航领域 这里记录一下这段时间的收货 sim2real的全称是simulation to reality 是强化学习的一个分支 同时也属于transfer l
  • ROS系统基本功能的使用详解(基本指令/节点/服务/启动文件/动态参数)

    ROS系统基本功能的使用详解 一 创建工作空间 二 创建与编译ROS功能包 三 ROS的基本命令 3 1 节点 3 2 主题 3 3 服务 3 4 参数服务器 四 节点的创建与运行 4 1 创建源文件 4 2 修改CMakeLists tx
  • SLAM-hector_slam 简介与使用

    hector slam功能包使用高斯牛顿方法 不需要里程计数据 只根据激光信息便可构建地图 所以他的总体框架如下 hector slam功能包 hector slam的核心节点是hector mapping 它订阅 scan 话题以获取SL
  • rosrun 和 roslaunch 的时候 TAB 的自动补全出现问题

    rosrun 和 roslaunch 的时候 TAB 的自动补全出现问题 rospack Warning error while crawling home sun boost filesystem status Permission de
  • ROS2踩坑记录

    Vscode 显示 找不到module 以此选择 设置 Python 在setting json中编辑 在 python autoComplete extraPaths 中添加额外的第三方库路径 如 opt ros foxy lib pyt
  • 线速度和角速度

    转自 https baike baidu com item E7 BA BF E9 80 9F E5 BA A6 1532652 fr aladdin https baike baidu com item E8 A7 92 E9 80 9F
  • GG-CNN代码学习

    文章目录 1 源码网址 https github com dougsm ggcnn 2 数据集格式转化 下载后的康奈尔数据集 解压完之后里面的格式 里面的 tiff图像通过 txt文件转化得到 python m utils dataset
  • ROS noetic tf demo错误处理及python版本切换

    文章目录 报错描述及解决 ubuntu20 04下python版本切换 报错描述及解决 ubuntu版本 20 04 ROS版本 noetic roslaunch turtle tf turtle tf demo launch 报错信息 t
  • 激光雷达LMS111在ROS上的使用

    LMS111 10100 在ROS上的测试与使用 准备工作 设备 硬件 LMS111 101000激光雷达 软件 ubuntu16 04 ROS 开始 设备连接 将激光雷达与处理器 电脑 工控机等 通过以太网连接好 激光雷达默认的IP地址为
  • Ubuntu16.04及ROS Kinetic环境下安装使用RealSense SR300

    Ubuntu16 04及ROS Kinetic环境下安装使用RealSense SR300 1 准备条件 需要安装Ubuntu16 04及ROS Kinetic 2 安装驱动 安装realsense的驱动流程可以根据Github上的官方推荐
  • 树莓派配置wifi做热点方法

    http wiki jikexueyuan com project raspberry pi wifi html
  • 从 pcl::PointCloud 中删除点

    我是 PCL 新手 我正在使用 PCL 库 并且正在寻找一种从点云中提取点或将特定点复制到新点的方法 我想验证每个点是否符合条件 并且我想获得仅包含优点的点云 谢谢 使用 ExtractIndices 类 将要删除的点添加到 PointIn
  • 错误状态:平台不允许不安全的 HTTP:http://0.0.0.0:9090

    我正在尝试从我的 flutter 应用程序连接到 ws local host 9090 使用 rosbridge 运行 的 Ros WebSocket 服务 但我在 Flutter 中收到以下错误 错误状态 平台不允许不安全的 HTTP h
  • catkin_make 编译报错 Unable to find either executable ‘empy‘ or Python module ‘em‘...

    文章目录 写在前面 一 问题描述 二 解决方法 参考链接 写在前面 自己的测试环境 Ubuntu20 04 一 问题描述 自己安装完 anaconda 后 再次执行 catkin make 遇到如下问题 CMake Error at opt
  • 可以在catkin工作区之外创建ROS节点吗?

    我想在catkin工作区之外创建一个ROS发布者节点 可以创建吗 当然可以 像对待任何其他 cpp 库或 python 包一样对待 ROS 在Python中你必须保留PYTHONPATH环境变量指向ros包 opt ros kinetic
  • 如何订阅“/scan”主题、修改消息并发布到新主题?

    我想通过订阅message ranges来改进turtlebot3的LDS 01传感器 通过应用一些算法修改messange ranges并将其发布到新主题 如下所示 但是当我运行编码时出现错误 错误是 遇到溢出的情况 错误是 运行时警告
  • ROS中spin和rate.sleep的区别

    我是 ROS 新手 正在尝试了解这个强大的工具 我很困惑spin and rate sleep功能 谁能帮助我了解这两个功能之间的区别以及何时使用每个功能 ros spin and ros spinOnce 负责处理通信事件 例如到达的消息
  • 安装 ROS 时 Cmake 未检测到 boost-python

    我一直在尝试在我的 Mac 上安装 ROS 并根据不同版本的 boost 使用不同的库解决了错误 然而 似乎有一个库甚至没有检测到 boost python 这是我得到的错误 CMake Error at usr local share c
  • 如何在Windows上安装机器人操作系统ROSJava?

    ROS 的文档很糟糕 一个很大的讽刺是 ROS 的 Groovy 和 ROSJava 版本的创建是为了让 Windows 等平台上的开发人员能够利用出色的机器人 SDK 而所有安装说明仍然面向 Linux ubuntu 用户 The ROS

随机推荐

  • 四旋翼无人机的设计与实现讲解

    四旋翼无人机基于stm32的设计与实现过程
  • (ADRC)自抗扰控制器(二)——四旋翼无人机

    自抗扰四旋翼控制中的几个问题 xff1a 自抗扰控制器包含三大部分 xff1a TD微分跟踪器 xff1a 微风跟踪器主要可以安排过渡 xff0c 过程同时还具有一定的滤波功能 xff0c 四旋翼由遥控器和地面站发送期望控制信号 xff0c
  • ROS下实现darknet_ros目标检测

    一 代码下载 代码Github主页 xff1a https github com leggedrobotics darknet ros 打开命令行终端 xff0c 键入以下命令下载 span class token function mkd
  • Nginx $request_uri和$uri详解

    一 官方介绍 request uri This variable is equal to the original request URI as received from the client including the args It
  • C++学习总结(二十七)——STL容器与算法(一) STL容器的组成,线性容器(array,vector,tuple,queue,deque,stack),链式容器(list)

    STL容器 xff1a C 43 43 标准库的一部分 xff0c 用C 43 43 Template机制表达泛型的库 xff0c 用泛型技术设计完成实例 Template特性 1 类模板偏特化 xff0c 进行严格的类型检查 2 默认模板
  • C++学习总结(二十八)——STL容器与算法(二) 集合set multiset bitset 映射 map 以及散列hash的介绍

    1 集合set的基本操作 集合中不能包含重复的元素 xff0c 如果包含重复的元素 xff0c 则将被自动剔除 同时实现自动排序 红黑树容器 xff1a 例如数据 xff1a 1 2 3 4 5 6 7 经过排序后的结果为 xff1a 4
  • Linux Ubuntu基本操作指令

    Linux的登录方式 xff1a 1 本地登录 2 远程登录 xff1a putty使用 查看运行级别 xff1a Linux运行级别0 6级 xff0c 0 关机 6 重启 1 单用户 2 3 多用户 可以通过runlevel 查看运行级
  • 微信小程序开发(一)

    微信小程序开发 目录 微信小程序开发 一 微信小程序开发 二 五 让小程序连接树莓派 六 xff1a 小程序控制面板设计 七 xff1a 树莓派如何解析小程序的信息 八 xff1a 树莓派如何回信息给小程序 九 xff1a 树莓派与微信小程
  • ssh远程失败,提示“REMOTE HOST IDENTIFICATION HAS CHANGED! ”解决办法

    搞了个谷歌云 xff0c 但是因为一些原因一直提示我在挖矿 xff0c 一脸懵逼 xff0c 估计是别人的脚本做了手脚 删了新建一个实例 xff0c 外部IP还是原来的 xff0c 使用ssh远程连接的时候发现提示 REMOTE HOST
  • 【滤波器学习笔记】一阶RC低通滤波

    一阶RC低通滤波 从模拟到数字 本文整理自网络 匠人手记 等书籍文章 模拟电路低通滤波时域 频域软件低通滤波 典型电路 图1 典型RC电路 直流 交流 脉冲信号都可以用它 时域 电容电流 xff1a I c 61 d q d t 61 d
  • 嵌入式:一种裸机编程多任务切换方法

    嵌入式 xff1a 一种裸机编程多任务切换方法 有时候为了实现一些简单的 对实时性要求不高的任务 xff0c 采用操作系统不仅增加了程序的复杂性 xff0c 对低性能单片机的资源占用也是值得考虑的问题 这时候操作系统可能不是必要的 xff0
  • 自动化学科领域高质量科技期刊T1级期刊

    自动化学科领域高质量科技期刊T1级期刊 控制理论与控制工程方向 序号 期刊名称 T1 01 IEEE Transactions on Automatic Control T1 02 Automatica T1 03 SIAM Journal
  • UR机器人手眼标定

    一 UR机器人位姿表示 默认情况下UR机器人的基坐标系和TCP如下图所示 xff1a 注意这里的TCP位置和坐标系都是在默认TCP配置的情况下 xff0c 默认的TCP配置如下图所示 xff1a 如果用户想要自己设置TCP的位置和坐标系就可
  • 《自抗扰控制技术》——第一遍阅读

    目录 感想摘抄自认为有用的结论第一章 xff1a 剖析经典PID调节器第二章 xff1a 跟踪微分器第三章 xff1a 非光滑反馈的功能和效率第四章 xff1a 扩张状态观测器第五章 xff1a 自抗扰控制器第六章 xff1a 自抗扰控制器
  • ROS Melodic版本下Gazebo的更新与安装

    ROS Melodic自带的Gazebo版本过低 xff0c 建议升级 span class token comment 1 首先 xff0c 查看Gazebo版本 出现的是 gazebo9 及其相关插件 span dpkg l span
  • 《自抗扰控制技术》——第二遍(仿真)

    目录 感想复现书上的仿真图像第一章 xff1a 剖析经典PID调节器第二章 xff1a 跟踪微分器第三章 xff1a 非光滑反馈的功能和效率第四章 xff1a 扩张状态观测器第五章 xff1a 自抗扰控制器第六章 xff1a 自抗扰控制器的
  • 使用MYNT-EYE-D相机跑开源代码VINS_Fusion

    使用MYNT EYE D相机跑开源代码VINS Fusion 这两天刚买了一个小觅智能公司型号为D1000 IR 120 Color的深度相机 xff0c 探索了一下在VINS Fusions上的融合方法 xff0c 折腾了很久才成功 xf
  • 修改docker默认存储路径

    默认情况下 xff0c docker镜像的默认存储路径是 var lib docker xff0c 这相当于直接挂载系统目录下 xff0c 而一般在搭系统时 xff0c 这个区都不会太大 xff0c 所以如果长期使用docker开发应用 x
  • 制作自己的rgb-d数据集

    今天自己用机器人采了一波数据 尝试着用自己采集的RGB D数据来跑slam2的RGB D例程 下面来记录一下 该文章主要是参考这篇博客 xff1a https blog csdn net qq 16481211 article detail
  • ROS中的一些基本概念

    主节点 xff08 master xff09 xff1a 负责节点到节点的消息与通信 用roscore命令来运行主节点 节点只有在需要注册自己信息或向其他节点发送请求时才能访问主节点 节点 xff08 node xff09 xff1a 是指