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, &current_pos);
 64    printf("fault is:%u, current position is: %u\n", fault, current_pos);
 65
 66    robot.GetGripperCurCurrent(&fault, &current);
 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(&current_min, &current_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}