ROS2 命令行工具---常用命令整理

news2025/3/15 7:22:19

本文主要介绍 ROS2 机器人操作系统的一些常用命令行工具及其使用方法,使用这些命令可以使机器人编程和调试变得更加简便。

在实际应用过程中,我们会经常用到命令行操作来辅助调试,更进一步的可以使用GUI工具辅助调试。

一、创建工作空间

ROS相同,ROS 2也是建议创建一个工作空间,方便管理同一个项目的packages,而且也是将package源文件都放入src文件夹中。
创建工作空间: 

mkdir -p ~/ros2_ws/src
cd ros2_ws/src

 现在我们先关注 colcon 的编译过程,所以 package 源文件就先借用官网的。

在 ros2_ws/src 目录下运行以下命令:

git clone https://github.com/ros/ros_tutorials.git -b humble

从工作空间的根目录(ros2_ws)运行以下命令:

# cd if you're still in the ``src`` directory with the ``ros_tutorials`` clone
cd ..
rosdep install -i --from-path src --rosdistro humble -y

如果您已经具备了所有的依赖项,控制台会返回:

#All required rosdeps installed successfully

从工作空间的根目录(ros2_ws)开始,使用以下命令构建您的软件包:

colcon build

编译后,产生了 buildinstalllog 三个新文件夹。
如果要单独编译某一个 package,可以用如下命令:

colcon build --packages-select PACKAGE_NAME

如果不希望编译某一个 package,可以在该 package 中创建名为 COLCON_IGNORE 的空文件,colcon 就会忽略掉该 package,不但不编译,连 colcon list 都不显示,这个 package 对 colcon 就是透明的。

完成编译之后,要 source 一下 setup.bash 文件,确保系统能够找到当前编译生成的可执行文件和库:

source install/setup.bash

二、终端命令

1. ROS2 命令简介

ROS2 的主要命令入口是 ros2,其中又包含大量的子命令,可用于 ROS2 程序的开发和测试。下面是其中一些常用的命令及其作用:

  • ros2 run:运行 ROS2 节点或任意可执行文件。
  • ros2 launch:启动 ROS2 应用程序,可以同时启动多个节点。
  • ros2 pkg:用于操作 ROS2 软件包,包括创建 package、指定包名、编译方式、依赖项、节点名等。
  • ros2 node:用于管理 ROS2 节点,可以列出、杀死、查看节点等。
  • ros2 topic:用于管理 ROS2 话题(Topic),包括列出、发布、订阅、查看话题等。
  • ros2 service:用于管理 ROS2 服务(Service),包括列出、调用、创建、删除服务等。
  • ros2 action:用于管理 ROS2 行为(Action),包括列出、调用、取消行为等。
  • ros2 bag:用于记录和回放 ROS2 话题数据,可以将数据记录到文件中,以供后续回放和分析。
  • ros2 param:用于管理 ROS2 参数服务器,包括设置、获取、删除参数等。
  • ros2 msg 和 ros2 srv:用于查看 ROS2 消息和服务类型的定义。
  • ros2 doctor:用于检查 ROS2 环境是否正常,包括检查网络、环境变量、节点和话题等。

熟练掌握上述 ROS2 命令,可以帮助开发者对 ROS2 应用程序进行管理和监控,加快开发和调试速度。

2. ros2 run​

ros2 run 命令用于运行 ROS2 节点或任意可执行文件。

命令语法:

ros2 run <package_name> <executable_name>

示例:

ros2 run turtlesim turtle_teleop_key

还可以在启动 ROS2 节点时指定要加载的参数文件:

ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>

3. ros2 launch

ros2 launch 命令用于启动 ROS2 应用程序,可以同时启动多个节点。

命令语法:

ros2 launch <package_name> <launch_file_name>

示例:

ros2 launch launch_tutorial launch_turtlesim.launch.py

4. ros2 pkg

ros2 pkg 命令用于操作 ROS2 软件包,有 create、executables、list、prefix、xml 共 5 个子命令,我们常用的是前3个。

ros2 pkg create

命令功能:创建功能包,指定包名、编译方式、依赖项、节点名等

创建软件包:

ros2 pkg create <package_name> --build-type <build_type> 
                               --node-name  <node_name> 
                               --dependencies <your_dependencies>

例如:

ros2 pkg create my_package --build-type ament_cmake --node-name my_node --dependencies rclcpp std_msgs sensor_msgs

