10. 机器人外设
10.1. 配置夹爪
1/**
2* @brief 配置夹爪
3* @param [in] company 夹爪厂商,待定
4* @param [in] device 设备号,暂不使用,默认为0
5* @param [in] softvesion 软件版本号,暂不使用,默认为0
6* @param [in] bus 设备挂在末端总线位置,暂不使用,默认为0
7* @return 错误码
8*/
9errno_t SetGripperConfig(int company, int device, int softvesion, int bus);
10.2. 获取夹爪配置
1/**
2* @brief 获取夹爪配置
3* @param [in] company 夹爪厂商,待定
4* @param [in] device 设备号,暂不使用,默认为0
5* @param [in] softvesion 软件版本号,暂不使用,默认为0
6* @param [in] bus 设备挂在末端总线位置,暂不使用,默认为0
7* @return 错误码
8*/
9errno_t GetGripperConfig(int *company, int *device, int *softvesion, int *bus);
10.3. 激活夹爪
1/**
2* @brief 激活夹爪
3* @param [in] index 夹爪编号
4* @param [in] act 0-复位,1-激活
5* @return 错误码
6*/
7errno_t ActGripper(int index, uint8_t act);
10.4. 控制夹爪
1/**
2* @brief 控制夹爪
3* @param [in] index 夹爪编号
4* @param [in] pos 位置百分比,范围[0~100]
5* @param [in] vel 速度百分比,范围[0~100]
6* @param [in] force 力矩百分比,范围[0~100]
7* @param [in] max_time 最大等待时间,范围[0~30000],单位ms
8* @param [in] block 0-阻塞,1-非阻塞
9* @return 错误码
10*/
11errno_t MoveGripper(int index, int pos, int vel, int force, int max_time, uint8_t block);
10.5. 获取夹爪运动状态
1/**
2 * @brief 获取夹爪运动状态
3 * @param [out] fault 0-无错误,1-有错误
4 * @param [out] staus 0-运动未完成,1-运动完成
5 * @return 错误码
6 */
7errno_t GetGripperMotionDone(uint16_t *fault, uint8_t *status);
10.6. 获取夹爪激活状态
1/**
2 * @brief 获取夹爪激活状态
3 * @param [out] fault 0-无错误,1-有错误
4 * @param [out] status bit0~bit15对应夹爪编号0~15,bit=0为未激活,bit=1为激活
5 * @return 错误码
6 */
7errno_t GetGripperActivateStatus(uint16_t *fault, uint16_t *status);
10.7. 获取夹爪位置
1/**
2 * @brief 获取夹爪位置
3 * @param [out] fault 0-无错误,1-有错误
4 * @param [out] position 位置百分比,范围0~100%
5 * @return 错误码
6 */
7errno_t GetGripperCurPosition(uint16_t *fault, uint8_t *position);
10.8. 获取夹爪速度
1/**
2 * @brief 获取夹爪速度
3 * @param [out] fault 0-无错误,1-有错误
4 * @param [out] speed 速度百分比,范围0~100%
5 * @return 错误码
6 */
7errno_t GetGripperCurSpeed(uint16_t *fault, int8_t *speed);
10.9. 获取夹爪电流
1/**
2 * @brief 获取夹爪电流
3 * @param [out] fault 0-无错误,1-有错误
4 * @param [out] current 电流百分比,范围0~100%
5 * @return 错误码
6 */
7errno_t GetGripperCurCurrent(uint16_t *fault, int8_t *current);
10.10. 获取夹爪电压
1/**
2 * @brief 获取夹爪电压
3 * @param [out] fault 0-无错误,1-有错误
4 * @param [out] voltage 电压,单位0.1V
5 * @return 错误码
6 */
7errno_t GetGripperVoltage(uint16_t *fault, int *voltage);
10.11. 获取夹爪温度
1/**
2 * @brief 获取夹爪温度
3 * @param [out] fault 0-无错误,1-有错误
4 * @param [out] temp 温度,单位℃
5 * @return 错误码
6 */
7errno_t GetGripperTemp(uint16_t *fault, int *temp);
10.12. 计算预抓取点-视觉
1/**
2 * @brief 计算预抓取点-视觉
3 * @param [in] desc_pos 抓取点笛卡尔位姿
4 * @param [in] zlength z轴偏移量
5 * @param [in] zangle 绕z轴旋转偏移量
6 * @return 错误码
7 */
8errno_t ComputePrePick(DescPose *desc_pos, double zlength, double zangle, DescPose *pre_pos);
10.13. 计算撤退点-视觉
1/**
2 * @brief 计算撤退点-视觉
3 * @param [in] desc_pos 抓取点笛卡尔位姿
4 * @param [in] zlength z轴偏移量
5 * @param [in] zangle 绕z轴旋转偏移量
6 * @return 错误码
7 */
8errno_t ComputePostPick(DescPose *desc_pos, double zlength, double zangle, DescPose *post_pos);
10.14. 代码示例
在 C++SDK-v2.1.2.0 版本发生变更.
1#include "libfairino/robot.h"
2
3//如果使用Windows,包含下面的头文件
4#include <string.h>
5#include <windows.h>
6//如果使用linux,包含下面的头文件
7/*
8#include <cstdlib>
9#include <iostream>
10#include <stdio.h>
11#include <cstring>
12#include <unistd.h>
13*/
14
15#include <chrono>
16#include <thread>
17
18using namespace std;
19
20int main(void)
21{
22 FRRobot robot;
23 robot.RPC("192.168.58.2");
24
25 int company = 4;
26 int device = 0;
27 int softversion = 0;
28 int bus = 1;
29 int index = 1;
30 int act = 0;
31 int max_time = 30000;
32 uint8_t block = 0;
33 uint8_t status;
34 uint16_t fault;
35 uint16_t active_status = 0;
36 uint8_t current_pos = 0;
37 int8_t current = 0;
38 int voltage = 0;
39 int temp = 0;
40 int8_t speed = 0;
41
42 robot.SetGripperConfig(company, device, softversion, bus);
43 std::this_thread::sleep_for(std::chrono::milliseconds(1000));
44 robot.GetGripperConfig(&company, &device, &softversion, &bus);
45 printf("gripper config:%d,%d,%d,%d\n", company, device, softversion, bus);
46
47 robot.ActGripper(index, act);
48 std::this_thread::sleep_for(std::chrono::milliseconds(1000));
49 act = 1;
50 robot.ActGripper(index, act);
51 std::this_thread::sleep_for(std::chrono::milliseconds(1000));
52
53 robot.MoveGripper(index, 100, 50, 50, max_time, block);
54 std::this_thread::sleep_for(std::chrono::milliseconds(1000));
55 robot.MoveGripper(index, 0, 50, 0, max_time, block);
56
57 robot.GetGripperMotionDone(&fault, &status);
58 printf("motion status:%u,%u\n", fault, status);
59
60 robot.GetGripperActivateStatus(&fault, &active_status);
61 printf("gripper active fault is: %u, status is: %u\n", fault, active_status);
62
63 robot.GetGripperCurPosition(&fault, ¤t_pos);
64 printf("fault is:%u, current position is: %u\n", fault, current_pos);
65
66 robot.GetGripperCurCurrent(&fault, ¤t);
67 printf("fault is:%u, current current is: %d\n", fault, current);
68
69 robot.GetGripperVoltage(&fault, &voltage);
70 printf("fault is:%u, current voltage is: %d \n", fault, voltage);
71
72 robot.GetGripperTemp(&fault, &temp);
73 printf("fault is:%u, current temperature is: %d\n", fault, temp);
74
75 robot.GetGripperCurSpeed(&fault, &speed);
76 printf("fault is:%u, current speed is: %d\n", fault, speed);
77
78 int retval = 0;
79 DescPose prepick_pose;
80 DescPose postpick_pose;
81 memset(&prepick_pose, 0, sizeof(DescPose));
82 memset(&postpick_pose, 0, sizeof(DescPose));
83
84 DescPose desc_p1;
85 desc_p1.tran.x = -351.553;
86 desc_p1.tran.y = 87.913;
87 desc_p1.tran.z = 354.175;
88 desc_p1.rpy.rx = -179.680;
89 desc_p1.rpy.ry = -0.133;
90 desc_p1.rpy.rz = 2.472;
91
92 DescPose desc_p2;
93 desc_p2.tran.x = -351.535;
94 desc_p2.tran.y = -247.222;
95 desc_p2.tran.z = 354.173;
96 desc_p2.rpy.rx = -179.680;
97 desc_p2.rpy.ry = -0.137;
98 desc_p2.rpy.rz = 2.473;
99
100 retval = robot.ComputePrePick(&desc_p1, 10, 0, &prepick_pose);
101 printf("ComputePrePick retval is: %d\n", retval);
102 printf("xyz is: %f, %f, %f; rpy is: %f, %f, %f\n", prepick_pose.tran.x, prepick_pose.tran.y, prepick_pose.tran.z, prepick_pose.rpy.rx, prepick_pose.rpy.ry, prepick_pose.rpy.rz);
103
104 retval = robot.ComputePostPick(&desc_p2, -10, 0, &postpick_pose);
105 printf("ComputePostPick retval is: %d\n", retval);
106 printf("xyz is: %f, %f, %f; rpy is: %f, %f, %f\n", postpick_pose.tran.x, postpick_pose.tran.y, postpick_pose.tran.z, postpick_pose.rpy.rx, postpick_pose.rpy.ry, postpick_pose.rpy.rz);
107
108 return 0;
109}
10.15. 焊接开始
在 C++SDK-v2.1.1.0 版本加入.
1/**
2* @brief 焊接开始
3* @param [in] ioType io类型 0-控制器IO; 1-扩展IO
4* @param [in] arcNum 焊机配置文件编号
5* @param [in] timeout 起弧超时时间
6* @return 错误码
7*/
8errno_t ARCStart(int ioType, int arcNum, int timeout);
10.16. 焊接结束
在 C++SDK-v2.1.1.0 版本加入.
1/**
2* @brief 焊接结束
3* @param [in] ioType io类型 0-控制器IO; 1-扩展IO
4* @param [in] arcNum 焊机配置文件编号
5* @param [in] timeout 熄弧超时时间
6* @return 错误码
7*/
8errno_t ARCEnd(int ioType, int arcNum, int timeout);
10.17. 设置焊接电流与输出模拟量对应关系
在 C++SDK-v2.1.1.0 版本加入.
1/**
2* @brief 设置焊接电流与输出模拟量对应关系
3* @param [in] currentMin 焊接电流-模拟量输出线性关系左侧点电流值(A)
4* @param [in] currentMax 焊接电流-模拟量输出线性关系右侧点电流值(A)
5* @param [in] outputVoltageMin 焊接电流-模拟量输出线性关系左侧点模拟量输出电压值(V)
6* @param [in] outputVoltageMax 焊接电流-模拟量输出线性关系右侧点模拟量输出电压值(V)
7* @return 错误码
8*/
9errno_t WeldingSetCurrentRelation(double currentMin, double currentMax, double outputVoltageMin, double outputVoltageMax);
10.18. 设置焊接电压与输出模拟量对应关系
在 C++SDK-v2.1.1.0 版本加入.
1/**
2* @brief 设置焊接电压与输出模拟量对应关系
3* @param [in] weldVoltageMin 焊接电压-模拟量输出线性关系左侧点焊接电压值(A)
4* @param [in] weldVoltageMax 焊接电压-模拟量输出线性关系右侧点焊接电压值(A)
5* @param [in] outputVoltageMin 焊接电压-模拟量输出线性关系左侧点模拟量输出电压值(V)
6* @param [in] outputVoltageMax 焊接电压-模拟量输出线性关系右侧点模拟量输出电压值(V)
7* @return 错误码
8*/
9errno_t WeldingSetVoltageRelation(double weldVoltageMin, double weldVoltageMax, double outputVoltageMin, double outputVoltageMax);
10.19. 获取焊接电流与输出模拟量对应关系
在 C++SDK-v2.1.1.0 版本加入.
1/**
2* @brief 获取焊接电流与输出模拟量对应关系
3* @param [out] currentMin 焊接电流-模拟量输出线性关系左侧点电流值(A)
4* @param [out] currentMax 焊接电流-模拟量输出线性关系右侧点电流值(A)
5* @param [out] outputVoltageMin 焊接电流-模拟量输出线性关系左侧点模拟量输出电压值(V)
6* @param [out] outputVoltageMax 焊接电流-模拟量输出线性关系右侧点模拟量输出电压值(V)
7* @return 错误码
8*/
9errno_t WeldingGetCurrentRelation(double *currentMin, double *currentMax, double *outputVoltageMin, double *outputVoltageMax);
10.20. 获取焊接电压与输出模拟量对应关系
在 C++SDK-v2.1.1.0 版本加入.
1/**
2* @brief 获取焊接电压与输出模拟量对应关系
3* @param [out] weldVoltageMin 焊接电压-模拟量输出线性关系左侧点焊接电压值(A)
4* @param [out] weldVoltageMax 焊接电压-模拟量输出线性关系右侧点焊接电压值(A)
5* @param [out] outputVoltageMin 焊接电压-模拟量输出线性关系左侧点模拟量输出电压值(V)
6* @param [out] outputVoltageMax 焊接电压-模拟量输出线性关系右侧点模拟量输出电压值(V)
7* @return 错误码
8*/
9errno_t WeldingGetVoltageRelation(double *weldVoltageMin, double *weldVoltageMax, double *outputVoltageMin, double *outputVoltageMax);
10.21. 设置焊接电流
在 C++SDK-v2.1.1.0 版本加入.
1/**
2* @brief 设置焊接电流
3* @param [in] ioType 控制IO类型 0-控制箱IO;1-扩展IO
4* @param [in] current 焊接电流值(A)
5* @param [in] AOIndex 焊接电流控制箱模拟量输出端口(0-1)
6* @return 错误码
7*/
8errno_t WeldingSetCurrent(int ioType, double current, int AOIndex);
10.22. 设置焊接电压
在 C++SDK-v2.1.1.0 版本加入.
1/**
2* @brief 设置焊接电压
3* @param [in] ioType 控制IO类型 0-控制箱IO;1-扩展IO
4* @param [in] voltage 焊接电压值(A)
5* @param [in] AOIndex 焊接电压控制箱模拟量输出端口(0-1)
6* @return 错误码
7*/
8errno_t WeldingSetVoltage(int ioType, double voltage, int AOIndex);
10.23. 设置摆动参数
在 C++SDK-v2.1.1.0 版本加入.
1/**
2* @brief 设置摆动参数
3* @param [in] weaveNum 摆焊参数配置编号
4* @param [in] weaveType 摆动类型 0-平面三角波摆动;1-垂直L型三角波摆动;2-顺时针圆形摆动;3-逆时针圆形摆动;4-平面正弦波摆动;5-垂直L型正弦波摆动;6-垂直三角波摆动;7-垂直正弦波摆动
5* @param [in] weaveFrequency 摆动频率(Hz)
6* @param [in] weaveIncStayTime 等待模式 0-周期不包含等待时间;1-周期包含等待时间
7* @param [in] weaveRange 摆动幅度(mm)
8* @param [in] weaveLeftStayTime 摆动左停留时间(ms)
9* @param [in] weaveRightStayTime 摆动右停留时间(ms)
10* @param [in] weaveCircleRadio 圆形摆动-回调比率(0-100%)
11* @param [in] weaveStationary 摆动位置等待,0-等待时间内位置继续移动;1-等待时间内位置静止
12* @return 错误码
13*/
14errno_t WeaveSetPara(int weaveNum, int weaveType, double weaveFrequency, int weaveIncStayTime, double weaveRange, int weaveLeftStayTime, int weaveRightStayTime, int weaveCircleRadio, int weaveStationary);
10.24. 即时设置摆动参数
在 C++SDK-v2.1.1.0 版本加入.
1/**
2* @brief 即时设置摆动参数
3* @param [in] weaveNum 摆焊参数配置编号
4* @param [in] weaveType 摆动类型 0-平面三角波摆动;1-垂直L型三角波摆动;2-顺时针圆形摆动;3-逆时针圆形摆动;4-平面正弦波摆动;5-垂直L型正弦波摆动;6-垂直三角波摆动;7-垂直正弦波摆动
5* @param [in] weaveFrequency 摆动频率(Hz)
6* @param [in] weaveIncStayTime 等待模式 0-周期不包含等待时间;1-周期包含等待时间
7* @param [in] weaveRange 摆动幅度(mm)
8* @param [in] weaveLeftStayTime 摆动左停留时间(ms)
9* @param [in] weaveRightStayTime 摆动右停留时间(ms)
10* @param [in] weaveCircleRadio 圆形摆动-回调比率(0-100%)
11* @param [in] weaveStationary 摆动位置等待,0-等待时间内位置继续移动;1-等待时间内位置静止
12* @return 错误码
13*/
14errno_t WeaveOnlineSetPara(int weaveNum, int weaveType, double weaveFrequency, int weaveIncStayTime, double weaveRange, int weaveLeftStayTime, int weaveRightStayTime, int weaveCircleRadio, int weaveStationary);
10.25. 摆动开始
在 C++SDK-v2.1.1.0 版本加入.
1/**
2* @brief 摆动开始
3* @param [in] weaveNum 摆焊参数配置编号
4* @return 错误码
5*/
6errno_t WeaveStart(int weaveNum);
10.26. 摆动结束
在 C++SDK-v2.1.1.0 版本加入.
1/**
2* @brief 摆动结束
3* @param [in] weaveNum 摆焊参数配置编号
4* @return 错误码
5*/
6errno_t WeaveEnd(int weaveNum);
10.27. 正向送丝
在 C++SDK-v2.1.1.0 版本加入.
1/**
2* @brief 正向送丝
3* @param [in] ioType io类型 0-控制器IO;1-扩展IO
4* @param [in] wireFeed 送丝控制 0-停止送丝;1-送丝
5* @return 错误码
6*/
7errno_t SetForwardWireFeed(int ioType, int wireFeed);
10.28. 反向送丝
在 C++SDK-v2.1.1.0 版本加入.
1/**
2* @brief 反向送丝
3* @param [in] ioType io类型 0-控制器IO;1-扩展IO
4* @param [in] wireFeed 送丝控制 0-停止送丝;1-送丝
5* @return 错误码
6*/
7errno_t SetReverseWireFeed(int ioType, int wireFeed);
10.29. 送气
在 C++SDK-v2.1.1.0 版本加入.
1/**
2* @brief 送气
3* @param [in] ioType io类型 0-控制器IO;1-扩展IO
4* @param [in] airControl 送气控制 0-停止送气;1-送气
5* @return 错误码
6*/
7errno_t SetAspirated(int ioType, int airControl);
10.30. 段焊开始
在 C++SDK-v2.1.1.0 版本加入.
1/**
2* @brief 段焊开始
3* @param [in] startDesePos 起始点笛卡尔位置
4* @param [in] endDesePos 结束点笛卡尔位姿
5* @param [in] startJPos 起始点关节位姿
6* @param [in] endJPos 结束点关节位姿
7* @param [in] weldLength 焊接段长度(mm)
8* @param [in] noWeldLength 非焊接段长度(mm)
9* @param [in] weldIOType 焊接IO类型(0-控制箱IO;1-扩展IO)
10* @param [in] arcNum 焊机配置文件编号
11* @param [in] weldTimeout 起/收弧超时时间
12* @param [in] isWeave 是否摆动
13* @param [in] weaveNum 摆焊参数配置编号
14* @param [in] tool 工具坐标号,范围[0~14]
15* @param [in] user 工件坐标号,范围[0~14]
16* @param [in] vel 速度百分比,范围[0~100]
17* @param [in] acc 加速度百分比,范围[0~100],暂不开放
18* @param [in] ovl 速度缩放因子,范围[0~100]
19* @param [in] blendR [-1.0]-运动到位(阻塞),[0~1000.0]-平滑半径(非阻塞),单位mm
20* @param [in] epos 扩展轴位置,单位mm
21* @param [in] search 0-不焊丝寻位,1-焊丝寻位
22* @param [in] offset_flag 0-不偏移,1-基坐标系/工件坐标系下偏移,2-工具坐标系下偏移
23* @param [in] offset_pos 位姿偏移量
24* @return 错误码
25*/
26errno_t SegmentWeldStart(DescPose *startDesePos, DescPose *endDesePos, JointPos *startJPos, JointPos *endJPos, double weldLength, double noWeldLength, int weldIOType, int arcNum, int weldTimeout, bool isWeave, int weaveNum, int tool, int user, float vel, float acc, float ovl, float blendR, ExaxisPos *epos, uint8_t search, uint8_t offset_flag, DescPose *offset_pos);
10.31. 代码示例
在 C++SDK-v2.1.2.0 版本发生变更.
1#include "libfairino/robot.h"
2
3//如果使用Windows,包含下面的头文件
4#include <string.h>
5#include <windows.h>
6//如果使用linux,包含下面的头文件
7/*
8#include <cstdlib>
9#include <iostream>
10#include <stdio.h>
11#include <cstring>
12#include <unistd.h>
13*/
14#include <chrono>
15#include <thread>
16
17using namespace std;
18
19int main(void)
20{
21 FRRobot robot;
22 robot.RPC("192.168.58.2");
23
24 double current_min = 0;
25 double current_max = 0;
26 double vol_min = 0;
27 double vol_max = 0;
28 double output_vmin = 0;
29 double output_vmax = 0;
30
31 DescPose start_descpose;
32 start_descpose.rpy.rx = 2.243;
33 start_descpose.rpy.ry = 0.828;
34 start_descpose.rpy.rz = -148.894;
35 start_descpose.tran.x = -208.064;
36 start_descpose.tran.y = 412.155;
37 start_descpose.tran.z = 1.926;
38
39 JointPos start_jointpose;
40 start_jointpose.jPos[0] = -51.489;
41 start_jointpose.jPos[1] = -105.721;
42 start_jointpose.jPos[2] = 130.695;
43 start_jointpose.jPos[3] = -108.338;
44 start_jointpose.jPos[4] = -91.356;
45 start_jointpose.jPos[5] = 62.014;
46
47 DescPose end_descpose;
48 end_descpose.rpy.rx = 2.346;
49 end_descpose.rpy.ry = -3.633;
50 end_descpose.rpy.rz = -106.313;
51 end_descpose.tran.x = -425.087;
52 end_descpose.tran.y = 389.637;
53 end_descpose.tran.z = -9.249;
54
55 JointPos end_jointpose;
56 end_jointpose.jPos[0] = -47.137;
57 end_jointpose.jPos[1] = -102.345;
58 end_jointpose.jPos[2] = 127.607;
59 end_jointpose.jPos[3] = -108.526;
60 end_jointpose.jPos[4] = -91.407;
61 end_jointpose.jPos[5] = 23.537;
62
63 ExaxisPos ex_axis_pose;
64 memset(&ex_axis_pose, 0, sizeof(ExaxisPos));
65 DescPose offset_pose;
66 memset(&offset_pose, 0, sizeof(DescPose));
67 int retval = 0;
68
69 retval = robot.WeldingSetCurrentRelation(0, 400, 0, 10);
70 cout << "WeldingSetCurrentRelation retval is: " << retval << endl;
71
72 retval = robot.WeldingSetVoltageRelation(0, 40, 0, 10);
73 cout << "WeldingSetVoltageRelation retval is: " << retval << endl;
74
75 retval = robot.WeldingGetCurrentRelation(¤t_min, ¤t_max, &output_vmin, &output_vmax);
76 cout << "WeldingGetCurrentRelation retval is: " << retval << endl;
77 cout << "current min " << current_min << " current max " << current_max << " output vol min " << output_vmin << " output vol max "<< output_vmax<<endl;
78
79 retval = robot.WeldingGetVoltageRelation(&vol_min, &vol_max, &output_vmin, &output_vmax);
80 cout << "WeldingGetVoltageRelation retval is: " << retval << endl;
81 cout << "vol min " << vol_min << " vol max " << vol_max << " output vol min " << output_vmin << " output vol max "<< output_vmax<<endl;
82
83 retval = robot.WeldingSetCurrent(1, 100, 0);
84 cout << "WeldingSetCurrent retval is: " << retval << endl;
85
86 this_thread::sleep_for(chrono::seconds(3));
87
88 retval = robot.WeldingSetVoltage(1, 10, 0);
89 cout << "WeldingSetVoltage retval is: " << retval << endl;
90
91 retval = robot.WeaveSetPara(0, 0, 2.0, 0, 10, 0, 0, 0, 0);
92 cout << "retval is: " << retval << endl;
93
94 retval = robot.MoveJ(&start_jointpose, &start_descpose, 1, 0, 50, 50, 50, &ex_axis_pose, 0, 0, &offset_pose);
95 if (retval != 0)
96 {
97 cout << "movej fail " << retval << endl;
98 return 0;
99 }
100
101 retval = robot.WeaveStart(0);
102 cout << "retval is: " << retval << endl;
103
104 retval = robot.MoveL(&end_jointpose, &end_descpose, 1, 0, 50, 50, 50, 0, &ex_axis_pose, 0, 0, &offset_pose);
105 if (retval != 0)
106 {
107 cout << "MoveL fail " << retval << endl;
108 robot.WeaveEnd(0);
109 return 0;
110 }
111
112 retval = robot.WeaveEnd(0);
113 cout << "retval is: " << retval << endl;
114
115 retval = 0;
116 retval = robot.SetForwardWireFeed(1, 1);
117 cout << "SetForwardWireFeed retval is: " << retval << endl;
118
119 this_thread::sleep_for(chrono::seconds(3));
120
121 retval = robot.SetForwardWireFeed(1, 0);
122 cout << "SetForwardWireFeed retval is: " << retval << endl;
123
124 retval = robot.SetReverseWireFeed(1, 1);
125 cout << "SetReverseWireFeed retval is: " << retval << endl;
126
127 this_thread::sleep_for(chrono::seconds(3));
128
129 retval = robot.SetReverseWireFeed(1, 0);
130 cout << "SetReverseWireFeed retval is: " << retval << endl;
131
132 retval = robot.SetAspirated(1, 1);
133 cout << "SetAspirated retval " << retval << endl;
134
135 this_thread::sleep_for(chrono::seconds(2));
136
137 retval = robot.SetAspirated(1, 0);
138 cout << "SetAspirated retval " << retval << endl;
139
140 /* 所有的坐标点请以实际工况为准 */
141 start_descpose.rpy.rx = 7.178;
142 start_descpose.rpy.ry = -0.809;
143 start_descpose.rpy.rz = -133.134;
144 start_descpose.tran.x = -135.56;
145 start_descpose.tran.y = 373.448;
146 start_descpose.tran.z = 36.767;
147
148 start_jointpose.jPos[0] = -70.228;
149 start_jointpose.jPos[1] = -130.911;
150 start_jointpose.jPos[2] = 134.147;
151 start_jointpose.jPos[3] = -83.379;
152 start_jointpose.jPos[4] = -95.656;
153 start_jointpose.jPos[5] = 27.74;
154
155 end_descpose.rpy.rx = -4.586;
156 end_descpose.rpy.ry = -10.926;
157 end_descpose.rpy.rz = -124.298;
158 end_descpose.tran.x = -380.207;
159 end_descpose.tran.y = 371.358;
160 end_descpose.tran.z = 55.898;
161
162 end_jointpose.jPos[0] = -50.247;
163 end_jointpose.jPos[1] = -113.273;
164 end_jointpose.jPos[2] = 125.856;
165 end_jointpose.jPos[3] = -100.351;
166 end_jointpose.jPos[4] = -80.702;
167 end_jointpose.jPos[5] = 38.478;
168
169 memset(&ex_axis_pose, 0, sizeof(ExaxisPos));
170 memset(&offset_pose, 0, sizeof(DescPose));
171 retval = 0;
172
173 retval = robot.SegmentWeldStart(&start_descpose, &end_descpose, &start_jointpose, &end_jointpose, 20, 20, 1, 0, 5000, 1, 0, 1, 0, 20, 50, 50, 0, &ex_axis_pose, 0, 0, &offset_pose);
174 if(0 != retval)
175 {
176 cout << "SegmentWeldStart end " << retval << endl;
177 }
178
179 return 0;
180}