【ROS】机械人开发四--ROS常用概念与Launch文件

news2024/11/21 2:28:43

机械人开发四--ROS常用概念与Launch文件

  • 一、ROS常用概念
    • 1.1 ROS 的结构
    • 1.2 ROS 话题通信
    • 1.3 海龟仿真器 仿真 例程
  • 二、Launch文件
    • 2.1 功能
    • 2.2 文件语法
    • 2.3 参数服务器
    • 2.4 节点分组与重命名标签


一、ROS常用概念

1.1 ROS 的结构

ROS 中有一些很重要的基础概念:节点节点管理器工作空间功能包等,知道这些基础概念对后续的 ROS 的学习和理解会有很大的帮助。工作空间 和 功能包 上一节一节讲过了,这里讲一下节点节点管理器

  • 节点(node):在ROS机械人中,每一个功能由每一个结点实现,而每个 节点 则对应功能包中的 一个可执行文件。
  • 节点管理器(master):报告结点的注册信息,通过节点管理器,可以让节点和节点之间建立起联系。只有通过节点管理器注册,才能实现后续的节点间的通信。

1.2 ROS 话题通信

话题通信是ROS节点中最常用的通信方式。

  • 话题的概念(topic):节点可以发布消息到话题,也可以从话题订阅消息,一个节点可以订阅和发布多个话题。
  • 消息(message):一个 ROS 数据类型,节点之间通过话题承载的消息来互相通信。

发布者
其部分C++实现代码如下:
在这里插入图片描述
代码意思是 创建一个名为“test_info_pub”的发布者,发布一个名为“/pub_name”的话题,话题的消息类型为“topic::type”,消息的队列长度为 20。在创建完发布者后,我们需要实体化发布者发送的数据类型。如下图所示:
在这里插入图片描述
创建消息数据后将数据以消息结构的形式发送出去,如下图所示:
在这里插入图片描述

订阅者
在发布者将消息发布出来之后,订阅者需要通过订阅话题去订阅发布者发布的信息,代码如下:
在这里插入图片描述
创建一个订阅者,订阅名为“/pub_name”的话题,队列长度20,注册回调函数“callback”。当接收到消息后调用回调函数进行处理接收的消息。如下图所示:
在这里插入图片描述


1.3 海龟仿真器 仿真 例程

① 输入 roscore 启动 ROS
roscore 随后会启动 节点管理器节点管理器负责 ros 的节点注册,参数服务器,话题通信管理等等。

book@100ask:~$ roscore
在这里插入图片描述
程序运行

② 重新打开一个命令窗口,输入命令 rostopic list 查看节点列表

rostopic list
在这里插入图片描述
可以看到 跟随 roscore 一起启动的 “/rosout”“/rosout_agg” 两个系统话题

③ 使用 rosrun 命令运行一个节点

rosrun turtlesim turtlesim_node
在这里插入图片描述
在这里插入图片描述
可以看到出现了一个海龟

④ 再开一个命令窗口,输入控制海龟运动的节点。

rosrun turtlesim turtle_teleop_key
在这里插入图片描述
这时你就可以通过键盘的↑↓←→控制海龟运动了

⑤ 随后在打开一个命令窗口,输入 rostopic list 命令。

rostopic list
在这里插入图片描述
可以看到对比之前多了/turtle1/cmd_vel , /turtle1/color_sensor , /turtle1/pose,这三个话题。
其分别对应 键盘控制节点的话题通信、海龟仿真器的颜色话题、海龟的位姿话题。

⑥ 输入命令分别查看相应的话题内容,命令如下:

rostopic echo /turtle1/cmd_vel
rostopic echo /turtle1/color_sensor
rostopic echo /turtle1/pose
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

⑦ 输入命令查看当前运行的话题,以及显示该话题的发布者和订阅者。

rosrun rqt_graph rqt_graph
在这里插入图片描述
窗口内显示当前运行的话题,可以看到话题名是/turtle1/cmd_vel,话题的发布者是“/teleop_turtle”
话题的订阅者是“/turtlesim”


二、Launch文件

2.1 功能

launch 路径下包含的是.launch 文件,launch 文件里面封装好了要运行的节点,写入的参数,加载的参数文件等等。

在前面运行海龟仿真器的例程时用到的都是 rosrun 命令,rosrun 命令每次只能运行一个节点,但是当运行一个机器人时要同时运行多个节点就需要用到 roslaunch 了,roslaunch 命令运行一个 launch 文件一个 luanch 文件可以包多个节点

文件的指令的结构是:

roslaunch 功能包名 launch文件名

运行 roslaunch 命令时,会自动检测是否开启了 roscore,如果没有开启则自动开启 roscore。
其官方网址如下:
roslaunch


2.2 文件语法

语法为标签语言,具体列表如下:
在这里插入图片描述

