跳到主要内容

用户指令状态

切换到 用户指令状态后,用户可以为所有关节发送外部关节位置命令,以及执行器配置设置命令(如 pd 参数)。机器人将执行这些命令并相应地更新其状态。

状态明细

状态名称任务名称手柄映射DDS 映射频率
UserCmdUserCmdTask10400Hz
可用于悬挂可用于站立自动保护切换

手柄控制

此状态没有手柄控制。

客户端控制

速度控制站姿控制关节控制关节参数控制
全身全身

进入 UserCmd 状态

初始化 AuroraCore 后,使用 aurora 客户端的 set_fsm_state 函数进入用户指令状态。

client = AuroraClient.get_instance(domain_id=123, robot_name="fouriern1")   # 初始化 aurora 客户端
time.sleep(1)

client.set_fsm_state(10) # 切换到用户指令状态

关节控制

可通过 set_group_cmd 函数进行关节控制。由于位置命令立即生效,建议在上身关节命令中使用插值以避免命令急剧变化。

可用控制组: left_legright_legwaistleft_manipulatorright_manipulator

left_manipulator_init_pose = client.get_group_state("left_manipulator", key="position")
left_manipulator_target_pose = [-1.2, 0, 0, 1.2, 0]
total_steps = 200

for i in range(total_steps):
# 从初始位置插值到目标姿势
left_manipulator_pose = [s + (e - s) * i / total_steps for s, e in zip(left_manipulator_init_pose, left_manipulator_target_pose)]
client.set_group_cmd({"left_manipulator": left_manipulator_pose})
time.sleep(0.01)

关节参数控制

可通过 set_motor_cfg_pd 函数进行关节控制。目前,Aurora 仅支持所有关节的 pd 控制模式。

可用控制组: left_legright_legwaistleft_manipulatorright_manipulator

kp_config = {
"left_leg": [180.0, 120.0, 90.0, 120.0, 45.0, 45.0],
"right_leg": [180.0, 120.0, 90.0, 120.0, 45.0, 45.0],
"waist": [90.0],
"left_manipulator": [90.0, 45.0, 45.0, 45.0, 45.0],
"right_manipulator": [90.0, 45.0, 45.0, 45.0, 45.0]
}
kd_config = {
"left_leg": [10.0, 10.0, 8.0, 8.0, 2.5, 2.5],
"right_leg": [10.0, 10.0, 8.0, 8.0, 2.5, 2.5],
"waist": [8.0],
"left_manipulator": [ 8.0, 2.5, 2.5, 2.5, 2.5],
"right_manipulator": [8.0, 2.5, 2.5, 2.5, 2.5]
}

client.set_motor_cfg_pd(kp_config, kd_config)

有关关节限制,请参阅 机器人规格