第2章 ROS 通信机制 4 —— 常用命令

news/2024/5/18 23:43:40/文章来源:https://blog.csdn.net/qq_42731062/article/details/127042063

文章目录

  • 1 应用场景
  • 2 rosnode 功能包 plumbing_pub_sub
    • 编译执行
  • 3 rostopic 功能包 plumbing_pub_sub
    • 编译执行
  • 4 rosservice (服务通信) 功能包 plumbing_server_client
    • 编译执行
  • 5 rosmsg (话题通信) 功能包 plumbing_pub_sub
    • 编译执行
  • 6 rossrv (服务通信) 功能包 plumbing_server_client
    • 编译执行
  • 7 rosparam (参数服务器) plumbing_param_server
    • 编译执行

ROS命令

1 应用场景

机器人系统中启动的节点少则几个,多则十几个、几十个,不同的节点名称各异,通信时使用话题、服务、消息、参数等等都各不相同,一个显而易见的问题是: 当需要自定义节点和其他某个已经存在的节点通信时,如何获取对方的话题、以及消息载体的格式呢?

在 ROS 同提供了一些实用的命令行工具,可以用于获取不同节点的各类信息,常用的命令如下:

  • rosnode : 操作节点
  • rostopic : 操作话题
  • rosservice : 操作服务
  • rosmsg : 操作msg消息
  • rossrv : 操作srv消息
  • rosparam : 操作参数

作用

  • 和之前介绍的文件系统操作命令比较,文件操作命令是静态的,操作的是磁盘上的文件,而上述命令是动态的,在ROS程序启动后,可以动态的获取运行中的节点或参数的相关信息。

2 rosnode 功能包 plumbing_pub_sub

  • 用于获取节点信息的命令
rosnode ping    测试到节点的连接状态
rosnode list    列出活动节点
rosnode info    打印节点信息
rosnode machine    列出指定设备上节点
rosnode kill    杀死某个节点
rosnode cleanup    清除不可连接的节点
  • rosnode list:列出活动节点(第1步)
    在这里插入图片描述

  • rosnode ping:测试到节点的连接状态

  • 例如 rosnode ping /banZhuRen —— 给出节点响应时间
    在这里插入图片描述

  • rosnode info:打印节点信息(重要常用)

  • 例如 rosnode info /banZhuRen
    在这里插入图片描述

  • rosnode machine:列出指定设备上正在运行的节点
    在这里插入图片描述

  • rosnode kill:杀死某个节点

  • rosnode cleanup:清除无用节点,启动乌龟节点,然后 ctrl + c 关闭,该节点并没被彻底清除,可以使用 cleanup 清除节点

编译执行

  • 启动 roscore(窗口1)
roscore
  • 启动发布节点(窗口2)
cd demo01_ws/
source ./devel/setup.bash
rosrun plumbing_pub_sub demo03_pub_person
  • 启动订阅节点(窗口3)
cd demo01_ws/
source ./devel/setup.bash
rosrun plumbing_pub_sub demo04_sub_person
  • 启动窗口4
  • rosnode

在这里插入图片描述

  • rosnode -h 查询help文档

在这里插入图片描述

  • rosnode ping -h 查询参数的帮助文档

在这里插入图片描述

3 rostopic 功能包 plumbing_pub_sub

  • rostopic包含rostopic命令行工具,用于显示有关ROS主题的调试信息,包括发布者,订阅者,发布频率和ROS消息。它还包含一个实验性Python库,用于动态获取有关主题的信息并与之交互。
rostopic bw     显示主题使用的带宽
rostopic delay  显示带有 header 的主题延迟
rostopic echo   打印消息到屏幕
rostopic find   根据类型查找主题
rostopic hz     显示主题的发布频率
rostopic info   显示主题相关信息
rostopic list   显示所有活动状态下的主题
rostopic pub    将数据发布到主题
rostopic type   打印主题类型
  • rostopic list(-v):直接调用即可,控制台将打印当前运行状态下的主题名称
  • rostopic list -v : 获取话题详情(比如列出:发布者和订阅者个数…)

在这里插入图片描述

  • rostpic echo:获取指定话题当前发布的消息(需要先执行下面操作)
  • 获取的是发布方消息的相关信息
cd demo01_ws/
source ./devel/setup.bash
rosrun plumbing_pub_sub demo03_pub_person

在这里插入图片描述

  • rostopic pub:可以直接调用命令向订阅者发布消息
  • 例如 rostopic pub liaoTian plumbing_pub_sub/Person
  • 为roboware 自动生成的 发布/订阅 模型案例中的 订阅者 发布一条字符串
