跳到主要内容

关节组控制

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_cmdDict[str, list[float]]group 名称 → 关节目标位置列表(rad)
velocity_cmdDict[str, list[float]] | Nonegroup 名称 → 关节目标速度列表(rad/s)
torque_cmdDict[str, list[float]] | Nonegroup 名称 → 关节目标力矩列表(Nm)

合法 group 名称(取决于机器人型号,以 hardware.json 为准):

left_legright_legwaistheadleft_manipulatorright_manipulatorleft_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_namestr关节组名称
keystr返回数据类型,见下表
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")