【ROS 2】运行 ROS 2 机器人 ( ROS 2 机器人示例 - 海龟仿真器 | ROS 节点分析工具 - rqt | ros2 run 命令解析 | ros2 run 基础格式和完整格式 )
一、ROS 2 机器人示例 - 海龟仿真器1、启动海龟仿真器节点2、启动控制节点3、ROS 节点分析工具 - rqt二、ros2 run 命令解析1、设计理念2、ros2 run 基础格式3、ros2 run 完整格式4、启动海龟仿真器命令分析
文章目录
在上一篇博客 【ROS 2】ROS 2 Humble 完整环境配置 ( VirtualBox 7.2.4 + Ubuntu 22.04.5 LTS + ROS 2 Humble ) 中 , 安装了 ROS 2 Humble 环境 , 本篇博客开始进行 ROS 2 开发 ;
一、ROS 2 机器人示例 - 海龟仿真器
1、启动海龟仿真器节点
执行
ros2 run turtlesim turtlesim_node
命令 , 启动 海龟仿真器 节点 ,

2、启动控制节点
在另一个 命令行终端 运行
ros2 run turtlesim turtle_teleop_key
命令 , 可以 通过 键盘方向键 控制 海龟 旋转 移动 ;
选中 该 命令行终端 , 使用 左右箭头 控制 海龟方向 , 使用 向上箭头 控制 前进 , 使用 向下箭头 控制 后退 ;

3、ROS 节点分析工具 - rqt
在 终端一 启动了 海龟模拟器 节点 ,
在 终端二 启动了 控制节点 , 可以通过 上下左右 箭头按键 控制 海龟 左右旋转 和 前后移动 ;
在 终端二 可以控制 海龟模拟器 窗口 中的 海龟移动 , 下面分析其中的控制过程 ;
在 终端三 输入
rqt
命令 , 这是 ROS 2 提供的 节点 分析工具 ;

选择 rqt 工具中的 " Plugins / Instrospection / Node Graph " 选项 , 这是 ROS 2 的 节点图 ,

如果打开后 , 节点图内容太小 , 可以使用 鼠标滚轮 滚动 放大显示 ;
点击 Fit 键后面的
按钮 , 可以让节点图自适应填充满整个界面 ;

鼠标左键点击 节点图 中的元素 , 会变成如下样式 :
- 左侧的 /turtlesim 是 海龟模拟器 节点
- 右侧的 /teleop_turtle 是 键盘控制节点 , 右侧节点 通过 话题 向 左侧节点 发送了 控制命令 /turtle1/cmd_vel ;

二、ros2 run 命令解析
1、设计理念
ros2 run 命令 是 ROS 2 命令行工具 中 用于 启动 单个功能包 内 可执行文件节点 的核心子命令 , 其格式设计严格遵循 ROS 2 " 功能包 - 可执行文件 - 参数分离 " 的设计理念 ,
ros2 run 分为 基础格式 ( 仅启动可执行文件 ) 和 完整格式 ( 含可执行文件参数 + ROS 层面参数 ) , 完整格式 覆盖所有场景 ;
ros2 run 的核心逻辑是 " 定位功能包 -> 找到可执行文件 -> 启动并接入 ROS 2 通信 " , 其格式设计的关键是 分离 " 可执行文件自身参数 " 和 " ROS 层面参数 " ( 通过 --ros-args 分隔 ) ;
掌握该格式的核心是 : 明确必选部分的匹配规则、可选部分的顺序要求 , 以及参数解析的边界 ;
2、ros2 run 基础格式
ros2 run 基础格式 命令格式如下 :
ros2 run <package_name> <executable_name>
ros2参数 : ROS 2 命令行入口 , 所有 ROS 2 终端操作的统一前缀 ( 加载 ROS 2 核心工具链、DDS 通信层 ) ;run参数 : ros2 的子命令 , 功能是 :- 查找功能包 : 查找 系统 / 本地 工作空间 中已安装的 <package_name> ;
- 定位可执行 : 定位该 功能包 内 编译生成的 <executable_name> ;
- 启动执行 : 启动该 可执行文件 , 并 自动接入 ROS 2 通信系统 ( 成为 ROS 2 节点 ) ;
<package_name>参数 : 功能包名称 ;- 功能包来源 : 已 通过 colcon build 编译 ( 本地工作空间 ) 或 apt install 安装 ( 系统级 ) ;
- 命名规范 : 遵循 ROS 2 命名规范 ( 小写字母 + 下划线 , 如 turtlesim、my_robot_pkg ) ;
<executable_name>参数 : 是 功能包下 的 编译生成 的 可执行文件 名称 ;- 配置位置 : 是 CMakeLists.txt/setup.py 中声明的 可执行目标名 ;
3、ros2 run 完整格式
ros2 run 完整格式 命令格式如下 :
ros2 run <package_name> <executable_name> [executable_args...] [--ros-args <ros_args...>]
<>符号 : 表示 该参数 是 必选参数 , 需替换为实际值 , 最终 不保留尖括号 ;[]符号 : 表示 该参数 是 可选参数 , 可省略 ;...符号 : 表示 该参数 是 可重复参数 , 多个值用空格分隔 ;[executable_args...]参数 : 该参数 是 传给可执行文件自身的参数 , 非 ROS 层面参数 , 由 可执行文件 的 代码解析 , ROS 2 CLI 不处理 , 一般都是 自定义节点的配置文件路径、阈值、模式等 ;[--ros-args <ros_args...>]参数 : 该参数 是 ROS 2 层面的参数配置 ( 核心分隔符 ) ,--ros-args之后的所有参数均由 ROS 2 核心解析 , 而非传给可执行文件 ; 常用子参数如下 :--remap参数 : 重映射 ( 节点名、命名空间、话题 / 服务名 ) ;--log-level参数 : 设置日志等级 ( DEBUG/INFO/WARN/ERROR/FATAL ) ;--param参数 : 设置节点参数 ( 需节点支持 ) ;--env参数 : 设置节点运行的环境变量 ;
4、启动海龟仿真器命令分析
以启动 海龟模拟器 的 命令参数 为例 进行分析 :
ros2 run turtlesim turtlesim_node
- ros2 参数 : 是 ROS 2 核心命令行入口 , 所有 ROS 2 终端操作均以该关键词开头 ( 如 ros2 node/ros2 topic ) ;
- run 参数 : 是 ros2 的子命令 , 功能是 从指定功能包中找到并运行对应的可执行文件 ( 本质是启动一个 ROS 2 节点 ) ;
- turtlesim 参数 : 是 功能包名称 ( package name ) , turtlesim 是 ROS 2 内置的示例功能包 , 封装了海龟仿真器的所有代码 ( 包括节点、话题、服务、动作等逻辑 ) ;
- turtlesim_node 参数 : 是 可执行文件名称 ( executable name ) , turtlesim 功能包中编译生成的可执行文件 , 运行后会启动海龟仿真器的核心节点 ;
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)