【古月居《ros入门21讲》学习笔记】06_ROS常用命令行工具

目录

说明:

1. 回顾小海龟案例

终端1:启动ROS master

终端2:启动小海龟仿真器

终端3:启动海龟控制节点:

2. 系统计算图:rqt_graph

3. rosnode

rosnode list:显示节点列表

rosnode info:查看节点信息

示例

/turtlesim节点信息说明

4. rostopic

rostopic list:显示话题列表

手动向话题发布消息数据

示例

补充

linear:线速度

angular:角速度

5. rosmsg

查看消息数据结构

示例

6. rosservice

rosservice list :显示服务列表

手动请求一个服务

示例

7. rosbag

话题数据记录

示例

话题数据复现


说明:

1. 本系列学习笔记基于B站:古月居《ROS入门21讲》课程,且使用的Ubuntu与ROS系统版本与      课程完全一致;

虚拟机版本Linux系统版本ROS系统版本
VMware WorkStation Pro 16Ubuntu18.04Melodic

2. 本节是整个笔记的第6节,对应视频课程的第8节,请自行对应学习;

3. 整个系列笔记基本已经完结,但部分章节仍需润色修改 ,后面会陆续发布,请大家持续关注,      创作不易,感谢支持!

1. 回顾小海龟案例

终端1:启动ROS master

roscore

终端2:启动小海龟仿真器

$ rosrun turtlesim turtlesim_node

终端3:启动海龟控制节点:

rosrun turtlesim turtle_teleop_key

image-20230614150907131

2. 系统计算图:rqt_graph

新建终端:

rqt_graph

我们之前介绍过ROS里面的核心通讯机制就是一个计算图,

通过这张图可以很快的了解当前正在运行的整个系统的全貌,

尤其是针对一些未知的系统,很快可以知道这个系统是干嘛的。

image-20230217095543094

  • /teleop_turtle: 键盘控制节点

  • /turtle1/cmd_vel: 通讯话题,这个话题里面的具体通讯内容就是我们通过键盘输入指令的内容

  • /turtlesim: 小海龟仿真器节点

3. rosnode

rosnode 可以显示一些关于节点的帮助信息:

image-20230217093254113

rosnode list:显示节点列表

image-20230217113522514

/rosout:在rqt_graph中没有体现,它是在ROS环境里,只要你启动roscore,都会默认启动的一个话题,这个话题主要采集ROS里面所有节点的日信息,用来提交给上面的界面做显示的,一般不用去关心它。)

rosnode info:查看节点信息

格式:rosnode info 某一个节点名

示例
rosnode info /turtlesim

image-20230217104107017

/turtlesim节点信息说明

  • 节点turtlesim正在发布的话题:

(/turtle1/pose [turtlesim/Pose]:海龟的位置)

  • 节点turtlesim 正在订阅的话题:

image-20230228124951786

  • 节点turtlesim 提供的一些服务:

    可以通过这些服务来完成一些配置。

image-20230228125557536

  • 主机号和pid号:

image-20230228125708579

  • 底层通讯的一些信息:

image-20230228125822771

4. rostopic

rostopic可以显示一些关于话题的帮助信息:

image-20230217110758863

rostopic list:显示话题列表

我们前面的键盘控制节点和海龟仿真器节点之间就是通过 /turtle1/cmd_vel 话题实现通讯的。

image-20230217113400455

手动向话题发布消息数据

我们也可以手动通过指令向 /turtle1/cmd_vel 话题发布消息数据,让海龟运动,

格式:rostopic pub (参数)话题名 消息数据结构 “具体数据”

示例
rostopic pub /turtle1/cmd_vel

然后空格,再连按两次tab键自动填充数据,

image-20230217122332450

使用方向键←→移动到要修的数据的位置修改数据,如将x的0.0改成了1.0,回车,海龟应该按照1.0m/s向前运动一小段

image-20230614173448964

我们发现海龟只动了一小段又停下来了,并不会一直来动,这是因为pub指令只会发布一次,

如果想要海龟一直动,我们需要给其一个循环:

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

(-r:频率rate,10:10赫兹,代表一秒钟发布十次这样指令)

image-20230220165041906

可以看到海龟撞到墙也不会回头,并且显示:Oh no! I hit the wall!,此时按ctrl+c 中断程序。

如果给angular角速度的z一个数值,海龟的运动将是曲线的,如下图:

image-20230220170841803

补充

linear:线速度

单位:m/s

angular:角速度

单位:弧度/s

每一个速度都会给出x,y,z三个方向上的分量,比如上面给linear线速度x方向的分量数据1.0

ROS里面的默认的单位,一般跟平移相关的都是:m/s,跟角度角度相关的都是:弧度/s

5. rosmsg

查看消息数据结构

格式:rosmsg show (参数)消息数据结构 "具体数据"

示例
rosmsg show geometry_msgs/Twist

