RMVL  2.5.0-dev
Robotic Manipulation and Vision Library
载入中...
搜索中...
未找到
LPSS CLI 工具

LPSS 命令行工具的使用教程

作者
赵曦
日期
2026/07/31
版本
1.1

上一篇教程:RDT CLI 工具


前言

LPSS 是一个轻量级的发布订阅通信框架,采用去中心化设计,提供 NDP、EDP 两层服务发现机制,以及 MTP 话题消息传输协议,提供类似 ROS2 的 *.msg 消息接口,由 RMVL 提供支持。本工具提供了 LPSS 相关的命令行工具,使用方法如下。

rdt 提供的 LPSS CLI 工具可通过输入

lpss help

来查看具体帮助。

用法

lpss <command> [args...]
命令
help显示详细帮助信息
create创建一个依赖 lpss 的新项目
node节点 CLI 工具
topic话题 CLI 工具
service服务 CLI 工具
interface内置消息接口查看工具
graph节点图工具
viz3D 可视化工具 LViz

更多信息请参考官方手册:

create 命令

创建一个依赖 LPSS 的新项目

用法

lpss create <project_name> [options]
参数
project_name待创建的项目名称
选项
--deps<list>指定项目依赖的 RMVL 模块,逗号或空格分隔,默认为空
--exts<list>指定项目使用的非 RMVL 库,逗号或空格分隔,默认为空
--cpp<version>指定项目使用的 C++ 标准版本,默认为 20

示例

# 创建一个名为 demo_node 的新项目
lpss create demo_node
# 创建一个名为 demo_node 的新项目,依赖 anchor 和 hik_camera 模块,使用 C++17 标准
lpss create demo_node --deps anchor hik_camera --cpp 17
# 创建一个名为 demo_node 的新项目,依赖 anchor 和 hik_camera 模块,并且使用 json 和 fmt 两个第三方库
lpss create demo_node --deps hik_camera --exts json fmt

node 命令

节点工具

用法

lpss node [help | info | list]
命令
help显示此帮助信息
info显示节点信息
list列出所有节点,可使用 -c 仅显示数量

list 子命令

列出当前发现的所有 LPSS 节点。

用法

lpss node list [-c]
选项
-c仅输出节点数量

示例

# 列出节点名称
lpss node list
# 仅输出节点数量
lpss node list -c

info 子命令

查看指定节点的信息,输出形如以下的内容

Node: xxx
Publish Topics:
xxx
Subscribe Topics:
xxx
Server Services:
xxx
Client Services:
xxx

用法

lpss node info <node_name>
参数
node_name指定要查看的节点名称

示例

# 查看节点 lpss_node_1 的信息
lpss node info lpss_node_1

topic 命令

话题工具

用法

lpss topic [help | info | list | find | echo | pub | type | hz | bw] [args...]
命令
help显示此帮助信息
info显示话题信息
list列出所有话题,可使用 -c 仅显示数量
find按消息类型查找话题,可使用 -c 仅显示数量
echo显示话题内容
pub发布话题
type显示话题类型
hz测量话题发布频率,单位为 Hz
bw测量话题带宽,单位为 MB/s、kB/s 或 B/s

list 子命令

列出当前发现的所有话题,话题名称按字典序输出。

用法

lpss topic list [-c]
选项
-c仅输出话题数量

find 子命令

按完整消息类型查找话题,查询结果按话题名称的字典序输出。

用法

lpss topic find <msg_type> [-c]
参数
msg_type消息类型,例如 std/String
选项
-c仅输出匹配的话题数量

示例

# 查找所有使用 std/String 消息类型的话题
lpss topic find std/String
# 仅输出匹配话题的数量
lpss topic find std/String -c

info 子命令

查看指定话题的信息,输出形如以下的内容

Type: xxx
Publisher Node:
xxx
Subscriber Node:
xxx

用法

lpss topic info <topic_name>
参数
topic_name指定要查看的话题名称

示例

# 查看 /cur/joint_states 话题的信息
lpss topic info /cur/joint_states

echo 子命令

显示话题内容,并以 JSON 文本进行输出

用法

lpss topic echo <topic_name>
参数
topic_name指定的话题名称

示例

# 以 JSON 格式打印 /point 话题的内容
lpss topic echo /point
# 假设是 geometry/Point 的消息类型,可以配合 jq 工具进行输出,记得 apt install jq 来下载 jq
# 打印 /point 话题的 x 坐标
lpss topic echo /point | jq .x
# Linux 下一般是按 \n 刷新缓冲区,通过 | 运算符传给 jq 可能没法很好的实时输出内容,通常可以额外
# 配合 stdbuf 工具自动刷新缓冲区,例如
stdbuf -oL lpss topic echo /point | jq .x

pub 子命令

发布话题内容

警告
未完成,敬请期待

type 子命令

显示话题类型

用法

lpss topic type <topic_name>
参数
topic_name指定的话题名称

示例

# 显示 /point 话题的类型
lpss topic type /point

hz 子命令

测量话题发布频率,单位为 Hz

用法

lpss topic hz <topic_name>
参数
topic_name指定的话题名称

示例

# 显示 /str 话题的发布频率
lpss topic hz /str

bw 子命令

测量话题带宽,单位为 MB/s、kB/s 或 B/s

