Skip to content

接口介绍

以下接口都在控制器的SDK中的头文件中可以找到

cpp
/**
 * @brief 设置作业文件自定义指令回调函数
 * @param cb 回调函数指针,类型为 std::function<bool(int, const std::string&, const std::string&)>
 * @param (*fun)(int,std::string,std::string) 函数指针,即自定义指令要调用的函数
 * @note 回调函数指针中的参数分别为该自定义指令的编号,该自定义指令的字符串参数,该自定义指令调用的点位名称(未调用则此参数为空)
 */
int NRC_SetJobFileCustomInstructionCB(bool (*fun)(int,const std::string &,const std::string &));
/**
 * @brief 供自定义作业文件指令调用的MOVJ指令,不可直接调用
 * @param robotNum 机器人编号[1-4]
 * @param pos 机器人运动目标位置,详见 NRC_Position
 * @param vel 机器人的运行速度,为机器人最大速度的百分比,参数范围:0 < vel <= 100
 * @param acc 机器人运行加速度,为机器人各关节最大加速度的百分比,参数范围:0 < vel <= 100
 * @param dec 机器人运行减速度,为机器人各关节最大减速度的百分比,参数范围:0 < vel <= 100
 * @param pl 平滑度,将和后面一条移动指令进行平滑过渡,数值越大,越平滑,轨迹偏差也越大,参数范围:0 <= pl <= 5
 * @param moveToNextLine 是否跳行,只需要在最后的一条指令将moveToNextLine置为true
 */
void NRC_Jobrun_MoveDirect(int robotNum, const NRC_Position & pos, double vel,  double acc, double dec, int pl, bool moveToNextLine = false);


/**
 * @brief 供自定义作业文件指令调用的MOVL指令,不可直接调用
 * @param robotNum 机器人编号[1-4]
 * @param pos 机器人运动目标位置,详见 NRC_Position
 * @param vel 机器人的运行速度,为机器人末端位置点绝对运行速度,单位为 毫米每秒(mm/s),参数范围:vel > 1
 * @param acc 机器人运行加速度,为机器人各关节最大加速度的百分比,参数范围:0 < vel <= 100
 * @param dec 机器人运行减速度,为机器人各关节最大减速度的百分比,参数范围:0 < vel <= 100
 * @param pl 平滑度,将和后面一条移动指令进行平滑过渡,数值越大,越平滑,轨迹偏差也越大,参数范围:0 <= pl <= 5
 * @param moveToNextLine 是否跳行,只需要在最后的一条指令将moveToNextLine置为true
 */
void NRC_Jobrun_MoveLinear(int robotNum, const NRC_Position & pos, double vel, double acc, double dec, int pl, bool moveToNextLine = false);


/**
 * @brief 供自定义作业文件指令调用的MOVC指令,不可直接调用
 * @param robotNum 机器人编号[1-4]
 * @param mid_pos,end_pos 机器人运动目标位置,详见 NRC_Position
 * @param vel 机器人的运行速度,为机器人末端位置点绝对运行速度,单位为 毫米每秒(mm/s),参数范围:vel > 1
 * @param acc 机器人运行加速度,为机器人各关节最大加速度的百分比,参数范围:0 < vel <= 100
 * @param dec 机器人运行减速度,为机器人各关节最大减速度的百分比,参数范围:0 < vel <= 100
 * @param pl 平滑度,将和后面一条移动指令进行平滑过渡,数值越大,越平滑,轨迹偏差也越大,参数范围:0 <= pl <= 5
 * @param moveToNextLine 是否跳行,只需要在最后的一条指令将moveToNextLine置为true
 * @note 注意,MOVC不可作为第一条指令运行,且第一次调用时前面必须要有MOVJ或者MOVL指令
 */
void NRC_Jobrun_MoveC(int robotNum, const NRC_Position& mid_pos,const NRC_Position& end_pos, double vel, double acc, double dec, int pl, bool moveToNextLine = false);


/**
 * @brief 供自定义作业文件指令调用的MOVS指令,不可直接调用
 * @param robotNum 机器人编号[1-4]
 * @param pos 机器人运动目标位置容器,大小不可小于4(即pos.size() >= 4),点位设置详见 NRC_Position
 * @param vel 机器人的运行速度,为机器人末端位置点绝对运行速度,单位为 毫米每秒(mm/s),参数范围:vel > 1
 * @param acc 机器人运行加速度,为机器人各关节最大加速度的百分比,参数范围:0 < vel <= 100
 * @param dec 机器人运行减速度,为机器人各关节最大减速度的百分比,参数范围:0 < vel <= 100
 * @param pl 平滑度,将和后面一条移动指令进行平滑过渡,数值越大,越平滑,轨迹偏差也越大,参数范围:0 <= pl <= 5
 * @param moveToNextLine 是否跳行,只需要在最后的一条指令将moveToNextLine置为true
 * @note 注意,MOVS不可作为第一条指令运行,且第一次调用时前面必须要有MOVJ或者MOVL指令
 */
