@foxglove/rosmsg

中文文档
5.0.5发布于 2025/10/14MITTypeScriptCommonJS构建来源已验证近 30 天下载 78.5万

ROS 和 ROS 2 .msg 定义的解析器

中文使用文档
文档目录7 节
  1. 导言
  2. ROS 1 定义使用法
  3. ROS 2 定义使用法
  4. ROS 2 IDL 支助
  5. 许可证
  6. 释放
  7. 保持联系

@foxglove/rosmsg (英语)

ROS1 和 ROS2 信件定义解析器

npm version

导言

机器人操作系统(ROS) 定义用于描述数据类型的简化消息描述语言。 这个库解析了这些消息定义,并可以环绕它们返回到适合校验和生成的犬形字符串格式. 解析后的定义与其他库对接时,对序列化或去序列化有用.

此库支持两者 罗斯1号 财务报告和审定财务报表 报告2 消息定义.

ROS 1 定义使用法

import { parse, stringify } from "@foxglove/rosmsg";

const definitionStr = `# geometry_msgs/Pose
geometry_msgs/Point position
geometry_msgs/Quaternion orientation

===
MSG: geometry_msgs/Point
float64 x
float64 y
float64 z

===
MSG: geometry_msgs/Quaternion
float64 x
float64 y
float64 z
float64 w`;

const messageDefinition = parse(definitionStr);

// print the parsed message definition structure
console.log(JSON.stringify(messageDefinition, null, 2));

指纹 :

[
  {
    "definitions": [
      {
        "type": "geometry_msgs/Point",
        "isArray": false,
        "name": "position",
        "isComplex": true
      },
      {
        "type": "geometry_msgs/Quaternion",
        "isArray": false,
        "name": "orientation",
        "isComplex": true
      }
    ]
  },
  {
    "name": "geometry_msgs/Point",
    "definitions": [
      {
        "type": "float64",
        "isArray": false,
        "name": "x",
        "isComplex": false
      },
      {
        "type": "float64",
        "isArray": false,
        "name": "y",
        "isComplex": false
      },
      {
        "type": "float64",
        "isArray": false,
        "name": "z",
        "isComplex": false
      }
    ]
  },
  {
    "name": "geometry_msgs/Quaternion",
    "definitions": [
      {
        "type": "float64",
        "isArray": false,
        "name": "x",
        "isComplex": false
      },
      {
        "type": "float64",
        "isArray": false,
        "name": "y",
        "isComplex": false
      },
      {
        "type": "float64",
        "isArray": false,
        "name": "z",
        "isComplex": false
      },
      {
        "type": "float64",
        "isArray": false,
        "name": "w",
        "isComplex": false
      }
    ]
  }
]

ROS 2 定义使用法

import { parse, stringify } from "@foxglove/rosmsg";

const definitionStr = `# geometry_msgs/msg/Pose
geometry_msgs/msg/Point position
geometry_msgs/msg/Quaternion orientation

===
MSG: geometry_msgs/msg/Point
float64 x
float64 y
float64 z

===
MSG: geometry_msgs/msg/Quaternion
float64 x
float64 y
float64 z
float64 w`;

const messageDefinition = parse(definitionStr, {ros2: true});

// stringify(messageDefinition) will return a canonical string, similar to
// _definitionStr_
// print the parsed message definition structure
console.log(JSON.stringify(messageDefinition, null, 2));

指纹 :

[
  {
    "definitions": [
      {
        "type": "geometry_msgs/msg/Point",
        "isArray": false,
        "name": "position",
        "isComplex": true
      },
      {
        "type": "geometry_msgs/msg/Quaternion",
        "isArray": false,
        "name": "orientation",
        "isComplex": true
      }
    ]
  },
  {
    "name": "geometry_msgs/msg/Point",
    "definitions": [
      {
        "type": "float64",
        "isArray": false,
        "name": "x",
        "isComplex": false
      },
      {
        "type": "float64",
        "isArray": false,
        "name": "y",
        "isComplex": false
      },
      {
        "type": "float64",
        "isArray": false,
        "name": "z",
        "isComplex": false
      }
    ]
  },
  {
    "name": "geometry_msgs/msg/Quaternion",
    "definitions": [
      {
        "type": "float64",
        "isArray": false,
        "name": "x",
        "isComplex": false
      },
      {
        "type": "float64",
        "isArray": false,
        "name": "y",
        "isComplex": false
      },
      {
        "type": "float64",
        "isArray": false,
        "name": "z",
        "isComplex": false
      },
      {
        "type": "float64",
        "isArray": false,
        "name": "w",
        "isComplex": false
      }
    ]
  }
]

ROS 2 IDL 支助

见(@foxglove/ros2idl-parser[https://github.com/foxglove/omgidl/packages/ros2idl-parser 页面存档备份,存于互联网档案馆执行 ros2idl 计划支持.

许可证

@foxglove/rosmsg 获得许可证 MIT 许可证。 。 。 .

释放

  1. 运行 yarn version --[major|minor|patch] 切换到凸起版本
  2. 运行 git push && git push --tags 以驱动新标签
  3. GitHub 动作会照顾剩下的

保持联系

加入我们 Discord 社区 问问题 分享反馈 随时了解我们团队的工作.

版本与发布记录

@foxglove/rosmsg 共发布 21 个版本,首次发布于 2021/06/25;过去 12 个月发布了 0 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
5.0.5latest2025/10/141.1 年前
5.0.42024/04/252 年前
5.0.32024/01/232 年前
5.0.22023/11/143 年前
5.0.12023/10/263 年前
4.2.22023/04/213 年前

关于 @foxglove/rosmsg 的常见问题

@foxglove/rosmsg 是什么?

ROS 和 ROS 2 .msg 定义的解析器

如何安装 @foxglove/rosmsg?

在项目目录运行 npm install @foxglove/rosmsg,或使用 pnpm add / yarn add / bun add。

@foxglove/rosmsg 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@foxglove/rosmsg 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@foxglove/rosmsg 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >= 14。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@foxglove/rosmsg 可以商用吗?

@foxglove/rosmsg 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@foxglove/rosmsg 的下载量有多少?

根据 npm 官方下载统计,@foxglove/rosmsg 在 2026/10/16 – 2026/11/14 这 30 天内被下载 785,052 次,日均约 26,168 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@foxglove/rosmsg 还在维护吗?

最新版本 5.0.5 发布于 2025/10/14(1.1 年前);至今共发布 21 个版本,其中过去 12 个月发布了 0 个;首次发布于 2021/06/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。