3. 机器人运动

3.1. jog点动

 1/**
 2* @brief  jog点动
 3* @param  [in]  ref 0-关节点动,2-基坐标系下点动,4-工具坐标系下点动,8-工件坐标系下点动
 4* @param  [in]  nb 1-关节1(或x轴),2-关节2(或y轴),3-关节3(或z轴),4-关节4(或绕x轴旋转),5-关节5(或绕y轴旋转),6-关节6(或绕z轴旋转)
 5* @param  [in]  dir 0-负方向,1-正方向
 6* @param  [in]  vel 速度百分比,[0~100]
 7* @param  [in]  acc 加速度百分比, [0~100]
 8* @param  [in]  max_dis 单次点动最大角度,单位[°]或距离,单位[mm]
 9* @return  错误码
10*/
11errno_t  StartJOG(uint8_t ref, uint8_t nb, uint8_t dir, float vel, float acc, float max_dis);

3.2. jog点动减速停止

1/**
2* @brief  jog点动减速停止
3* @param  [in]  ref  1-关节点动停止,3-基坐标系下点动停止,5-工具坐标系下点动停止,9-工件坐标系下点动停止
4* @return  错误码
5*/
6errno_t  StopJOG(uint8_t ref);

3.3. jog点动立即停止

1/**
2* @brief jog点动立即停止
3* @return  错误码
4*/
5errno_t  ImmStopJOG();

3.4. 代码示例

 1#include <cstdlib>
 2#include <iostream>
 3#include <stdio.h>
 4#include <cstring>
 5#include <unistd.h>
 6#include "FRRobot.h"
 7#include "RobotTypes.h"
 8
 9using namespace std;
10
11int main(void)
12{
13    FRRobot robot;                 //实例化机器人对象
14    robot.RPC("192.168.58.2");     //与机器人控制器建立通信连接
15
16    robot.StartJOG(0,1,0,20.0,20.0,30.0);   //单关节运动,StartJOG为非阻塞指令,运动状态下接收其他运动指令(包含StartJOG)会被丢弃
17    sleep(1);
18    //robot.StopJOG(1)  //机器人单轴点动减速停止
19    robot.ImmStopJOG();  //机器人单轴点动立即停止
20    robot.StartJOG(0,2,1,20.0,20.0,30.0);
21    sleep(1);
22    robot.ImmStopJOG();
23    robot.StartJOG(0,3,1,20.0,20.0,30.0);
24    sleep(1);
25    robot.ImmStopJOG();
26    robot.StartJOG(0,4,1,20.0,20.0,30.0);
27    sleep(1);
28    robot.ImmStopJOG();
29    robot.StartJOG(0,5,1,20.0,20.0,30.0);
30    sleep(1);
31    robot.ImmStopJOG();
32    robot.StartJOG(0,6,1,20.0,20.0,30.0);
33    sleep(1);
34    robot.ImmStopJOG();
35
36    robot.StartJOG(2,1,0,20.0,20.0,30.0);   //基坐标系下点动
37    sleep(1);
38    //robot.StopJOG(3)  //机器人单轴点动减速停止
39    robot.ImmStopJOG();  //机器人单轴点动立即停止
40    robot.StartJOG(2,2,1,20.0,20.0,30.0);
41    sleep(1);
42    robot.ImmStopJOG();
43    robot.StartJOG(2,3,1,20.0,20.0,30.0);
44    sleep(1);
45    robot.ImmStopJOG();
46    robot.StartJOG(2,4,1,20.0,20.0,30.0);
47    sleep(1);
48    robot.ImmStopJOG();
49    robot.StartJOG(2,5,1,20.0,20.0,30.0);
50    sleep(1);
51    robot.ImmStopJOG();
52    robot.StartJOG(2,6,1,20.0,20.0,30.0);
53    sleep(1);
54    robot.ImmStopJOG();
55
56    robot.StartJOG(4,1,0,20.0,20.0,30.0);   //工具坐标系下点动
57    sleep(1);
58    //robot.StopJOG(5)  //机器人单轴点动减速停止
59    robot.ImmStopJOG();  //机器人单轴点动立即停止
60    robot.StartJOG(4,2,1,20.0,20.0,30.0);
61    sleep(1);
62    robot.ImmStopJOG();
63    robot.StartJOG(4,3,1,20.0,20.0,30.0);
64    sleep(1);
65    robot.ImmStopJOG();
66    robot.StartJOG(4,4,1,20.0,20.0,30.0);
67    sleep(1);
68    robot.ImmStopJOG();
69    robot.StartJOG(4,5,1,20.0,20.0,30.0);
70    sleep(1);
71    robot.ImmStopJOG();
72    robot.StartJOG(4,6,1,20.0,20.0,30.0);
73    sleep(1);
74    robot.ImmStopJOG();
75
76    robot.StartJOG(8,1,0,20.0,20.0,30.0);   //工件坐标系下点动
77    sleep(1);
78    //robot.StopJOG(9)  //机器人单轴点动减速停止
79    robot.ImmStopJOG();  //机器人单轴点动立即停止
80    robot.StartJOG(8,2,1,20.0,20.0,30.0);
81    sleep(1);
82    robot.ImmStopJOG();
83    robot.StartJOG(8,3,1,20.0,20.0,30.0);
84    sleep(1);
85    robot.ImmStopJOG();
86    robot.StartJOG(8,4,1,20.0,20.0,30.0);
87    sleep(1);
88    robot.ImmStopJOG();
89    robot.StartJOG(8,5,1,20.0,20.0,30.0);
90    sleep(1);
91    robot.ImmStopJOG();
92    robot.StartJOG(8,6,1,20.0,20.0,30.0);
93    sleep(1);
94    robot.ImmStopJOG();
95
96    return 0;
97}

