【ROS】ROS2命令行工具详解

news2024/11/24 15:56:21

1、简介

ROS1中每个功能都使用ros开头的命令行工具,如:roscore、rosrun等
ROS2中只有一个命令行工具ros2,各个功能模块通过参数子命令来实现

~$ ros2 -h
用法: ros2 [-h] [--use-python-default-buffering]  <command> ……

选项:
  -h, --help	帮助信息
  --use-python-default-buffering	使用python提供的缓冲作为标准输出的缓冲(有啥作用?)

子命令:
  action     动作
  bag        保存恢复运行状态
  component  组件
  daemon     守护程序
  doctor     检查ROS设置和其他潜在问题
  interface  显示有关ROS接口的信息
  launch     运行启动文件
  lifecycle  生命周期相
  multicast  多播
  node       节点
  param      参数
  pkg        软件包
  run        运行指定程序包中可执行文件
  security   安全
  service    服务
  topic      主题
  wtf        使用“wtf”作为“doctor”的别名

  调用“ros2 <command> -h”,可以查看每个子命令的详细用法

2、ros2 run

2.1 说明

运行一个可执行程序

2.2 用法

~$ ros2 run -h
用法: ros2 run [-h] [--prefix PREFIX] package_name executable_name [argv...]

参数:
  package_name     功能包名字
  executable_name  可执行程序名字
  argv...          传入可执行程序的参数
选项:
  -h, --help       帮助信息
  --prefix PREFIX  前缀PREFIX命令,该命令应位于可执行文件之前。如果命令包含空格,则必须用引号括起来
  	(例如 --prefix 'gdb -ex run --args').

2.3 示例

在终端1中启动小海龟

$ ros2 run turtlesim turtlesim_node

在终端2中启动键盘控制节点

$ ros2 run turtlesim turtle_teleop_key

效果:
在这里插入图片描述

3、ros2 node

3.1 说明

查看节点列表及节点信息

3.2 用法

~$ ros2 node -h
用法: ros2 node [-h] <command> -h

选项:
  -h, --help	帮助信息

子命令:
  info  输出指定节点的详细信息
  list  输出已经运行的所有节点

使用`ros2 node <command> -h` 进一步查看子命令的详细用法

3.2.1 ros2 node info

输出指定节点的详细信息

~$ ros2 node info -h
用法: ros2 node info [-h] [--spin-time SPIN_TIME] [-s] [--no-daemon]
                      [--include-hidden]
                      node_name

参数:
  node_name             指定节点的名字

参数:
  -h, --help            帮助信息
  --spin-time SPIN_TIME 等待发现的旋转时间(以秒为单位)(仅适用于未使用已运行的守护程序的情况)
  						啥是SPIN_TIME???
  -s, --use-sim-time    启用ROS模拟时间
  --no-daemon           不生成也不使用已经运行的守护进程
  --include-hidden      显示隐藏的主题、服务和操作

3.2.2 ros2 node list

输出已经运行的所有节点

~$ ros2 node list -h
用法: ros2 node list [-h] [--spin-time SPIN_TIME] [-s] [--no-daemon] [-a]
                      [-c]

选项:
  -h, --help            帮助信息
  --spin-time SPIN_TIME	等待发现的旋转时间(以秒为单位)(仅适用于未使用已运行的守护程序的情况)
  						啥是SPIN_TIME???
  -s, --use-sim-time    使能ROS模拟时间
  --no-daemon           不生成也不使用已经运行的守护进程
  -a, --all             显示所有隐藏的节点
  -c, --count-nodes     输出节点个数

3.3 示例

先启动两个节点,否则没有节点信息可打印

在终端1中启动小海龟

$ ros2 run turtlesim turtlesim_node

在终端2中启动键盘控制节点

$ ros2 run turtlesim turtle_teleop_key

在终端3中查看节点信息
1)列出所有节点

~$ ros2 node list
/teleop_turtle
/turtlesim

2)列出所有节点,包括隐藏的节点

~$ ros2 node list -a
/_ros2cli_daemon_0_dc38f22e498346f3ae67fb1689c0c662
/teleop_turtle
/turtlesim

3)输出节点的个数

~$ ros2 node list -c
2

4)输出节点的个数,包括隐藏的节点

~$ ros2 node list -c -a
3

5)输出指定节点的详细信息