launch 文件中的根元素采用 <launch> 标签定义,文件中的其他内容都必须包含在这个标签之中。如下:

<launch> 
……
……
</launch>

启动 ROS 系统的核心是启动 ROS 节点,采用<node>标签定义,用法如下:

<node name="map_server_for_test" pkg="map_server" type="map_server" />

启动一个节点至少需要三个属性:name、pkg 和 type。

  • name:属性定义节点运行的名称,可自定义;
  • pkg:属性定义节点所在的功能包名称
  • type:属性定义节点的可执行文件名称,也可以是.py 文件

除了这三个标签属性外,另外还有一些其他的元素,例如:<param><arg>。这两个的作用都是写入参数,但是

param 是 ROS 系统运行中的参数,存储在参数服务器中。在 launch 文件中可以通过<param>标签加载 param
launch 文件执行后,param 就加载到 ROS 的参数服务器上了。

arg 标签用来在 launch 文件中定义参数,arg 不储存在参数服务器中,不能提供给节点使用,只能在 launch 文件中使用

<node>标签的属性列表如下:

属性作用
pkg节点所在的包名
type可执行文件名
name重定义节点名
args传递参数
output日志输出(log|screen)
respawn“true”,如果节点失效则重启(默认是false)
required“true”,如果节点失效则关闭整个launch文件(默认不设置)
ns在命名空间中运行此节点

launch 文件夹里面还有一个 inculde 文件夹,这个文件夹主要是存放一些被其他 launch 文件调用的 launch 文件 。如下图所示:
在这里插入图片描述


2.3 参数服务器

储存系统运行参数。使用命令和功能如下:

  • rosparam list : 列出参数服务器中的参数
  • rosparam get : 获取参数
  • rosparam set : 设置参数
  • rosparam delete : 删除参数
  • rosparam load : 从文件中加载参数到参数服务器
  • rosparam dump : 将参数服务器的参数写入文件

2.4 节点分组与重命名标签

<group>

使用 ① 将若干个节点划分进同一个命名空间

<group ns = “group_name”>
... 
</group>

使用 ② 条件判断执行

<group if = “condition”>
... 
</group>

<remap>

<remap from = "/different_topic" to = "/needed_topic" />

到这里就结束啦!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/10595.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

四、ref与DOM-findDomNode-unmountComponentAtNode

目标 理解react的框架使用中&#xff0c;真实dom存在的意义。 使用真实dom和使用虚拟dom的场景。 灵活掌握并能够合理使用操作真实dom的方法。 知识点 react中提供了ref这个属性来获取原生的dom节点&#xff0c;使用方式&#xff1a;在虚拟dom中添加ref属性&#xff0c;即可…

笔试强训(三十七)

目录一、选择题二、编程题2.1 mkdir2.1.1 题目2.1.2 题解2.2 数据库连接池2.2.1 题目2.2.2 题解一、选择题 &#xff08;1&#xff09;下面关于源端口地址和目的端口地址的描述中&#xff0c;正确的是&#xff08;A&#xff09; A.在TCP/UDP传输段中&#xff0c;源端口地址和目…

从内部失衡到外部失衡-中国视角下的宏观经济

从内部失衡到外部失衡 – 潘登同学的宏观经济学笔记 文章目录从内部失衡到外部失衡 -- 潘登同学的宏观经济学笔记国际金融复习全球失衡与储蓄过剩利用拉姆齐模型进行分析数值模拟外部失衡与国际收支危机国际支付工具的作用资产价格泡沫国际收支危机亚洲金融危机中国在亚洲金融危…

智能家居项目开发准备工作

智能家居代码机构——简单工厂模式&#xff1a; 什么是设计模式&#xff1f;百度百科解释&#xff1a; 软件设计模式&#xff08;Design pattern&#xff09;&#xff0c;又称设计模式&#xff0c;是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设…

好心情精神心理平台:精神疾病怎样才算「治好」?医生和患者眼中的标准不一样!

精神疾病恢复到什么程度才算「治好」了&#xff1f; 很多患者朋友认为&#xff0c;症状消失就代表病好了&#xff0c;就可以停药了。 不是我吓唬你&#xff0c;如果你见症状好转就停药&#xff0c;那病情出现反复是必然结果。 实现疾病症状的消除&#xff0c;这只是达到了「临…

[附源码]java毕业设计驾校管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]java毕业设计基于的疫苗预约系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

详解VSCode中C++工程配置

安装MinGW-w64及环境变量配置 下载MinGW-w64 可以通过官网直接进行下载在线安装包&#xff0c;然后在本地进行安装即可&#xff08;但是基本都会由于网络超时等各种原因终止&#xff09;。 因此这里建议直接下载 MinGW-w64 库解压&#xff0c;然后在系统中指定环境变量即可。…