3.5. 关节空间运动

 1/**
 2* @brief  关节空间运动
 3* @param  [in] joint_pos  目标关节位置,单位deg
 4* @param  [in] desc_pos   目标笛卡尔位姿
 5* @param  [in] tool  工具坐标号,范围[0~14]
 6* @param  [in] user  工件坐标号,范围[0~14]
 7* @param  [in] vel  速度百分比,范围[0~100]
 8* @param  [in] acc  加速度百分比,范围[0~100],暂不开放
 9* @param  [in] ovl  速度缩放因子,范围[0~100]
10* @param  [in] epos  扩展轴位置,单位mm
11* @param  [in] blendT [-1.0]-运动到位(阻塞),[0~500.0]-平滑时间(非阻塞),单位ms
12* @param  [in] offset_flag  0-不偏移,1-基坐标系/工件坐标系下偏移,2-工具坐标系下偏移
13* @param  [in] offset_pos  位姿偏移量
14* @return  错误码
15*/
16errno_t  MoveJ(JointPos *joint_pos, DescPose *desc_pos, int tool, int user, float vel, float acc, float ovl, ExaxisPos *epos, float blendT, uint8_t offset_flag, DescPose *offset_pos);

3.6. 笛卡尔空间直线运动

 1/**
 2* @brief  笛卡尔空间直线运动
 3* @param  [in] joint_pos  目标关节位置,单位deg
 4* @param  [in] desc_pos   目标笛卡尔位姿
 5* @param  [in] tool  工具坐标号,范围[0~14]
 6* @param  [in] user  工件坐标号,范围[0~14]
 7* @param  [in] vel  速度百分比,范围[0~100]
 8* @param  [in] acc  加速度百分比,范围[0~100],暂不开放
 9* @param  [in] ovl  速度缩放因子,范围[0~100]
10* @param  [in] blendR [-1.0]-运动到位(阻塞),[0~1000.0]-平滑半径(非阻塞),单位mm
11* @param  [in] epos  扩展轴位置,单位mm
12* @param  [in] search  0-不焊丝寻位,1-焊丝寻位
13* @param  [in] offset_flag  0-不偏移,1-基坐标系/工件坐标系下偏移,2-工具坐标系下偏移
14* @param  [in] offset_pos  位姿偏移量
15* @return  错误码
16*/
17errno_t  MoveL(JointPos *joint_pos, DescPose *desc_pos, int tool, int user, float vel, float acc, float ovl, float blendR, ExaxisPos *epos, uint8_t search, uint8_t offset_flag, DescPose *offset_pos);

3.7. 笛卡尔空间圆弧运动

 1/**
 2* @brief  笛卡尔空间圆弧运动
 3* @param  [in] joint_pos_p  路径点关节位置,单位deg
 4* @param  [in] desc_pos_p   路径点笛卡尔位姿
 5* @param  [in] ptool  工具坐标号,范围[0~14]
 6* @param  [in] puser  工件坐标号,范围[0~14]
 7* @param  [in] pvel  速度百分比,范围[0~100]
 8* @param  [in] pacc  加速度百分比,范围[0~100],暂不开放
 9* @param  [in] epos_p  扩展轴位置,单位mm
10* @param  [in] poffset_flag  0-不偏移,1-基坐标系/工件坐标系下偏移,2-工具坐标系下偏移
11* @param  [in] offset_pos_p  位姿偏移量
12* @param  [in] joint_pos_t  目标点关节位置,单位deg
13* @param  [in] desc_pos_t   目标点笛卡尔位姿
14* @param  [in] ttool  工具坐标号,范围[0~14]
15* @param  [in] tuser  工件坐标号,范围[0~14]
16* @param  [in] tvel  速度百分比,范围[0~100]
17* @param  [in] tacc  加速度百分比,范围[0~100],暂不开放
18* @param  [in] epos_t  扩展轴位置,单位mm
19* @param  [in] toffset_flag  0-不偏移,1-基坐标系/工件坐标系下偏移,2-工具坐标系下偏移
20* @param  [in] offset_pos_t  位姿偏移量
21* @param  [in] ovl  速度缩放因子,范围[0~100]
22* @param  [in] blendR [-1.0]-运动到位(阻塞),[0~1000.0]-平滑半径(非阻塞),单位mm
23* @return  错误码
24*/
25errno_t  MoveC(JointPos *joint_pos_p, DescPose *desc_pos_p, int ptool, int puser, float pvel, float pacc, ExaxisPos *epos_p, uint8_t poffset_flag, DescPose *offset_pos_p,JointPos *joint_pos_t, DescPose *desc_pos_t, int ttool, int tuser, float tvel, float tacc, ExaxisPos *epos_t, uint8_t toffset_flag, DescPose *offset_pos_t,float ovl, float blendR);