rostopic pub /主题名称 消息类型 消息内容
rostopic pub /chatter std_msgs gagaxixi
  • rostopic info:获取当前话题的相关信息
  • 消息类型、发布者信息、订阅者信息
    在这里插入图片描述
  • rostopic type:列出话题的消息类型
  • rostopic find 消息类型:根据消息类型查找话题
  • rostopic delay:列出消息头信息
  • rostopic hz:列出消息发布频率
    在这里插入图片描述
  • rostopic bw:列出消息发布带宽

编译执行

  • 启动 roscore(窗口1)
roscore
  • 启动发布节点(窗口2)
cd demo01_ws/
source ./devel/setup.bash
rosrun plumbing_pub_sub demo03_pub_person
  • 启动订阅节点(窗口3)
cd demo01_ws/
source ./devel/setup.bash
rosrun plumbing_pub_sub demo04_sub_person

4 rosservice (服务通信) 功能包 plumbing_server_client

  • rosservice包含用于列出和查询ROSServices的rosservice命令行工具
  • 调用部分服务时,如果对相关工作空间没有配置 path,需要进入工作空间调用 source ./devel/setup.bash
rosservice args 打印服务参数
rosservice call    使用提供的参数调用服务
rosservice find    按照服务类型查找服务
rosservice info    打印有关服务的信息
rosservice list    列出所有活动的服务
rosservice type    打印服务类型
rosservice uri    打印服务的 ROSRPC uri
  • rosservice list:列出所有活动的 service
    在这里插入图片描述
  • rosservice args:打印服务参数
rosservice args /spawn
x y theta name
  • rosservice call:调用服务
  • 为小乌龟的案例生成一只新的乌龟
rosservice call /spawn "x: 1.0
y: 2.0
theta: 0.0
name: 'xxx'"
name: "xxx"
//生成一只叫 xxx 的乌龟

在这里插入图片描述

  • rosservice find:根据消息类型获取话题
  • rosservice info:获取服务话题详情
    在这里插入图片描述
  • rosservice type:获取消息类型
    在这里插入图片描述
  • rosservice uri:获取服务器 uri

编译执行

  • 启动 roscore(窗口1)
roscore
  • 启动客户端(窗口2)
cd demo01_ws/
source ./devel/setup.bash
rosrun plumbing_server_client demo01_server
  • 启动窗口3
rosservice

在这里插入图片描述

5 rosmsg (话题通信) 功能包 plumbing_pub_sub

  • rosmsg是用于显示有关 ROS消息类型的 信息的命令行工具
rosmsg show    显示消息描述
rosmsg info    显示消息信息
rosmsg list    列出所有消息
rosmsg md5    显示 md5 加密后的消息
rosmsg package    显示某个功能包下的所有消息
rosmsg packages    列出包含消息的功能包
  • rosmsg list:会列出当前 ROS 中的所有 msg 消息类型
  • rosmsg list | grep -i person:使用管道筛选出需要的消息
    在这里插入图片描述
  • rosmsg packages:列出包含消息的所有包
  • rosmsg package:列出某个包下的所有msg
//rosmsg package 包名 
rosmsg package turtlesim
  • rosmsg show:显示消息描述
//rosmsg show 消息名称
rosmsg show turtlesim/Pose
结果:
float32 x
float32 y
float32 theta
float32 linear_velocity
float32 angular_velocity

在这里插入图片描述

  • rosmsg info:作用与 rosmsg show 一样

编译执行

  • 启动 roscore(窗口1)
roscore
  • 启动发布节点(窗口2)
cd demo01_ws/
source ./devel/setup.bash
rosrun plumbing_pub_sub demo03_pub_person
  • 启动订阅节点(窗口3)
cd demo01_ws/
source ./devel/setup.bash
rosrun plumbing_pub_sub demo04_sub_person
  • 启动窗口4
rosmsg

在这里插入图片描述

6 rossrv (服务通信) 功能包 plumbing_server_client

  • rossrv是用于显示有关ROS服务类型的信息的命令行工具,与 rosmsg 使用语法高度雷同
rossrv show    显示服务消息详情
rossrv info    显示服务消息相关信息
rossrv list    列出所有服务信息
rossrv md5    显示 md5 加密后的服务消息
rossrv package    显示某个包下所有服务消息
rossrv packages    显示包含服务消息的所有包
  • rossrv list:会列出当前 ROS 中的所有 srv 服务消息
  • rossrv list | grep -i addInts:使用管道筛选出服务消息
    在这里插入图片描述
  • rossrv packages:列出包含服务消息的所有包
  • rossrv package:列出某个包下的所有msg