image-20230220174852064

6. rosservice

rosservice list :显示服务列表

image-20230220180110259

这些的服务的服务端都是仿真器,我们的终端都是作为客户端去请求某个服务的。

手动请求一个服务

在上面的服务列表中,有个/spawn服务,此服务是用来产生一只新海龟的,

格式:rosservice call (参数)服务名 "具体数据"

示例
rosservice call /spawn

最后加空格,然后连按2次tab键,会自动根据请求的服务类型(spawn)补全的服务数据

image-20230228133905247

x,y分别代表产生新海龟位置的横纵轴坐标(仿真器窗口左下角为x,y轴的0点坐标);

theta:产生新海龟的角度;

name:产生新海龟的名字,

然后我们对新海龟的服务数据给予一些值:

image-20230228140649092

服务反馈结果

image-20230228140759485

7. rosbag

rosbag的作用是记录当前系统中所有的话题数据,并且保存下来,当下次需要的时候再复用出来。

例如:一个需要调试的无人机,每次做数据调试都要让无人机飞一次,非常麻烦,

所以一般的方式都是做一次飞行,然后把所有的飞行数据都保存下来,回到实验室,再把这些数据复现出来做实验调试,

所以后面的实验和真机飞行就没有关系了,都是用数据实验的,rosbag就是做这样的事情的。

话题数据记录

格式:rosbag record (参数)保存数据的文件名

示例
rosbag record -a -O cmd_record

参数:

-a:-all,所有的

-O:把记录的数据保存成一个压缩包

image-20230228152231914

现在随便让小海龟动几下,留下一个轨迹,然后在Ctrl+C保存数据,如下:

image-20230228152411467

保存的文件位置在主目录Home下

image-20230228152536142

话题数据复现

现在可以尝试复现保存文件里面的数据内容了,先把所有终端都关掉,然后

终端1 :

roscore

终端2:

rosrun turtlesim turtlesim_node

终端3:

rosbag play cmd_record.bag

复现效果

image-20230228152746408


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LESS的叶绿素荧光模拟实现——任意波段荧光模拟

目录 前言一、任意波段荧光模拟的实现二、需要注意的输入参数 前言 此专栏默认您对LESS (LargE-Scale remote sensing data and image Simulation framework) 模型和叶绿素荧光(Sun-Induced chlorophyll Fluorescence, SIF)有一定的了解。当然,您也可以在这里下载中…

NCo3.1(08) - Nco3 服务器端编程

本篇博文不再重复ABAP调用外部服务器的基础,只介绍 NCo3 开发的过程和要点。需要了解相关知识点的小伙伴们自行参考: SAP接口编程 之JCo3.0系列(06) - Jco服务器端编程 PyRFC 服务器端编程要点 创建项目 新建一个 Console 项目,选择 .Net …

(亲测有效)解决windows11无法使用1500000波特率的问题

大家好!我是编码小哥,欢迎关注,持续分享更多实用的编程经验和开发技巧,共同进步。 1、问题描述 从图1可以看出串口是正常的,安装的驱动是CP210xVCPInstaller_x64.exe,但是从图2可以看出,串口拒…

C# WPF 基础教程——触发器、行为、形状、变换与透明、路径和几何图形

触发器 简单触发器 单条件触发器 多条件触发器 事件触发器 行为 形状 矩形和椭圆 Viewbox缩放控件,直线,折线,多边形 画刷 普通画刷 线性渐变画刷 环形渐变画刷 位图画刷 虚拟画刷(复制元素外观) 位图缓存画刷 变换…

对二分搜索的理解 Go语言版

二分搜索大家都很熟悉&#xff0c;首先我们先来看看基本框架 func binarySearch(nums []int, target int) int {left, right : 0, ...for ... {mid : left (right-left)/2if nums[mid] target {...} else if nums[mid] < target {left ...} else if nums[mid] > targ…

探索测试开发工程师的通往成功的秘密路径!

「作者说」随着近几年国内IT行业高速发展&#xff0c;对测试工程师的要求也越来越高&#xff0c;其作用也越来越重要&#xff0c;但很多测试工程师也迎来了个人发展的瓶颈&#xff0c;下一步该向哪个方向发展&#xff0c;该如何发展&#xff1f;本文将概述测试工程师的现状及发…

使用MAT分析内存泄漏(mac)

前言 今天主要简单分享下Eclipse的Memory Analyzer在mac下的使用。 一、Mat&#xff08;简称&#xff09;干什么的&#xff1f; 就是分析java内存泄漏的工具。 二、使用步骤 1.下载 mac版的现在也分芯片&#xff0c;别下错了。我这里是M2芯片的&#xff0c;下载的Arch64的。 …

海康运行管理中心 RCE漏洞复现