选项参数说明:

  • --build-type 用于指定编程语言,ament_cmake 表示使用 C++,ament_python 表示使用 Python。
  • --node-name 用于指定节点名,也是要生成的源码文件,可以后期创建,但是手动创建需要手动配置。
  • --dependencies 用于指定依赖模块,其中 rclcpp 是 C++ 必选的,rclpy 是 Python 必选的,std_msgs 和 sensor_msgs 是我们要用的消息模块,可暂不指定,后续手动配置。

ros2 pkg list

查看 ROS2 系统中所有软件包(注意:需要用 source 设置环境变量才能看到自己写的软件包)

ros2 pkg list

查看软件包中的可执行文件列表

ros2 pkg executables <package_name>

5. ros2 node

ros2 node 命令用于管理 ROS2 节点,包括 list 和 info 两个子命令。

5.1 ros2 node list

列出所有正在运行的节点名称:

ros2 node list

5.2 Remapping

Remapping 允许你重新分配默认节点属性,像节点名, topic 名,service 名等等;
重新分配节点名 /turtlesim 的方式如下:

ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle

此时会出现两个节点名:

/turtlesim
/my_turtle

5.3 ros2 node info

查看指定节点的信息:

ros2 node info <node_name>

6. ros2 topic

ros2 topic 命令用于管理 ROS2 话题(Topic),包括列出、发布、订阅、查看话题等。

topic 不一定是一对一的通信,它也可以是一对多、多对一或者多对多的。

该命令又包含多个子命令:

  • bw:显示话题使用的带宽;
  • delay:显示话题的延迟(基于消息头中的时间戳);
  • echo:输出指定话题的消息;
  • find:输出给定类型的可用主题列表;
  • hz:打印话题的平均发布率;
  • info:打印有关话题的信息;
  • list:输出可用的话题列表;
  • pub:向指定话题发布消息;
  • type:打印话题的类型。

6.1 ros2 topic list

在新的终端下运行 ros2 topic list 命令会返回在系统内所有当前活跃的 topic

ros2 topic list

例如,查看系统内所有当前活跃的话题:(-t 表示显示其类型)

ros2 topic list -t

 差异如下:

6.2 ros2 topic info

查看话题的详细信息:

ros2 topic info <topic_name>

6.3 ros2 topic type

查看主题消息类型:

ros2 topic type <topic_name>

6.4 ros2 topic find

 按消息类型查找相关主题

ros2 topic find <message_type>

命令加-c参数,只统计并显示数量 

6.5 ros2 topic hz

查看话题发布数据的速率:

ros2 topic hz <topic_name>

6.6 ros2 topic echo 

查看数据在话题上发布的情况:

ros2 topic echo <topic_name>

6.7 ros2 topic pub

该命令可以用来直接从命令行向一个 topic 内发布数据:

ros2 topic pub <topic_name> <msg_type> '<args>'

<args> 参数是实际数据,需要以 YAML 语法输入,示例如下:

  • 例1:
ros2 topic pub --once /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}}"

其中 --once 是一个可选参数,其意味着 “发布一个消息然后退出”。

  • 例2:
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}}"

这里 --rate 1 代替了 --once 选项,意思是以一个 1Hz 的稳定流发布命令。

6.8 ros2 topic bw

显示所查阅主题的带宽:

ros2 topic bw <topic_name>

6.9 ros2 topic delay

通过header中的时间戳计算消息延迟:

ros2 topic delay <topic_name>

7. ros2 service

ros2 service 命令用于管理 ROS2 服务(Service),包括列出、调用、创建、删除服务等。使用方法与 topic 命令类似,包括以下子命令:

  • call:调用一个服务;
  • find:查找指定类型的可用服务;
  • list:列出所有可用服务;
  • type:显示服务的类型。

例如,查看系统内所有可用服务:(-t 表示显示其类型)

ros2 service list -t

查找使用某类消息类型的服务:

ros2 service find <type_name>

查看服务接收的消息类型:

ros2 service type <service_name>

8. ros2 action

ros2 action 命令用于管理 ROS2 行为(Action),包括列出、调用、取消行为等。

例如,列出系统内所有 action:

ros2 action list

9. ros2 bag

ros2 bag 命令用于记录和回放 ROS2 话题数据,可以将数据记录到文件中,以供后续回放和分析。

录制发布到某个 topic 的消息:

ros2 bag record <topic_name>

查看录制好的 rosbag 信息:

ros2 bag info <bag_file_name>

回放 rosbag:

ros2 bag play <bag_file_name>

10. ros2 param

ros2 param 命令用于管理 ROS2 参数服务器,包括设置、获取、删除参数等。

该命令又包含多个子命令:

  • delete:删除参数;
  • describe:显示参数的描述信息;
  • dump:导出一个节点的所有参数到一个 yaml 文件;
  • get:获取参数;
  • list:输出系统内所有可用参数列表;
  • load:加载参数文件到一个节点;
  • set:设置参数。