//rossrv package 包名 
rossrv package turtlesim
  • rossrv show:显示消息描述
//rossrv show 消息名称
rossrv show turtlesim/Spawn
结果:
float32 x
float32 y
float32 theta
string name
---
string name
  • rossrv info:作用与 rossrv show 一致
    在这里插入图片描述
  • rossrv md5:对 service 数据使用 md5 校验(加密)

编译执行

  • 启动 roscore(窗口1)
roscore
  • 启动客户端(窗口2)
cd demo01_ws/
source ./devel/setup.bash
rosrun plumbing_server_client demo01_server
  • 启动窗口3
rossrv

在这里插入图片描述

7 rosparam (参数服务器) plumbing_param_server

  • rosparam包含rosparam命令行工具,用于使用YAML编码文件在参数服务器上获取和设置ROS参数
rosparam set    设置参数
rosparam get    获取参数
rosparam load    从外部文件加载参数
rosparam dump    将参数写出到外部文件
rosparam delete    删除参数
rosparam list    列出所有参数
  • rosparam list:列出所有参数
rosparam list//默认结果
/rosdistro
/roslaunch/uris/host_helloros_virtual_machine__42911
/rosversion
/run_id

在这里插入图片描述

  • rosparam set:设置参数
rosparam set name huluwa//再次调用 rosparam list 结果
/name
/rosdistro
/roslaunch/uris/host_helloros_virtual_machine__42911
/rosversion
/run_id

在这里插入图片描述

  • rosparam get:获取参数
    在这里插入图片描述

  • rosparam delete:删除参数

  • rosparam load(先准备 yaml 文件):从外部文件加载参数

  • rosparam dump:将参数写出到外部文件

编译执行

  • 窗口1
roscore
  • 窗口2
rosparam

在这里插入图片描述

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

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

相关文章

常见网络知识面试题总结

🍓个人主页:个人主页 🍒系列专栏:C/C基础与进阶 💬推荐一款模拟面试、刷题神器,从基础到大厂面试题👉点击跳转刷题网站进行注册学习 目录 1、OSI七层模型与TCPIP四层模型是什么? 2…

核爆!字节跳动算法大佬手写1000页数据算法笔记:Github已标星79k

数据结构是什么 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。 算法是什么 算法是对解题方案…

PC 端网页特效

一、元素偏移量 offset 系列 (一)offset 概述 1、offset 翻译过来就是偏移量,我们使用 offset 系列相关属性可以动态的得到该元素的位置(偏移)、大小等。 (1)获得元素距离带有定位父元素的位置; (2)获得元素自身的大小(宽度高度); (3)注意:返回的数值都不带单位…

使用polkadot.js在substrate frontier上安装ERC20token合约

使用polkadot.js在substrate frontier上安装ERC20token合约参考资料Substrate Frontier Node Template github.com/substrate-developer-hub/frontier-node-template frontier-node-template/examples/contract-erc20/truffle/contracts/MyToken.json安装ERC20 token合约 sourc…

SwiftUI AR教程之应用程序中使用 RealityKit 生成 3D 文本(教程含完整源码)

项目文件 基本设置 我们将从 Xcode 上的“增强现实应用程序”模板开始: 我使用 SwiftUI 作为界面,使用 Swift 作为语言,使用 RealityKit 作为内容技术: 您现在应该拥有基本的增强现实应用程序模板代码。 使用 RealityKit 生成 3D 文本网格 我们将向我们的项目添加一个函…

快速入门SSMS的使用

快速入门SSMS的使用1.Install SSMS2.Demo2.1 Export DDL2.2 XXXXX3.XXXX4.Waken1.Install SSMS 官方地址 SSMS Website: https://learn.microsoft.com/zh-tw/docs/. 也可以直接下载 Download Website: https://aka.ms/ssmsfullsetup.双击安装 要有电脑的管理员权限 快速启动…

springboot基于JAVA游戏周边商城设计与实现毕业设计源码261622

Springboot游戏周边商城的开发 摘 要 现今人们的生活方式逐渐丰富,电脑和网络已经融入了人们生活中的滴滴点点,无时不刻的影响着我们的日常生活,网络游戏已经进入到了大多数人的生活之中。在游戏的世界中人们会得到很多游戏商品,然…

死锁检测组件原理及代码实现

一、引言 所谓死锁,是指多个线程或进程各自持有某些资源,同时又等待着别的线程或进程释放它们现在所保持的资源,否则就不能向前推进。如下图:线程各自占有一把锁,还需要申请别的线程当前持有的锁,形成锁资…