void NRC_Jobrun_MoveS(int robotNum, int pointNum, const std::vector< NRC_Position>& pos, double vel, double acc, double dec, int pl, bool moveToNextLine = false);


/**
 * @brief 供自定义作业文件指令调用的IMOV指令,不可直接调用
 * @param robotNum 机器人编号[1-4]
 * @param pos 机器人运动目标位置容器,大小不可小于4(即pos.size() >= 4),点位设置详见 NRC_Position
 * @param vel 机器人的运行速度,为机器人末端位置点绝对运行速度,单位为 毫米每秒(mm/s),参数范围:vel > 1
 * @param acc 机器人运行加速度,为机器人各关节最大加速度的百分比,参数范围:0 < vel <= 100
 * @param dec 机器人运行减速度,为机器人各关节最大减速度的百分比,参数范围:0 < vel <= 100
 * @param pl 平滑度,将和后面一条移动指令进行平滑过渡,数值越大,越平滑,轨迹偏差也越大,参数范围:0 <= pl <= 5
 * @param moveToNextLine 是否跳行,只需要在最后的一条指令将moveToNextLine置为true
 * @param tm 提前执行时间,范围:[0,999999],可不填,默认为0
 * @note 注意,IMOV不可作为第一条指令运行,在其之前必须要有运动类指令
 */
int NRC_Jobrun_IMOV(int robotNum, const NRC_Position& offset, double vel, double acc, double dec, int pl, int tm = 0, bool moveToNextLine = false);


/**
 * @brief 供自定义作业文件指令调用的MOVJEXT指令,不可直接调用
 * @param robotNum 机器人编号[1-4]
 * @param pos 机器人运动目标位置,详见 NRC_Position
 * @param syncPos 机器人运动目标位置,详见 NRC_SyncPosition
 * @param vel 机器人的运行速度,为机器人最大速度的百分比,参数范围:0 < vel <= 100
 * @param acc 机器人运行加速度,为机器人各关节最大加速度的百分比,参数范围:0 < vel <= 100
 * @param dec 机器人运行减速度,为机器人各关节最大减速度的百分比,参数范围:0 < vel <= 100
 * @param pl 平滑度,将和后面一条移动指令进行平滑过渡,数值越大,越平滑,轨迹偏差也越大,参数范围:0 <= pl <= 5
 * @param moveToNextLine 是否跳行,只需要在最后的一条指令将moveToNextLine置为true
 */
void NRC_Jobrun_MoveDirectSync(int robotNum, const NRC_Position & pos, const NRC_SyncPosition & syncPos, double vel, double acc, double dec, int pl, bool moveToNextLine = false);


/**
 * @brief 供自定义作业文件指令调用的MOVLEXT指令,不可直接调用
 * @param robotNum 机器人编号[1-4]
 * @param pos 机器人运动目标位置,详见 NRC_Position
 * @param syncPos 机器人运动目标位置,详见 NRC_SyncPosition
 * @param vel 机器人的运行速度,为机器人末端位置点绝对运行速度,单位为 毫米每秒(mm/s),参数范围:vel > 1
 * @param acc 机器人运行加速度,为机器人各关节最大加速度的百分比,参数范围:0 < vel <= 100
 * @param dec 机器人运行减速度,为机器人各关节最大减速度的百分比,参数范围:0 < vel <= 100
 * @param pl 平滑度,将和后面一条移动指令进行平滑过渡,数值越大,越平滑,轨迹偏差也越大,参数范围:0 <= pl <= 5
 * @param moveToNextLine 是否跳行,只需要在最后的一条指令将moveToNextLine置为true
 * @param sync 是否协同
 */
void NRC_Jobrun_MoveLinearSync(int robotNum, const NRC_Position & pos, const NRC_SyncPosition & syncPos, double vel, double acc, double dec, int pl, int sync, bool moveToNextLine = false);
/**
 * @brief 阻塞非运动指令,当当前存在机器人运动指令未执行完成时,会阻塞在此接口中,阻止程序向下执行;
 * @brief 在断点恢复时,程序会从停止时程序停留的此接口处继续向下执行
 */
void NRC_JobRun_BlockNotMoveInstruction();