~$ ros2 node info /teleop_turtle 
/teleop_turtle
  Subscribers:
    /parameter_events: rcl_interfaces/msg/ParameterEvent
  Publishers:
    /parameter_events: rcl_interfaces/msg/ParameterEvent
    /rosout: rcl_interfaces/msg/Log
    /turtle1/cmd_vel: geometry_msgs/msg/Twist
  Service Servers:
    /teleop_turtle/describe_parameters: rcl_interfaces/srv/DescribeParameters
	……
    /teleop_turtle/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
  Service Clients:

  Action Servers:

  Action Clients:
    /turtle1/rotate_absolute: turtlesim/action/RotateAbsolute

6)输出指定节点的详细信息,包含隐藏的主题、服务和操作

~$ ros2 node info /teleop_turtle --include-hidden 
/teleop_turtle
  Subscribers:
    /parameter_events: rcl_interfaces/msg/ParameterEvent
    /turtle1/rotate_absolute/_action/feedback: turtlesim/action/RotateAbsolute_FeedbackMessage
    /turtle1/rotate_absolute/_action/status: action_msgs/msg/GoalStatusArray
  Publishers:
    /parameter_events: rcl_interfaces/msg/ParameterEvent
    /rosout: rcl_interfaces/msg/Log
    /turtle1/cmd_vel: geometry_msgs/msg/Twist
  Service Servers:
    /teleop_turtle/describe_parameters: rcl_interfaces/srv/DescribeParameters
	……
    /teleop_turtle/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
  Service Clients:
    /turtle1/rotate_absolute/_action/cancel_goal: action_msgs/srv/CancelGoal
    /turtle1/rotate_absolute/_action/get_result: turtlesim/action/RotateAbsolute_GetResult
    /turtle1/rotate_absolute/_action/send_goal: turtlesim/action/RotateAbsolute_SendGoal
  Action Servers:

  Action Clients:
    /turtle1/rotate_absolute: turtlesim/action/RotateAbsolute

4、ros2 topic

4.1 说明

话题相关的命令:查看话题列表及详细信息、发布话题等操作

4.2 用法

~$ ros2 topic -h
用法: ros2 topic [-h] [--include-hidden-topics] <command> [-h]

选项:
  -h, --help            帮助信息
  --include-hidden-topics  包含隐藏的话题
子命令:
 bw 按主题显示使用的带宽
 delay 显示主题相对于时间戳的延迟
 echo 将消息打印到屏幕
 find 按类型查找主题
 hz 显示主题的发布率
 info 打印有关活动主题的信息
 list 列出活动主题
 pub 将数据发布到主题
 type 打印主题或字段类型

显示子命令的详细信息:ros2 topic <command> -h

4.2.1 ros2 topic bw

按主题显示使用的带宽

-h 打印帮助信息(后面不再赘述)
--window WINDOW, -w WINDOW 设置统计次数,当超过这个次数后,就不再打印带宽信息,默认是100
--spin-time SPIN_TIME	等待发现的旋转时间(以秒为单位)(仅适用于未使用已运行的守护程序的情况)
-s, --use-sim-time    使能ROS模拟时间

4.2.2 ros2 topic delay

示主题相对于时间戳的延迟

--window WINDOW, -w WINDOW 设置计算速率的统计次数,当超过这个次数后,就不再打印,默认是10000
--spin-time SPIN_TIME	同上
-s, --use-sim-time    同上

4.2.3 ros2 topic hz

显示主题的发布率

-w WINDOW, --window=WINDOW,统计屏率
–filter=EXPR,	过滤
–wall-time		使用现实时间
--spin-time SPIN_TIME	同上
-s, --use-sim-time    同上

4.3 示例

先启动两个节点,否则没有话题信息可打印

在终端1中启动小海龟

$ ros2 run turtlesim turtlesim_node

在终端2中启动键盘控制节点

$ ros2 run turtlesim turtle_teleop_key

在终端3中查看话题信息
1)列出所有话题

~$ ros2 topic list
/parameter_events
/rosout
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose

2)打印指定话题的带宽

~$ ros2 topic bw /turtle1/pose 
Subscribed to [/turtle1/pose]
1.51 KB/s from 62 messages
	Message size mean: 0.02 KB min: 0.02 KB max: 0.02 KB
1.51 KB/s from 100 messages
	Message size mean: 0.02 KB min: 0.02 KB max: 0.02 KB