3.8. 笛卡尔空间整圆运动

 1/**
 2* @brief  笛卡尔空间整圆运动
 3* @param  [in] joint_pos_p  路径点1关节位置,单位deg
 4* @param  [in] desc_pos_p   路径点1笛卡尔位姿
 5* @param  [in] ptool  工具坐标号,范围[0~14]
 6* @param  [in] puser  工件坐标号,范围[0~14]
 7* @param  [in] pvel  速度百分比,范围[0~100]
 8* @param  [in] pacc  加速度百分比,范围[0~100],暂不开放
 9* @param  [in] epos_p  扩展轴位置,单位mm
10* @param  [in] joint_pos_t  路径点2关节位置,单位deg
11* @param  [in] desc_pos_t   路径点2笛卡尔位姿
12* @param  [in] ttool  工具坐标号,范围[0~14]
13* @param  [in] tuser  工件坐标号,范围[0~14]
14* @param  [in] tvel  速度百分比,范围[0~100]
15* @param  [in] tacc  加速度百分比,范围[0~100],暂不开放
16* @param  [in] epos_t  扩展轴位置,单位mm
17* @param  [in] ovl  速度缩放因子,范围[0~100]
18* @param  [in] offset_flag  0-不偏移,1-基坐标系/工件坐标系下偏移,2-工具坐标系下偏移
19* @param  [in] offset_pos  位姿偏移量
20* @return  错误码
21*/
22errno_t  Circle(JointPos *joint_pos_p, DescPose *desc_pos_p, int ptool, int puser, float pvel, float pacc, ExaxisPos *epos_p, JointPos *joint_pos_t, DescPose *desc_pos_t, int ttool, int tuser, float tvel, float tacc, ExaxisPos *epos_t, float ovl, uint8_t offset_flag, DescPose *offset_pos);

3.9. 代码示例

 1#include <cstdlib>
 2#include <iostream>
 3#include <stdio.h>
 4#include <cstring>
 5#include <unistd.h>
 6#include "FRRobot.h"
 7#include "RobotTypes.h"
 8
 9using namespace std;
10
11int main(void)
12{
13    FRRobot robot;                 //实例化机器人对象
14    robot.RPC("192.168.58.2");     //与机器人控制器建立通信连接
15
16    JointPos j1,j2,j3,j4;
17    DescPose desc_pos1,desc_pos2,desc_pos3,desc_pos4,offset_pos;
18    ExaxisPos  epos;
19
20    memset(&j1, 0, sizeof(JointPos));
21    memset(&j2, 0, sizeof(JointPos));
22    memset(&j3, 0, sizeof(JointPos));
23    memset(&j4, 0, sizeof(JointPos));
24    memset(&desc_pos1, 0, sizeof(DescPose));
25    memset(&desc_pos2, 0, sizeof(DescPose));
26    memset(&desc_pos3, 0, sizeof(DescPose));
27    memset(&desc_pos4, 0, sizeof(DescPose));
28    memset(&offset_pos, 0, sizeof(DescPose));
29    memset(&epos, 0, sizeof(ExaxisPos));
30
31    j1 = {114.578,-117.798,-97.745,-54.436,90.053,-45.216};
32    desc_pos1.tran.x = -140.418;
33    desc_pos1.tran.y = 619.351;
34    desc_pos1.tran.z = 198.369;
35    desc_pos1.rpy.rx = -179.948;
36    desc_pos1.rpy.ry = 0.023;
37    desc_pos1.rpy.rz = 69.793;
38
39    j2 = {121.381,-97.108,-123.768,-45.824,89.877,-47.296};
40    desc_pos2.tran.x = -127.772;
41    desc_pos2.tran.y = 459.534;
42    desc_pos2.tran.z = 221.274;
43    desc_pos2.rpy.rx = -177.850;
44    desc_pos2.rpy.ry = -2.507;
45    desc_pos2.rpy.rz = 78.627;
46
47    j3 = {138.884,-114.522,-103.933,-49.694,90.688,-47.291};
48    desc_pos3.tran.x = -360.468;
49    desc_pos3.tran.y = 485.600;
50    desc_pos3.tran.z = 196.363;
51    desc_pos3.rpy.rx = -178.239;
52    desc_pos3.rpy.ry = -0.893;
53    desc_pos3.rpy.rz = 96.172;
54
55    j4 = {159.164,-96.105,-128.653,-41.170,90.704,-47.290};
56    desc_pos4.tran.x = -360.303;
57    desc_pos4.tran.y = 274.911;
58    desc_pos4.tran.z = 203.968;
59    desc_pos4.rpy.rx = -176.720;
60    desc_pos4.rpy.ry = -2.514;
61    desc_pos4.rpy.rz = 116.407;
62
63    int tool = 0;
64    int user = 0;
65    float vel = 100.0;
66    float acc = 100.0;
67    float ovl = 100.0;
68    float blendT = 0.0;
69    float blendR = 0.0;
70    uint8_t flag = 0;
71    uint8_t search = 0;
72
73    robot.SetSpeed(20);
74
75    int err1 = robot.MoveJ(&j1, &desc_pos1, tool, user, vel, acc, ovl, &epos, blendT,flag, &offset_pos);
76    printf("movej errcode:%d\n", err1);
77
78    int err2 = robot.MoveL(&j2, &desc_pos2, tool, user, vel, acc, ovl, blendR, &epos,search,flag, &offset_pos);
79    printf("movel errcode:%d\n", err2);
80
81    int err3 = robot.MoveC(&j3,&desc_pos3,tool,user,vel,acc,&epos,flag,&offset_pos,&j4,&desc_pos4,tool,user,vel,acc,&epos,flag,&offset_pos,ovl,blendR);
82    printf("movec errcode:%d\n", err3);
83
84    int err4 = robot.MoveJ(&j2, &desc_pos2, tool, user, vel, acc, ovl, &epos, blendT,flag, &offset_pos);
85    printf("movej errcode:%d\n", err4);
86
87    int err5 = robot.Circle(&j3,&desc_pos3,tool,user,vel,acc,&epos,&j4,&desc_pos4,tool,user,vel,acc,&epos,ovl,flag,&offset_pos);
88    printf("circle errcode:%d\n", err5);
89
90    return 0;
91}

