前面的文章主要是说明一下ROS入门需要了解的基本概念,这篇文章则是要说明一下如何使用命令行工具。

2.1 命令行工具的使用

ROS有很多常用命令:rostopic、rosservice、rosnode、rosparam、rosmsg、rossrv等等。

我们以启动小海龟为例来学习一下命令行工具的使用。

2.1.1 首先我们操作一下简单的小海龟

  1. 打开第一个终端,输入如下指令启动ROS Master。

    roscore

    出现上图界面即可。

  2. 打开第二个终端,输入如下指令启动小海龟仿真器。

    rosrun turtlesim turtlesim_node 

    出现上图界面即可。

  3. 打开第三个终端,输入如下指令启动海龟控制节点。

    rosrun turtlesim turtle_teleop_key 

    出现上图界面即可。此时我们可以在这个终端通过输入键盘的上下左右来控制小海龟的运动。

2.1.2 接下来我们就开始玩点有意思的

在上一步的操作中到底蕴含了哪些ROS的基本原理,我们要怎么运用到之后的一些工程,我们需要通过一系列的工具来分析一下。

  • 我们打开第四个终端,输入如下指令来显示系统计算图

    rqt_graph

    (ROS中有一系列“rqt”开头的工具都是基于QT的可视化工具,我们可以很直观的看到很多信息。)

    出现如上界面 。在这个界面很清晰地列出来了当前ROS系统的两个节点(两个椭圆形为两个节点):turtlesim为仿真器节点、teleop_turtle为键盘控制节点。turtle1/cmd_vel为两个节点之间的话题通信。

  • 接下来我们来看几个没有界面产生的命令行工具,这些命令行工具都是以“ros”开头

  • rosnode:用来显示系统当中所有节点相关信息的指令。

  1. 输入如下指令来列出来系统中所有的节点。

    rosnode list 

    出现上图界面,可以看到这里罗列出了三个节点,发现跟上一步相比多了一个rosout节点,这个节点是只要启动roscore就会启动的一个采集系统所有的日志信息提交给系统做显示的话题。

  2. 输入如下指令来查看某一个节点具体的信息是什么样的。(以turtlesim为例)

    rosnode info /turtlesim 

    出现上图界面。 我根据自己的理解做出了如下解释。

  • rostopic:用来显示系统当中所有话题相关信息的指令。
  1. 输入如下指令来列出来系统中所有的话题列表。

    rostopic list

    出现上图界面。那我们也可以通过指令给相应话题发布数据让小海龟运动,输入如下指令:

    rostopic pub /turtle1/cmd_vel geometry_msgs/Twist "linear:x: 1.0y: 0.0z: 0.0
    angular:x: 0.0y: 0.0z: 0.0" 

    出现如下界面,可以看到海龟相比之前移动了一小格,但是我们的指令是让海龟沿着x方向以1m/s的速度运动,为什么会只移动一小格呢?是因为我们这个话题只发布了一次,那怎样让海龟一直动呢?我们需要给这个指令一条循环:

    rostopic pub  -r 10 /turtle1/cmd_vel geometry_msgs/Twist "linear:x: 1.0y: 0.0z: 0.0
    angular:x: 0.0y: 0.0z: 0.0"
    

    让这个指令每秒发送10次,可以看到如下图:

    看到海龟会一直运动下去。

  • rosmsg:用来显示系统当中所有消息相关信息的指令。
  1. 输入如下指令来列出来系统中某一条消息的数据结构。(以geometry_msgs/Twist为例)

    rosmsg show geometry_msgs/Twist
    

    出现上图界面。

  • rosservice:用来显示系统当中所有服务相关信息的指令。
  1. 输入如下指令来列出来系统中所有的服务列表。

    rosservice list
    

    出现上图界面。

  2. 输入如下指令产生第二只海龟。

    rosservice call /spawn "x: 2.0
    y: 2.0
    theta: 0.0
    name: 'turtle2'"
    

    出现上图界面。此时我们再输入之前的一条指令。

    rostopic list

    出现上图界面, 可以看到我们已经可以通过指令控制第二只海龟的运动了

2.1.3 ROS的话题记录和复现

可以记录系统目前所有的话题数据并且保存下来并在下次用的时候复现出来。

  • 话题记录
  1. 输入如下指令开始记录当前的数据。

    rosbag record -a -O cmd_record

    以上界面是运行结果,表示已经开始记录了,现在我们可以随便地控制海龟做运动。结束之后我们就可以在主文件夹下找到该文件。

  • 复现记录

  1. 我们重新打开两个终端,分别输入roscore和rosrun turtlesim turtlesim_node 启动海龟。

  2. 打来第三个终端,输入如下指令复现上一步的运动。

    rosbag play cmd_record.bag 

    运行结果如上图,可以看到已经复现出来了一个一模一样的运动。

