参考指南 Developer 接口
ℹ️ 说明:
使用 Fourier-GRX-N1 SDK Developer API 前,请将
fourier-grx配置为 开发者模式。 关于运行模式的配置,请参见 运行模式。
Fourier-GRX Developer 接口是针对开发者底层开发提供的二次开发接口,直接调用底层硬件接口,适用于底层开发。
需要在 python 环境中安装 fourier_core 和 fourier_grx 库后,直接使用库函数进行开发调用。
4.0.0 以上版本
接口调用方式
import fourier_grx.sdk.developer as fourier_grx
control_system = fourier_grx.ControlSystem()
# 初始化开发者模式(servo_on=False 时执行器保持失能;control_frequency 单位为 Hz,上限 500)
control_system.developer_mode(servo_on=False, control_frequency=100)
# 版本信息
info = control_system.get_info() # {"fourier_core_version": ..., "fourier_grx_version": ...}
# 读取状态 / 下发控制(字典格式见下文)
state_dict = control_system.robot_control_loop_get_state()
control_system.robot_control_loop_set_control(control_dict=control_dict)
# 发送任务指令
control_system.robot_control_set_task_command(task_command=fourier_grx.TaskCommand.TASK_IDLE)
fourier_grx.TaskCommand 提供常用任务值常量(TASK_IDLE、TASK_SERVO_ON、TASK_SERVO_OFF、TASK_SERVO_REBOOT、TASK_CLEAR_FAULT、TASK_REMOTE_CONTROL、TASK_SET_HOME、TASK_TEST_JOINT、TASK_READY_STATE、TASK_WALK、TASK_RUN、TASK_CLIMB_UP),具体数值见 任务描述。fourier_grx.JointControlMode 提供关节控制模式常量。
状态字典(state dict)
Fourier-GRX Developer 接口使用状态字典(state dict)返回机器人当前的状态信息,状态字典的 key 和 value 如下:
| key | 说明 | 数据类型 | 单位 | 具体描述 |
|---|---|---|---|---|
imu_quat | 机器人 IMU 的四元数姿态信息 | array(float,float,float,float) | x, y, z, w | |
imu_euler_angle | 机器人 IMU 的欧拉角姿态信息 | array(float, float, float) | rad | roll, pitch, yaw |
imu_angular_velocity | 机器人 IMU 的角速度信息 | array(float, float, float) | rad/s | roll, pitch, yaw |
imu_acceleration | 机器人 IMU 的线加速度信息 | array(float, float, float) | m/s^2 | x, y, z |
joint_position | 机器人关节的位置信息 | array(float * num_of_joints) | rad | 参考 机器人关节序列 |
joint_velocity | 机器人关节的速度信息 | array(float * num_of_joints) | rad/s | 参考 机器人关节序列 |
joint_effort | 机器人关节的力矩信息 | array(float * num_of_joints) | Nm | 参考 机器人关节序列 |
joint_current | 机器人关节的电流信息 | array(float * num_of_joints) | A | 参考 机器人关节序列 |
控制字典(control dict)
Fourier-GRX Developer 接口使用控制字典(control dict)发送机器人的控制指令,控制字典的 key 和 value 如下:
| key | 说明 | 数据类型 | 单位 | 具体描述 |
|---|---|---|---|---|
control_mode | 机器人的控制模式 | int (float * num_of_joints) | 0: 无控制,1: 电流控制,2: 力矩控制,3: 速度控制,4: 位置控制,6: PD 控制,9: 位置伪 PD 控制,10: 其他 | |
position | 机器人关节的位置指令 | array(float * num_of_joints) | rad | 参考 机器人关节序列 |
velocity | 机器人关节的速度指令 | array(float * num_of_joints) | rad/s | 参考 机器人关节序列 |
effort | 机器人关节的力矩指令 | array(float * num_of_joints) | Nm | 参考 机器人关节序列 |
current | 机器人关节的电流指令 | array(float * num_of_joints) | A | 参考 机器人关节序列 |
position_control_kp | 机器人关节位置控制的 P 系数 | array(float * num_of_joints) | 参考 机器人关节序列 | |
velocity_control_kp | 机器人关节速度控制的 P 系数 | array(float * num_of_joints) | 参考 机器人关节序列 | |
velocity_control_ki | 机器人关节速度控制的 I 系数 | array(float * num_of_joints) | 参考 机器人关节序列 | |
pd_control_kp | 机器人关节 PD 控制的 P 系数 | array(float * num_of_joints) | 参考 机器人关节序列 | |
pd_control_kd | 机器人关节 PD 控制的 D 系数 | array(float * num_of_joints) | 参考 机器人关节序列 |