用于重新发布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
标志。重复使用标志会增加详细程度,从ERROR
到WARNING
、INFO
和DEBUG
。
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
请注意,上述指定的 HOST
、PORT
和 CHANNEL
环境变量是 mbari/lcm-websocket-server
映像的默认值。如果默认值可以接受,则可以省略这些变量。
LCM_PACKAGES
环境变量应设置为包含 LCM Python 消息定义的包的名称(或逗号分隔的包列表)。/app
目录包含在 PYTHONPATH
中,以便可以导入挂载到那里的任何包(如上面所示)。
建议使用 --network=host
运行,以避免 LCM 通过 UDP 的问题。这将允许容器使用主机的网络堆栈。
项目详细信息
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。