ROS入门之使用命令行工具控制小海龟移动相关推荐

  1. Linux命令行工具使用小贴士及技巧(四)

    到目前为止,在该系列指南中,我们已经讨论了 cd - 和 pushd/popd 命令的基本使用方法和相关细节,以及 CDPATH 环境变量.在这第四期.也是最后一期文章中,我们会讨论别名的概念以及你可 ...

  2. ROS入门-6.ROS 命令行工具的使用

    一.ROS的命令行工具 ros提供了丰富的命令行工具,这些工具可以帮助我们实现一些代码的编写,调试,包括整个系统的框架的调试,数据的显示,命令的一些帮助信息等都可以通过命令行工具等帮助实现,常用命令包 ...

  3. 【ROS入门学习01| ROS命令行工具的使用】

    ROS命令行工具的使用 -----------------可以配合古月居的ROS入门教程来学习实践. 文章目录 ROS命令行工具的使用 一.roscore 二.rosrun 三.rqt_graph 四 ...

  4. ROS2学习(十一).ROS概念 - 命令行工具的使用

    命令行工具 概述 用法 样例 其他说明 实现 概述 ROS 2包含有一系列的命令行工具用以对ROS 2系统观测. 用法 命令ros2是所有命令的入口,它具有各种子命令,用于观察并处理节点.主题.服务等 ...

  5. go Cobra命令行工具入门

    简介 Github:https://github.com/spf13/cobra Star:26.5K Cobra是一个用Go语言实现的命令行工具.并且现在正在被很多项目使用,例如:Kubernete ...

  6. Vue入门教程:node安装vue命令行工具及启动项目

    安装淘宝npm镜像 npm install -g cnpm --registry=https://registry.npm.taobao.org 全局安装vue命令行工具 cnpm install - ...

  7. C#中的样板命令行工具应用程序

    目录 介绍 概念化这个混乱 处理命令行参数 异常处理 用户界面 过期文件处理 编码此混乱 MSBuild支持 用于在C#中构建命令行工具应用程序的入门代码.该样板代码为应用程序提供异常处理和命令行参数 ...

  8. [总结]FFMPEG命令行工具之ffplay详解

    目录 0 前言 1 语法 Synopsis 2 描述 Description 3 选项 Options 3.1 流指定器 Stream specifiers 3.2 通用选项 Generic opti ...

  9. Redis 笔记(16)— info 指令和命令行工具(查看内存、状态、客户端连接数、监控服务器、扫描大key、采样服务器、执行批量命令等)

    Info 命令返回关于 Redis 服务器的各种信息和统计数值.通过给定可选的参数 section ,可以让命令只返回某一部分的信息. 1. 显示模块 server : 一般 Redis 服务器信息, ...

最新文章

  1. windows定时关机
  2. Tensorflow保存模型详解(进阶版二):如何保存最近的.ckpt文件 及 如何分开保存.ckpt数据文件和.meta图文件
  3. SAP 电商云 Spartacus UI Delivery Mode ID 的 validator
  4. python四中方法获取列表中最大/最小的前n个数值的位置索引
  5. 页游修改攻击力如何同步服务器,我的世界 怎么修改武器攻击力和属性 像服务器那样!!...
  6. 执行shell脚本报/bin/bash^M: bad interpreter
  7. Power Designer的4种模型文件
  8. 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_14-异常处理-异常处理的问题分析...
  9. 量化投资的现状和前景
  10. windows删除注册表(通用方法)
  11. 安装docker多系统操作示列(window为例)
  12. 【PHP问题解决办法】Deprecated: Function eregi() is deprecated in
  13. Tomcat之Directory Listing
  14. Prezi - the best presentation tool
  15. 纯HTML写国际象棋棋盘
  16. 前端页面局部(全局)刷新方法
  17. 电子元器件简介——芯片封装篇
  18. AI开发者被疯抢,华为做了什么?
  19. 小小英雄怎么修改服务器,英雄联盟自走棋小小英雄怎么换 LOL英雄战棋小小英雄皮肤更改方法...
  20. 计算机应用会考试题,余杭区2006年职高计算机应用基础会考试题

热门文章

  1. 大白菜装机教程win10_关于联想扬天B41-30-NTZ(L)使用U盘重装Win10系统的详细步骤
  2. Shiro中的Realms
  3. 如何让电池支持PD协议快充?
  4. linux设置TCP接收缓存,TCP缓存设置及自调节
  5. PHP + ajax 实现上传进度条、PHP 上传大视频
  6. GUID分区与MBR分区
  7. 小助手一蓝牙智能防丢器
  8. 欺负我是程序员?几行代码让你服
  9. 【分布式数据网格】如何超越单片数据湖迁移到分布式数据网格
  10. 英文书信,称谓等格式