低资源场景下的命名实体识别

Overview 低资源下的命名实体识别主要分为两个方面&#xff0c;一种是in-domain下的N-way-K-shot类型的少样本&#xff0c;一种是cross-domain下现在资源丰富的sourc-domain上进行微调&#xff0c;之后再迁移到低资源的target-domain进一步微调。 基于prompt的方法在少样本分…

C语言学习-数组(4)

目录 思维导图&#xff1a; 1. 一维数组的创建和初始化 1.1 数组的创建 1.2 数组的初始化 1.3 一维数组的使用 1.4 一维数组在内存中的存储 2. 二维数组的创建和初始化 2.1 二维数组的创建 2.2 二维数组的初始化 2.3 二维数组的使用 2.4 二维数组在内存中的存…

C# async / await 的使用方法

目录 一、简介 二、异步等待返回结果 三、异步方法的返回类型 四、await foreach 五、Task.Delay 结束 一、简介 await 运算符暂停对其所属的 async 方法的求值&#xff0c;直到其操作数表示的异步操作完成。 异步操作完成后&#xff0c;await 运算符将返回操作的结果&a…

【Xilinx】Zynq\MPSoc\Versal不同速度等级下的ARM主频

【Xilinx】Zynq\MPSoc\Versal不同速度等级下的ARM主频一、Zynq&#xff08;A9&#xff09;二、MPSoC(A53R5)三、Versal(A72R5F)最近有很多人在选型的时候&#xff0c;问到ARM主频的问题&#xff0c;不知道去哪里找这个参数。 授人以鱼不如授人以渔&#xff0c;基本的通用方法是…

【面试题】 TypeScript 前端面试题 由浅到深

给大家推荐一个实用面试题库 1、前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 基本类型介绍 1.Boolean&#xff0c;Number&#xff0c;String 声明:类型 类型对应变量 let flag:boolean true let …

【现代密码学原理】——哈希函数(学习笔记)

&#x1f4d6; 前言&#xff1a;我们在登录QQ有时会遇到密码忘记的问题&#xff0c;那么思考一下&#xff0c;为什么腾讯公司不直接把密码发还给用户而是要求设置新密码呢。其实&#xff0c;不保存密码&#xff0c;是为了更好地对密码保密&#xff0c;换言之&#xff0c;腾讯的…

力扣(LeetCode)106. 从中序与后序遍历序列构造二叉树(C++)

递归 如图&#xff0c;后序序列按照左右根遍历&#xff0c;所以根在最后。逆着后序遍历的顺序&#xff0c;按照根右左递归建树就可以复原这棵树。后序序列&#xff0c;可以确定根的位置 postrootpostrootpostroot 和根结点的值。我们在中序序列找到根结点的值&#xff0c;就确定…

《深度学习进阶 自然语言处理》第四章:Embedding层和负采样介绍

文章目录4.1 word2vec的改进一4.1.1 Embedding层4.2 word2vec的改进二4.2.1 中间层之后的计算问题4.2.2 从多分类到二分类4.2.3 负采样总结之前文章链接&#xff1a; 开篇介绍&#xff1a;《深度学习进阶 自然语言处理》书籍介绍 第一章&#xff1a;《深度学习进阶 自然语言处…

想知道有没有拍照转文字的软件?这3款工具职场人士必备

你们在工作上有没有遇到这种情况&#xff0c;就是领导突然甩一份纸质文件给你&#xff0c;并要求整理成电子版&#xff0c;供其他同事查阅。回想我当初刚踏入职场时&#xff0c;没有什么工作经验&#xff0c;只会对照着内容手动码字输出&#xff0c;但是太浪费时间了&#xff0…

湖北银行冲刺上市:不良率高于行业均值,有公司欠5亿元未能追回

撰稿|汤汤 来源|贝多财经 最近&#xff0c;湖北银行正式向A股递交申请材料&#xff0c;准备在上海证券交易所上市。 据贝多财经了解&#xff0c;湖北银行股份有限公司&#xff08;下称“湖北银行”&#xff09;于2022年11月4日在证监会预披露招股书&#xff0c;计划在上交所…

Azide-PEG-Aldehyde,N3-PEG-ALD,叠氮-PEG-醛基可用于新材料研究

化学试剂叠氮-聚乙二醇-醛基&#xff0c;其英文名为Azide-PEG-Aldehyde&#xff08;N3-PEG-ALD&#xff09;&#xff0c;它所属分类为Aldehyde / Acetal PEG Azide PEG。 peg试剂的分子量均可定制&#xff0c;有&#xff1a;5000 N3-PEG-ALD、10000 叠氮-PEG-醛基、1000 N3-PE…

短视频社交|电影点播平台Springboot+vue+ElementUI前后端分离

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容&#xff1a;Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路 关注作者有好处 文末获取源…