3.10. 笛卡尔空间螺旋线运动

 1/**
 2* @brief  笛卡尔空间螺旋线运动
 3* @param  [in] joint_pos  目标关节位置,单位deg
 4* @param  [in] desc_pos   目标笛卡尔位姿
 5* @param  [in] tool  工具坐标号,范围[0~14]
 6* @param  [in] user  工件坐标号,范围[0~14]
 7* @param  [in] vel  速度百分比,范围[0~100]
 8* @param  [in] acc  加速度百分比,范围[0~100],暂不开放
 9* @param  [in] epos  扩展轴位置,单位mm
10* @param  [in] ovl  速度缩放因子,范围[0~100]
11* @param  [in] offset_flag  0-不偏移,1-基坐标系/工件坐标系下偏移,2-工具坐标系下偏移
12* @param  [in] offset_pos  位姿偏移量
13* @param  [in] spiral_param  螺旋参数
14* @return  错误码
15*/
16errno_t  NewSpiral(JointPos *joint_pos, DescPose *desc_pos, int tool, int user, float vel, float acc, ExaxisPos *epos, float ovl, uint8_t offset_flag, DescPose *offset_pos, SpiralParam spiral_param);

3.11. 代码示例

 1#include <cstdlib>
 2#include <iostream>
 3#include <stdio.h>
 4#include <cstring>
 5#include <unistd.h>
 6#include "FRRobot.h"
 7#include "RobotTypes.h"
 8
 9using namespace std;
10
11int main(void)
12{
13    FRRobot robot;                 //实例化机器人对象
14    robot.RPC("192.168.58.2");     //与机器人控制器建立通信连接
15
16    JointPos j;
17    DescPose desc_pos, offset_pos1, offset_pos2;
18    ExaxisPos  epos;
19    SpiralParam sp;
20
21    memset(&j, 0, sizeof(JointPos));
22    memset(&desc_pos, 0, sizeof(DescPose));
23    memset(&offset_pos1, 0, sizeof(DescPose));
24    memset(&offset_pos2, 0, sizeof(DescPose));
25    memset(&epos, 0, sizeof(ExaxisPos));
26    memset(&sp, 0, sizeof(SpiralParam));
27
28    j = {127.888,-101.535,-94.860,17.836,96.931,-61.325};
29    offset_pos1.tran.x = 50.0;
30    offset_pos1.rpy.rx = -30.0;
31    offset_pos2.tran.x = 50.0;
32    offset_pos2.rpy.rx = -5.0;
33
34    sp.circle_num = 5;
35    sp.circle_angle = 5.0;
36    sp.rad_init = 50.0;
37    sp.rad_add = 10.0;
38    sp.rotaxis_add = 10.0;
39    sp.rot_direction = 0;
40
41    int tool = 0;
42    int user = 0;
43    float vel = 100.0;
44    float acc = 100.0;
45    float ovl = 100.0;
46    float blendT = 0.0;
47    uint8_t flag = 2;
48
49    robot.SetSpeed(20);
50
51    int ret = robot.GetForwardKin(&j, &desc_pos);  //只有关节位置的情况下,可用正运动学接口求解笛卡尔空间坐标
52
53    if(ret == 0)
54    {
55        int err1 = robot.MoveJ(&j, &desc_pos, tool, user, vel, acc, ovl, &epos, blendT,flag, &offset_pos1);
56        printf("movej errcode:%d\n", err1);
57
58        int err2 = robot.NewSpiral(&j, &desc_pos, tool, user, vel, acc, &epos, ovl, flag, &offset_pos2, sp);
59        printf("newspiral errcode:%d\n", err2);
60    }
61    else
62    {
63        printf("GetForwardKin errcode:%d\n", ret);
64    }
65
66    return 0;
67}

