热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

一.ROS的命令行工具ros提供了丰富的命令行工具,这些工具可以帮助我们实现一些代码的编写,调试,包括整个系统的框架的调试,

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


第一步,在当前终端输入roscore


(作用:启动ROS Master,即ROS里管理器)


第二步,打开一个新终端输入:rosrun turtlesim turtlesim_node


(作用:启动小海龟仿真器)
rosrun 命令是用来运行在某个功能包里某个节点的指令,后跟两个参数,一个是功能包名(如:turtlesim)一个是节点名
其中,通过rosrun turtlesim+tab键可见该功能包所有结点,使用第三个节点打开仿真器界面
在这里插入图片描述


第三步,再打开一新终端输入:rosrun turtlesim turtle_teleop_key


(作用:启动海龟控制节点,运行键盘控制节点)


打开第四个终端输入:rqt_graph
ros里一系列以rqt开头的工具,都是基于qt的一些可视化工具
(rqt_graph 用来显示系统计算图的工具,可见整个系统的全貌)


在这里插入图片描述
可理解此海龟便是,两个节点与节点之间的话题组成的系统
其他命令行工具
1.rosnode
用来显示系统当中所有结点相关信息的指令
(可通过rosnode+回车键显示帮助信息)
常见
rosnode list
用来把所有系统当中的节点都列出来的指令
在这里插入图片描述
rosnode info
用来查看某个节点的具体信息是怎样的
例:rosnode info /turtlesim
在这里插入图片描述
2.rostopic
跟话题相关的参数的一个命令行工具
(一样可通过rostopic+回车键显示帮助信息)
rostopic list
打开当前系统的所有话题列表在这里插入图片描述
现通过指令给该话题发布数据并让海龟运动
rostopic pub+话题名+消息的类型+消息的数据内容
pub就是发布数据给某一个话题
在这里插入图片描述
在这里插入图片描述
如何让海龟一直动?给其一个循环
-r :即频率,以多少频率去发布话题的数据内容;
例:-r 10 一秒钟发布10次20米每秒的指令
(ctrl+c 停下指令)
在这里插入图片描述

在这里插入图片描述
如何具体看一下现发布的话题的Twist消息的结构?
3.rosmsg
与消息相关的命令行工具
在这里插入图片描述
rosmsg show
例:rosmsg show geometry_msgs/Twist
在这里插入图片描述

4.rosservice
(服务相关的命令行的使用方式)
rosservice list

作用:查看当前仿真器里提供的所有服务的内容,这些服务的服务端均为仿真器,我们现用的终端作为客户端去请求某服务
在这里插入图片描述

其中spawn
意为:产生,诞生
该服务是用来产生一只新的海龟
如何同时使两只海龟同时存在?

rosservice call
调用,发布请求

例:rosservice call /spawn(双击tab键自动补全服务类型和服务数据)
仿真界面左下角为坐标原点
x:产生新的海龟的x坐标
y:产生新的海龟的y坐标
theta: 海龟诞生中的角度
name:产生海龟的名字
回车创建,其后新增一行为反馈信息
在这里插入图片描述
再次打开当前系统的所有话题列表查看
同样可以类上控制两个海龟运动
在这里插入图片描述
在这里插入图片描述
总结:
在这里插入图片描述
在这里插入图片描述

5.话题记录
rosbag record -a -O

可记录保存当前系统里所有话题数据,待下次用到可复现出来
使用场景举例:
有一无人机想做调试,但是不可能每一次都让飞机飞起来然后做数据的调试,这样很不方便,一般大家会做一次飞行,飞行时会把所有的数据保存下来然后回到实验室将这些所有数据复现出来在做实验,所以后面的实验和真机飞行没有关系了,都是使用之前已经采集好的数据
例如:rosbag record -a -O cmd_record
注释:rosbag record -a(即-all意思) -O(意为将保存数据保存成为一压缩包) cmd_record(该压缩包叫什么名字)
表示已经在订阅这样一些数据的内容
海龟运动结束后,ctrl+c保存;数据会放在当前终端的默认路径下面,home/压缩包名
在这里插入图片描述
6.话题复现
rosbag plag cmd_record.bag
复现:
关掉之前的所有内容,重新启动roscore和仿真器节点rosrun turtlesim turtlesim_node,不启动键盘控制节点,现通过数据包复现刚才已经录好的指令——输入rosbag plag cmd_record.bag(后跟文件名),回车后点击虚拟机即可复现,可见该海龟将按照刚才录好的指令去做运动
在这里插入图片描述


推荐阅读
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
  • SQL Server 2008 到底需要使用哪些端口?
    SQLServer2008到底需要使用哪些端口?-下面就来介绍下SQLServer2008中使用的端口有哪些:  首先,最常用最常见的就是1433端口。这个是数据库引擎的端口,如果 ... [详细]
author-avatar
光头之祖_617
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有