【ROS】机械人开发四--ROS常用概念与Launch文件
创始人
2024-01-25 21:57:27

机械人开发四--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 文件中的根元素采用 标签定义,文件中的其他内容都必须包含在这个标签之中。如下:

 
……
……

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

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

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

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

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

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

标签的属性列表如下:

属性作用
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 节点分组与重命名标签

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


... 

使用 ② 条件判断执行


... 



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

相关内容

热门资讯

北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
插入行快捷键 excel添加空... 如下图所示,像这样在两行之间插入多行空白行的操作,你会几种?可能很多人都会觉得,不就是插入空行嘛,简...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
疑难件什么意思 淘宝退货为什么... 01 常见售后类型对于现在主流电商来说,通常支持的售后形式包括仅退款,退货退款,换货,补寄。用户根据...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...