6. 机器人安全设置

6.1. 设置碰撞等级

1/**
2* @brief 设置碰撞等级
3* @param  [in]  mode  0-等级,1-百分比
4* @param  [in]  level 碰撞阈值,等级对应范围[],百分比对应范围[0~1]
5* @param  [in]  config 0-不更新配置文件,1-更新配置文件
6* @return  错误码
7*/
8errno_t  SetAnticollision(int mode, float level[6], int config);

6.2. 设置碰撞后策略

1/**
2* @brief  设置碰撞后策略
3* @param  [in] strategy  0-报错停止,1-继续运行
4* @return  错误码
5*/
6errno_t  SetCollisionStrategy(int strategy);

6.3. 设置正限位

1/**
2* @brief  设置正限位
3* @param  [in] limit 六个关节位置,单位deg
4* @return  错误码
5*/
6errno_t  SetLimitPositive(float limit[6]);

6.4. 设置负限位

1/**
2* @brief  设置负限位
3* @param  [in] limit 六个关节位置,单位deg
4* @return  错误码
5*/
6errno_t  SetLimitNegative(float limit[6]);

6.5. 错误状态清除

1/**
2* @brief  错误状态清除
3* @return  错误码
4*/
5errno_t  ResetAllError();

6.6. 关节摩擦力补偿开关

1/**
2* @brief  关节摩擦力补偿开关
3* @param  [in]  state  0-关,1-开
4* @return  错误码
5*/
6errno_t  FrictionCompensationOnOff(uint8_t state);

6.7. 设置关节摩擦力补偿系数-正装

1/**
2* @brief  设置关节摩擦力补偿系数-正装
3* @param  [in]  coeff 六个关节补偿系数,范围[0~1]
4* @return  错误码
5*/
6errno_t  SetFrictionValue_level(float coeff[6]);

6.8. 设置关节摩擦力补偿系数-侧装

1/**
2* @brief  设置关节摩擦力补偿系数-侧装
3* @param  [in]  coeff 六个关节补偿系数,范围[0~1]
4* @return  错误码
5*/
6errno_t  SetFrictionValue_wall(float coeff[6]);

6.9. 设置关节摩擦力补偿系数-倒装

1/**
2* @brief  设置关节摩擦力补偿系数-倒装
3* @param  [in]  coeff 六个关节补偿系数,范围[0~1]
4* @return  错误码
5*/
6errno_t  SetFrictionValue_ceiling(float coeff[6]);

6.10. 设置关节摩擦力补偿系数-自由安装

1/**
2* @brief  设置关节摩擦力补偿系数-自由安装
3* @param  [in]  coeff 六个关节补偿系数,范围[0~1]
4* @return  错误码
5*/
6errno_t  SetFrictionValue_freedom(float coeff[6]);

6.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    int mode = 0;
17    int config = 1;
18    float level1[6] = {1.0,2.0,3.0,4.0,5.0,6.0};
19    float level2[6] = {50.0,20.0,30.0,40.0,50.0,60.0};
20
21    robot.SetAnticollision(mode, level1, config);
22    mode = 1;
23    robot.SetAnticollision(mode, level2, config);
24    robot.SetCollisionStrategy(1);
25
26    float plimit[6] = {170.0,80.0,150.0,80.0,170.0,160.0};
27    robot.SetLimitPositive(plimit);
28    float nlimit[6] = {-170.0,-260.0,-150.0,-260.0,-170.0,-160.0};
29    robot.SetLimitNegative(nlimit);
30
31    robot.ResetAllError();
32
33    float lcoeff[6] = {0.9,0.9,0.9,0.9,0.9,0.9};
34    float wcoeff[6] = {0.4,0.4,0.4,0.4,0.4,0.4};
35    float ccoeff[6] = {0.6,0.6,0.6,0.6,0.6,0.6};
36    float fcoeff[6] = {0.5,0.5,0.5,0.5,0.5,0.5};
37    robot.FrictionCompensationOnOff(1);
38    robot.SetFrictionValue_level(lcoeff);
39    robot.SetFrictionValue_wall(wcoeff);
40    robot.SetFrictionValue_ceiling(ccoeff);
41    robot.SetFrictionValue_freedom(fcoeff);
42
43    return 0;
44}