ros2_control 架构
控制器(Controllers):
图片顶部的部分表示多个控制器(如 Controller A、Controller B、Controller C)。这些控制器是基于控制理论的组件,它们将参考值与测量输出进行比较,并基于这个误差计算系统的输入,管理和调节系统的行为。当控制循环执行时,会调用 update() 方法。这个方法可以访问最新的硬件状态,并使控制器能够向硬件命令接口写入数据。控制器通过 Controller Manager 加载,并将其所需的接口授予Controller Manager。
控制器管理器(Controller Manager):
控制器管理器负责管理控制器的生命周期,包括加载、激活、停用等。它请求接口并与资源管理器交互以获取所需的资源。
控制器管理器从控制器接收请求接口的请求,并从资源管理器处获取所需的接口资源。
资源管理器(Resource Manager):
资源管理器负责抽象硬件资源并管理这些资源的状态和命令接口。它输出状态接口(只读)和命令接口(读/写),以供控制器使用。
控制器管理器从资源管理器获取所需的接口,并将这些接口提供给控制器。
状态接口和命令接口(State Interface & Command Interface):
状态接口是只读接口,用于读取硬件组件的当前状态。
命令接口是读/写接口,用于向硬件组件发送命令以控制其行为。
资源管理器管理并导出这些接口给控制器使用。
硬件资源(Hardware Resources):
硬件资源包括传感器、系统和执行器,这些组件通过状态接口和命令接口与控制器交互。
传感器提供状态信息,系统和执行器可以接受控制命令并执行相应的动作。
传动装置(Transmissions):
传动装置是硬件资源的一部分,用于实现系统中的力或运动传递。控制器可能通过命令接口来使用这些传动装置。
User Interfaces(用户接口)
用户通过控制器管理器(Controller Manager)的服务与 ros2_control 框架进行交互。 ros2_control 提供了一个与 ros2 CLI 集成的用户友好命令行界面(CLI)。该界面支持自动补全,并提供了一系列常用命令。
输出已加载的控制器列表
ros2 control list_controllers
输出已加载的控制器列表、类型和状态。如下为一个输出例子:
joint_state_broadcaster[joint_state_broadcaster/JointStateBroadcaster] active
- 名称:joint_state_broadcaster
- 类型:joint_state_broadcaster/JointStateBroadcaster
- 状态:active
输出可用硬件组件列表
ros2 control list_hardware_components
如下为一个输出例子:
Hardware Component 1
name: aubo
type:
plugin name:
state: id=3 label=active
command interfaces
shoulder_joint/position [available] [claimed]
upperArm_joint/position [available] [claimed]
foreArm_joint/position [available] [claimed]
wrist1_joint/position [available] [claimed]
wrist2_joint/position [available] [claimed]
wrist3_joint/position [available] [claimed]
输出可用命令和状态接口的列表
ros2 control list_hardware_interfaces
如下为一个输出例子:
command interfaces
foreArm_joint/position [available] [claimed]
shoulder_joint/position [available] [claimed]
upperArm_joint/position [available] [claimed]
wrist1_joint/position [available] [claimed]
wrist2_joint/position [available] [claimed]
wrist3_joint/position [available] [claimed]
state interfaces
foreArm_joint/position
foreArm_joint/velocity
shoulder_joint/position
shoulder_joint/velocity
upperArm_joint/position
upperArm_joint/velocity
wrist1_joint/position
wrist1_joint/velocity
wrist2_joint/position
wrist2_joint/velocity
wrist3_joint/position
wrist3_joint/velocity