当前位置: 首页 > news >正文

ros2手动发消息

目录

  • 🔎 1️⃣ `ros2 topic pub`
  • 🔎 2️⃣ `/test`
  • 🔎 3️⃣ `std_msgs/String`
  • 🔎 4️⃣ `"data: 'hello, xxx'"`
  • 🧠 整句话的完整意思
  • 🚀 默认行为
  • 🎯 如何验证?
  • 🧩 底层发生了什么?
  • 📌 总结(记住这一句就够)

这条命令是 ROS 2 里最常用的“手动发消息”命令,我们一行一行拆开讲 👇

ros2 topic pub /test std_msgs/String"data: 'hello, xxx'"

🔎 1️⃣ros2 topic pub

  • ros2→ ROS 2 命令行工具
  • topic→ 操作“话题”
  • pub→ publish(发布消息)

意思是:

向某个 topic 手动发布一条消息

注意是发送一条消息,而是持续发送!


🔎 2️⃣/test

这是话题名(topic name)

等价于代码里:

create_publisher<std_msgs::msg::String>("/test",10);

它表示:

把消息发到/test这个话题上

你可以用:

ros2 topic list

查看当前系统中有哪些 topic。


🔎 3️⃣std_msgs/String

这是消息类型

它来自:

Open Robotics 提供的标准消息包:

ROS 2 自带的std_msgs

完整类型名是:

std_msgs/msg/String

这个消息结构长这样:

string data

只有一个字段:data


🔎 4️⃣"data: 'hello, xxx'"

这是 YAML 格式的消息内容。

等价于 C++:

std_msgs::msg::String msg;msg.data="hello, xxx";publisher->publish(msg);

等价于 Python:

msg=String()msg.data="hello, xxx"pub.publish(msg)

🧠 整句话的完整意思

/test这个 topic 发布一条std_msgs/String类型的消息,内容是:

hello, xxx

🚀 默认行为

默认它会:

  • 每秒发 1 次
  • 一直循环发送
  • 按 Ctrl+C 停止

如果你只想发 1 次:

ros2 topic pub-1/test std_msgs/String"data: 'hello'"

🎯 如何验证?

开一个新终端:

ros2 topicecho/test

你会看到:

data: hello, xxx ---

🧩 底层发生了什么?

在你之前修 Cyclone DDS 的背景下,这条命令实际上做了:

  1. 创建一个 ROS 2 节点
  2. 初始化 RMW(比如rmw_cyclonedds_cpp
  3. 创建 publisher
  4. 通过 DDS 发送数据包

如果 DDS 配置错误(比如之前的 wlo1 问题),
这条命令会直接报:

failed to create domain

所以它也是一个很好的 DDS 测试命令 👍


📌 总结(记住这一句就够)

ros2 topic pub<话题名><消息类型><消息内容>

等价于:

用命令行代替代码发布一条 ROS 消息


如果你愿意,我可以再给你画一张:

ROS 2
→ Topic
→ DDS
→ 网络
→ 另一台机器

的完整通信流程图(非常清晰那种)。

http://www.jsqmd.com/news/617996/

相关文章:

  • 终极指南:如何在macOS上使用WeChatIntercept防止微信消息撤回
  • 实训5 合并代码
  • 用 Microsoft Agent Framework 构建 SubAgent(Multi-Agent)嵌
  • Wan2.2-I2V-A14B模型微调实战:使用自有数据集定制专属风格
  • STM32 Bootloader分区实战:12K空间如何优化配置(附Keil生成bin/hex命令)
  • [实战指南] 制造业首件检验报告(FAI)数字化流程:从图纸气泡标注到自动报表生成
  • 3个场景轻松搞定音频转换:fre:ac新手必学实用指南
  • 万事开头难,读懂屯卦的智慧,你就知道创业、求职、成家该怎么走
  • iOS应用性能优化全面解析:包体积、内存、流畅性、启动与耗电优化
  • 聊聊鑫汇锅炉空气预热器口碑好吗,江浙地区使用反馈大揭秘 - 工业品网
  • Fan Control架构解析:Windows平台风扇智能控制系统的深度技术实现
  • Keyviz:实时键鼠可视化工具,让你的操作清晰可见
  • 【JavaScript高级编程】拆解函数流水线 上战
  • 树莓派5变身AI语音助手:手把手教你用Qwen2.5-0.5B和Piper-TTS搭建离线聊天机器人(含完整代码)
  • BERT文本分割-中文-通用领域惊艳效果:长篇口语转写稿智能分段作品集
  • First post
  • 3分钟零门槛安装:Axure RP中文语言包全面解析
  • 如何用通达信缠论可视化插件提升你的交易分析效率:5分钟掌握专业技巧
  • Windows任务栏定制神器:7+ Taskbar Tweaker让你的桌面效率翻倍
  • 异步电动机实战解析:从铭牌参数到运行状态的工程视角
  • 别再只用摇杆移动角色了!解锁Joystick Pack插件的5个高级用法(含事件监听与状态机)
  • 激光雕刻入门指南:5分钟掌握LaserGRBL完整使用技巧
  • 梳理2026年盐城服务不错的抽芯铆钉工厂,怎么选择 - 工业推荐榜
  • 技术解析:77 GHz FMCW毫米波雷达如何实现高精度舱内乘员感知
  • UniApp项目体积爆了?别慌,手把手教你搞定‘vendor.js超过500KB’报错(含分包实战)
  • Switch第三方控制器终极指南:sys-con带来的完美解决方案
  • 010、AI硬件复兴:从NPU到专用芯片的创业路径
  • Uni-App项目踩坑记:用uni-file-picker实现图片上传,这5个细节问题你遇到了吗?
  • 3分钟学会Wallpaper Engine资源提取:RePKG免费开源工具终极指南
  • 小白友好!fft npainting lama图片修复教程:快速去除图片文字和多余物体