2_ROS中的命令行工具

2023-05-16

ROS中的命令行工具

ROS中为我们提供了丰富的命令行工具,帮助我们进行代码的编写,调试,测试,框架的搭建,数据的显示等等

大图如下,所有的命令大致可以分为四类,分别是运行相关命令,编译相关命令,包制作管理相关命令,项目创建相关命令

下面进行详细的讲解

在这里插入图片描述

ROS 运行相关命令


roscore

roscore用于启动一个ROS Master,直接输入命令即可启动

jack@ubuntu:~$ roscore 

运行结果如下

在这里插入图片描述


rosrun

rosrun用于运行一个功能包中的某个节点,其后接两个参数,一个是功能包名,一个是要启动的节点名,例如我们下面打开turtlesim功能包下的turtlesim_node节点,这个节点的功能就是打开仿真的图像界面

jack@ubuntu:~$ rosrun turtlesim turtlesim_node 

在这里插入图片描述

接下来我们打开turtlesim功能包中的turtle_teleop_key节点来进行键盘监听,从而使用键盘控制乌龟的运动

jack@ubuntu:~$ rosrun turtlesim turtle_teleop_key

在这里插入图片描述


rqt_graph

我们接下来使用rqt_graph命令来查看当前运行的各个节点之间的关系

rqt是ros中一系列基于qt开发的可视化工具,直接输入rqt_graph即可

jack@ubuntu:~$ rqt_graph 

在这里插入图片描述

我们能够看到,我们目前一共运行了两个节点,这两个节点之间具有数据的传输


rosnode

rosnode命令是用于显示系统中所有节点信息的命令,其中又有多个参数可选

rosnode list

rosnode list用于输出当前所有运行的节点

jack@ubuntu:~$ rosnode list

在这里插入图片描述

这里我们能看到除了刚才rqt_graph中的节点外,还有一个rosout节点

rosout节点实际上是启动ros master时自动就会启动的节点,这个节点主要用于采集所有节点的日志信息,用于提交给其他命令用于显示的

rosnode info

我们能用rosnode info命令来查看某一个具体的节点的信息,例如

jack@ubuntu:~$ rosnode info /turtlesim 

在这里插入图片描述

其中:

  • Publication是当前节点发布的所有信息
  • Subscription是当前节点订阅的所有信息
  • Service是当前节点提供的服务
  • 下面是进程号,主机号,底层通信机制等等一些我们并不是很关注的信息

rostopic

和rosnode类似,rostopic是一个用于查看当前系统运行的所有话题信息的命令,和rosnode一样,也有很多的参数可以选择

rostopic list

rostopic list用于显示当前所有的topic

jack@ubuntu:~$ rostopic list

在这里插入图片描述

rostopic pub

我们可以使用rostopic pub来向某一个topic发布数据

rostopic pub topic名 message名/数据结构名 要发布的数据结构内容

在这里插入图片描述

我们可以给rostopic pub后加-r参数来指定发布的频率

jack@ubuntu:~$ rostopic pub -r 10 turtle1/cmd_vel geometry_msgs/Twist "linear:
  x: 0.0
  y: 1.0
  z: 1.0
angular:
  x: 1.0
  y: 0.0
  z: 1.0"

在这里插入图片描述

此外,由于我们的乌龟是二维平面的,因此我们为其设定x,y方向的角速度是没用的,同理设定z方向的线速度也是没用的


rosmsg

我们可以使用rosmsg来查看,message相关的信息

rosmsg show

我们可以用rosmsg show命令来查看某个message的结构,其后要加查看的消息名

jack@ubuntu:~$ rosmsg show geometry_msgs/Twist

在这里插入图片描述


rosservice

此外我们还可用rosservice来查看service相关的内容

rosservice list

我们可以用rosservice list来查看所有的service

jack@ubuntu:~$ rosservice list 

在这里插入图片描述

当前所有的服务都是由我们的海龟仿真器提供的,即节点/turtlesim提供的,还有一些服务则是rosout提供的,这个我们不用管

我们可以用rosnode info查询

在这里插入图片描述

rosservice call

我们上面查看了所有的service,就像上面我们向某一个topic发布message一样,我们可以使用rosservice call来请求某个服务

我们如果将rosservice理解为某个功能,则rosservice call就是启动这个功能

rosservice call后面加上需要请求的服务名,而有些服务在启动的时候需要带上参数,为此我们和msg一样两下tab补全参数信息即可

我们请求/spawn服务来作为验证,turtlesim这个节点提供的/spawn服务的功能就是产生一个新的海龟,新的海龟在创建时需要新的海龟的位置信息(x,y坐标,左下角为0),初始转向和名字信息