3.12. 伺服运动开始

1/**
2 * @brief 伺服运动开始,配合ServoJ、ServoCart指令使用
3 * @return  错误码
4 */
5errno_t ServoMoveStart();

3.13. 伺服运动结束

1/**
2 * @brief 伺服运动结束,配合ServoJ、ServoCart指令使用
3 * @return  错误码
4 */
5errno_t ServoMoveEnd();

3.14. 关节空间伺服模式运动

 1/**
 2* @brief  关节空间伺服模式运动
 3* @param  [in] joint_pos  目标关节位置,单位deg
 4* @param  [in] acc  加速度百分比,范围[0~100],暂不开放,默认为0
 5* @param  [in] vel  速度百分比,范围[0~100],暂不开放,默认为0
 6* @param  [in] cmdT  指令下发周期,单位s,建议范围[0.001~0.0016]
 7* @param  [in] filterT 滤波时间,单位s,暂不开放,默认为0
 8* @param  [in] gain  目标位置的比例放大器,暂不开放,默认为0
 9* @return  错误码
10*/
11errno_t  ServoJ(JointPos *joint_pos, float acc, float vel, float cmdT, float filterT, float gain);

3.15. 代码示例

 1#include <cstdlib>
 2#include <iostream>
 3#include <stdio.h>
 4#include <cstring>
 5#include <unistd.h>
 6#include "FRRobot.h"
 7#include "RobotTypes.h"
 8
 9using namespace std;
10
11int main(void)
12{
13    FRRobot robot;                 //实例化机器人对象
14    robot.RPC("192.168.58.2");     //与机器人控制器建立通信连接
15
16    JointPos j;
17
18    memset(&j, 0, sizeof(JointPos));
19
20    float vel = 0.0;
21    float acc = 0.0;
22    float cmdT = 0.008;
23    float filterT = 0.0;
24    float gain = 0.0;
25    uint8_t flag = 0;
26    int count = 500;
27    float dt = 0.1;
28
29    int ret = robot.GetActualJointPosDegree(flag, &j);
30    if(ret == 0)
31    {
32        while (count)
33        {
34            robot.ServoJ(&j, acc, vel, cmdT, filterT, gain);
35            j.jPos[0] += dt;
36            count -= 1;
37            robot.WaitMs(cmdT*1000);
38        }
39    }
40    else
41    {
42        printf("GetActualJointPosDegree errcode:%d\n", ret);
43    }
44
45    return 0;
46}

3.16. 笛卡尔空间伺服模式运动

 1/**
 2* @brief  笛卡尔空间伺服模式运动
 3* @param  [in]  mode  0-绝对运动(基坐标系),1-增量运动(基坐标系),2-增量运动(工具坐标系)
 4* @param  [in]  desc_pos  目标笛卡尔位姿或位姿增量
 5* @param  [in]  pos_gain  位姿增量比例系数,仅在增量运动下生效,范围[0~1]
 6* @param  [in] acc  加速度百分比,范围[0~100],暂不开放,默认为0
 7* @param  [in] vel  速度百分比,范围[0~100],暂不开放,默认为0
 8* @param  [in] cmdT  指令下发周期,单位s,建议范围[0.001~0.0016]
 9* @param  [in] filterT 滤波时间,单位s,暂不开放,默认为0
10* @param  [in] gain  目标位置的比例放大器,暂不开放,默认为0
11* @return  错误码
12*/
13errno_t  ServoCart(int mode, DescPose *desc_pose, float pos_gain[6], float acc, float vel, float cmdT, float filterT, float gain);

3.17. 代码示例

 1#include <cstdlib>
 2#include <iostream>
 3#include <stdio.h>
 4#include <cstring>
 5#include <unistd.h>
 6#include "FRRobot.h"
 7#include "RobotTypes.h"
 8
 9using namespace std;
