Files
Uni-Lab-OS/docs/developer_guide/add_yaml.md
Junhan Chang c78ac482d8 Initial commit
2025-04-17 15:19:47 +08:00

4.3 KiB
Raw Blame History

yaml注册表编写指南

注册表的结构

  1. 顶层名称:每个设备的注册表以设备名称开头,例如 new_device。
  2. class 字段:定义设备的模块路径和类型。
  3. schema 字段:定义设备的属性模式,包括属性类型、描述和必需字段。
  4. action_value_mappings 字段:定义设备支持的动作及其目标、反馈和结果。

创建新的注册表教程

  1. 创建文件 在 devices 文件夹中创建一个新的 YAML 文件,例如 new_device.yaml。

  2. 定义设备名称 在文件中定义设备的顶层名称例如new_device

  3. 定义设备的类信息 添加设备的模块路径和类型:

new_device:  # 定义一个名为 linear_motion.grbl 的设备


class:  # 定义设备的类信息
    module: unilabos.devices_names.new_device:NewDeviceClass  # 指定模块路径和类名
    type: python  # 指定类型为 Python 类
    status_types:
  1. 定义设备支持的动作 添加设备支持的动作及其目标、反馈和结果:
  action_value_mappings:
    set_speed:
      type: SendCmd
      goal:
        command: speed
      feedback: {}
      result:
        success: success

如何编写action_valve_mappings

  1. 在 devices 文件夹中的 YAML 文件中action_value_mappings 是用来定义设备支持的动作actions及其目标值goal、反馈值feedback和结果值result的映射规则。以下是规则和编写方法
  action_value_mappings:
    <action_name>:                      # <action_name>:动作的名称
                                        # start启动设备或某个功能。
                                        # stop停止设备或某个功能。
                                        # set_speed设置设备的速度。
                                        # set_temperature设置设备的温度。
                                        # move_to_position移动设备到指定位置。
                                        # stir执行搅拌操作。
                                        # heatchill执行加热或冷却操作。
                                        # send_nav_task发送导航任务例如机器人导航
                                        # set_timer设置设备的计时器。
                                        # valve_open_cmd打开阀门。
                                        # valve_close_cmd关闭阀门。
                                        # execute_command_from_outer执行外部命令。
                                        # push_to控制设备推送到某个位置例如机械爪
                                        # move_through_points导航设备通过多个点。

      type: <ActionType>                # 动作的类型,表示动作的功能
                                        # 根据动作的功能选择合适的类型:
                                        # SendCmd发送简单命令。
                                        # NavigateThroughPoses导航动作。
                                        # SingleJointPosition设置单一关节的位置。
                                        # Stir搅拌动作。
                                        # HeatChill加热或冷却动作。

      goal:                             # 定义动作的目标值映射,表示需要传递给设备的参数。
        <goal_key>: <mapped_value>      #确定设备需要的输入参数,并将其映射到设备的字段。

      feedback:                         # 定义动作的反馈值映射,表示设备执行动作时返回的实时状态。
        <feedback_key>: <mapped_value>
      result:                           # 定义动作的结果值映射,表示动作完成后返回的最终结果。
        <result_key>: <mapped_value>
  1. 定义设备的属性模式 添加设备的属性模式,包括属性类型和描述:
schema:
    type: object
    properties:
      status:
        type: string
        description: The status of the device
      speed:
        type: number
        description: The speed of the device
    required:
      - status
      - speed
    additionalProperties: false

写完yaml注册表后需要添加到哪些其他文件