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

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

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

作用
和之前介绍的文件系统操作命令比较,文件操作命令是静态的,操作的是磁盘上的文件,而上述命令是动态的,在ROS程序启动后,可以动态的获取运行中的节点或参数的相关信息。
另请参考:
http://wiki.ros.org/ROS/CommandLineTools
在这里插入图片描述

rosnode : 操作节点

输出命令直接回车或者在命令后-h可以看帮助帮助文档

can@volcano:~/demo03_ws$ rosnode
rosnode is a command-line tool for printing information about ROS Nodes.

Commands:
        rosnode ping    test connectivity to node
        rosnode list    list active nodes
        rosnode info    print information about node
        rosnode machine list nodes running on a particular machine or list machines
        rosnode kill    kill a running node
        rosnode cleanup purge registration information of unreachable nodes

Type rosnode <command> -h for more detailed usage, e.g. 'rosnode ping -h'

翻译

rosnode 是用于查看 ROS 节点信息的命令行工具

可用指令:

  • rosnode ping 测试与某个节点的连通性
  • rosnode list 列出当前正在运行的节点
  • rosnode info 查看指定节点的详细信息
  • rosnode machine 查看指定主机上运行的节点 / 查看运行节点的主机
  • rosnode kill 终止运行中的指定节点
  • rosnode cleanup 清除无效失联节点的注册信息

输入 rosnode <指令> -h 查看详细用法,例如:rosnode ping -h
在这里插入图片描述

rostopic : 操作话题

can@volcano:~/demo03_ws$ rostopic
rostopic is a command-line tool for printing information about ROS Topics.

Commands:
        rostopic bw     display bandwidth used by topic
        rostopic delay  display delay of topic from timestamp in header
        rostopic echo   print messages to screen
        rostopic find   find topics by type
        rostopic hz     display publishing rate of topic    
        rostopic info   print information about active topic
        rostopic list   list active topics
        rostopic pub    publish data to topic
        rostopic type   print topic or field type

Type rostopic <command> -h for more detailed usage, e.g. 'rostopic echo -h'

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 : 获取话题详情(比如列出:发布者和订阅者个数…)

  • rostopic pub

可以直接调用命令向订阅者发布消息

为roboware 自动生成的 发布/订阅 模型案例中的 订阅者 发布一条字符串

rostopic pub /主题名称 消息类型 消息内容

在这里插入图片描述
在这里插入图片描述

rosservice : 操作服务

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 find

根据消息类型获取话题

  • rosservice info

获取服务话题详情

  • rosservice type

获取消息类型

rosservice uri

获取服务器 uri

rosmsg : 操作msg消息

rosmsg是用于显示有关 ROS消息类型的 信息的命令行工具。

rosmsg show 显示消息描述
rosmsg info 显示消息信息
rosmsg list 列出所有消息
rosmsg md5 显示 md5 加密后的消息
rosmsg package 显示某个功能包下的所有消息
rosmsg packages 列出包含消息的功能包

rossrv : 操作srv消息

rossrv是用于显示有关ROS服务类型的信息的命令行工具,与 rosmsg 使用语法高度雷同。

rossrv show 显示消息描述
rossrv info 显示消息信息
rossrv list 列出所有消息
rossrv md5 显示 md5 加密后的消息
rossrv package 显示某个功能包下的所有消息
rossrv packages 列出包含消息的功能包

rosparam : 操作参数

rosparam包含rosparam命令行工具,用于使用YAML编码文件在参数服务器上获取和设置ROS参数

can@volcano:~$ rosparam -h
rosparam is a command-line tool for getting, setting, and deleting parameters from the ROS Parameter Server.

Commands:
	rosparam set	set parameter
	rosparam get	get parameter
	rosparam load	load parameters from file
	rosparam dump	dump parameters to file
	rosparam delete	delete parameter
	rosparam list	list parameter names

rosparam set 设置参数
rosparam get 获取参数
rosparam load 从外部文件加载参数
rosparam dump 将参数写出到外部文件
rosparam delete 删除参数
rosparam list 列出所有参数

在这里插入图片描述

学习的为赵虚左老师的教程 1.老师的文档 2.老师的视频
在笔记上理论部分大量参考了老师的文档

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