例如,查看参数及其节点归属:

ros2 param list

获取当前参数的值:

ros2 param get <node_name> <parameter_name>

在运行时间内改变参数值:

ros2 param set <node_name> <parameter_name> <value>

将参数导出到一个文件:

可以将一个节点的所有参数值 “dump” 进一个文件以储存,使得之后能使用该命令:

ros2 param dump <node_name>

例如,如果想储存节点 /turtlesim 当前的配置参数,可以输入命令:

ros2 param dump /turtlesim

终端将会返回消息:

Saving to:  ./turtlesim.yaml

你将发现在该工作空间目录有一个新文件被写入了。打开该文件,会显示以下内容:

turtlesim:
  ros__parameters:
    background_b: 255
    background_g: 86
    background_r: 150
    use_sim_time: false

为了使用在上面保存的参数值,输入:

ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>

与之前运行可执行文件方式一样,就是多了两个 flags: ‘–ros-args’ 和 ‘–params-file’,之后再接上想要加载的文件。
紧接着上一节的示例,想要读取该参数,需输入命令:

ros2 run turtlesim turtlesim_node --ros-args --params-file ./turtlesim.yaml

11. ros2 interface

分类显示系统内所有的接口,包括消息(Messages)、服务(Services)、动作(Actions)

ros2 interface list

显示指定接口包内的子接口

ros2 interface package <interface_name>

显示指定接口包

ros2 interface packages

显示指定接口的详细内容

ros2 interface show <interface_name>

用于消息类型Messsage 

用于服务Service

 用于动作Action

显示消息模板

ros2 interface proto <message_name>

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

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

相关文章

数据结构——第7章 查找