……

3)打印话题内容

~$ ros2 topic echo /turtle1/pose 
x: 0.6691338419914246
y: 3.5571625232696533
theta: 2.6768147945404053
linear_velocity: 0.0
angular_velocity: 0.0
---

4)打印话题频率

~$ ros2 topic hz /turtle1/pose 
average rate: 62.492
	min: 0.015s max: 0.017s std dev: 0.00051s window: 64
average rate: 62.506
	min: 0.015s max: 0.017s std dev: 0.00051s window: 127
……

5)打印话题信息

~$ ros2 topic info /turtle1/pose 
Type: turtlesim/msg/Pose
Publisher count: 1
Subscription count: 0

6)打印话题详细信息

~$ ros2 topic info /turtle1/pose --verbose
Type: turtlesim/msg/Pose

Publisher count: 1

Node name: turtlesim
Node namespace: /
Topic type: turtlesim/msg/Pose
Endpoint type: PUBLISHER
GID: 01.0f.76.64.3a.29.f0.3d.01.00.00.00.00.00.1c.03.00.00.00.00.00.00.00.00
QoS profile:
  Reliability: RELIABLE
  History (Depth): UNKNOWN
  Durability: VOLATILE
  Lifespan: Infinite
  Deadline: Infinite
  Liveliness: AUTOMATIC
  Liveliness lease duration: Infinite

Subscription count: 0

7)发布话题

$ ros2 topic pub --rate 1 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"

5、ros2 service

5.1 说明

服务相关的命令:列出所有服务、呼叫服务等

5.2 用法

~$ ros2 service -h
用法: ros2 service [-h] [--include-hidden-services] <command> [-h]

选项:
  -h, --help            帮助信息
  --include-hidden-services 包含隐藏的服务

子命令:
  call  呼叫一个服务
  find  输出给定类型type的服务列表
  list  输出所有服务列表
  type  输出服务的类型
  
查看子命令的详细使用方法:ros2 service <command> -h

5.3 示例

先启动两个节点
在终端1中启动小海龟

$ ros2 run turtlesim turtlesim_node

在终端2中启动键盘控制节点

$ ros2 run turtlesim turtle_teleop_key

在终端3中操作服务相关命令
1)输出所有服务

~$ ros2 service list --include-hidden-services 
/clear
/kill
/reset
/spawn
/teleop_turtle/describe_parameters
……
/turtle1/rotate_absolute/_action/cancel_goal
……
/turtlesim/describe_parameters
……

2)输出指定类型type的服务

~$ ros2 service find turtlesim/srv/Spawn
/spawn

3)输出服务的类型

~$ ros2 service type /spawn
turtlesim/srv/Spawn

4)呼叫一个服务

$ ros2 service call /spawn turtlesim/srv/Spawn "{x: 2, y: 2, theta: 0.2, name: ''}"

6、ros2 action

6.1 说明

动作action相关的命令:列出动作、查看动作详细信息、发送动作

6.2 用法

子命令:
  info       输出指定动作的信息
  list       输出所有的动作
  send_goal  发送动作

6.3 示例

先启动两个节点
在终端1中启动小海龟

$ ros2 run turtlesim turtlesim_node

在终端2中启动键盘控制节点

$ ros2 run turtlesim turtle_teleop_key

在终端3中操作动作相关命令
1)输出所有动作

~$ ros2 action list
/turtle1/rotate_absolute

2)输出指定动作的信息

~$ ros2 action info /turtle1/rotate_absolute
Action: /turtle1/rotate_absolute
Action clients: 1
    /teleop_turtle
Action servers: 1
    /turtlesim

3)发送动作

$ ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute "theta: 3"

7、ros2 bag

7.1 说明

保存恢复运行状态,实现数据的录制与播放

7.2 用法

~$ ros2 bag -h
用法: ros2 bag [-h] <command> ...

子命令:
  convert  给定一个输入包,写出一个具有不同设置的新包
  info     输出包bag的信息
  list     输出所有的bag
  play     播放(恢复运行)一个bag
  record   录制(保存)一个bag
  reindex  重建包的元数据文件

子命令详细用法:ros2 bag <command> -h

7.3 示例

先启动两个节点
在终端1中启动小海龟

$ ros2 run turtlesim turtlesim_node

