3. 机器人运动
3.1. jog点动
1/**
2* @brief jog 点动
3* @param [in] refType 点动类型: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*/
11int StartJOG(byte refType, byte nb, byte 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*/
6int StopJOG(byte stopType);
3.3. jog点动立即停止
1/**
2* @brief jog点动立即停止
3* @return 错误码
4*/
5int ImmStopJOG();
3.4. 代码示例
1private void btnJOG_Click(object sender, EventArgs e)
2{
3 Robot robot = new Robot();
4 robot.RPC("192.168.58.2");
5
6 robot.SetSpeed(35);
7 robot.StartJOG(0, 1, 0, 15, 20.0f, 30.0f); //单关节运动,StartJOG为非阻塞指令,运动状态下接收其他运动指令(包含StartJOG)会被丢弃
8 Thread.Sleep(1000);
9 robot.StopJOG(1); //机器人单轴点动减速停止
10 //robot.ImmStopJOG(); //机器人单轴点动立即停止
11 robot.StartJOG(0, 2, 1, 15, 20.0f, 30.0f);
12 Thread.Sleep(1000);
13 robot.ImmStopJOG();
14 robot.StartJOG(0, 3, 1, 15, 20.0f, 30.0f);
15 Thread.Sleep(1000);
16 robot.ImmStopJOG();
17 robot.StartJOG(0, 4, 1, 15, 20.0f, 30.0f);
18 Thread.Sleep(1000);
19 robot.ImmStopJOG();
20 robot.StartJOG(0, 5, 1, 15, 20.0f, 30.0f);
21 Thread.Sleep(1000);
22 robot.ImmStopJOG();
23 robot.StartJOG(0, 6, 1, 15, 20.0f, 30.0f);
24 Thread.Sleep(1000);
25 robot.ImmStopJOG();
26
27 robot.StartJOG(2, 1, 0, 15, 20.0f, 30.0f); //基坐标系下点动
28 Thread.Sleep(1000);
29 robot.StopJOG(3); //机器人单轴点动减速停止
30 //robot.ImmStopJOG(); //机器人单轴点动立即停止
31 robot.StartJOG(2, 2, 1, 15, 20.0f, 30.0f);
32 Thread.Sleep(1000);
33 robot.ImmStopJOG();
34 robot.StartJOG(2, 3, 1, 15, 20.0f, 30.0f);
35 Thread.Sleep(1000);
36 robot.ImmStopJOG();
37 robot.StartJOG(2, 4, 1, 15, 20.0f, 30.0f);
38 Thread.Sleep(1000);
39 robot.ImmStopJOG();
40 robot.StartJOG(2, 5, 1, 15, 20.0f, 30.0f);
41 Thread.Sleep(1000);
42 robot.ImmStopJOG();
43 robot.StartJOG(2, 6, 1, 15, 20.0f, 30.0f);
44 Thread.Sleep(1000);
45 robot.ImmStopJOG();
46
47 robot.StartJOG(4, 1, 0, 15, 20.0f, 30.0f); //工具坐标系下点动
48 Thread.Sleep(1000);
49 robot.StopJOG(5); //机器人单轴点动减速停止
50 //robot.ImmStopJOG(); //机器人单轴点动立即停止
51 robot.StartJOG(4, 2, 1, 15, 20.0f, 30.0f);
52 Thread.Sleep(1000);
53 robot.ImmStopJOG();
54 robot.StartJOG(4, 3, 1, 15, 20.0f, 30.0f);
55 Thread.Sleep(1000);
56 robot.ImmStopJOG();
57 robot.StartJOG(4, 4, 1, 15, 20.0f, 30.0f);
58 Thread.Sleep(1000);
59 robot.ImmStopJOG();
60 robot.StartJOG(4, 5, 1, 15, 20.0f, 30.0f);
61 Thread.Sleep(1000);
62 robot.ImmStopJOG();
63 robot.StartJOG(4, 6, 1, 15, 20.0f, 30.0f);
64 Thread.Sleep(1000);
65 robot.ImmStopJOG();
66
67 robot.StartJOG(8, 1, 0, 15, 20.0f, 30.0f); //工件坐标系下点动
68 Thread.Sleep(1000);
69 robot.StopJOG(9); //机器人单轴点动减速停止
70 //robot.ImmStopJOG(); //机器人单轴点动立即停止
71 robot.StartJOG(8, 2, 1, 15, 20.0f, 30.0f);
72 Thread.Sleep(1000);
73 robot.ImmStopJOG();
74 robot.StartJOG(8, 3, 1, 15, 20.0f, 30.0f);
75 Thread.Sleep(1000);
76 robot.ImmStopJOG();
77 robot.StartJOG(8, 4, 1, 15, 20.0f, 30.0f);
78 Thread.Sleep(1000);
79 robot.ImmStopJOG();
80 robot.StartJOG(8, 5, 1, 15, 20.0f, 30.0f);
81 Thread.Sleep(1000);
82 robot.ImmStopJOG();
83 robot.StartJOG(8, 6, 1, 15, 20.0f, 30.0f);
84 Thread.Sleep(1000);
85 robot.ImmStopJOG();
86}
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*/
16int MoveJ(JointPos joint_pos, DescPose desc_pos, int tool, int user, float vel, float acc, float ovl, ExaxisPos epos, float blendT, byte 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*/
17int MoveL(JointPos joint_pos, DescPose desc_pos, int tool, int user, float vel, float acc, float ovl, float blendR, ExaxisPos epos, byte search, byte 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*/
25int MoveC(JointPos joint_pos_p, DescPose desc_pos_p, int ptool, int puser, float pvel, float pacc, ExaxisPos epos_p, byte 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, byte 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*/
22int 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, byte offset_flag, DescPose offset_pos);
3.9. 代码示例
1private void btnMovetest_Click(object sender, EventArgs e)
2{
3 Robot robot = new Robot();
4 robot.RPC("192.168.58.2");
5
6 JointPos j1, j2, j3, j4;
7 DescPose desc_pos1, desc_pos2, desc_pos3, desc_pos4, offset_pos;
8 ExaxisPos epos;
9
10 j1 = new JointPos(-58.982, -90.717, 127.647, -129.041, -87.989, -0.062);
11 desc_pos1 = new DescPose(-437.039, 411.064, 426.189, -177.886, 2.007, 31.155);
12
13 j2 = new JointPos(-58.978, -76.817, 112.494, -127.348, -89.145, -0.063);
14 desc_pos2 = new DescPose(-525.55, 562.3, 417.199, -178.325, 0.847, 31.109);
15
16 j3 = new JointPos(-71.746, -87.177, 123.953, -126.25, -89.429, -0.089);
17 desc_pos3 = new DescPose(-345.155, 535.733, 421.269, 179.475, 0.571, 18.332);
18
19 ExaxisPos ePos = new ExaxisPos(0, 0, 0, 0);
20 DescPose offset = new DescPose();
21
22 int tool = 0;
23 int user = 0;
24 float vel = 100.0f;
25 float acc = 100.0f;
26 float ovl = 100.0f;
27 float blendT = 0.0f;
28 float blendR = 0.0f;
29 byte flag = 0;
30 byte search = 0;
31
32 robot.SetSpeed(20);
33 int err = -1;
34 err = robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, ovl, ePos, blendT, flag, offset);
35 Console.WriteLine($"movej errcode: {err}");
36
37 Thread.Sleep(1000);
38 err = robot.MoveL(j2, desc_pos2, tool, user, vel, acc, ovl, blendR, ePos, search, flag, offset);
39 Console.WriteLine($"moveL errcode: {err}");
40
41 Thread.Sleep(1000);
42 err = robot.MoveL(j1, desc_pos1, tool, user, vel, acc, ovl, blendR, ePos, search, flag, offset);
43 Console.WriteLine($"moveL errcode: {err}");
44
45 Thread.Sleep(1000);
46 err = robot.MoveC(j2, desc_pos2, tool, user, vel, acc, ePos, flag, offset, j3, desc_pos3, tool, user, vel, acc, ePos, flag, offset, ovl, blendR);
47 Console.WriteLine($"circle errcode: {err}");
48
49 Thread.Sleep(1000);
50 err = robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, ovl, ePos, blendT, flag, offset);
51 Console.WriteLine($"movej errcode: {err}");
52
53 Thread.Sleep(1000);
54 err = robot.Circle(j2, desc_pos2, tool, user, vel, acc, ePos, j3, desc_pos3, tool, user, vel, acc, ePos, ovl, flag, offset);
55 Console.WriteLine($"circle errcode: {err}");
56}
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*/
16int NewSpiral(JointPos joint_pos, DescPose desc_pos, int tool, int user, float vel, float acc, ExaxisPos epos, float ovl, byte offset_flag, DescPose offset_pos, SpiralParam spiral_param);
3.11. 代码示例
1private void btnDescSpiral_Click(object sender, EventArgs e)
2{
3 Robot robot = new Robot();
4 robot.RPC("192.168.58.2");
5 JointPos j;
6 DescPose desc_pos;
7 DescPose offset_pos1 = new DescPose(0, 0, 0, 0, 0, 0);
8 DescPose offset_pos2 = new DescPose(0, 0, 0, 0, 0, 0);
9 ExaxisPos epos = new ExaxisPos(0, 0, 0, 0);
10 SpiralParam sp;
11
12 j = new JointPos(-58.982, -90.717, 127.647, -129.041, -87.989, -0.062);
13 desc_pos = new DescPose(-437.039, 411.064, 426.189, -177.886, 2.007, 31.155);
14
15 offset_pos1.tran.x = 50.0;
16 offset_pos1.rpy.rx = -30.0;
17 offset_pos2.tran.x = 50.0;
18 offset_pos2.rpy.rx = -5.0;
19
20 sp.circle_num = 5;
21 sp.circle_angle = 1.0f;
22 sp.rad_init = 10.0f;
23 sp.rad_add = 40.0f;
24 sp.rotaxis_add = 10.0f;
25 sp.rot_direction = 0;
26
27 int tool = 0;
28 int user = 0;
29 float vel = 100.0f;
30 float acc = 100.0f;
31 float ovl = 100.0f;
32 float blendT = 0.0f;
33 byte flag = 2;
34
35 robot.SetSpeed(20);
36 int ret = robot.GetForwardKin(j, ref desc_pos); //只有关节位置的情况下,可用正运动学接口求解笛卡尔空间坐标
37 if (ret == 0)
38 {
39 int err = -1;
40 err = robot.MoveJ(j, desc_pos, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos1);
41 Console.WriteLine($"movej errcode: {err}");
42
43 err = robot.NewSpiral(j, desc_pos, tool, user, vel, acc, epos, ovl, flag, offset_pos2, sp);
44 Console.WriteLine($"newspiral errcode: {err}");
45 }
46 else
47 {
48 Console.WriteLine($"GetForwardKin errcode: {ret}");
49 }
50}
3.12. 伺服运动开始
1/**
2* @brief 伺服运动开始,配合ServoJ、ServoCart指令使用
3* @return 错误码
4*/
5int ServoMoveStart();
3.13. 伺服运动结束
1/**
2* @brief 伺服运动结束,配合ServoJ、ServoCart指令使用
3* @return 错误码
4*/
5int 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*/
11int ServoJ(JointPos joint_pos, float acc, float vel, float cmdT, float filterT, float gain);
3.15. 代码示例
1private void btnJointServoMove_Click(object sender, EventArgs e)
2{
3 Robot robot = new Robot();
4 robot.RPC("192.168.58.2");
5
6 JointPos j = new JointPos(0, 0, 0, 0, 0, 0);
7
8 float vel = 0.0f;
9 float acc = 0.0f;
10 float cmdT = 0.008f;
11 float filterT = 0.0f;
12 float gain = 0.0f;
13 byte flag = 0;
14 int count = 200;
15 float dt = 0.1f;
16 int ret = robot.GetActualJointPosDegree(flag, ref j);
17 if (ret == 0)
18 {
19 while (count > 0)
20 {
21 robot.ServoJ(j, acc, vel, cmdT, filterT, gain);
22 j.jPos[0] += dt;
23 count -= 1;
24 robot.WaitMs((int)(cmdT * 1000));
25 }
26 }
27 else
28 {
29 Console.WriteLine($"GetActualJointPosDegree errcode: {ret}");
30 }
31}
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*/
13int ServoCart(int mode, DescPose desc_pos, double[] pos_gain, float acc, float vel, float cmdT, float filterT, float gain);
3.17. 代码示例
1private void btnDescServoMove_Click(object sender, EventArgs e)
2{
3 Robot robot = new Robot();
4 robot.RPC("192.168.58.2");
5
6 DescPose desc_pos_dt = new DescPose(0, 0, 0, 0, 0, 0);
7 desc_pos_dt.tran.z = -0.5;
8 double[] pos_gain = new double[6]{ 0.0, 0.0, 1.0, 0.0, 0.0, 0.0 };
9 int mode = 2;
10 float vel = 0.0f;
11 float acc = 0.0f;
12 float cmdT = 0.008f;
13 float filterT = 0.0f;
14 float gain = 0.0f;
15 int flag = 0;
16 int count = 500;
17
18 robot.SetSpeed(20);
19 while (count > 0)
20 {
21 robot.ServoCart(mode, desc_pos_dt, pos_gain, acc, vel, cmdT, filterT, gain);
22 count -= 1;
23 robot.WaitMs((int)(cmdT * 1000));
24 }
25}
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*/
13int MoveCart(DescPose desc_pos, int tool, int user, float vel, float acc, float ovl, float blendT, int config);
3.19. 代码示例
1private void btnDescPTPMove_Click(object sender, EventArgs e)
2{
3 Robot robot = new Robot();
4 robot.RPC("192.168.58.2");
5
6 DescPose desc_pos1, desc_pos2, desc_pos3;
7 desc_pos1 = new DescPose(-437.039, 411.064, 426.189, -177.886, 2.007, 31.155);
8 desc_pos2 = new DescPose(-525.55, 562.3, 417.199, -178.325, 0.847, 31.109);
9 desc_pos3 = new DescPose(-345.155, 535.733, 421.269, 179.475, 0.571, 18.332);
10
11 int tool = 0;
12 int user = 0;
13 float vel = 100.0f;
14 float acc = 100.0f;
15 float ovl = 100.0f;
16 float blendT = -1.0f;
17 float blendT1 = 0.0f;
18 int config = -1;
19
20 robot.SetSpeed(20);
21 robot.MoveCart(desc_pos1, tool, user, vel, acc, ovl, blendT, config);
22 robot.MoveCart(desc_pos2, tool, user, vel, acc, ovl, blendT, config);
23 robot.MoveCart(desc_pos3, tool, user, vel, acc, ovl, blendT1, config);
24}
3.20. 样条运动开始
1/**
2* @brief 样条运动开始
3* @return 错误码
4*/
5int 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*/
12int 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*/
5int SplineEnd();
3.23. 代码示例
1private void btnSplineMove_Click(object sender, EventArgs e)
2{
3 Robot robot = new Robot();
4 robot.RPC("192.168.58.2");
5
6 JointPos j1, j2, j3, j4;
7 DescPose desc_pos1, desc_pos2, desc_pos3, desc_pos4, offset_pos;
8 ExaxisPos epos = new ExaxisPos(0, 0, 0, 0);
9
10 j1 = new JointPos(-58.982, -90.717, 127.647, -129.041, -87.989, -0.062);
11 desc_pos1 = new DescPose(-437.039, 411.064, 426.189, -177.886, 2.007, 31.155);
12
13 j2 = new JointPos(-58.978, -76.817, 112.494, -127.348, -89.145, -0.063);
14 desc_pos2 = new DescPose(-525.55, 562.3, 417.199, -178.325, 0.847, 31.109);
15
16 j3 = new JointPos(-49.129, -68.49, 103.297, -128.898, -91.478, -0.062);
17 desc_pos3 = new DescPose(-680.308, 547.378, 399.189, -175.909, -1.479, 40.827);
18
19 j4 = new JointPos(-56.126, -54.093, 80.686, -121.655, -91.428, -0.064);
20 desc_pos4 = new DescPose(-719.201, 790.816, 389.118, -174.939, -1.428, 33.809);
21
22 offset_pos = new DescPose(0, 0, 0, 0, 0, 0);
23
24 int tool = 0;
25 int user = 0;
26 float vel = 100.0f;
27 float acc = 100.0f;
28 float ovl = 100.0f;
29 float blendT = -1.0f;
30 byte flag = 0;
31 robot.SetSpeed(20);
32 int err = -1;
33 err = robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
34 Console.WriteLine($"movej errcode: {err}");
35
36 robot.SplineStart();
37 robot.SplinePTP(j1, desc_pos1, tool, user, vel, acc, ovl);
38 robot.SplinePTP(j2, desc_pos2, tool, user, vel, acc, ovl);
39 robot.SplinePTP(j3, desc_pos3, tool, user, vel, acc, ovl);
40 robot.SplinePTP(j4, desc_pos4, tool, user, vel, acc, ovl);
41 robot.SplineEnd();
42}
3.24. 新样条运动开始
在 C#SDK-v1.0.6 版本发生变更.
1/**
2* @brief 新样条运动开始
3* @param [in] type 0-圆弧过渡,1-给定点位为路径点
4* @param [in] averageTime 全局平均衔接时间(ms)(10 ~ ),默认2000
5* @return 错误码
6*/
7int NewSplineStart(int type, int averageTime=2000);
3.25. 新样条指令点
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*/
14int NewSplinePoint(JointPos joint_pos, DescPose desc_pos, int tool, int user, float vel, float acc, float ovl, float blendR, int lastFlag);
3.26. 新样条运动结束
1/**
2* @brief 新样条运动开始
3* @return 错误码
4*/
5int NewSplineEnd();
3.27. 终止运动
1/**
2* @brief 终止运动
3* @return 错误码
4*/
5int StopMotion();
3.28. 暂停运动
1/**
2 * @brief 暂停运动
3 * @return 错误码
4*/
5int PauseMotion();
3.29. 恢复运动
1/**
2* @brief 恢复运动
3* @return 错误码
4*/
5int ResumeMotion();
3.30. 点位整体偏移开始
1/**
2* @brief 点位整体偏移开始
3* @param [in] flag 0-基坐标系下/工件坐标系下偏移,2-工具坐标系下偏移
4* @param [in] offset_pos 位姿偏移量
5* @return 错误码
6*/
7int PointsOffsetEnable(int flag, DescPose offset_pos);
3.31. 点位整体偏移结束
1/**
2* @brief 点位整体偏移结束
3* @return 错误码
4*/
5int PointsOffsetDisable();
3.32. 代码示例
1private void btnPointOffect_Click(object sender, EventArgs e)
2{
3 Robot robot = new Robot();
4 robot.RPC("192.168.58.2");
5
6 JointPos j1, j2;
7 DescPose desc_pos1, desc_pos2, offset_pos, offset_pos1;
8 ExaxisPos epos = new ExaxisPos(0, 0, 0, 0);
9
10 j1 = new JointPos(-58.982, -90.717, 127.647, -129.041, -87.989, -0.062);
11 desc_pos1 = new DescPose(-437.039, 411.064, 426.189, -177.886, 2.007, 31.155);
12
13 j2 = new JointPos(-58.978, -76.817, 112.494, -127.348, -89.145, -0.063);
14 desc_pos2 = new DescPose(-525.55, 562.3, 417.199, -178.325, 0.847, 31.109);
15
16 offset_pos = new DescPose(0, 0, 0, 0, 0, 0);
17 offset_pos1 = new DescPose(50.0, 50.0, 50.0, 5.0, 5.0, 5.0);
18
19 int tool = 0;
20 int user = 0;
21 float vel = 100.0f;
22 float acc = 100.0f;
23 float ovl = 100.0f;
24 float blendT = -1.0f;
25 float blendR = 0.0f;
26 byte flag = 0;
27 int type = 0;
28
29 robot.SetSpeed(20);
30
31 robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
32 robot.MoveJ(j2, desc_pos2, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
33 Thread.Sleep(1000);
34 robot.PointsOffsetEnable(type, offset_pos1);
35 robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
36 robot.MoveJ(j2, desc_pos2, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
37 robot.PointsOffsetDisable();
38}