10
11int main(void)
12{
13    FRRobot robot;                 //实例化机器人对象
14    robot.RPC("192.168.58.2");     //与机器人控制器建立通信连接
15
16    DescPose desc_pos_dt;
17    memset(&desc_pos_dt, 0, sizeof(DescPose));
18
19    desc_pos_dt.tran.z = -0.5;
20    float pos_gain[6] = {0.0,0.0,1.0,0.0,0.0,0.0};
21    int mode = 2;
22    float vel = 0.0;
23    float acc = 0.0;
24    float cmdT = 0.008;
25    float filterT = 0.0;
26    float gain = 0.0;
27    uint8_t flag = 0;
28    int count = 100;
29
30    robot.SetSpeed(20);
31
32    while (count)
33    {
34        robot.ServoCart(mode, &desc_pos_dt, pos_gain, acc, vel, cmdT, filterT, gain);
35        count -= 1;
36        robot.WaitMs(cmdT*1000);
37    }
38
39    return 0;
40}

3.18. 笛卡尔空间点到点运动

 1/**
 2* @brief  笛卡尔空间点到点运动
 3* @param  [in]  desc_pos  目标笛卡尔位姿或位姿增量
 4* @param  [in] tool  工具坐标号,范围[0~14]
 5* @param  [in] user  工件坐标号,范围[0~14]
 6* @param  [in] vel  速度百分比,范围[0~100]
 7* @param  [in] acc  加速度百分比,范围[0~100],暂不开放
 8* @param  [in] ovl  速度缩放因子,范围[0~100]
 9* @param  [in] blendT [-1.0]-运动到位(阻塞),[0~500.0]-平滑时间(非阻塞),单位ms
10* @param  [in] config  关节空间配置,[-1]-参考当前关节位置解算,[0~7]-参考特定关节空间配置解算,默认为-1
11* @return  错误码
12*/
13errno_t  MoveCart(DescPose *desc_pos, int tool, int user, float vel, float acc, float ovl, float blendT, int config);

3.19. 代码示例

 1#include <cstdlib>
 2#include <iostream>
 3#include <stdio.h>
 4#include <cstring>
 5#include <unistd.h>
 6#include "FRRobot.h"
 7#include "RobotTypes.h"
 8
 9using namespace std;
10
11int main(void)
12{
13    FRRobot robot;                 //实例化机器人对象
14    robot.RPC("192.168.58.2");     //与机器人控制器建立通信连接
15
16    DescPose desc_pos1, desc_pos2, desc_pos3;
17    memset(&desc_pos1, 0, sizeof(DescPose));
18    memset(&desc_pos2, 0, sizeof(DescPose));
19    memset(&desc_pos3, 0, sizeof(DescPose));
20
21    desc_pos1.tran.x = 75.414;
22    desc_pos1.tran.y = 568.526;
23    desc_pos1.tran.z = 338.135;
24    desc_pos1.rpy.rx = -178.348;
25    desc_pos1.rpy.ry = -0.930;
26    desc_pos1.rpy.rz = 52.611;
27
28    desc_pos2.tran.x = -273.856;
29    desc_pos2.tran.y = 643.260;
30    desc_pos2.tran.z = 259.235;
31    desc_pos2.rpy.rx = -177.972;
32    desc_pos2.rpy.ry = -1.494;
33    desc_pos2.rpy.rz = 80.866;
34
35    desc_pos3.tran.x = -423.044;
36    desc_pos3.tran.y = 229.703;
37    desc_pos3.tran.z = 241.080;
38    desc_pos3.rpy.rx = -173.990;
39    desc_pos3.rpy.ry = -5.772;
40    desc_pos3.rpy.rz = 123.971;
41
42    int tool = 0;
43    int user = 0;
44    float vel = 100.0;
45    float acc = 100.0;
46    float ovl = 100.0;
47    float blendT = -1.0;
48    float blendT1 = 0.0;
49    int config = -1;
50
51    robot.SetSpeed(20);
52    robot.MoveCart(&desc_pos1, tool, user, vel, acc, ovl, blendT, config);
53    robot.MoveCart(&desc_pos2, tool, user, vel, acc, ovl, blendT, config);
54    robot.MoveCart(&desc_pos3, tool, user, vel, acc, ovl, blendT1, config);
55
56    return 0;
57}

3.20. 样条运动开始

1/**
2* @brief  样条运动开始
3* @return  错误码
4*/
5errno_t  SplineStart();

3.21. 样条运动PTP

 1/**
 2* @brief  关节空间样条运动
 3* @param  [in] joint_pos  目标关节位置,单位deg
 4* @param  [in] desc_pos   目标笛卡尔位姿
 5* @param  [in] tool  工具坐标号,范围[0~14]
 6* @param  [in] user  工件坐标号,范围[0~14]
 7* @param  [in] vel  速度百分比,范围[0~100]
 8* @param  [in] acc  加速度百分比,范围[0~100],暂不开放
 9* @param  [in] ovl  速度缩放因子,范围[0~100]
10* @return  错误码
11*/
12errno_t  SplinePTP(JointPos *joint_pos, DescPose *desc_pos, int tool, int user, float vel, float acc, float ovl);

