跳转到主要内容

用于重新发布LCM消息的WebSocket服务器

项目描述

lcm-websocket-server

WebSocket服务器,用于重新发布LCM消息。

:hammer: 安装

在您使用 lcm-websocket-server 之前,必须安装LCM Python包。 更多信息,请参阅 LCM构建说明

从PyPI

pip install lcm-websocket-server

从源

poetry build
pip install dist/lcm_websocket_server-*-py3-none-any.whl

:rocket: 使用方法

[!TIP] 默认情况下,lcm-websocket-server 命令的日志级别为 ERROR。要查看更多详细的日志,请使用 -v 标志。重复使用标志会增加详细程度,从 ERRORWARNINGINFODEBUG

JSON代理

可以使用 lcm-websocket-json-proxy 命令运行一个服务器,该服务器通过WebSocket连接将LCM消息重新发布为JSON。

[!NOTE] lcm-websocket-server 命令已被重命名为 lcm-websocket-json-proxy。旧名称仍然可用于向后兼容,但建议使用新名称。

在本地端口8765上运行服务器并重新发布所有通道的消息

lcm-websocket-json-proxy --host localhost --port 8765 --channel '.*' your_lcm_types_packages

lcm_packages 参数包含LCM Python消息定义的包的名称(或逗号分隔的包列表)。子模块将被递归扫描并注册,以便自动识别、解码和重新发布。

示例: compas_lcmtypes

例如,compas_lcmtypes 包包含CoMPAS实验室的LCM类型。可以使用以下方式安装

pip install compas-lcmtypes==0.1.0

然后,可以运行服务器

lcm-websocket-server compas_lcmtypes

JPEG代理

可以使用 lcm-websocket-jpeg-proxy 命令来运行一个服务器,该服务器将 CoMPAS senlcm::image_t LCM 消息作为 JPEG 图像通过 WebSocket 连接重新发布。图像可以从多种像素格式解码,并以可配置的分辨率和质量编码为 JPEG。

有关更多信息,请参阅 CoMPAS LCM 类型存储库

此命令需要安装 image 扩展。 这可以通过以下方式完成:

pip install lcm-websocket-server[image]

在端口 8766 上本地运行服务器,并将 CAMERA 通道的图像以 75% 的质量在 1.0 的缩放比例下重新发布

lcm-websocket-jpeg-proxy --host localhost --port 8766 --quality 75 --scale 1.0 --channel CAMERA

拨号代理

lcm-websocket-dial-proxy 命令是 JSON 和 JPEG 代理的合并版本,针对 Dial 进行了调整。它可以用来运行一个服务器,该服务器将 CoMPAS senlcm::image_t LCM 消息作为 JPEG 图像重新发布,并将所有其他 CoMPAS LCM 消息作为 JSON 通过 WebSocket 连接重新发布。所有通过 WebSocket 连接发送的文本帧都被编码为 JSON。二进制帧是带有前置头和通道名称的 JPEG 图像,该名称符合 LCM 日志文件格式,以下是一些考虑因素

  • 事件号 总是 0。这是因为服务器不是从日志文件中读取,而是接收消息后立即重新发布。
  • 时间戳image_t 事件包含的 header_t 时间戳的时间戳。时间戳传统上以微秒为单位,但这并不保证。
  • 数据长度 表示原始图像数据长度,而不是 JPEG 图像数据长度。

因此,二进制帧的布局如下

[28 byte LCM header] [channel name] [JPEG]

此命令需要安装 image 扩展。 这可以通过以下方式完成:

pip install lcm-websocket-server[image]

在端口 8765 上本地运行服务器,并在所有通道上重新发布消息(JPEG 质量和缩放比例配置与之前相同)

lcm-websocket-dial-proxy --host localhost --port 8765 --channel '.*' --quality 75 --scale 1.0

:whale: Docker

构建

可以使用以下命令构建运行 lcm-websocket-server 的 Docker 映像

./scripts/docker_build.sh

这将创建 mbari/lcm-websocket-server 映像。

运行

可以使用以下方式运行容器

docker run \
    --name lcm-websocket-server \
    --rm \
    -e HOST=0.0.0.0 \
    -e PORT=8765 \
    -e CHANNEL=".*" \
    -v /path/to/your_lcm_types_package:/app/your_lcm_types_package \
    -e LCM_PACKAGES=your_lcm_types_package \
    --network=host \
    -d \
    mbari/lcm-websocket-server

请注意,上述指定的 HOSTPORTCHANNEL 环境变量是 mbari/lcm-websocket-server 映像的默认值。如果默认值可以接受,则可以省略这些变量。

LCM_PACKAGES 环境变量应设置为包含 LCM Python 消息定义的包的名称(或逗号分隔的包列表)。/app 目录包含在 PYTHONPATH 中,以便可以导入挂载到那里的任何包(如上面所示)。

建议使用 --network=host 运行,以避免 LCM 通过 UDP 的问题。这将允许容器使用主机的网络堆栈。

项目详细信息


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

lcm_websocket_server-0.2.1.tar.gz (13.1 kB 查看哈希值)

上传时间

构建分布

lcm_websocket_server-0.2.1-py3-none-any.whl (17.1 kB 查看哈希值)

上传时间 Python 3

支持者

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面