jack@ubuntu:~$ rosservice call /spawn "x: 6.0
y: 2.0
theta: 0.0
name: 'jackTurtle'" 
name: "jackTurtle"

我们运行之后海龟仿真器的界面上出现新的海龟
在这里插入图片描述

上面我们讲过,我们当前运行的所有服务一共有三个节点,除了rosout之外,负责小海龟仿真器运行的有turtlesim和teleop_turtle两个节点

这两个节点一个负责监听键盘输入,一个负责处理海龟的其他信息.这里我们新创建了一个海龟,并不会产生新的node,因为所有的海龟都是由turtlesim节点管理的,如下图

在这里插入图片描述

那么我们新增的海龟到底对什么产生了影响?

我们仔细分析下整个小海龟仿真器的内容,两个节点之间通过cmd_vel这个topic来传输键盘输入,我们新创建的海龟也能够通过键盘来控制,那么我们再查看下所有的topic
在这里插入图片描述

我们能够发现除了一开始的/turtle1的三个topic,还新增了/jackTurtle的三个topic

所以在小海龟仿真器中,海龟的具体表现形式就是topic,我们调用/spawn服务来产生新的海龟的过程实际上就是创建新的topic


rosbag

通常来说我们在进行ROS开发的时候并不会每次修改完代码之后就在实体机上运行,因为这样会对机器造成很大的损耗,因此我们通常是只运行一次机器,然后将机器运行时候所有的数据保存下来,未来在仿真中进行测试

rosbag就是用于记录数据并在仿真中重现的工具

前面讲过,ROS中所有的数据的发布都是以topic的方式传输的,因此rosbag实际上记录的就是所有的topic

rosbag record

rosbag record命令用于记录所有的topic,其参数如下

rosbag record [-a] [-O]
  • -a表示记录所有的topic
  • -O表示将数据保存为一个压缩文件并指定名称

例如我们下面记录键盘控制的小海龟仿真

jack@ubuntu:~$ rosbag record -a -O turtleKeyboardRecord20201128

在这里插入图片描述

完成记录后Ctrl C结束记录,记录的数据将保存在当前的工作目录里

在这里插入图片描述

rosbag play

rosbag play用于重现记录的数据

我们首先重新启动一个ROS Master,然后打开仿真器节点,不需要打开键盘节点

然后输入rosbag play命令,后面要加记录的数据包名

rosbag play turtleKeyboardRecord20201128

rosbag play

rosbag play用于重现记录的数据

我们首先重新启动一个ROS Master,然后打开仿真器节点,不需要打开键盘节点
在这里插入图片描述

然后输入rosbag play命令,后面要加记录的数据包名

rosbag play turtleKeyboardRecord20201128

在这里插入图片描述

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

2_ROS中的命令行工具 的相关文章

  • STM32 电压采集上位机 C#

    工具箱中添加progressBar 添加一个事件函数 xff0c 用于串口接收数据 xff0c 并显示电压值 private void PortDataReceivedEvent object sender SerialDataReceiv

