概览#
robot_py.RobotInterface 按YAML配置组织电机、IMU、关节映射与闭链变换。构造函数会创建硬件接口;离线检查配置时直接读取YAML。
构造与动作#
Python
robot_py.RobotInterface(config_file)
robot.apply_action(p, v=[], kp=[], kd=[], tau=[])p 为目标关节位置;可选向量为空时,速度和前馈项补零,增益使用机器人配置。全部向量采用配置对应的关节顺序。p必须匹配关节数量,其他非空向量也必须具有相同长度;调用前自行校验长度。
状态层级#
| 方法 | 数据或操作层级 |
|---|---|
init_motors() / deinit_motors() |
电机生命周期 |
read_joints() |
从电机驱动缓存转换到关节缓存,不主动请求反馈 |
refresh_joints() |
请求电机状态,等待约1秒后更新关节缓存 |
read_imu() |
从IMU缓存变换到机身坐标,并更新机身缓存 |
get_joint_q() / get_joint_vel() |
关节缓存,rad / rad/s |
get_joint_tau() |
关节反馈缓存,底层量依电机驱动 |
get_quat() / get_ang_vel() |
机身缓存,wxyz / rad/s |
reset_joints(joint_default_angle) |
平滑重置目标,会发送动作 |
set_zeros() / clear_errors() |
下发零位/错误清除请求 |
未初始化时,关节getter抛出 Motors are not initialized;无IMU对象时,机身getter抛出 IMU is not initialized。
初始化状态的含义#
只读属性 is_init 表示该对象的电机初始化状态。初始化后还需逐一检查电机通信、健康与标定;实现设置 is_init 时没有汇总各驱动返回编码。
set_zeros() 没有汇总各驱动的布尔返回;clear_errors() 下发清除请求。持久写入与故障恢复结果应结合实际反馈、设备状态和适用规则确认。
并发与释放#
Python绑定只有 reset_joints() 显式释放GIL。对象析构会在已初始化时去初始化电机并释放资源;实机应用仍应明确管理退出路径,而不是等待进程异常结束。
上游最小例程使用RPO配置并发送 apply_action;接入RP1时先完成配置与动作约定核对。示例选择见 最小接入示例。