SDK函数介绍 ================================================ .. toctree:: :maxdepth: 5 接口调用返回值类型: .. code-block:: c++ :linenos: typedef enum _ARMErrorCode{ }ARMErrorCode; 机械臂的SDK函数介绍 ----------------------------------------------------- 实例化机械臂 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 实例化机械臂 * @param [in] robotype 机械臂型号 * @param [in] robotname 单臂、左臂或者右臂 * @param [in] 机械臂DH参数补偿值 **/ SingleRobot(int robotype, RobotName robotname, double DHCompensations[28] = nullptr); 关闭机械臂 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 关闭机械臂 **/ ~SingleRobot(); 关节空间运动 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 关节空间运动 * @param [in] destJointPos 目标点关节位置,单位deg * @param [in] velocity 速度百分比,范围[0-100] * @param [in] acceleration 加速度百分比,范围[0-100],暂不开放 * @param [out] errMsg 错误信息打印 * @return 错误码 **/ ARMErrorCode MoveJ(double* destJointPos, double velocity, double acceleration, char errMsg[1024]); 关节空间运动代码示例-单臂 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: int MoveJTest() { SingleRobot robot(SingleRobot::ART3_R7, SingleRobot::LeftArm); // 实例化机械臂 // 目标点点位信息 double j1_left[7] = {10, 10, 10, 10, 10, -10, 10}; // 点位数据仅供参考 double velocity = 20; double acceleration = 20; robot.SetSpeed(10); // 设置最大运动速度 robot.SetAccScale(10); // 设置运动加速度 char errMsg[1024]; ARMErrorCode rtnCode = robot.MoveJ(j1_left, velocity, acceleration, errMsg); if (rtnCode != ARMErrorCode::Success) { return -1; } // 判断是否运动完成 while(true) { std::this_thread::sleep_for(std::chrono::milliseconds(1000)); uint8_t state; robot.GetRobotMotionDone(state); if (state == 1) { break; } } printf("moveJ errorcode: %d\n", rtnCode); return 0; } 关节空间运动代码示例-双臂 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: int MoveJTest2() { SingleRobot robot_left(SingleRobot::ART3_R7, SingleRobot::LeftArm); // 实例化机械臂-左臂 SingleRobot robot_right(SingleRobot::ART3_R7, SingleRobot::RightArm); // 实例化机械臂-右臂 // 目标点点位信息 double j1_left[7] = {10, 10, 10, 10, 10, -10, 10}; double j1_right[7] = {10, 10, 10, 10, 10, -10, 10}; double velocity = 20; double acceleration = 20; robot_left.SetSpeed(10); // 设置最大运动速度 robot_left.SetAccScale(10); // 设置运动加速度 robot_right.SetSpeed(10); // 设置最大运动速度 robot_right.SetAccScale(10); // 设置运动加速度 char errMsg[1024]; ARMErrorCode rtnCode = robot_left.MoveJ(j1_left, velocity, acceleration, errMsg); if (rtnCode != ARMErrorCode::Success) { return -1; } memset(errMsg, 0, 1024); rtnCode = robot_right.MoveJ(j1_right, velocity, acceleration, errMsg); if (rtnCode != ARMErrorCode::Success) { return -1; } // 判断是否运动完成 uint8_t state_left = 0; uint8_t state_right = 0; while(true) { std::this_thread::sleep_for(std::chrono::milliseconds(1000)); robot_left.GetRobotMotionDone(state_left); robot_right.GetRobotMotionDone(state_right); if (state_left == 1 && state_right == 1) { break; } } printf("moveJ errorcode: %d\n", rtnCode); return 0; } 笛卡尔空间点到点运动 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 笛卡尔空间点到点运动 * @param [in] destCartPos 目标点笛卡尔位姿[mm, deg] * @param [in] destArmAngle 目标点机械臂臂角,单位deg * @param [in] velocity 速度百分比,范围[0-100] * @param [in] acceleration 加速度百分比,范围[0-100],暂不开放 * @param [out] errMsg 错误信息打印 * @return 错误码 **/ ARMErrorCode MoveP(double* destCartPos, double destArmAngle, double velocity, double acceleration, char errMsg[1024]); 笛卡尔空间直线运动 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 笛卡尔空间直线运动 * @param [in] destCartPos 目标点笛卡尔位姿[mm, deg] * @param [in] destArmAngle 目标点机械臂臂角,单位deg * @param [in] velocity 速度百分比,范围[0-100] * @param [in] acceleration 加速度百分比,范围[0-100],暂不开放 * @param [out] errMsg 错误信息打印 * @return 错误码 **/ ARMErrorCode MoveL(double* destCartPos, double destArmAngle, double velocity, double acceleration, char errMsg[1024]); 笛卡尔空间直线运动代码示例-单臂 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: int MoveLTest() { SingleRobot robot(SingleRobot::ART3_R7, SingleRobot::LeftArm); // 实例化机械臂 // 笛卡尔空间直线运动轨迹规划 double j0_left[7] = {10, 10, 10, 10, 10, -10, 10}; double desc_pos1_left[6] = {148.545536, 14.373573, 791.612359, 14.266475, 4.332141, 29.863598}; double armAngle1_left = 351.959826; double velocity = 20; double acceleration = 20; robot.SetSpeed(10); // 设置最大运动速度 robot.SetAccScale(10); // 设置运动加速度 char errMsg[1024]; ARMErrorCode rtnCode = robot.MoveJ(j0_left, velocity, acceleration, errMsg); // 运动到直线轨迹起点 if (rtnCode != ARMErrorCode::Success) { return -1; } // 判断运动是否完成 while(true) { std::this_thread::sleep_for(std::chrono::milliseconds(1000)); uint8_t state; robot.GetRobotMotionDone(state); if (state == 1) { break; } } memset(errMsg, 0, 1024); rtnCode = robot.MoveL(desc_pos1_left, armAngle1_left, velocity, acceleration, errMsg); if (rtnCode != ARMErrorCode::Success) { return -1; } // 判断运动是否完成 while(true) { std::this_thread::sleep_for(std::chrono::milliseconds(1000)); uint8_t state; robot.GetRobotMotionDone(state); if (state == 1) { break; } } printf("moveL errorcode: %d\n", rtnCode); return 0; } 笛卡尔空间直线运动代码示例-双臂 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: int MoveLTest2() { SingleRobot robot_left(SingleRobot::ART3_R7, SingleRobot::LeftArm); // 实例化机械臂-左臂 SingleRobot robot_right(SingleRobot::ART3_R7, SingleRobot::RightArm); // 实例化机械臂-右臂 // 笛卡尔空间直线运动轨迹规划 double j0_left[7] = {10, 10, 10, 10, 10, -10, 10}; double j0_right[7] = {10, 10, 10, 10, 10, -10, 10}; double desc_pos1_left[6] = {148.545536, 14.373573, 791.612359, 14.266475, 4.332141, 29.863598}; double armAngle1_left = 351.959826; double desc_pos1_right[6] = {148.545536, 14.373573, 791.612359, 14.266475, 4.332141, 29.863598}; double armAngle1_right = 351.959826; double velocity = 20; double acceleration = 20; robot_left.SetSpeed(10); // 设置最大运动速度 robot_left.SetAccScale(10); // 设置运动加速度 robot_right.SetSpeed(10); // 设置最大运动速度 robot_right.SetAccScale(10); // 设置运动加速度 char errMsg[1024]; // 左右臂运动到直线轨迹起点 ARMErrorCode rtnCode = robot_left.MoveJ(j0_left, velocity, acceleration, errMsg); if (rtnCode != ARMErrorCode::Success) { return -1; } memset(errMsg, 0, 1024); rtnCode = robot_right.MoveJ(j0_right, velocity, acceleration, errMsg); if (rtnCode != ARMErrorCode::Success) { return -1; } // 判断是否运动完成 uint8_t state_left = 0; uint8_t state_right = 0; while(true) { std::this_thread::sleep_for(std::chrono::milliseconds(1000)); robot_left.GetRobotMotionDone(state_left); robot_right.GetRobotMotionDone(state_right); if (state_left == 1 && state_right == 1) { break; } } memset(errMsg, 0, 1024); rtnCode = robot_left.MoveL(desc_pos1_left, armAngle1_left, velocity, acceleration, errMsg); if (rtnCode != ARMErrorCode::Success) { return -1; } memset(errMsg, 0, 1024); rtnCode = robot_right.MoveL(desc_pos1_right, armAngle1_right, velocity, acceleration, errMsg); if (rtnCode != ARMErrorCode::Success) { return -1; } // 判断运动是否完成 state_left = 0; state_right = 0; while(true) { std::this_thread::sleep_for(std::chrono::milliseconds(1000)); robot_left.GetRobotMotionDone(state_left); robot_right.GetRobotMotionDone(state_right); if (state_left == 1 && state_right == 1) { break; } } printf("moveL errorcode: %d\n", rtnCode); return 0; } 笛卡尔空间圆弧运动 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 笛卡尔空间圆弧运动 * @param [in] midCartPos 中间点笛卡尔位姿,单位 [mm deg] * @param [in] midArmAngle 中间点机械臂臂角,单位deg * @param [in] destCartPos 目标点笛卡尔位姿,单位 [mm deg] * @param [in] destArmAngle 目标点机械臂臂角,单位deg * @param [in] velocity 速度百分比,范围[0-100] * @param [in] acceleration 加速度百分比,范围[0-100],暂不开放 * @param [out] errMsg 错误信息打印 * @return 错误码 **/ ARMErrorCode MoveC(double* midCartPos, double midArmAngle, double* destCartPos, double destArmAngle, double velocity, double acceleration, char errMsg[1024]); 笛卡尔空间圆弧运动代码示例-单臂 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: int MoveCTest() { SingleRobot robot(SingleRobot::ART3_R7, SingleRobot::LeftArm); // 实例化机械臂 // 圆弧起点、中间点、目标点点位信息 double desc_pos1_left[6] = {148.545536, 14.373573, 791.612359, 14.266475, 4.332141, 29.863598}; double armAngle1_left = 351.959826; double desc_pos2_left[6] = {237.686578, 36.090539, 763.929631, 16.922444, 13.941801, 30.475488}; double armAngle2_left = 352.413796; double desc_pos3_left[6] = {321.576660, 56.804783, 723.049930, 19.871510, 23.501873, 31.687545}; double armAngle3_left = 352.574131; double velocity = 10; double acceleration = 10; robot.SetSpeed(10); // 设置最大运动速度 robot.SetAccScale(10); // 设置运动加速度 // 运动到圆弧轨迹起点 char errMsg[1024]; ARMErrorCode rtnCode = robot.MoveP(desc_pos1_left, armAngle1_left, velocity, acceleration, errMsg); if (rtnCode != ARMErrorCode::Success) { return -1; } // 判断是否运动完成 while(true) { std::this_thread::sleep_for(std::chrono::milliseconds(1000)); uint8_t state; robot.GetRobotMotionDone(state); if (state == 1) { break; } } printf("moveJ errorcode: %d\n", rtnCode); // 笛卡尔空间圆弧运动轨迹规划 memset(errMsg, 0, 1024); rtnCode = robot.MoveC(desc_pos2_left, armAngle2_left, desc_pos3_left, armAngle3_left, velocity, acceleration, errMsg); if (rtnCode != ARMErrorCode::Success) { return -1; } // 判断是否运动完成 while(true) { std::this_thread::sleep_for(std::chrono::milliseconds(1000)); uint8_t state; robot.GetRobotMotionDone(state); if (state == 1) { break; } } printf("moveC errorcode: %d\n", rtnCode); return 0; } 笛卡尔空间圆弧运动代码示例-双臂 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: int MoveCTest2() { SingleRobot robot_left(SingleRobot::ART3_R7, SingleRobot::LeftArm); // 实例化机械臂-左臂 SingleRobot robot_right(SingleRobot::ART3_R7, SingleRobot::RightArm); // 实例化机械臂-右臂 // 圆弧起点、中间点、目标点点位信息 double desc_pos1_left[6] = {148.545536, 14.373573, 791.612359, 14.266475, 4.332141, 29.863598}; double armAngle1_left = 351.959826; double desc_pos1_right[6] = {148.545536, 14.373573, 791.612359, 14.266475, 4.332141, 29.863598}; double armAngle1_right = 351.959826; double desc_pos2_left[6] = {237.686578, 36.090539, 763.929631, 16.922444, 13.941801, 30.475488}; double armAngle2_left = 352.413796; double desc_pos2_right[6] = {237.686578, 36.090539, 763.929631, 16.922444, 13.941801, 30.475488}; double armAngle2_right = 352.413796; double desc_pos3_left[6] = {321.576660, 56.804783, 723.049930, 19.871510, 23.501873, 31.687545}; double armAngle3_left = 352.574131; double desc_pos3_right[6] = {321.576660, 56.804783, 723.049930, 19.871510, 23.501873, 31.687545}; double armAngle3_right = 352.574131; double velocity = 10; double acceleration = 10; robot_left.SetSpeed(10); // 设置最大运动速度 robot_left.SetAccScale(10); // 设置运动加速度 robot_right.SetSpeed(10); // 设置最大运动速度 robot_right.SetAccScale(10); // 设置运动加速度 char errMsg[1024]; // 左右臂运动到圆弧轨迹起点 ARMErrorCode rtnCode = robot_left.MoveP(desc_pos1_left, armAngle1_left, velocity, acceleration, errMsg); if (rtnCode != ARMErrorCode::Success) { return -1; } memset(errMsg, 0, 1024); rtnCode = robot_right.MoveP(desc_pos1_right, armAngle1_right, velocity, acceleration, errMsg); if (rtnCode != ARMErrorCode::Success) { return -1; } // 判断是否运动完成 uint8_t state_left = 0; uint8_t state_right = 0; while(true) { std::this_thread::sleep_for(std::chrono::milliseconds(1000)); robot_left.GetRobotMotionDone(state_left); robot_right.GetRobotMotionDone(state_right); if (state_left == 1 && state_right == 1) { break; } } // 笛卡尔空间圆弧运动轨迹规划 memset(errMsg, 0, 1024); rtnCode = robot_left.MoveC(desc_pos2_left, armAngle2_left, desc_pos3_left, armAngle3_left, velocity, acceleration, errMsg); if (rtnCode != ARMErrorCode::Success) { return -1; } memset(errMsg, 0, 1024); rtnCode = robot_right.MoveC(desc_pos2_right, armAngle2_right, desc_pos3_right, armAngle3_right, velocity, acceleration, errMsg); if (rtnCode != ARMErrorCode::Success) { return -1; } // 判断运动是否完成 state_left = 0; state_right = 0; while(true) { std::this_thread::sleep_for(std::chrono::milliseconds(1000)); robot_left.GetRobotMotionDone(state_left); robot_right.GetRobotMotionDone(state_right); if (state_left == 1 && state_right == 1) { break; } } printf("moveC errorcode: %d\n", rtnCode); return 0; } 伺服运动开始 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 伺服运动开始,配合ServoJ指令使用 * @return 错误码 **/ ARMErrorCode ServoMoveStart(); 伺服运动结束 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 伺服运动结束,配合ServoJ指令使用 * @return 错误码 **/ ARMErrorCode ServoMoveEnd(); 关节空间伺服模式运动 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 关节空间伺服模式运动 * @param [in] jointPos 目标关节位置,单位deg * @param [in] period 指令下发周期,单位ms * @param [out] errMsg 错误信息打印 * @return 错误码 **/ ARMErrorCode ServoJ(double* jointPos, int period, char errMsg[1024]); 笛卡尔空间伺服运动 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 笛卡尔空间伺服运动 * @param [in] servo_cartPos 笛卡尔伺服运动轨迹点,[末端法兰坐标系位置、坐标系rpy角、机械臂臂角],长度7*len,单位[mm、deg、deg] * @param [in] len 笛卡尔伺服运动轨迹点个数 * @param [out] errMsg 错误信息打印 * @return 错误码 **/ ARMErrorCode ServoCart(double* servo_cartPos, uint32_t len, char errMsg[1024]); 关节空间伺服模式运动-单臂 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: int ServoJTest() { SingleRobot robot(SingleRobot::ART3_R7, SingleRobot::LeftArm); // 实例化机械臂 // 目标点点位信息 double j1_left[7] = {10, 10, 10, 10, 10, -10, 10}; double velocity = 20; double acceleration = 20; robot.SetSpeed(10); // 设置最大运动速度 robot.SetAccScale(10); // 设置运动加速度 char errMsg[1024]; ARMErrorCode rtnCode = robot.MoveJ(j1_left, velocity, acceleration, errMsg); // if (rtnCode != ARMErrorCode::Success) // { // return -1; // } // 判断是否运动完成 while(true) { std::this_thread::sleep_for(std::chrono::milliseconds(1000)); uint8_t state; robot.GetRobotMotionDone(state); if (state == 1) { break; } } printf("moveJ errorcode: %d\n", rtnCode); int stepTime = 5; // ms double speed = 5; double runTime = 1.0; // s int totalNum = runTime*1000.0/stepTime; double nextJoint[7] = {0}; memset(errMsg, 0, 1024); rtnCode = robot.ServoMoveStart(); if (rtnCode != ARMErrorCode::Success) { return -1; } for (int i = 0; i < totalNum; i++) { for (int j = 0; j < 7; j++) { nextJoint[j] = j1_left[j] + i*1.0/totalNum*speed; } rtnCode = robot.ServoJ(nextJoint, stepTime, errMsg); if (rtnCode != ARMErrorCode::Success) { std::cout << (int)rtnCode << std::endl; break; } } printf("servoJ errorcode: %d\n", rtnCode); rtnCode = robot.ServoMoveEnd(); if (rtnCode != ARMErrorCode::Success) { return -1; } return 0; } 关节空间伺服模式运动-双臂 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: int ServoJTest2() { std::thread th_left([]{ SingleRobot robot_left(SingleRobot::ART3_R7, SingleRobot::LeftArm); // 实例化机械臂-左臂 // 目标点点位信息 double j1_left[7] = {10, 10, 10, 10, 10, -10, 10}; double velocity = 20; double acceleration = 20; robot_left.SetSpeed(10); // 设置最大运动速度 robot_left.SetAccScale(10); // 设置运动加速度 char errMsg_l[1024]; ARMErrorCode rtnCode = robot_left.MoveJ(j1_left, velocity, acceleration, errMsg_l); if (rtnCode != ARMErrorCode::Success) { return -1; } // 判断是否运动完成 uint8_t state_left = 0; while(true) { std::this_thread::sleep_for(std::chrono::milliseconds(1000)); robot_left.GetRobotMotionDone(state_left); if (state_left == 1) { break; } } printf("left arm moveJ errorcode: %d\n", rtnCode); int stepTime = 5; // ms double speed = 5; double runTime = 1.0; // s int totalNum = runTime*1000.0/stepTime; double nextJoint[7] = {0}; ARMErrorCode rtnCode_l = robot_left.ServoMoveStart(); if (rtnCode_l != ARMErrorCode::Success) { std::cout << (int)rtnCode_l << std::endl; robot_left.ServoMoveEnd(); return -1; } for (int i = 0; i < totalNum; i++) { for (int j = 0; j < 7; j++) { nextJoint[j] = j1_left[j] + i*1.0/totalNum*speed; } rtnCode_l = robot_left.ServoJ(nextJoint, stepTime, errMsg_l); if (rtnCode_l != ARMErrorCode::Success) { break; } } printf("servoJ errorcode: %d\n", rtnCode_l); rtnCode_l = robot_left.ServoMoveEnd(); if (rtnCode_l != ARMErrorCode::Success) { return -1; } }); if (th_left.joinable()) { th_left.join(); } std::this_thread::sleep_for(std::chrono::microseconds(1000)); std::thread th_right([]{ SingleRobot robot_right(SingleRobot::ART3_R7, SingleRobot::RightArm); // 实例化机械臂-右臂 // 目标点点位信息 double j1_right[7] = {10, 10, 10, 10, 10, -10, 10}; double velocity = 20; double acceleration = 20; robot_right.SetSpeed(10); // 设置最大运动速度 robot_right.SetAccScale(10); // 设置运动加速度 char errMsg_r[1024]; ARMErrorCode rtnCode = robot_right.MoveJ(j1_right, velocity, acceleration, errMsg_r); if (rtnCode != ARMErrorCode::Success) { return -1; } // 判断是否运动完成 uint8_t state_right = 0; while(true) { std::this_thread::sleep_for(std::chrono::milliseconds(1000)); robot_right.GetRobotMotionDone(state_right); if (state_right == 1) { break; } } printf("right arm moveJ errorcode: %d\n", rtnCode); int stepTime = 5; // ms double speed = 5; double runTime = 1.0; // s int totalNum = runTime*1000.0/stepTime; double nextJoint[7] = {0}; ARMErrorCode rtnCode_r = robot_right.ServoMoveStart(); if (rtnCode_r != ARMErrorCode::Success) { std::cout << (int)rtnCode_r << std::endl; robot_right.ServoMoveEnd(); return -1; } for (int i = 0; i < totalNum; i++) { for (int j = 0; j < 7; j++) { nextJoint[j] = j1_right[j] + i*1.0/totalNum*speed; } rtnCode_r = robot_right.ServoJ(nextJoint, stepTime, errMsg_r); if (rtnCode_r != ARMErrorCode::Success) { break; } } printf("servoJ errorcode: %d\n", rtnCode_r); rtnCode_r = robot_right.ServoMoveEnd(); if (rtnCode_r != ARMErrorCode::Success) { return -1; } }); if (th_right.joinable()) { th_right.join(); } return 0; } 停止运动 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 停止运动 * @return 错误码 **/ ARMErrorCode StopMotion(); 暂停运动 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 暂停运动 * @return 错误码 **/ ARMErrorCode PauseMotion(); 恢复运动 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 恢复运动 * @return 错误码 **/ ARMErrorCode ResumeMotion(); 清空运动指令队列 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 清空运动指令队列 * @return 错误码 */ ARMErrorCode MotionQueueClear(); 多点关节空间运动 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 多点关节空间运动 * @param [in] jointPos 关节位置,单位: deg * @param [in] pointNum 关节空间点个数 * @param [in] velocity 速度百分比,范围[0-100] * @param [in] acceleration 加速度百分比,范围[0-100],暂不开放 * @param [out] errMsg 错误信息打印 * @return 错误码 **/ ARMErrorCode MoveJ_path(double jointPos[256][7], uint8_t pointNum, double velocity, double acceleration, char errMsg[1024]); 多点关节空间运动 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 多点笛卡尔空间运动 * @param [in] cartPos 笛卡尔位姿,单位: [mm, deg] * @param [in] armAngle 臂角,单位: deg * @param [in] pointNum 关节空间点个数 * @param [in] velocity 速度百分比,范围[0-100] * @param [in] acceleration 加速度百分比,范围[0-100],暂不开放 * @param [out] errMsg 错误信息打印 * @return 错误码 **/ ARMErrorCode MoveL_path(double cartPos[256][6], double armAngle[256], uint8_t pointNum, double velocity, double acceleration, char errMsg[1024]); 机械臂回零 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 机械臂回零 * @param [in] velocity 速度百分比,范围[0-100] * @param [in] acceleration 加速度百分比,范围[0-100],暂不开放 * @param [out] errMsg 错误信息打印 * @return 错误码 **/ ARMErrorCode RobotHoming(double velocity, double acceleration, char errMsg[1024]); 点动开始 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 点动开始 * @param [in] ref 0-关节点动 * @param [in] number 关节序号 1-关节1 2-关节2 3-关节3 4-关节4 5-关节5 6-关节6 7-关节7 * @param [in] dir 方向,0-负方向,1-正方向 * @param [in] vel 速度百分比,范围[0-100] * @param [in] acc 加速度百分比,范围[0-100],暂不开放 * @param [in] max_dis 单次最大点动角度,单位: deg * @param [out] errMsg 错误信息打印 * @return 错误码 **/ ARMErrorCode StartJOG(uint8_t ref, uint8_t number, uint8_t dir, double vel, double acc, double max_dis, char errMsg[1024]); 点动结束 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 点动结束 * @return 错误码 **/ ARMErrorCode StopJOG(); 开始奇异位姿保护 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 开始奇异位姿保护 * @param [in] dist 奇异距离区间,单位mm * @param [in] ang 奇异角度区间,单位deg * @return 错误码 **/ ARMErrorCode SingularAvoidStart(double dist, double ang); 停止奇异位姿保护 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 停止奇异位姿保护 * @return 错误码 **/ ARMErrorCode SingularAvoidEnd(); 设置工具坐标系 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置工具坐标系 * @param [in] toolNum 工具坐标系id 范围1-19 * @param [in] corrd 工具坐标系 {x, y, z, rx, ry, rz}, 单位:[mm, deg] * @return 错误码 **/ ARMErrorCode SetToolCorrd(int toolNum, double* corrd); 设置机械臂加速度百分比 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置机械臂加速度百分比 * @param [in] scale 加速度百分比 * @return 错误码 **/ ARMErrorCode SetAccScale(double scale); 设置全局速度百分比 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置全局速度百分比 * @param [in] speed 速度百分比 * @return 错误码 **/ ARMErrorCode SetSpeed(double speed); 正运动学求解 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 正运动学求解 * @param [in] joint_val 关节位置,单位deg * @param [out] xyzrpy 笛卡尔位姿 * @param [out] arm_angle 机械臂臂角 * @return 错误码 **/ ARMErrorCode GetForwardKin(double* joint_val, double* desc_pos, double& arm_angle); 逆运动学求解 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 逆运动学求解 * @param [in] trans 末端笛卡尔位姿,单位 [mm deg] * @param [in] arm_angle 机械臂臂角,单位deg * @param [out] joint_val 关节位置,单位deg * @return 错误码 **/ ARMErrorCode GetInverseKin(double* desc_pos, double arm_angle, double* joint_val); 逆运动学求解(参考位置) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 逆运动学求解,参考指定关节位置求解 * @param [in] trans 末端笛卡尔位姿,单位 [mm deg] * @param [in] arm_angle 机械臂臂角,单位deg * @param [in] ref_joint_val 参考关节位置,单位deg * @param [out] joint_val 关节位置,单位deg * @return 错误码 **/ ARMErrorCode GetInverseKinRef(double* desc_pos, double arm_angle, double* ref_joint_val, double* joint_val); 获取当前关节位置(角度) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取当前关节位置(角度) * @param [out] joint_pos,单位[deg] * @return 错误码 **/ ARMErrorCode GetActualJointPosDegree(double joint_pos[7]); 获取当前工具位姿 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取当前工具位姿 * @param [out] pose,单位[mm, deg] * @return 错误码 **/ ARMErrorCode GetActualTCPPose(double pose[6]); 查询机械臂运动是否完成 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 查询机械臂运动是否完成 * @param [out] state,0-未完成,1-完成 * @return 错误码 **/ ARMErrorCode GetRobotMotionDone(uint8_t& state); 获取当前末端速度 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取当前末端速度 * @param [out] eeVal,单位[mm/s、deg/s] * @return 错误码 **/ ARMErrorCode GetActualToolFlangeSpeed(double eeVal[6]); 获取关节扭矩 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取关节扭矩 * @param [out] torques,单位Nm * @return 错误码 **/ ARMErrorCode GetJointTorques(double torques[7]); 获取关节驱动器扭矩 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取关节驱动器扭矩 * @param [out] torques,单位Nm * @return 错误码 **/ ARMErrorCode GetJointDriverTorque(double torques[7]); 查询机器人错误码 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 查询机器人错误码 * @param [out] errCode 错误码 * @return 错误码 **/ ARMErrorCode GetRobotErrorCode(unsigned int& errCode); 获取机器人是否奇异 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取机器人是否奇异 * @param [in] judgeDist 奇异距离判断区间,单位mm * @param [in] judgeAng 奇异角度判断区间,单位deg * @param [out] state 0-不奇异 1-奇异 * @return 错误码 **/ ARMErrorCode GetRobotSingularState(double judgeDist, double judgeAng, uint8_t& state); 获取机器人DH参数补偿值 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取机器人DH参数补偿值 * @param [out] dh_theta 零位角 * @param [out] dh_a 连杆偏距 * @param [out] dh_d 连杆长度 * @param [out] dh_alpha 连杆扭角 * @return 错误码 **/ ARMErrorCode GetDHCompensation(double dh_theta[7], double dh_a[7], double dh_d[7], double dh_alpha[7]); 关节使能 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 关节使能 * @param [in] joint_id 关节序号 0-机械臂所有关节,1-7-机械臂对应关节 * @return 错误码 **/ ARMErrorCode AxisEnable(int joint_id); 关节去使能 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 关节去使能 * @param [in] joint_id 关节序号 0-机械臂所有关节,1-7-机械臂对应关节 * @return 错误码 **/ ARMErrorCode AxisDisable(int joint_id); 关节校零 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 关节校零 * @param [in] joint_id 关节序号 0-机械臂所有关节,1-7-机械臂对应关节 * @return 错误码 **/ ARMErrorCode AxisZeroing(int joint_id); 清除控制器错误 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 清除控制器错误 * @return 错误码 **/ ARMErrorCode AxisResetError(); 设置负载重量和质心(仅JK2.0机械臂使用) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置负载重量和质心 * @param [in] index 负载列表下标,范围:[0-19] * @param [in] mess 负载重量,单位:kg * @param [in] mess 负载质心坐标,单位:mm * @return 错误码 **/ ARMErrorCode SetLoadcoord(uint8_t index, double mess, double messCenter[3]); 设置关节摩擦力补偿开关(仅JK2.0机械臂使用) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置关节摩擦力补偿开关 * @param [in] onOff 补偿开关 0-关,1-开 * @return 错误码 **/ ARMErrorCode FrictionCompensationOnOff(uint8_t onOff); 设置关节摩擦力补偿系数(仅JK2.0机械臂使用) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置关节摩擦力补偿系数 * @param [in] value 摩擦力补偿系数,范围: [0, 1] * @return 错误码 **/ ARMErrorCode SetFrictionValue(double value[7]); 设置机械臂软限位保护开关(仅JK2.0机械臂使用) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置机械臂软限位保护开关 * @param [in] onOff 补偿开关 0-关,1-开 * @return 错误码 **/ ARMErrorCode SetJointSoftLimitOnOff(uint8_t onOff); 设置电流环拖动示教(仅JK2.0机械臂使用) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置电流环拖动示教 * @param [in] enable 拖动示教开关 0-关,1-开 * @param [in] mode 拖动示教方法选择 0-电流环 * @return 错误码 **/ ARMErrorCode SetTeachMode(uint8_t enable, uint8_t mode=0); 设置关节扭矩力传感器拖动示教(仅JK2.0机械臂使用) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置关节扭矩力传感器拖动示教 * @param [in] enable 拖动示教开关 0-关,1-开 * @param [in] mode 拖动示教方法选择 0-扭矩力传感器 * @return 错误码 **/ ARMErrorCode SetJointSensorTeachMode(uint8_t enable, uint8_t mode=0); 获取是否处于拖动示教模式(仅JK2.0机械臂使用) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取是否处于拖动示教模式 * @param [out] mode 是否处于拖动模式标志 0-不处于,1-处于 * @return 错误码 **/ ARMErrorCode IsInDragTeach(uint8_t& mode); 设置碰撞检测(仅JK2.0机械臂使用) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置碰撞检测 * @param [in] enable 碰撞检测开关 0-关,1-开 * @param [in] mode 碰撞检测方法选择 0-电流环 * @return 错误码 **/ ARMErrorCode SetCollisionDetectionMode(uint8_t enable, uint8_t mode); 设置碰撞等级(仅JK2.0机械臂使用) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置碰撞等级 * @param [in] level 碰撞等级,范围: [1-10] * @return 错误码 **/ ARMErrorCode SetAnticollision(uint8_t level[7]); 设置碰撞后策略(仅JK2.0机械臂使用) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置碰撞后策略 * @param [in] strategy 碰撞后策略 0-停止,1-重力矩模式 * @return 错误码 **/ ARMErrorCode SetCollisionStrategy(uint8_t strategy); 设置关节扭矩力传感器零点标定(仅JK2.0机械臂使用) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置关节扭矩力传感器零点标定 * @param [in] joint_val 关节角,单位: deg * @param [in] speed 速度百分比 * @return 错误码 **/ ARMErrorCode SetJointSensorZero(double joint_val[7], double speed); 设置机器人安装角度(仅JK2.0机械臂使用) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置机器人安装角度 * @param [in] yangle 倾斜角,单位: deg * @param [in] zangle 旋转角,单位: deg * @return 错误码 **/ ARMErrorCode SetRobotInstallAngle(double yangle, double zangle); 获取机器人安装角度(仅JK2.0机械臂使用) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取机器人安装角度 * @param [in] yangle 倾斜角,单位: deg * @param [in] zangle 旋转角,单位: deg * @return 错误码 **/ ARMErrorCode GetRobotInstallAngle(double& yangle, double& zangle); 获取当前末端法兰位姿 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取当前末端法兰位姿 * @param [in] jointPos 当前机械臂关节位置,单位deg * @param [out] fLangePos [末端法兰位置、姿态、机械臂臂角],单位[mm、deg、deg] * @return 错误码 **/ ARMErrorCode GetActualToolFlangePose(double jointPos[7], double fLangePos[7]); 设置机械臂正限位 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置机械臂正限位 * @param [in] limitPositive 关节正限位,单位deg * @return 错误码 **/ ARMErrorCode SetLimitPositive(double limitPositive[7]); 设置机械臂负限位 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置机械臂负限位 * @param [in] limitNegative 关节负限位,单位deg * @return 错误码 **/ ARMErrorCode SetLimitNegative(double limitNegative[7]); 获取关节软限位角度 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取机械臂关节软限位角度 * @param [out] limitNegative 关节负限位,单位deg * @param [out] limitPositive 关节正限位,单位deg * @return 错误码 **/ ARMErrorCode GetJointSoftLimitDeg(double limitNegative[7], double limitPositive[7]); 获取机械臂固件版本 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取机械臂固件版本 * @param [out] driver1version 驱动器1固件版本 * @param [out] driver2version 驱动器2固件版本 * @param [out] driver3version 驱动器3固件版本 * @param [out] driver4version 驱动器4固件版本 * @param [out] driver5version 驱动器5固件版本 * @param [out] driver6version 驱动器6固件版本 * @param [out] driver7version 驱动器7固件版本 * @return 错误码 **/ ARMErrorCode GetFirmwareVersion(char driver1version[128], char driver2version[128], char driver3version[128], char driver4version[128], char driver5version[128], char driver6version[128], char driver7version[128]); 机器人控制权设置 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 机器人控制权设置 * @param [in] controlMode 0-SDK控制 1-ROS2控制 * @return 错误码 **/ ARMErrorCode SetControlAuthority(uint8_t controlMode); 加速度平滑开启 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 加速度平滑开启 * @return 错误码 **/ ARMErrorCode AccSmoothStart(); 加速度平滑关闭 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 加速度平滑关闭 * @return 错误码 **/ ARMErrorCode AccSmoothEnd(); 指定关节进入拖动/位置模式 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 指定关节进入拖动/位置模式 * @param [in] joint_id 关节ID,范围:1~7 * @param [in] flag 0-位置模式,1-拖动模式 * @return 错误码 **/ ARMErrorCode SetJointDrag(uint8_t joint_id, uint8_t flag); 设置工件坐标系 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置工件坐标系 * @param [in] corrd 工件坐标系位姿,单位:[mm, deg] * @return 错误码 **/ ARMErrorCode SetWObjCorrd(double corrd[6]); 设置关节扭矩传感器拖动示教参数 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置关节扭矩传感器拖动示教参数 * @param [in] drag_level 0-软,1-适中,2-硬 * @return 错误码 **/ ARMErrorCode SetJointSensorTeachModeParam(uint8_t drag_level); 获取关节驱动器温度 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取关节驱动器温度 * @param [out] temperature 关节驱动器温度,单位: 摄氏度 * @return 错误码 **/ ARMErrorCode GetJointDriverTemperature(double temperature[7]); 回安全点 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 回安全点 * @param [in] safePoint 安全点关节位置,单位: deg * @param [in] velocity 速度百分比,范围:[0, 100] * @param [in] acc 加速度百分比,范围:[0, 100] * @return 错误码 **/ ARMErrorCode MoveToSafePoint(double safePoint[7], double velocity, double acc); 力传感器激活 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 力传感器激活 * @param [in] onOff 0-复位 1-激活 * @return 错误码 **/ ARMErrorCode FT_Activate(uint8_t onOff); 力传感器校零 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 力传感器校零 * @param [in] joints 校零关节位置,单位: deg * @param [in] velocity 速度百分比,范围:[0, 100] * @param [in] acceleration 加速度百分比,范围:[0, 100] * @return 错误码 **/ ARMErrorCode FT_SetZero(double joints[7], double velocity, double acceleration); 力传感器负载辨识 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 力传感器负载辨识 * @param [in] joints 负载辨识点位,单位: deg * @param [in] velocity 速度百分比,范围:[0, 100] * @param [in] acceleration 加速度百分比,范围:[0, 100] * @return 错误码 **/ ARMErrorCode FT_PdCogIden(double joints[3][7], double velocity, double acceleration); 力传感器安全检测 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 力传感器安全检测 * @param [in] onOff 安全检测开关 * @param [in] safeTime 安全检测时间,单位: ms * @return 错误码 **/ ARMErrorCode SetForceSensorSafetyInspection(uint8_t onOff, uint8_t safeTime); 力传感器安全检测触发策略 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 力传感器安全检测触发策略 * @param [in] tragger 安全检测触发策略 0-停止 1-重力矩模式 * @return 错误码 **/ ARMErrorCode SetForceSensorSafetyTriggerStrategy(uint8_t tragger); 设置力传感器坐标系 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置力传感器坐标系 * @param [in] corrd 传感器坐标系位姿,单位:[mm, deg] * @return 错误码 **/ ARMErrorCode SetForceSensorCorrd(double corrd[6]); 设置力传感器安全检测阈值 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置力传感器安全检测阈值 * @param [in] threshold 传感器检测阈值,单位: * @return 错误码 **/ ARMErrorCode SetForceSensorThreshold(double threshold[6]); 无力负载辨识初始化设置 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 无力负载辨识初始化设置 * @param [in] onOff 负载辨识开关,0-关,1-开 * @param [in] forceSource 力的来源,0-关节电流,1-扭矩传感器 * @param [in] loadFlag 0-无负载,1-有负载 * @return 错误码 **/ ARMErrorCode LoadIdentifyInit(uint8_t onOff, uint8_t forceSource, uint8_t loadFlag); 无力负载辨识主程序 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 无力负载辨识主程序 * @param [in] joints 负载辨识点位,单位: deg * @param [in] velocity 速度百分比,范围:[0, 100] * @param [in] acceleration 加速度百分比,范围:[0, 100] * @param [in] loadFlag 0-无负载,1-有负载 * @return 错误码 **/ ARMErrorCode LoadIdentifyMain(double joints[9][7], double velocity, double acceleration, uint8_t loadFlag); 获取无力负载辨识结果 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取无力负载辨识结果 * @param [in] result 负载辨识结果,result[0]: 负载质量(kg) result[1]: 负载质心x(mm) result[2]: 负载质心y(mm) result[3]: 负载质心z(mm) * @return 错误码 **/ ARMErrorCode LoadIdentifyGetResult(double result[4]); 激活夹爪 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 激活夹爪 * @return 错误码 **/ ARMErrorCode ActGripper(); 控制夹爪运动 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 控制夹爪运动 * @param [in] position 位置百分比 * @param [in] speed 速度百分比 * @param [in] force 力百分比 * @return 错误码 **/ ARMErrorCode MoveGripper(double position, double speed, double force); 获取夹爪是否运动完成 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取夹爪是否运动完成 * @param [out] motiontate 0-运动中,1-运动完成 * @return 错误码 **/ ARMErrorCode GetGripperMotionDone(uint8_t &motionState); 获取夹爪激活状态 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取夹爪激活状态 * @param [out] act 0-未激活,1-激活 * @return 错误码 **/ ARMErrorCode GetGripperActivateStatus(uint8_t &actState); 获取夹爪位置 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取夹爪位置 * @param [out] position 百分比 * @return 错误码 **/ ARMErrorCode GetGripperCurPosition(double &position); 关节空间阻抗控制开启 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 关节空间阻抗控制开启 * @param [in] forceSource 0-关节电流 1-扭矩传感器 * @param [in] forceThreshold 触发力阈值[30-150],单位: N * @param [in] m 质量参数 * @param [in] b 阻尼参数 * @param [in] k 刚度参数 * @param [in] maxVel 最大关节速度 * @param [in] maxAcc 最大关节加速度 * @param [in] maxAng 最大调整角度(新增) * @param [in] maxTor 最大限制力矩(新增) * @return 错误码 **/ ARMErrorCode ImpedanceControlJointStart(int forceSource, double forceThreshold[7], double m[7], double b[7], double k[7], double maxVel[7], double maxAcc[7], double maxAng[7], double maxTor[7]); 关节空间阻抗控制关闭 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 关节空间阻抗控制关闭 * @return 错误码 **/ ARMErrorCode ImpedanceControlJointEnd(); 笛卡尔空间阻抗控制开启 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 笛卡尔空间阻抗控制开启 * @param [in] forceSource 0-六维力传感器 1-关节电流 * @param [in] forceThreshold 触发力阈值[30-150],单位: N * @param [in] m 质量参数 * @param [in] b 阻尼参数 * @param [in] k 刚度参数 * @param [in] maxV 最大线速度 * @param [in] maxVA 最大线加速度 * @param [in] maxW 最大角速度 * @param [in] maxWA 最大角加速度 * @param [in] maxDix 最大调整距离(新增) * @param [in] maxForce 最大力限制(新增) * @return 错误码 **/ ARMErrorCode ImpedanceControlCartStart(int forceSource, double forceThreshold[7], double m[7], double b[7], double k[7], double maxV, double maxVA, double maxW, double maxWA, double maxDix[6], double maxForce[6]); 笛卡尔空间阻抗控制关闭 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 笛卡尔空间阻抗控制关闭 * @return 错误码 **/ ARMErrorCode ImpedanceControlCartEnd(); 变参数导纳控制开启 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 变参数导纳控制开启 * @param [in] openDir 导纳功能开放方向[x y z rx ry rz] (0-不开放,1-开放) (rx ry rz导纳功能暂不开放,参数为0) * @param [in] targetForce 期望力 * @param [in] m 质量参数 * @param [in] b 阻尼参数 * @param [in] k 刚度参数 * @param [in] maxDis 最大调整距离, 范围: (0, 1000],单位: mm * @param [in] maxAng 最大调整角度, 范围: (0, 90],单位: deg * @return 错误码 **/ ARMErrorCode AdmittanceControlStart(uint8_t openDir[6], double targetForce[6], double m[6], double b[6], double k[6], double maxDis, double maxAng); 变参数导纳控制关闭 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 变参数导纳控制关闭 * @return 错误码 **/ ARMErrorCode AdmittanceControlEnd(); 设置变参数导纳控制参数 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置变参数导纳控制参数 * @param [in] m 质量参数 * @param [in] b 阻尼参数 * @param [in] k 刚度参数 * @return 错误码 **/ ARMErrorCode SetAdmittanceControlParam(double m[6], double b[6], double k[6]); 接触检测开启 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 接触检测开启 * @param [in] minVal 接触力下限(相对值),范围: (0 50](x, y, z)、(0, 3](rx, ry, rz) * @param [in] maxVal 接触力上限(相对值),范围: (0 50](x, y, z)、(0, 3](rx, ry, rz) * @return 错误码 **/ ARMErrorCode ForceSensorContactDetectStart(double minVal[6], double maxVal[6]); 接触检测关闭 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 接触检测关闭 * @return 错误码 **/ ARMErrorCode ForceSensorContactDetectEnd(); 设置接触检测触发策略 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置接触检测触发策略 * @param [in] strategy 接触检测策略,0-停止 1-进入重力矩模式 * @return 错误码 **/ ARMErrorCode SetContactDetectStrategy(uint8_t strategy); 获取接触检测触发状态 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取接触检测触发状态 * @param [out] state 接触检测状态,0-未触发 1-已触发 * @return 错误码 **/ ARMErrorCode GetContactDetectState(uint8_t& state); 速度前馈功能设置 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 速度前馈功能设置 * @param [in] enable 0-功能关闭,1-功能开启 * @param [in] axis 轴id 1-设置 0-不设置 * @return 错误码 **/ ARMErrorCode SetVelForwardFeed(uint8_t enable, uint8_t axis[7]); 腰部的SDK函数介绍(存在腰部关节的情况下) ----------------------------------------------------------------------------------------- 实例化腰部 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 实例化腰部 **/ RobotWaist(); 关闭腰部 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 关闭腰部 **/ ~RobotWaist(); 关节空间运动 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 关节空间运动 * @param [in] destJointPos 目标点关节位置,单位deg * @param [in] velocity 速度百分比,范围[0-100] * @param [in] acceleration 加速度百分比,范围[0-100],暂不开放 * @param [out] errMsg 错误信息打印 * @return 错误码 **/ ARMErrorCode MoveJ(double* destJointPos, double velocity, double acceleration, char errMsg[1024]); 停止运动 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 停止运动 * @return 错误码 **/ ARMErrorCode StopMotion(); 获取当前关节位置(角度) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取当前关节位置(角度) * @param [out] joint_pos,单位[deg] * @return 错误码 **/ ARMErrorCode GetActualJointPosDegree(double* joint_pos); 查询运动是否完成 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** @brief 查询运动是否完成 * @param [out] state,0-未完成,1-完成 * @return 错误码 **/ ARMErrorCode GetRobotMotionDone(uint8_t& state); 关节使能 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 关节使能 * @param [in] joint_id 关节序号 0-腰部所有关节使能 1,2,...-腰部对应关节 * @return 错误码 **/ ARMErrorCode AxisEnable(int joint_id); 关节去使能 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 关节去使能 * @param [in] joint_id 关节序号 0-腰部所有关节使能 1,2,...-腰部对应关节 * @return 错误码 **/ ARMErrorCode AxisDisable(int joint_id); 关节校零 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 关节校零 * @param [in] joint_id 关节序号 0-腰部所有关节使能 1,2,...-腰部对应关节 * @return 错误码 **/ ARMErrorCode AxisZeroing(int joint_id); 清除控制器错误 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 清除控制器错误 * @return 错误码 **/ ARMErrorCode AxisResetError(); 设置腰部正限位 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置腰部正限位 * @param [in] limitPositive 关节正限位,单位deg * @return 错误码 **/ ARMErrorCode SetLimitPositive(double* limitPositive); 设置腰部负限位 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置腰部负限位 * @param [in] limitNegative 关节负限位,单位deg * @return 错误码 **/ ARMErrorCode SetLimitNegative(double* limitNegative); 获取关节软限位角度 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取腰部关节软限位角度 * @param [out] limitNegative 关节负限位,单位deg * @param [out] limitPositive 关节正限位,单位deg * @return 错误码 **/ ARMErrorCode GetJointSoftLimitDeg(double* limitNegative, double* limitPositive); 设置腰部加速度百分比 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置腰部加速度百分比 * @param [in] scale 加速度百分比 * @return 错误码 **/ ARMErrorCode SetAccScale(double scale); 设置腰部全局速度百分比 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置腰部全局速度百分比 * @param [in] speed 速度百分比 * @return 错误码 **/ ARMErrorCode SetSpeed(double speed); 获取机械臂固件版本 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取机械臂固件版本 * @param [out] driverversion 驱动器1固件版本 * @return 错误码 **/ ARMErrorCode GetFirmwareVersion(char driverversion[][128]); 获取关节驱动器温度 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取关节驱动器温度 * @param [out] temperature 关节驱动器温度,单位: 摄氏度 * @return 错误码 **/ ARMErrorCode GetJointDriverTemperature(double* temperature); 工具部分的SDK函数介绍 ------------------------------------------------------------ 实例化工具类 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 实例化工具类 **/ RobotTool(); 关闭工具类 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 关闭工具类对象 **/ ~RobotTool(); 与机器人控制器建立通信 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 与机器人控制器建立通信,ip默认为192.168.58.1 **/ ARMErrorCode RPC(const char *ip, int port); 与机器人控制器关闭通讯 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 与机器人控制器关闭通讯 * @return 错误码 */ ARMErrorCode CloseRPC(); 获取SDK与机器人的通讯状态 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取SDK与机器人的通讯状态 * @param [out] state 0-初始化 1-连接 2-断开连接 * @return 错误码 **/ ARMErrorCode GetSDKComState(uint8_t& state); 设置机器人配置 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 设置机器人配置-FAIRINO-ARTPlugin插件升级 * @param [in] mode 0-单臂7轴配置 1-双臂14轴配置 2-双臂+腰16轴配置 * @return 错误码 **/ ARMErrorCode RobotFrConfig(int mode); 日志导出 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 日志导出 * @return 错误码 **/ ARMErrorCode RobotPackLog(); 数据记录 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 数据记录 * @param [in] state 1-记录开始 0-记录结束并导出 * @return 错误码 **/ ARMErrorCode RobotRecordData(int state); SDK服务端部署 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief SDK服务端部署 * @param [in] filepath 升级包全路径 * @return 错误码 **/ ARMErrorCode UpdateSDKServer(std::string filepath); 获取SDK版本信息 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取SDK版本信息 * @param [out] version SDK版本号 * @return 错误码 **/ ARMErrorCode GetSDKVersion(std::string& version); SDK服务端部署 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief SDK服务端部署 * @param [in] filepath 升级包全路径 * @return 错误码 **/ ARMErrorCode UpdateSDKServer(std::string filepath); 获取机器人软件版本信息 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 获取机器人软件版本信息 * @param [out] pluginVersion 插件版本 * @param [out] sdkServerVersion SDK服务端版本 * @return 错误码 **/ ARMErrorCode GetSoftwareVersion(std::string& pluginVersion, std::string& sdkServerVersion); 重启机器人操作系统 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 重启机器人操作系统 * @return 错误码 **/ ARMErrorCode robotSystemReboot(); 关闭机器人操作系统 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c++ :linenos: /** * @brief 关闭机器人操作系统 * @return 错误码 **/ ARMErrorCode robotSyetemShutclose();