Cisco简单配置(十四)—第一跳冗余协议—HSRP

为什么使用第一跳冗余 默认网关限制 如果路由器或路由器接口(作为默认网关)发生故障,配置该默认网关的主机将与外部网络隔离。在交换网络中,每个客户端仅收到一个默认网关。即使存在第二个路由可以从本地网段传输数据包&#xf…

微信小程序 java高校新生报到宿舍安排管理系统python php

将小程序权限按管理员和用户这两类涉及用户划分。 (a) 管理员;管理员使用本程序涉到的功能主要有:个人中心、宿舍管理、学生管理、宿舍安排管理、缴费信息管理、程序管理等功能 (b)用户进入程序前台可以实现首页、互助沟通、我的等功能 uni-app框架&…

基于java校园志愿者管理系统(java毕业设计)

基于java校园志愿者管理系统 校园志愿者系统是基于java编程语言,mysql数据库,springboot框架,idea开发工具进行开发,本系统主要分为志愿者和管理员两个角色,其中志愿者的主要功能是查看系统公告,活动信息&…

红队工具合集,安全er值得拥有

背景 圈内很多师傅一直在做红队安全工具箱,用于在hvv、渗透等工作中提升工作效率。依照ATT&CK威胁图谱的指导,我们很容易整理出常用的红队工具合集,在这里为大家展示。 工具介绍 信息搜集 信息搜集一直是渗透测试工作开展的重中之重,找到无人关注的老旧应用,先对…

leetcode 617. Merge Two Binary Trees 合并二叉树(简单)

直接用递归调用给定函数,先判断如果root1为空返回root2,如果root2为空返回root1,都存在的情况下建立新节点node,然后对root1和root2的左子节点调用递归并赋给node的左子节点,再对root1和root2的右子节点调用递归并赋给node的右子节点,返回node即可。一、题目大意 给你两棵…

虚拟机安装

ubuntu 虚拟机安装配置,以 18.04 为例 一、安装步骤 > 安装 vmware wmware 下载地址 : download 点击进入下载界面 点击并下载 windows 平台下的安装包 安装时直接一键下一步即可,也可根据自己需求勾选,最后的注册码可以自行…

吃个晚饭的时间,看明白三相交流感应电机驱动原理

💕三相交流感应单机驱动方式 物理开关:(接触器开关、正反向控制,星三角启动) 变频驱动:(软启动、变频器调速、一般无星三角启动) 💕一、物理开关驱动 🤞该电…

一般勒索要钱,医疗勒索“要命”!重保时期别让患者病无所依

最近,美宾夕法尼亚州医疗机构遭受勒索软件攻击,攻击者访问75628个人的健康信息,包含姓名、地址、电子邮件地址、出生日期、医疗诊断等信息。事实上,近年来全球医疗系统遭遇网络攻击的事件时有发生。2022年8月法国一家医院遭到勒索…

基于JAVA的TCP网络QQ聊天工具系统

目 录 1 功能设计 1 1.1功能概述 1 1.2功能模块图 1 2 逻辑设计 2 3 界面设计 4 3.1注册界面: 4 3.2登录界面 5 3.3好友列表页面 5 3.4好友聊天页面 6 3.5服务器界面 7 4 各模块详细设计 7 4.1登录模块 7 4.2注册模块 9 4.3聊天模块 10 4.4数据库工具类 12 4.5封装的…

springboot+vue外卖点餐系统 计科专业毕业设计选题 java餐厅点餐系统 ssm外卖订餐系统 外卖配送管理系统 java点餐系统

springboot+vue外卖点餐系统 计科专业毕业设计选题 java餐厅点餐系统 ssm外卖订餐系统 外卖配送管理系统 java点餐系统💖💖作者:IT跃迁谷毕设展 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓And…

基于Logistic回归麻雀算法-附代码

基于Logistic回归麻雀算法 文章目录基于Logistic回归麻雀算法1.麻雀搜索算法2.改进麻雀算法2.1 逐维小孔成像反向学习优化发现者位置2.2 基于 Logistic 模型的自适应因子3.实验结果4.参考文献5.Matlab代码6.python代码摘要:针对麻雀搜索算法后期种群多样性减少、易陷…

ajax 和 react 最显着的区别是什么?

ajax 和 react 最显着的区别是什么?What’s the most remarkable difference between ajax and react? 目前,Ajax 和 React 之间最大的区别之一是它们是帮助不同网页或应用程序以某种方式工作以使用户体验尽可能愉快的进程。 其他 Ajax 和 React 的区别 是一种主要用作开发用…