【ROS 2】运行 ROS 2 机器人 ( ROS 2 机器人示例 - 海龟仿真器 | ROS 节点分析工具 - rqt | ros2 run 命令解析 | ros2 run 基础格式和完整格式 )

【ROS 2】运行 ROS 2 机器人 ( ROS 2 机器人示例 - 海龟仿真器 | ROS 节点分析工具 - rqt | ros2 run 命令解析 | ros2 run 基础格式和完整格式 )

文章目录

在上一篇博客 【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 功能包中编译生成的可执行文件, 运行后会启动海龟仿真器的核心节点 ;

Read more

Z-Image-GGUF开源模型价值:通义实验室技术下沉,普惠AI绘画生产力

Z-Image-GGUF开源模型价值:通义实验室技术下沉,普惠AI绘画生产力 1. 从“云端神坛”到“桌面工具”:一次技术普惠的实践 如果你对AI绘画感兴趣,大概率听说过Stable Diffusion、Midjourney这些名字。它们很强大,但门槛也摆在那里:要么需要付费订阅,要么需要一台性能强劲、显存充足的电脑,让很多创意工作者和爱好者望而却步。 今天要聊的Z-Image-GGUF,就是来打破这个局面的。它不是什么遥不可及的实验室产物,而是阿里巴巴通义实验室将前沿的Z-Image文生图模型,通过GGUF量化技术“压缩”后,打包成的一个开箱即用的工具。简单来说,它让曾经需要高端显卡才能流畅运行的AI绘画能力,现在用一张主流的消费级显卡(比如RTX 4060 Ti以上)就能体验。 这背后的核心价值,我称之为 “技术下沉” 。大厂不再把最先进的技术仅仅封装在云端API后面按次收费,而是通过开源和量化,把它变成开发者、设计师甚至普通用户都能在本地部署和把玩的“生产力工具”。这不仅仅是降低了使用成本,更重要的是赋予了用户完全的控制权和数据隐私,让创意过程真正回归到个人手中。 接

Ollama性能优化实战:如何用llama C++在Mac M2上提升qwen:7b推理速度

Ollama性能优化实战:如何用llama C++在Mac M2上提升qwen:7b推理速度 当你在Mac M2上运行qwen:7b这样的开源大语言模型时,是否曾为推理速度不够理想而困扰?作为一款基于llama C++的高效推理框架,Ollama在Apple Silicon平台上展现出了惊人的性能潜力。本文将深入剖析如何充分利用M2芯片的硬件特性,通过一系列优化手段将模型推理速度提升到新的高度。 1. 理解Ollama与llama C++的底层架构 Ollama之所以能在Mac平台上表现出色,很大程度上得益于其底层llama C++的精巧设计。这套纯C/C++实现的推理引擎针对现代处理器架构做了深度优化: * 无依赖的轻量级设计:完全摆脱了Python生态的包袱,避免了解释器开销 * 硬件指令级优化:针对不同CPU架构实现了特定指令集加速 * 多精度量化支持:从1.5位到8位的整数量化方案大幅减少内存占用 在M2芯片上,llama C++主要通过三个关键技术实现加速: 1. ARM NEON指令集:用于加速矩阵乘法和向量运算 2. Accelerate框架:苹果

5分钟玩转Cute_Animal_For_Kids_Qwen_Image,儿童专属AI绘画一键生成

5分钟玩转Cute_Animal_For_Kids_Qwen_Image,儿童专属AI绘画一键生成 1. 引言:为什么需要专为儿童设计的AI绘画工具? 在当前AIGC快速发展的背景下,图像生成技术已广泛应用于教育、娱乐和创意表达领域。然而,大多数通用AI绘画模型生成的内容偏向写实或艺术化风格,难以满足儿童用户对“可爱”、“卡通”、“安全”内容的需求。 Cute_Animal_For_Kids_Qwen_Image 镜像正是基于这一痛点打造——它依托阿里通义千问(Qwen)视觉语言大模型,经过特定数据微调与风格优化,专注于生成适合儿童审美的动物形象图片。只需输入简单的文字描述,如“一只戴帽子的小兔子在草地上跳舞”,即可快速获得色彩明亮、造型圆润、无危险元素的卡通图像。 本篇文章将带你从零开始,全面掌握该镜像的使用方法、底层工作原理以及实际应用技巧,帮助家长、教师或开发者快速上手并部署这一儿童友好型AI绘画工具。 2. 快速上手:三步生成你的第一张儿童向AI画作 2.1 环境准备与镜像加载 首先确保你已成功加载

Llama-3.2V-11B-cot从零开始:模型路径修改→启动→传图→提问全链路

Llama-3.2V-11B-cot从零开始:模型路径修改→启动→传图→提问全链路 1. 项目简介 Llama-3.2V-11B-cot是基于Meta Llama-3.2V-11B-cot多模态大模型开发的高性能视觉推理工具,专为双卡4090环境优化。它解决了视觉权重加载等关键问题,支持CoT(Chain of Thought)逻辑推演和流式输出,通过Streamlit提供现代化聊天界面,让11B级大模型的视觉推理能力触手可及。 1.1 核心优势 * 开箱即用:预置最优参数,无需复杂配置 * 双卡优化:自动分配两张4090显卡资源 * 新手友好:仿日常聊天软件的交互设计 * 推理透明:展示完整思考过程而非仅结果 2. 环境准备 2.1 硬件要求 * 显卡:双NVIDIA RTX 4090(24GB显存) * 内存:建议64GB以上 * 存储:至少50GB可用空间 2.2 软件依赖