🖐️ 手部控制器基类
介绍
DexHandController
是 Controller
的子类,用于控制机器人手部(如灵巧手、夹爪)。
该类实现了手部状态获取和运动控制的方法,支持关节控制和动作控制的增量与绝对指令。
类定义
class HandController:
继承自 Controller
的机器人手部控制器,实现了 get_information()
和 move()
方法。
成员属性
属性名 | 类型 | 说明 |
---|---|---|
controller_type |
str |
控制器类型,设为 "robotic_hand" |
is_set_up |
bool |
控制器是否初始化,默认为 False |
controller |
Any |
外部控制器句柄,默认为 None |
函数
init(self)
初始化手部控制器。
- 参数:无
- 返回:无
get_information(self) -> Dict[str, Any]
获取当前手部状态信息。返回字段由 self.collect_info
决定。
支持字段包括:
"joint"
:关节角度"action"
:执行的动作"velocity"
:速度信息-
"force"
:力传感信息 -
参数:无
- 返回:
Dict[str, Any]
:包含当前状态的字典,键为字段名,值为对应状态值。
move(self, move_data: Dict[str, Any], is_delta: bool = False)
发送控制指令控制手部关节或动作。
-
增量控制 (
is_delta=True
):
"joint"
和"action"
为在当前状态基础上的偏移量。 -
绝对控制 (
is_delta=False
):
所有字段均表示目标状态。
支持字段包括:
"joint"
:关节角度-
"action"
:控制动作(策略/高维向量) -
参数:
move_data
(Dict[str, Any]
):控制数据,键为字段名,值为对应的目标值(推荐使用numpy.array
)。-
is_delta
(bool
, 可选):是否为增量控制,默认为False
。 -
返回:无
repr(self) -> str
打印控制器当前状态。
- 参数:无
- 返回:
str
:控制器状态描述字符串,包含内部controller
的引用信息。
实现自己的手部控制器子类
参考本基类创建自己的具体实现,需根据硬件/仿真 API 补充底层函数。
必要实现
get_state()
用于返回当前手部所有状态信息,用于支持增量控制逻辑。
- 参数:无
- 返回:
Dict[str, Any]
:包含所有状态信息(例如 joint, action)
可选择实现
get_joint()
返回当前关节角度。
- 参数:无
- 返回:
np.array
:关节角度数组。
get_action()
返回当前手部动作状态(策略输出)。
- 参数:无
- 返回:
np.array
:动作向量。
get_velocity()
返回当前速度信息。
- 参数:无
- 返回:
np.array
:速度信息。
get_force()
返回当前施加的力信息。
- 参数:无
- 返回:
np.array
:力信息。
set_joint(move_data: np.array)
设置关节角度。
set_action(move_data: np.array)
设置手部的策略动作向量。