0x01 产品简介 海康威视是以视频为核心的智能物联网解决方案和大数据服务提供商。海康运行管理中心是一款功能强大、易于使用的安防管理平台&#xff0c;能满足用户对视频监控、报警管理、设备配置和数据统计等方面的需求&#xff0c;帮助用户建立高效、智能的安防系统。 0x02…

tcpdump使用心得

参考原文 https://danielmiessler.com/p/tcpdump/ 几个用例 tcpdump -i eth0 显示eth0网卡当前所有的抓包情况eth0是网卡名&#xff0c;可以通过ifconfig获得&#xff0c;也可以通过 tcpdump -D 显示当前可以监听的网卡 -i 参数表示接口&#xff0c;后跟要监听的网卡 tcpdu…

MySQL 中的锁(三)

8.7. 死锁和空间锁 一般来说&#xff0c;只要有并发和加锁这两种情况的共同加持下&#xff0c;都会有死锁的身影。 死锁的具体成因&#xff0c;借用我们在并发编程中的内容&#xff1a; 8.7.1. 死锁 8.7.1.1. 概念 是指两个或两个以上的进程在执行过程中&#xff0c;由于竞…

二阶龙格塔库积分法求解混沌产生方程(求助)

最近论文中常常接触到激光产生混沌的方程&#xff0c;激光器作为非线性元件&#xff0c;在信息处理中具有非常大的潜力&#xff0c;其中激光产生混沌应用在通信中很有用处。论文中对于模拟数据部分&#xff0c;采用了以下公式来产生混沌&#xff1a;以此公式产生混沌的方法应用…

滴滴打车崩了!全过程

滴滴发布致歉10元补偿券&#xff0c;文末可领取 。 事情发生于 2023年11月27日晚~28日中午&#xff0c;滴滴打车服务出现大面积故障&#xff0c;登上微博热搜。 许多用户在使用滴滴出行时遇到了无法叫车、订单异常等问题&#xff0c;导致大量用户滞留在外&#xff0c;出行受阻…

基于Django+Tensorflow卷积神经网络鸟类识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介系统概述系统功能核心技术系统架构系统优势 二、功能三、系统四. 总结  总结 一项目简介 介绍一个基于DjangoTensorflow卷积神经网络鸟类识别系统是一个非…

Linux常用命令——rm 命令

文章目录 Linux系统中的rm命令是一个非常强大且危险的工具&#xff0c;用于删除文件和目录。由于其具有不可逆的特性&#xff0c;了解其参数和正确使用非常重要。 1. 基本用法 rm命令的基本格式是rm [选项] 文件或目录。不带任何选项时&#xff0c;rm命令仅删除文件。 示例&a…

Cytoscape软件下载、安装、插件学习[基础教程]

写在前面 今天分享的内容是自己遇到问题后&#xff0c;咨询社群里面的同学&#xff0c;帮忙解决的总结。 关于Cytoscape&#xff0c;对于做组学或生物信息学的同学基本是陌生的&#xff0c;可能有的同学用这个软件作图是非常溜的&#xff0c;做出来的网络图也是十分的好看&am…

【上海大学数字逻辑实验报告】二、组合电路(一)

一、 实验目的 熟悉TTL异或门构成逻辑电路的基本方式&#xff1b;熟悉组合电路的分析方法&#xff0c;测试组合逻辑电路的功能&#xff1b;掌握构造半加器和全加器的逻辑测试&#xff1b;学习使用可编程逻辑器件的开发工具 Quartus II设计电路。 二、 实验原理 异或门是数字…

基于单片机智能电子密码锁设计

**单片机设计介绍&#xff0c;基于单片机智能电子密码锁设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的智能电子密码锁设计是一种利用单片机&#xff08;如Arduino、Raspberry Pi等&#xff09;和相关电子元件来…

纹理烘焙:原理及实现

纹理烘焙是计算机图形学中常见的技术&#xff0c;用于将着色器的细节传输到纹理中。 如果你的着色器计算量很大&#xff0c;但会产生静态结果&#xff0c;例如&#xff0c;这非常有用。 复杂的噪音。 NSDT在线工具推荐&#xff1a; Three.js AI纹理开发包 - YOLO合成数据生成器…

11月29日作业

自己封装一个矩形类(Rect)&#xff0c;拥有私有属性:宽度(width)、高度(height),定义公有成员函数: 初始化函数:void init(int w, int h) 更改宽度的函数:set_w(int w) 更改高度的函数:set_h(int h) 输出该矩形的周长和面积函数:void show() #include <iostream>using n…

Linux 进程(一)

1 操作系统 概念&#xff1a;任何计算机系统都包含一个基本的程序集合&#xff0c;称为操作系统(OS)。笼统的理解&#xff0c;操作系统包括 内核&#xff08;进程管理&#xff0c;内存管理&#xff0c;文件管理&#xff0c;驱动管理&#xff09; 其他程序&#xff08;例…