在终端2中启动键盘控制节点

$ ros2 run turtlesim turtle_teleop_key

在终端3中操作录制和播放bag的相关命令

$ ros2 bag record /turtle1/cmd_vel
$ ros2 bag play rosbag2_2022_04_11-17_35_40/rosbag2_2022_04_11-17_35_40_0.db3

(未完待续……)

、ros2

.1 说明

.2 用法

.3 示例

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二叉树的认识

愚昧将使你达不到任何成果&#xff0c;并在失望和忧郁之中自暴自弃。 --达芬奇 目录 &#x1f341;一.二叉树的概念 &#x1f341;二.二叉树的特点&#xff0c;结构 &#x1f341;三.三种特殊的二叉树 &#x1f341;1.斜树 &#x1f341;2.满二叉树 …

Learning C++ No.24 【哈希/散列实战】

引言&#xff1a; 北京时间&#xff1a;2023/5/20/7:30&#xff0c;周六&#xff0c;可惜有课&#xff0c;而且还是早八&#xff0c;说明我们现在没有多少的学习时间啦&#xff01;得抓紧把该博客的引言给写完&#xff0c;我们距离期末考越来越近啦&#xff01;再过一个星期就…

客服系统搭建,这些技能你必须知道

作为客服系统领域的专家&#xff0c;我来为大家介绍一些客服系统搭建的技能。在本文中&#xff0c;你将了解到如何搭建一个高效的客服系统以及如何应对可能出现的问题。 选择合适的客服系统 在选择客服系统时&#xff0c;需要考虑以下几个因素&#xff1a; 处理的工单量用户…

《人月神话》译文修订明细(3)-读者可以对照修改

《人月神话》译文修订明细&#xff08;1&#xff09;-读者可以对照修改 《人月神话》译文修订明细&#xff08;2&#xff09;-读者可以对照修改 《人月神话》译文修订如下&#xff0c;读者可以对照自己手上的书修改。 相关阅读 这回真要动刀子-征集《人月神话》中译本的翻译…

java开发学习框架

Java基础 1.1. Java简介与安装 1.2. Java基本语法 1.3. 数据类型与变量 1.4. 运算符与表达式 1.5. 流程控制&#xff08;分支与循环&#xff09; 1.6. 数组 面向对象编程 2.1. 类与对象 2.2. 继承与多态 2.3. 接口与抽象类 2.4. 封装与访问控制 2.5. 重载与覆盖 2.6. Java内存管…

【面试题】 ES6中将非数组转换为数组的三种方法

大厂面试题分享 面试题库 前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 web前端面试题库 VS java后端面试题库大全 我们常常想使用数组的方法&#xff0c;比如forEach&#xff0c;filter&#xff0c;又或者so…

ChatGPT、Java 8 文档、MySQL都说 JDBC 没必要 `Class.forName()`,结果报错了……