3.22. 样条运动结束

1/**
2* @brief  样条运动结束
3* @return  错误码
4*/
5errno_t  SplineEnd();

3.23. 新样条运动开始

在 C++SDK-v2.1.3.0 版本发生变更.

1/**
2* @brief 新样条运动开始
3* @param  [in] type   0-圆弧过渡,1-给定点位为路径点
4* @param  [in] averageTime  全局平均衔接时间(ms)(10 ~  ),默认2000
5* @return  错误码
6*/
7errno_t NewSplineStart(int type, int averageTime=2000);

3.24. 新样条指令点

 1/**
 2 * @brief 新样条指令点
 3 * @param  [in] joint_pos  目标关节位置,单位deg
 4 * @param  [in] desc_pos   目标笛卡尔位姿
 5 * @param  [in] tool  工具坐标号,范围[0~14]
 6 * @param  [in] user  工件坐标号,范围[0~14]
 7 * @param  [in] vel  速度百分比,范围[0~100]
 8 * @param  [in] acc  加速度百分比,范围[0~100],暂不开放
 9 * @param  [in] ovl  速度缩放因子,范围[0~100]
10 * @param  [in] blendR [-1.0]-运动到位(阻塞),[0~1000.0]-平滑半径(非阻塞),单位mm
11 * @param  [in] lastFlag 是否为最后一个点,0-否,1-是
12 * @return  错误码
13 */
14errno_t  NewSplinePoint(JointPos *joint_pos, DescPose *desc_pos, int tool, int user, float vel, float acc, float ovl, float blendR, int lastFlag);

3.25. 新样条运动结束

1/**
2 * @brief 新样条运动结束
3 * @return  错误码
4 */
5errno_t  NewSplineEnd();

3.26. 终止运动

1/**
2* @brief 终止运动
3* @return  错误码
4*/
5errno_t  StopMotion();

3.27. 暂停运动

1/**
2 * @brief 暂停运动
3 * @return  错误码
4 */
5errno_t  PauseMotion();

3.28. 代码示例

 1#include <cstdlib>
 2#include <iostream>
 3#include <stdio.h>
 4#include <cstring>
 5#include <unistd.h>
 6#include "FRRobot.h"
 7#include "RobotTypes.h"
 8
 9using namespace std;
10
11int main(void)
12{
13    FRRobot robot;                 //实例化机器人对象
14    robot.RPC("192.168.58.2");     //与机器人控制器建立通信连接
15
16    JointPos j1,j2,j3,j4;
17    DescPose desc_pos1,desc_pos2,desc_pos3,desc_pos4,offset_pos;
18    ExaxisPos  epos;
19
20    memset(&j1, 0, sizeof(JointPos));
21    memset(&j2, 0, sizeof(JointPos));
22    memset(&j3, 0, sizeof(JointPos));
23    memset(&j4, 0, sizeof(JointPos));
24    memset(&desc_pos1, 0, sizeof(DescPose));
25    memset(&desc_pos2, 0, sizeof(DescPose));
26    memset(&desc_pos3, 0, sizeof(DescPose));
27    memset(&desc_pos4, 0, sizeof(DescPose));
28    memset(&offset_pos, 0, sizeof(DescPose));
29    memset(&epos, 0, sizeof(ExaxisPos));
30
31    j1 = {114.578,-117.798,-97.745,-54.436,90.053,-45.216};
32    desc_pos1.tran.x = -140.418;
33    desc_pos1.tran.y = 619.351;
34    desc_pos1.tran.z = 198.369;
35    desc_pos1.rpy.rx = -179.948;
36    desc_pos1.rpy.ry = 0.023;
37    desc_pos1.rpy.rz = 69.793;
38
39    j2 = {115.401,-105.206,-117.959,-49.727,90.054,-45.222};
40    desc_pos2.tran.x = -95.586;
41    desc_pos2.tran.y = 504.143;
42    desc_pos2.tran.z = 186.880;
43    desc_pos2.rpy.rx = 178.001;
44    desc_pos2.rpy.ry = 2.091;
45    desc_pos2.rpy.rz = 70.585;
46
47    j3 = {135.609,-103.249,-120.211,-49.715,90.058,-45.219};
48    desc_pos3.tran.x = -252.429;
49    desc_pos3.tran.y = 428.903;
50    desc_pos3.tran.z = 188.492;
51    desc_pos3.rpy.rx = 177.804;
52    desc_pos3.rpy.ry = 2.294;
53    desc_pos3.rpy.rz = 90.782;
54
55    j4 = {154.766,-87.036,-135.672,-49.045,90.739,-45.223};
56    desc_pos4.tran.x = -277.255;
57    desc_pos4.tran.y = 272.958;
58    desc_pos4.tran.z = 205.452;
59    desc_pos4.rpy.rx = 179.289;
60    desc_pos4.rpy.ry = 1.765;
61    desc_pos4.rpy.rz = 109.966;
62
63    int tool = 0;
64    int user = 0;
65    float vel = 100.0;
66    float acc = 100.0;
67    float ovl = 100.0;
68    float blendT = -1.0;
69    uint8_t flag = 0;
70
71    robot.SetSpeed(20);
72
73    int err1 = robot.MoveJ(&j1, &desc_pos1, tool, user, vel, acc, ovl, &epos, blendT,flag, &offset_pos);
74    printf("movej errcode:%d\n", err1);
75    robot.SplineStart();
76    robot.SplinePTP(&j1, &desc_pos1, tool, user, vel, acc, ovl);
77    robot.SplinePTP(&j2, &desc_pos2, tool, user, vel, acc, ovl);
78    robot.SplinePTP(&j3, &desc_pos3, tool, user, vel, acc, ovl);
79    robot.SplinePTP(&j4, &desc_pos4, tool, user, vel, acc, ovl);
80    robot.SplineEnd();
81
82    return 0;
83}

