# @foxglove/rosmsg 中文文档

规范地址：https://npmcn.com/package/%40foxglove/rosmsg/

版本：5\.0\.5
npm 元数据更新时间：2025-10-13T18:20:48.564Z
中文译文更新时间：2026-11-15T10:39:17.366Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40foxglove/rosmsg
原文对照：https://npmcn.com/package/%40foxglove/rosmsg/?lang=original
项目主页：https://github.com/foxglove/ros-typescript
源码仓库：https://github.com/foxglove/ros-typescript

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：222 kB，15 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>= 14
- 运行依赖：2 个
- 首次发布：2021-06-25T03:23:14.312Z
- 最新版本发布：2025-10-13T18:20:48.121Z
- 近 30 天下载量：785052（2026-10-16 至 2026-11-14，npm 官方下载统计）
- 已发布版本数：21（近 12 个月 0 个）

## 中文简介

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

## 安装

```sh
npm install @foxglove/rosmsg
```

也可以使用：`pnpm add @foxglove/rosmsg`、`yarn add @foxglove/rosmsg`、`bun add @foxglove/rosmsg`

## README

# @foxglove/rosmsg (英语)

> _ROS1 和 ROS2 信件定义解析器_

[![npm version](https://img.shields.io/npm/v/@foxglove/rosmsg.svg?style=flat)](https://www.npmjs.com/package/@foxglove/rosmsg)

## 导言

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

此库支持两者 [罗斯1号](http://wiki.ros.org/msg) 财务报告和审定财务报表 [报告2](https://docs.ros.org/en/galactic/Concepts/About-ROS-Interfaces.html) 消息定义.

## ROS 1 定义使用法

```Typescript
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));
```

指纹 :

```JSON
[
  {
    "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 定义使用法

```Typescript
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));
```

指纹 :

```JSON
[
  {
    "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 页面存档备份,存于互联网档案馆](https://github.com/foxglove/omgidl/packages/ros2idl-parser)执行 `ros2idl` 计划支持.

## 许可证

@foxglove/rosmsg 获得许可证 [MIT 许可证](https://opensource.org/licenses/MIT)。 。 。 .

## 释放

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

## 保持联系

加入我们 [Discord 社区](https://foxglove.dev/chat) 问问题 分享反馈 随时了解我们团队的工作.

## 常见问题

### @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 和提交记录判断。

