机械臂
1.arm_set_speed - 手臂速度百分比
方法: ctrl.arm_set_speed(side, speed_pct)
C++ 签名: bool arm_set_speed(ArmSide side, std::int32_t speed_pct);
参数:
side:机械臂侧别,fd_robot::ArmSide枚举ArmSide::kLeft:左臂ArmSide::kRight:右臂(single 单臂机型可能忽略侧别)
speed_pct:速度百分比,int32_t类型,范围约 1 ~ 100
返回值:
bool:操作结果true:指令发送成功false:指令发送失败
使用示例:
2.arm_move_joints - 手臂关节运动(弧度)
方法: ctrl.arm_move_joints(side, joints_rad)
C++ 签名: bool arm_move_joints(ArmSide side, const std::vector<float> &joints_rad);
参数:
side:机械臂侧别,fd_robot::ArmSide枚举(kLeft / kRight)joints_rad:目标关节角数组,std::vector<float>类型,单位:弧度 (rad),长度须等于该侧 DOF
返回值:
bool:操作结果true:指令发送成功false:指令发送失败
使用示例:
注意: 入参长度须等于该侧 DOF(由机型 robot_profile 的 dof1/dof2 决定,缺省 7;部分机型为 6)。dual 双臂模式下通常需先收到关节状态后再下发。
3.arm_move_joints_deg - 手臂关节运动(角度)
方法: ctrl.arm_move_joints_deg(side, joints_deg)
C++ 签名: bool arm_move_joints_deg(ArmSide side, const std::vector<float> &joints_deg);
参数:
side:机械臂侧别,fd_robot::ArmSide枚举(kLeft / kRight)joints_deg:目标关节角数组,std::vector<float>类型,单位:度 (°),长度须等于该侧 DOF
返回值:
bool:操作结果true:指令发送成功false:指令发送失败
使用示例:
4.arm_joint_jog - 手臂单关节点动
方法: ctrl.arm_joint_jog(side, joint_1_to_n, direction, speed_pct)
C++ 签名: bool arm_joint_jog(ArmSide side, int joint_1_to_n, int direction, std::int32_t speed_pct);
参数:
side:机械臂侧别,fd_robot::ArmSide枚举(kLeft / kRight)joint_1_to_n:关节序号,int类型,范围 1 ~ N(N = 该侧 DOF)direction:点动方向,int类型,正负含义由驱动实现约定speed_pct:速度百分比,int32_t类型,范围约 1 ~ 100
返回值:
bool:操作结果true:指令发送成功false:指令发送失败
使用示例:
5.arm_joint_step_deg - 手臂单关节步进
方法: ctrl.arm_joint_step_deg(side, joint_1_to_n, direction, step_deg)
C++ 签名: bool arm_joint_step_deg(ArmSide side, int joint_1_to_n, int direction, float step_deg);
参数:
side:机械臂侧别,fd_robot::ArmSide枚举(kLeft / kRight)joint_1_to_n:关节序号,int类型,范围 1 ~ N(N = 该侧 DOF)direction:步进方向,int类型,-1 减角度,+1 加角度step_deg:步长,float类型,单位:度 (°),建议约 0.5 ~ 5.0
返回值:
bool:操作结果true:指令发送成功false:指令发送失败
使用示例:
6.arm_power_on - 单臂上电
方法: ctrl.arm_power_on(side)
C++ 签名: bool arm_power_on(ArmSide side);
参数:
side:机械臂侧别,fd_robot::ArmSide枚举(kLeft / kRight)。single 单臂机型忽略侧别
返回值:
bool:操作结果true:指令发送成功false:指令发送失败
使用示例:
注意: 机械臂控制无反应时,优先检查是否已上电;若因急停导致掉使能,需重新调用上电接口。
7.arm_power_on_both - 双臂上电
方法: ctrl.arm_power_on_both()
C++ 签名: bool arm_power_on_both();
说明: dual 双臂模式下同时上电;single 单臂模式下上电单臂。
参数:
- 无
返回值:
bool:操作结果true:指令发送成功false:指令发送失败
使用示例:
8.arm_power_off_both - 双臂下电
方法: ctrl.arm_power_off_both()
C++ 签名: bool arm_power_off_both();
说明: dual 双臂模式下同时下电;single 单臂模式下下电单臂。
参数:
- 无
返回值:
bool:操作结果true:指令发送成功false:指令发送失败
使用示例:
9.arm_stop - 单臂停止(下电)
方法: ctrl.arm_stop(side)
C++ 签名: bool arm_stop(ArmSide side);
参数:
side:机械臂侧别,fd_robot::ArmSide枚举(kLeft / kRight)
返回值:
bool:操作结果true:指令发送成功false:指令发送失败
使用示例:
10.arm_move_axis_delta - 手臂沿轴平移
方法: ctrl.arm_move_axis_delta(side, axis, distance_m)
C++ 签名: bool arm_move_axis_delta(ArmSide side, char axis, float distance_m);
说明: 机械臂末端沿基坐标系指定轴做笛卡尔相对运动,依赖 arm_api_base 指向的 fd_arm_http 服务。
参数:
side:机械臂侧别,fd_robot::ArmSide枚举(kLeft / kRight)axis:平移轴,char类型,如'x'/'y'/'z'distance_m:平移距离,float类型,单位:米 (m),正负表示方向
返回值:
bool:操作结果true:请求成功false:请求失败
使用示例:
11.arm_move_to_target - 手臂笛卡尔目标点
方法: ctrl.arm_move_to_target(side, x, y, z)
C++ 签名: bool arm_move_to_target(ArmSide side, float x, float y, float z);
说明: 机械臂末端运动到笛卡尔坐标点,依赖 arm_api_base(默认 http://127.0.0.1:8000)。
参数:
side:机械臂侧别,fd_robot::ArmSide枚举(kLeft / kRight)x / y / z:目标位置,float类型,单位:米 (m)
返回值:
bool:操作结果true:请求成功false:请求失败
使用示例:
12.arm_move_to_location - 手臂预置位置名运动
方法: ctrl.arm_move_to_location(side, location_name)
C++ 签名: bool arm_move_to_location(ArmSide side, const std::string &location_name);
说明: 机械臂运动到已配置的预置位置(名称),依赖 arm_api_base。
参数:
side:机械臂侧别,fd_robot::ArmSide枚举(kLeft / kRight)location_name:预置位置名,std::string类型,须已预先配置
返回值:
bool:操作结果true:请求成功false:请求失败
使用示例:
13.arm_move_joints_traj - 手臂关节轨迹运动
方法: ctrl.arm_move_joints_traj(side, traj)
C++ 签名: bool arm_move_joints_traj(ArmSide side, const std::vector<std::vector<float>> &traj);
说明: 按多点关节轨迹运动,轨迹由多个关节角序列组成。
参数:
side:机械臂侧别,fd_robot::ArmSide枚举(kLeft / kRight)traj:轨迹点序列,std::vector<std::vector<float>>类型,每个轨迹点为关节角数组(单位:弧度),每点长度 = 该侧 DOF
返回值:
bool:操作结果true:指令发送成功false:指令发送失败
使用示例:
14.arm_get_joint_angles - 获取机械臂关节角(同步读取)
方法: state.arm_get_joint_angles(side, rad_out)
C++ 签名: bool arm_get_joint_angles(ArmSide side, std::vector<float> &rad_out) const;
说明: 同步读取关节角(弧度),输出数组长度等于该侧 DOF。本接口仅 C++ 提供,Python State 暂未封装。
参数:
side:机械臂侧别,fd_robot::ArmSide枚举(kLeft / kRight)rad_out:出参,std::vector<float> &类型,返回关节角,单位:弧度 (rad)
返回值:
bool:是否有有效数据true:已有数据,rad_out有效false:尚无数据,rad_out不可信
使用示例:
15.arm_sub_joint_angles - 订阅机械臂关节角(异步回调)
方法: state.arm_sub_joint_angles(side, cb)
C++ 签名: SubscriptionId arm_sub_joint_angles(ArmSide side, ArmJointRadCallback cb); // cb: void(const std::vector<float>& rad)
说明: 关节角更新时在回调线程中调用回调。本接口仅 C++ 提供,Python State 暂未封装。
参数:
side:机械臂侧别,fd_robot::ArmSide枚举(kLeft / kRight)cb:回调函数,std::function<void(const std::vector<float>&)>类型,入参为关节角数组,单位:弧度 (rad)
返回值:
SubscriptionId:订阅ID,类型为uint64_t。可用于后续取消订阅;空回调返回0(失败)
使用示例:
16.arm_get_end_pose - 获取机械臂末端位姿(同步读取)
方法: state.arm_get_end_pose(side, out)
C++ 签名: bool arm_get_end_pose(ArmSide side, ArmEndPose &out) const;
说明: 同步读取末端位置与四元数姿态。本接口仅 C++ 提供,Python State 暂未封装。其中 fd_robot::ArmEndPose 结构:position[3](位置 x,y,z,单位 m)、orientation[4](姿态四元数 x,y,z,w)。
参数:
side:机械臂侧别,fd_robot::ArmSide枚举(kLeft / kRight)out:出参,fd_robot::ArmEndPose &类型,返回末端位姿
返回值:
bool:是否有有效数据true:已有数据,out有效false:尚无数据,out不可信
使用示例:
17.arm_sub_end_pose - 订阅机械臂末端位姿(异步回调)
方法: state.arm_sub_end_pose(side, cb)
C++ 签名: SubscriptionId arm_sub_end_pose(ArmSide side, ArmEndPoseCallback cb); // cb: void(const ArmEndPose&)
说明: 末端位姿更新时在回调线程中调用回调。本接口仅 C++ 提供,Python State 暂未封装。
参数:
side:机械臂侧别,fd_robot::ArmSide枚举(kLeft / kRight)cb:回调函数,std::function<void(const fd_robot::ArmEndPose&)>类型
返回值:
SubscriptionId:订阅ID,类型为uint64_t。可用于后续取消订阅;空回调返回0(失败)
使用示例:
建议:
- 订阅的回调在线程池中执行,注意线程安全
- 无需接收位姿更新时及时取消订阅,避免不必要的回调
- 可与
arm_get_end_pose同步读取配合使用