3.29. 恢复运动

1/**
2 * @brief 恢复运动
3 * @return  错误码
4 */
5errno_t  ResumeMotion();

3.30. 点位整体偏移开始

1/**
2* @brief  点位整体偏移开始
3* @param  [in]  flag  0-基坐标系下/工件坐标系下偏移,2-工具坐标系下偏移
4* @param  [in] offset_pos  位姿偏移量
5* @return  错误码
6*/
7errno_t  PointsOffsetEnable(int flag, DescPose *offset_pos);

3.31. 点位整体偏移结束

1/**
2* @brief  点位整体偏移结束
3* @return  错误码
4*/
5errno_t  PointsOffsetDisable();

3.32. 代码示例

 1#include <cstdlib>
 2#include <iostream>
 3#include <stdio.h>
 4#include <cstring>
 5#include <unistd.h>
 6#include "FRRobot.h"
 7#include "RobotTypes.h"
 8
 9using namespace std;
10
11int main(void)
12{
13    FRRobot robot;                 //实例化机器人对象
14    robot.RPC("192.168.58.2");     //与机器人控制器建立通信连接
15
16    JointPos j1,j2;
17    DescPose desc_pos1,desc_pos2,offset_pos,offset_pos1;
18    ExaxisPos  epos;
19
20    memset(&j1, 0, sizeof(JointPos));
21    memset(&j2, 0, sizeof(JointPos));
22    memset(&desc_pos1, 0, sizeof(DescPose));
23    memset(&desc_pos2, 0, sizeof(DescPose));
24    memset(&offset_pos, 0, sizeof(DescPose));
25    memset(&offset_pos1, 0, sizeof(DescPose));
26    memset(&epos, 0, sizeof(ExaxisPos));
27
28    j1 = {114.578,-117.798,-97.745,-54.436,90.053,-45.216};
29    desc_pos1.tran.x = -140.418;
30    desc_pos1.tran.y = 619.351;
31    desc_pos1.tran.z = 198.369;
32    desc_pos1.rpy.rx = -179.948;
33    desc_pos1.rpy.ry = 0.023;
34    desc_pos1.rpy.rz = 69.793;
35
36    j2 = {115.401,-105.206,-117.959,-49.727,90.054,-45.222};
37    desc_pos2.tran.x = -95.586;
38    desc_pos2.tran.y = 504.143;
39    desc_pos2.tran.z = 186.880;
40    desc_pos2.rpy.rx = 178.001;
41    desc_pos2.rpy.ry = 2.091;
42    desc_pos2.rpy.rz = 70.585;
43
44    offset_pos1.tran.x = 100.0;
45    offset_pos1.tran.y = 100.0;
46    offset_pos1.tran.z = 100.0;
47    offset_pos1.rpy.rx = 5.0;
48    offset_pos1.rpy.ry = 5.0;
49    offset_pos1.rpy.rz = 5.0;
50
51    int tool = 0;
52    int user = 0;
53    float vel = 100.0;
54    float acc = 100.0;
55    float ovl = 100.0;
56    float blendT = -1.0;
57    float blendR = 0.0;
58    uint8_t flag = 0;
59    int type = 0;
60
61    robot.SetSpeed(20);
62
63    robot.MoveJ(&j1, &desc_pos1, tool, user, vel, acc, ovl, &epos, blendT,flag, &offset_pos);
64    robot.MoveJ(&j2, &desc_pos2, tool, user, vel, acc, ovl, &epos, blendT,flag, &offset_pos);
65    sleep(2);
66    robot.PointsOffsetEnable(type, &offset_pos1);
67    robot.MoveJ(&j1, &desc_pos1, tool, user, vel, acc, ovl, &epos, blendT,flag, &offset_pos);
68    robot.MoveJ(&j2, &desc_pos2, tool, user, vel, acc, ovl, &epos, blendT,flag, &offset_pos);
69    robot.PointsOffsetDisable();
70
71    return 0;
72}