1 线性表的查找 数据元素和顺序表的定义 typedef struct{KeyType key;InfoType otherinfo; }ElemType; typedef struct{ElemType *R;int length; }SSTable; 1.1 顺序查找 int Search_Seq(SSTable ST,KeyType key){ST.R[0].keykey;for(int iST.length;ST.R[i].key!key;i--);…

SQLAlchemy的使用

SQLAlchemy中filter函数的使用 https://blog.csdn.net/m0_67093160/article/details/133318889 创建临时字段 select id , CONCAT(‘内容’) AS fullname from example_table; Pandas数据类型转换_pandas转换数据类型 https://blog.csdn.net/qq_41404557/article/details/125…

用wps自带工具给图片做标注

在wps中&#xff0c;选中wps中的图片&#xff0c;右键选择【编辑】进入图片编辑器&#xff0c;在选项卡面板右侧选择【标注】工具&#xff0c;再选择【添加文本】工具&#xff0c;即可直接在图片上输入文字&#xff0c;标注完成后选择【覆盖原图】就完成标注任务。

【3200字干货】2024跨境电商5大市场:选品风向深度剖析

以下是针对马来西亚、新加坡、泰国、菲律宾和台湾这5个东南亚跨境电商市场的选品市场分析&#xff1a; 一、马来西亚 市场特点&#xff1a;马来西亚是东南亚第三大经济体&#xff0c;拥有年轻的消费群体和对跨境购物的偏好。网购消费力强&#xff0c;易上手爆单&#xff0c;跨…

tableau基础学习——添加标靶图、甘特图、瀑布图

标靶图 添加参考线 添加参考分布 甘特图 创建新的字段 如设置延迟天数****计划交货日期-实际交货日期 为正代表提前交货&#xff0c;负则代表延迟交货 步骤&#xff1a;创建——计算新字段 把延迟天数放在颜色、大小里面就可以 瀑布图 两个表按照地区连接 先做个条形图&…

Python构建学生信息管理系统:网站路由补充和首次运行

在之前的内容中&#xff0c;我们已经完成了学生信息管理系统&#xff08;Student Information Management System, SIMS&#xff09;的需求分析、环境搭建、数据库创建、项目结构的初始化&#xff0c;以及运行。正常做下来的朋友&#xff0c;会发现项目运行后输入http://127.0.…

vscode在json文件中添加注释

1.在设置中输入关联文件&#xff0c;点击添加项&#xff1b; 2.

ClickHouse 24.3 版本发布说明

本文字数&#xff1a;10774&#xff1b;估计阅读时间&#xff1a;27 分钟 审校&#xff1a;庄晓东&#xff08;魏庄&#xff09; 本文在公众号【ClickHouseInc】首发 北半球迎来春天&#xff0c;也是 ClickHouse 发布新版本的时候了。 发布概要 本次ClickHouse 24.3版本包含了1…

Android 系统充电动画

效果 Android获取电池充电状态是否为快充可参考. Android_source/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java private int lastBatteryStatus;private final BroadcastReceiver mBatteryChangedReceiver new BroadcastRece…

ComfyUI学习旅程

一、模型文件&#xff08;Checkpoint&#xff09; 首先它很大&#xff0c;这些文件是你从huggingface或者civitai下载而来的&#xff0c; 所以这些大文件如 .ckpt 或 .safetensors &#xff0c;实际上包含了什么内容呢&#xff1f; 它包含了包含了三种不同模型的权重&#x…

【STM32F4】STM32CUMX相关环境配置

一、环境配置 我们需要以下两个软件 &#xff08;一&#xff09;keil5 最正统&#xff0c;最经典的嵌入式MCU开发环境。 该环境的配置可以看看之前的文章 所需文件如下&#xff1a; 当时配置的是STC8H的环境&#xff0c;现在基于此&#xff0c;重新给STM32配置环境。能让STC…

docker的默认路径存储不足

docker的默认路径存储不足 添加磁盘 [rootlocalhost ~]# fdisk -l磁盘 /dev/sda&#xff1a;42.9 GB, 42949672960 字节&#xff0c;83886080 个扇区 Units 扇区 of 1 * 512 512 bytes 扇区大小(逻辑/物理)&#xff1a;512 字节 / 512 字节 I/O 大小(最小/最佳)&#xff1a…

【网络安全】网络安全协议和防火墙

目录 1、网络层的安全协议&#xff1a;IPsec 协议族 &#xff08;1&#xff09;IP 安全数据报格式 &#xff08;2&#xff09;互联网密钥交换 IKE (Internet Key Exchange) 协议 2、运输层的安全协议&#xff1a;TLS 协议 3、系统安全&#xff1a;防火墙与入侵检测 1、网络…

CJSON工具类

4.4.3.CJSON工具类 OpenResty提供了一个cjson的模块用来处理JSON的序列化和反序列化。 官方地址&#xff1a; https://github.com/openresty/lua-cjson/ 1&#xff09;引入cjson模块&#xff1a; local cjson require "cjson"2&#xff09;序列化&#xff1a; …

pwn--realloc [CISCN 2019东南]PWN5

首先学习一下realloc这个函数&#xff0c;以下是文心一言的解释&#xff1a; realloc是C语言库函数之一&#xff0c;用于重新分配内存空间。它的主要功能是调整一块内存空间的大小。当需要增加内存空间时&#xff0c;realloc会分配一个新的更大的内存块&#xff0c;然后将原内…

19 使用MapReduce编程统计超市1月商品被购买的次数

首先将1月份的订单数据上传到HDFS上&#xff0c;订单数据格式 ID Goods两个数据字段构成 将订单数据保存在order.txt中&#xff0c;&#xff08;上传前记得启动集群&#xff09;。 打开Idea创建项目 修改pom.xml&#xff0c;添加依赖 <dependencies><dependency>…

多客圈子交友系统 uniapp+thinkphp6适配小程序/H5/app/api全开源,多款插件自选,支持个性定制!

网上交友的优点包括&#xff1a; 1. 方便&#xff1a;网上交友可以随时随地进行&#xff0c;不受时间和空间的限制&#xff0c;方便且高效。 2. 匿名性&#xff1a;网上交友可以实现匿名性&#xff0c;用户可以匿名地搜索、聊天或交换信息&#xff0c;保护个人隐私和安全。 3.…

Linux——进程基本概念中篇

Linux——进程基本概念中篇 文章目录 Linux——进程基本概念中篇一、通过系统调用创建进程——fork1.1 fork的理解1.2 fork的返回值 二、进程状态2.1 运行状态2.2 睡眠状态和休眠状态2.3 停止状态和死亡状态2.4 僵尸进程2.5 孤儿进程2.6 前台和后台进程 三、进程优先级3.1 查看…

redis中的集群模式

主从复制、主从同步(解决高并发读的问题) 主从同步原理&#xff1a; 1.全量同步 slave&#xff08;从节点&#xff09;每次请求数据同步会带两个参数&#xff1a;replid和offset。 replid&#xff1a;第一次请求同步时&#xff0c;replid和master的replid不一样&#xff0c;这…

使用FPGA实现逐级进位加法器

介绍 逐级进位加法器就是将上一位的输出作为下一位的进位输入&#xff0c;依次这样相加。下面以一个8位逐级进位加法器给大家展示。 我增加了电路结构&#xff0c;应该很容易理解吧。 下面我也列举了一位加法器&#xff0c;可以看下。 电路结构 设计文件 1位加法器 librar…