随机推荐

  • cmake使用教程(一)多目录下多个文件的构建

    1 采用 out of source 外部构建多个目录多个文件 这里的文件存储方式如下 xff1a 其中build是构建目录 xff0c 即构建的结果和中间产物都在该目录下 include是包含目录 src是子函数的目录或是依赖文件的目录
  • vue 实现遍历后端接口数据并展示在表格中

    用前端的vue遍历接口 首先就需要有后端的JSON数据 这里可以自己去写接口 可以伪造JSON数据 整理是伪造的JSON数据 34 userId 34 1 34 deptId 34 103 34 userName 34 34 admin 3
  • STM32的存储器映射中的指针操作

    例如 xff1a GPIOB的端口输出数据寄存器ODR的地址是0x4001 0C0C 并且ODR寄存器是32位的 那么我们可以用如下代码对寄存器进行操作 xff1a unsigned int 0x4001 0C0C 61 0xFFFFFFF
  • Mac 启动Redis报错 没有指定的conf文件

    报错如下 xff1a Warning no config file specified span class token punctuation span span class token keyword using span the de
  • java 优化双重for循环

    首先我们要有两个对象分别是 学生信息 和 学生住宿信息 span class token keyword class span span class token class name Student span span class toke
  • 微服务 - gateway网关配置

    server port 10010 网关端口 spring application name gateway 服务名称 cloud nacos server addr localhost 8848 nacos地址 gateway route
  • 如何在手机或平板上编写代码?

    下面给大家推荐一款免费的 在线协作式 基于浏览器的 IDE的在线编程网站 支持语言包括 Java C 43 43 C C JavaScript CSS PHP等50多种主流开发语言 地址 The collaborative browser
  • 羊了个羊, 低配版开源代码来啦~

    前几天朋友圈突然被一个小游戏 羊了个羊 刷屏了 xff0c 出于好奇我也打算小玩一把试试 xff0c 结果没想到上头了 游戏的玩法非常简单 xff0c 类似 消消乐 xff0c 从一堆方块中找到相同图案的 3 个方块并消除即可 但没想到 x
  • MySQL 使用索引和不使用索引的区别(附17W条数据SQL文件)

    MySQL 使用索引可以减少查询的时间 xff0c 而不使用索引的查询会更加耗时 xff0c 因为MySQL需要扫描整个表 此外 xff0c 使用索引可以提高查询的性能 xff0c 同时也可以提高查询的可读性和可维护性 换句话来说 使用索引
  • 如何使用AI来帮你写代码(Cursor使用教程)

    x1f4ac 产品介绍 cursor是一个新的Ide xff0c 它使用Ai来帮助您重构理解调试并使用Cursor编写代码我们的目标是使构建软件的过程更快 更愉快 我们从头开始构建了一个代码编辑器 xff0c 对我们的第一个功能进行了原型设
  • [Java多线程-基础] 如何定位线程中的死锁问题?

    x1f512 死锁代码 下面提供的代码演示了死锁的情况 程序创建了两个线程 xff0c 线程1和线程2 xff0c 它们都试图以不同的顺序获取两个不同的资源 xff0c resource1和resource2 线程1首先获取resource
  • [Java多线程-基础] 避免线程死锁问题(ReentrantLock的使用)

    ReentrantLock 的设计初衷是为了提供一种比 synchronized 更加灵活和可控的锁机制 与 synchronized 相比 xff0c ReentrantLock 提供了更多的功能 xff0c 如可重入性 公平锁和中断锁等
  • IDEA插件:智能代码生成器,附带注释和性能/安全检测功能

    x1f680 1 安装插件 在插件中搜索关键字 biot 点击安装 x1f680 2 代码生成 右侧的侧边栏点击biot后 在下方的输入框中输入你要问的内容 x1f680 3 biot AI 选中选区中的代码 点击鼠标右键让ai来帮你改代码
  • 安装Windows Server 2016 服务器 标准版

    注意事项 xff1a 安装带桌面版的 管理员密码设置 xff0c 要 注意大小写加数字 xff0c 不然会设置失败 安装文件下载 xff1a MSDN 我告诉你 PE U盘 微PE 服务器的驱动 xff0c 可以自己到对应服务器厂家的官网上
  • 第五节:基于Pytorch的相关可视化

    第五节 xff1a 基于Pytorch的相关可视化 在Pytorch发布后 xff0c 网络及训练过程的可视化工具也相应的被开发出来来帮助用户监督所建立的模型的结构和训练过程 本章将讲解HiddenLayer库 xff0c HiddenLa
  • 第六节:Pytorch实现全连接神经网络

    第六节 xff1a Pytorch实现全连接神经网络 前面的五节中 xff0c 我们讲解了使用PyTorch搭建一个神经网络中需要的需要各种技巧 xff0c 包括 xff1a 网络的搭建 选择不同的实践技巧 xff08 优化器选择 学习率下
  • 使用Visual Studio Code开发Arduino踩坑日记(持续更新)

    使用Visual Studio Code开发Arduino踩坑日记 持续更新 文章目录 使用Visual Studio Code开发Arduino踩坑日记 持续更新 1 在browse path中未找到包含文件问题描述问题分析解决思路解决过
  • 小白安装Ubuntu 18.04 LTS

    文章目录 小白安装Ubuntu 18 04 LTS作者 xff1a 王仕鸿日期 xff1a 2020 10 10 前言 xff08 可跳过 xff09 Ubuntu介绍操作系统介绍Ubuntu介绍 安装Ubuntu 18 04 LTS步骤一
  • 1_ROS基础

    ROS基础 本章讲解ROS中最基础的概念 不明白这些概念是没法学懂ROS的 学习了这些概念 后面我们将通过实操来在实践的过程中进一步体会 ROS是什么 ROS Robot Operating System 机器人操作系统 是一个提供一系列程
  • 2_ROS中的命令行工具

    ROS中的命令行工具 ROS中为我们提供了丰富的命令行工具 帮助我们进行代码的编写 调试 测试 框架的搭建 数据的显示等等 大图如下 所有的命令大致可以分为四类 分别是运行相关命令 编译相关命令 包制作管理相关命令 项目创建相关命令 下面进