关节组控制
set_group_cmd()
Python
set_group_cmd(
position_cmd: Dict[str, list[float]],
velocity_cmd: Dict[str, list[float]] | None = None,
torque_cmd: Dict[str, list[float]] | None = None
)
向一个或多个关节组发送位置、速度、力矩命令。position_cmd 为必填,其余为可选。命令立即生效,建议使用插值避免急剧跳变。
| 参数 | 类型 | 说明 |
|---|---|---|
position_cmd | Dict[str, list[float]] | group 名称 → 关节目标位置列表(rad) |
velocity_cmd | Dict[str, list[float]] | None | group 名称 → 关节目标速度列表(rad/s) |
torque_cmd | Dict[str, list[float]] | None | group 名称 → 关节目标力矩列表(Nm) |
合法 group 名称(取决于机器人型号,以 hardware.json 为准):
left_leg、right_leg、waist、head、left_manipulator、right_manipulator、left_endeffector(或 left_end_effector)、right_endeffector(或 right_end_effector)
示例:带插值的上半身控制
Python
init_pose = client.get_group_state("left_manipulator", key="position")
target_pose = [0.0, 0.0, 0.0, -1.2, 0.0, 0.0, 0.0]
steps = 200
for i in range(steps):
pose = [s + (t - s) * i / steps for s, t in zip(init_pose, target_pose)]
client.set_group_cmd({"left_manipulator": pose})
time.sleep(0.01)
get_group_state()
Python
get_group_state(group_name: str, key: str = 'position') -> list[float]
读取指定关节组的当前状态。
| 参数 | 类型 | 说明 |
|---|---|---|
group_name | str | 关节组名称 |
key | str | 返回数据类型,见下表 |
key 值 | 说明 |
|---|---|
'position' | 关节位置(rad),默认 |
'velocity' | 关节速度(rad/s) |
'effort' | 关节力矩(Nm) |
示例
Python
pos = client.get_group_state("left_leg", key="position")
vel = client.get_group_state("left_leg", key="velocity")
get_group_motion_state()
Python
get_group_motion_state(group_name: str) -> int
读取指定关节组的当前运动状态。
| 返回值 | 说明 |
|---|---|
0 | 空闲(idle) |
1 | 运动中(moving) |
2 | 停止中(stopping) |
3 | 错误(error) |
示例
Python
while client.get_group_motion_state("left_manipulator") == 1:
time.sleep(0.01)
print("Motion complete")