![]() |
RMVL
2.5.0-dev
Robotic Manipulation and Vision Library
|
此模块主要为 轻量发布订阅服务及其相关组件 提供支持,详细使用说明请参考 轻量发布订阅服务 —— LPSS 。
RMVL 服务描述文件 *.srv 用于定义一次服务调用的请求和响应类型,类似于 ROS 服务定义文件。请求和响应使用单独一行 --- 分隔,两部分均遵循与 RMVL 消息描述文件 相同的字段语法和二进制序列化规则,也都允许为空。通过服务描述文件,用户可以为 LPSS Service/Client 定义结构化的调用接口。
以下是 RMVL 提供的内置服务类型,分为 std 和 sensor 两个主要分组。用户可以直接在 LPSS Service/Client 中使用这些类型。
std 服务分组
std 服务包含无参数调用、布尔值设置以及通用触发等基础服务。
| 类型 | *.srv 定义 | 描述 |
|---|---|---|
Empty | --- | 请求和响应均为空的服务 |
SetBool | bool data --- bool success string message | 设置布尔状态,并返回执行结果和提示信息 |
Trigger | --- bool success string message | 触发无参数操作,并返回执行结果和提示信息 |
sensor 服务分组
sensor 服务用于配置传感器相关的数据和参数。
| 类型 | *.srv 定义 | 描述 |
|---|---|---|
SetCameraInfo | sensor/CameraInfo camera_info --- bool success string status_message | 保存相机标定信息,并返回执行结果和状态信息 |
RMVL 提供了 rmvl_generate_srv 的 CMake 函数,用于生成服务类型的 C++ 代码文件。用户只需在模块的 CMakeLists.txt 文件中调用该函数,并提供服务类型的名称和路径,RMVL 将自动生成相应的 C++ 代码文件。
生成的服务类型位于 rm::srv 命名空间。以 Test 为例,Test::Request 和 Test::Response 分别表示请求和响应类型,二者均提供与消息类型相同的 serialize()、deserialize() 和 compact_size() 接口。