文章目录 回顾 Tomcat 部署 WAR 应用报错找不到数据库驱动的问题ChatGPT、Javadoc 和 MySQL 驱动都说没必要 Class.forName()实验创建一个最小复现问题的 Demo不调用 Class.forName("com.mysql.cj.jdbc.Driver")调用 Class.forName("com.mysql.cj.jdbc.Driver&q…

chatgpt赋能python:Python的输出功能及其应用

Python的输出功能及其应用 Python是一种高级编程语言&#xff0c;它具有动态类型的解释性能力&#xff0c;是一种简洁、易于学习和易于阅读的编程语言。Python拥有非常强大的输出功能&#xff0c;使得开发者可以以多种形式输出数据结果&#xff0c;这对于数据分析、数据处理和…

人工智能值不值得学习?人工智能就业方向及前景

人工智能值不值得学习? 一、人工智能值得学吗&#xff1f; 很多同学想要知道人工智能值得学吗&#xff1f;小编认为是值得的&#xff0c;具体原因有以下两点&#xff1a; 1、人工智能专业前景好&#xff0c;但人才紧缺 根据人工智能行业的专家预计&#xff0c;到2020年&am…

华为CE12808/S9700交换机istack/CSS堆叠主备倒换操作命令步骤

一、华为CE12808交换机&#xff0c;istack堆叠状态 1、设备型号&#xff1a; 交换机一&#xff1a; HUAWEI CE12808 交换机二&#xff1a; HUAWEI CE12808 2、istack堆叠主备倒换操作步骤&#xff1a; 2.1、设备当前配置保存并进行备份。 2.2、切换所用命令。 执行命令display…

红黑树的插入。

一&#xff0c;一颗红黑树满足的性质 ①每个结点或是红色&#xff0c;或是黑色。 ②根结点是黑色的。 ③叶结点&#xff08;虚构的外部节点NULL结点&#xff09;都是黑色的。 ④不存在两个相邻的红结点。 ⑤对每个结点&#xff0c;从该结点到任一结点的简单路径上&#xff0c;…

【JavaSE】Java基础语法(二十):多态

文章目录 1. 多态的概述2 .多态中的成员访问特点3. 多态的好处和弊端4. 多态中的转型5. 多态中转型存在的风险和解决方案 (应用)6. 多态的实用价值 1. 多态的概述 什么是多态 同一个对象&#xff0c;在不同时刻表现出来的不同形态 多态的前提 要有继承或实现关系要有方法的重写…

SQLite 数据库入门教程(GO)

文章目录 SQLite数据库入门教程一、SQLite 简介1、什么是 SQLite&#xff1f;2、为什么要用 SQLite&#xff1f; 二、SQLite 安装1、在 Windows 上安装 SQLite2、在 Linux 、Mac OS上安装 SQLite 三、SQLite 命令四、SQLite 使用1、SQLite 数据类型2、SQLite 语法3、SQLite 可视…

chatgpt赋能python:Python百分比怎么算?-从基础到逐层深入

Python百分比怎么算&#xff1f; - 从基础到逐层深入 Python是目前全球最流行的编程语言之一&#xff0c;由于其易学易用的特点&#xff0c;广泛地应用于数据处理、Web开发、自动化测试等不同领域。当我们需要对一些数据进行计算和分析时&#xff0c;经常需要对百分比进行计算…

Linux第二天

上传 scp -r 本地文件路劲 用户名目标主机地址&#xff1a;路径 下载&#xff1a;scp -r 用户名目标主机地址&#xff1a;路径 本地目录 ls -A /root //查看root文件下所有的隐藏文件 命令&#xff1a;ls 选项&#xff1a; -l&#xff1a;查看文件属性 -h&#xff1a;文…

【Python】继承与多态

知识目录 一、写在前面✨二、继承三、多态四、Account和FreeChecking类的实现五、总结撒花&#x1f60a; 一、写在前面✨ 大家好&#xff01;我是初心&#xff0c;希望我们一路走来能坚守初心&#xff01; 今天跟大家分享的文章是 Python中的继承与多态 &#xff0c;希望能帮…

在windows下安装linux和kali子系统

目录 安装子系统 报错解决官方方法 步骤 1 - 启用适用于 Linux 的 Windows 子系统 步骤 2 - 检查运行 WSL 2 的要求 步骤 3 - 启用虚拟机功能 步骤 4 - 下载 Linux 内核更新包 步骤 5 - 将 WSL 2 设置为默认版本 步骤 6 - 安装所选的 Linux 分发 排查安装问题 下载发行…

【JavaSE】Java基础语法(二十一):内部类

文章目录 1. 内部类的基本使用2. 成员内部类3. 局部内部类4. 匿名内部类5. 匿名内部类在开发中的使用&#xff08;应用&#xff09; 1. 内部类的基本使用 内部类概念 在一个类中定义一个类。举例&#xff1a;在一个类A的内部定义一个类B&#xff0c;类B就被称为内部类 内部类定…

YOLOv8目标检测实战:Android手机部署 (视频课程)

课程链接&#xff1a;https://edu.csdn.net/course/detail/38595 YOLOv8 目标检测基于先前 YOLO 版本的成功&#xff0c;引入了新功能和改进&#xff0c;进一步提升了性能和灵活性。 本课程在Windows上手把手演示YOLOv8&#xff08;YOLOv8n和YOLOv8s&#xff09;目标检测在An…

jvm 分析调优工具-学习笔记

jvm 分析调优工具 jps命令查看java进程pid jps 列出java进程名(不完整类名) 和pid jps -l 列出java进程名(完整类名) 和pid jmap命令查看java进程占用的jvm资源情况 jmap -histo pid 查看内存情况 jmap -heap pid 查看java程序的堆占用信息 jmap -dump 导出heap快照分析文件he…