用法

lpss topic bw <topic_name>
参数
topic_name指定的话题名称

示例

# 显示 /str 话题的带宽使用情况
lpss topic bw /str

service 命令

服务工具,用于查看已发现的 LPSS 服务,并使用 JSON 请求调用内置服务。

用法

lpss service [help | info | list | type | find | call] [args...]
命令
help显示此帮助信息
info显示服务信息
list列出所有服务,可使用 -c 仅显示数量
type显示服务类型
find按服务类型查找服务,可使用 -c 仅显示数量
call使用 JSON 请求调用内置服务

list 子命令

列出当前发现的所有服务,服务名称按字典序输出。

用法

lpss service list [-c]
选项
-c仅输出服务数量

info 子命令

查看指定服务的类型、服务端节点和客户端节点,输出形如以下内容。

Type: std/SetBool
Server Node:
server_node
Client Node:
client_node

用法

lpss service info <service_name>
参数
service_name服务名称

示例

lpss service info /set_enabled

type 子命令

显示指定服务的服务类型。

用法

lpss service type <service_name>
参数
service_name服务名称

示例

# 输出 std/SetBool
lpss service type /set_enabled

find 子命令

按类型精确匹配服务。service_type 可以是完整服务类型,也可以是对应的请求或响应消息类型。查询结果按服务名称的字典序输出。

用法

lpss service find <service_type> [-c]
参数
service_type服务类型,例如 std/SetBool;也可使用 std/SetBool_Requeststd/SetBool_Response
选项
-c仅输出匹配的服务数量

示例

# 列出所有 std/SetBool 服务
lpss service find std/SetBool
# 仅输出匹配服务的数量
lpss service find std/SetBool -c

call 子命令

使用 JSON 对象作为请求调用指定服务,并将响应输出为 JSON。json_request 省略或为空时按 {} 处理,命令等待响应的超时时间为 3 秒。

用法

lpss service call <service_name> [json_request]
参数
service_name服务名称
json_requestJSON 对象形式的请求,建议使用单引号包围,避免 Shell 改写引号等字符

目前 call 支持以下内置服务类型。

服务类型 JSON 请求
std/Empty {},可省略
std/Trigger {},可省略
std/SetBool 必须包含布尔字段 data
sensor/SetCameraInfo 必须包含对象字段 camera_info;其中 DK 如果出现,必须分别包含 5 个和 9 个数字

示例

# 调用无请求字段的 Trigger 服务
lpss service call /trigger
# 使用 JSON 请求调用 SetBool 服务
lpss service call /set_enabled '{"data":true}'
# 调用 SetCameraInfo 服务,未填写的 CameraInfo 字段使用默认值
lpss service call /set_camera_info '{"camera_info":{"height":1080,"width":1920}}'
注解
call 暂不支持自定义服务类型;发现到不支持的类型时会输出 unsupported service type

interface 命令

内置消息接口查看工具

用法

lpss interface [help | list | group | groups | show] [args...]
命令
help显示此帮助信息
list列出所有内置消息接口
group显示指定的消息分组包含的接口
groups列出所有消息分组
show显示接口详细信息

group 子命令

显示指定的消息分组包含的接口

用法

lpss interface group <name>
参数
name消息分组名称

示例

# 显示 geometry 分组包含的接口
lpss interface group geometry

例如会显示如下内容

Point
Point32
Polygon
Pose
Quaternion
Transform
TransformStamped
Twist
Vector3
Wrench

show 子命令

显示接口详细信息

用法

lpss interface show <interface>
参数
interface消息接口名称,格式为 <group>/<name>

示例

# 显示 geometry/Pose 接口的详细信息
lpss interface show geometry/Pose

例如会显示如下内容

geometry/Point position
float64 x
float64 y
float64 z
geometry/Quaternion orientation
float64 x
float64 y
float64 z
float64 w

graph 命令

节点图工具 LGraph,用于在浏览器中查看 LPSS 通信拓扑,包括节点、话题、服务及其发布/订阅、服务端/客户端关系。也可直接使用 lgraph 命令启动。

用法

lpss graph [name_subfix]
# 等价命令
lgraph [name_subfix]
参数
name_subfix可选的实例名称,用于生成 LPSS 节点名 lgraph_<name_subfix>;省略时自动生成 5 位随机标识

启动成功后,终端会输出本机和局域网访问地址。LGraph 默认监听 17493 端口,本机可访问:

示例

# 使用自动生成的实例名启动
lpss graph
# LPSS 节点名为 lgraph_debug
lgraph debug
注解
Web 服务使用固定端口 17493,同一主机上不能同时启动多个 LGraph 实例。按 Ctrl+C 可停止工具。
如果提示 lpss graph 工具尚未安装,请在 rmvl-dev-tools 中重新运行 install.bash

viz 命令

3D 可视化工具 LViz,也可直接使用 lviz 命令启动。

用法

lpss viz [name_subfix]
# 等价命令
lviz [name_subfix]
参数
name_subfix可选的实例名称,用于生成 LPSS 节点名 lviz_node_<name_subfix>;省略时自动生成 5 位随机标识

LViz 默认监听 17492 端口,启动后可通过 http://localhost:17492 访问,按 Ctrl+C 停止工具。