12. 扩展轴
12.1. 设置485扩展轴参数
在 C++SDK-v2.1.3.0 版本加入.
1/**
2* @brief 设置485扩展轴参数
3* @param [in] servoId 伺服驱动器ID,范围[1-15],对应从站ID
4* @param [in] servoCompany 伺服驱动器厂商,1-戴纳泰克
5* @param [in] servoModel 伺服驱动器型号,1-FD100-750C
6* @param [in] servoSoftVersion 伺服驱动器软件版本,1-V1.0
7* @param [in] servoResolution 编码器分辨率
8* @param [in] axisMechTransRatio 机械传动比
9* @return 错误码
10*/
11errno_t AuxServoSetParam(int servoId, int servoCompany, int servoModel, int servoSoftVersion, int servoResolution, double axisMechTransRatio);
12.2. 获取485扩展轴配置参数
在 C++SDK-v2.1.3.0 版本加入.
1/**
2* @brief 获取485扩展轴配置参数
3* @param [in] servoId 伺服驱动器ID,范围[1-15],对应从站ID
4* @param [out] servoCompany 伺服驱动器厂商,1-戴纳泰克
5* @param [out] servoModel 伺服驱动器型号,1-FD100-750C
6* @param [out] servoSoftVersion 伺服驱动器软件版本,1-V1.0
7* @param [out] servoResolution 编码器分辨率
8* @param [out] axisMechTransRatio 机械传动比
9* @return 错误码
10*/
11errno_t AuxServoGetParam(int servoId, int* servoCompany, int* servoModel, int* servoSoftVersion, int* servoResolution, double* axisMechTransRatio);
12.3. 代码示例
在 C++SDK-v2.1.3.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#include <string>
17
18using namespace std;
19
20int main(void)
21{
22 FRRobot robot;
23 robot.LoggerInit();
24 robot.SetLoggerLevel();
25 robot.RPC("192.168.58.2");
26
27 int retval = robot.AuxServoSetParam(1, 1, 1, 1, 131072, 15.45);
28 std::cout << "AuxServoSetParam is: " << retval << std::endl;
29
30 int servoCompany;
31 int servoModel;
32 int servoSoftVersion;
33 int servoResolution;
34 double axisMechTransRatio;
35 retval = robot.AuxServoGetParam(1, &servoCompany, &servoModel, &servoSoftVersion, &servoResolution, &axisMechTransRatio);
36 std::cout << "servoCompany " << servoCompany<< "\n"
37 << "servoModel " << servoModel << "\n"
38 << "servoSoftVersion " << servoSoftVersion<< "\n"
39 << "servoResolution " << servoResolution<< "\n"
40 << "axisMechTransRatio "<<axisMechTransRatio<< "\n"
41 << std::endl;
42
43 retval = robot.AuxServoSetParam(1, 10, 11, 12, 13, 14);
44 std::cout << "AuxServoSetParam is: " << retval << std::endl;
45
46 retval = robot.AuxServoGetParam(1, &servoCompany, &servoModel, &servoSoftVersion, &servoResolution, &axisMechTransRatio);
47 std::cout << "servoCompany " << servoCompany<< "\n"
48 << "servoModel " << servoModel << "\n"
49 << "servoSoftVersion " << servoSoftVersion<< "\n"
50 << "servoResolution " << servoResolution<< "\n"
51 << "axisMechTransRatio "<<axisMechTransRatio<< "\n"
52 << std::endl;
53
54 return 0;
55}
12.4. 设置485扩展轴使能/去使能
在 C++SDK-v2.1.3.0 版本加入.
1/**
2* @brief 设置485扩展轴使能/去使能
3* @param [in] servoId 伺服驱动器ID,范围[1-15],对应从站ID
4* @param [in] status 使能状态,0-去使能, 1-使能
5* @return 错误码
6*/
7errno_t AuxServoEnable(int servoId, int status);
12.5. 设置485扩展轴控制模式
在 C++SDK-v2.1.3.0 版本加入.
1/**
2* @brief 设置485扩展轴控制模式
3* @param [in] servoId 伺服驱动器ID,范围[1-15],对应从站ID
4* @param [in] mode 控制模式,0-位置模式,1-速度模式
5* @return 错误码
6*/
7errno_t AuxServoSetControlMode(int servoId, int mode);
12.6. 设置485扩展轴目标位置(位置模式)
在 C++SDK-v2.1.3.0 版本加入.
1/**
2* @brief 设置485扩展轴目标位置(位置模式)
3* @param [in] servoId 伺服驱动器ID,范围[1-15],对应从站ID
4* @param [in] pos 目标位置,mm或°
5* @param [in] speed 目标速度,mm/s或°/s
6* @return 错误码
7*/
8errno_t AuxServoSetTargetPos(int servoId, double pos, double speed);
12.7. 设置485扩展轴目标转矩(力矩模式) - 暂未开放
在 C++SDK-v2.1.3.0 版本加入.
1/**
2* @brief 设置485扩展轴目标转矩(力矩模式)
3* @param [in] servoId 伺服驱动器ID,范围[1-15],对应从站ID
4* @param [in] torque 目标力矩,Nm
5* @return 错误码
6*/
7errno_t AuxServoSetTargetTorque(int servoId, double torque);
12.8. 设置485扩展轴回零
在 C++SDK-v2.1.3.0 版本加入.
1/**
2* @brief 设置485扩展轴回零
3* @param [in] servoId 伺服驱动器ID,范围[1-15],对应从站ID
4* @param [in] mode 回零模式,0-当前位置回零;1-限位回零
5* @param [in] searchVel 回零速度,mm/s或°/s
6* @param [in] latchVel 箍位速度,mm/s或°/s
7* @return 错误码
8*/
9errno_t AuxServoHoming(int servoId, int mode, double searchVel, double latchVel);
12.9. 清除485扩展轴错误信息
在 C++SDK-v2.1.3.0 版本加入.
1/**
2* @brief 清除485扩展轴错误信息
3* @param [in] servoId 伺服驱动器ID,范围[1-15],对应从站ID
4* @return 错误码
5*/
6errno_t AuxServoClearError(int servoId);
12.10. 获取485扩展轴伺服状态
在 C++SDK-v2.1.3.0 版本加入.
1/**
2* @brief 获取485扩展轴伺服状态
3* @param [in] servoId 伺服驱动器ID,范围[1-15],对应从站ID
4* @param [out] servoErrCode 伺服驱动器故障码
5* @param [out] servoState 伺服驱动器状态[十进制数转为二进制,bit0-bit5:伺服使能-伺服运行-正限位触发-负限位触发-定位完成-回零完成]
6* @param [out] servoPos 伺服当前位置 mm或°
7* @param [out] servoSpeed 伺服当前速度 mm/s或°/s
8* @param [out] servoTorque 伺服当前转矩Nm
9* @return 错误码
10*/
11errno_t AuxServoGetStatus(int servoId, int* servoErrCode, int* servoState, double* servoPos, double* servoSpeed, double* servoTorque);
12.11. 代码示例
在 C++SDK-v2.1.3.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#include <string>
17
18using namespace std;
19
20int main(void)
21{
22 FRRobot robot;
23 robot.LoggerInit();
24 robot.SetLoggerLevel();
25 robot.RPC("192.168.58.2");
26 int retval = 0;
27
28 retval = robot.AuxServoSetParam(1, 1, 1, 1, 131072, 36);
29 std::cout << "AuxServoSetParam is: " << retval << std::endl;
30 std::this_thread::sleep_for(std::chrono::seconds(3));
31
32 retval = robot.AuxServoEnable(1, 0);
33 std::cout << "AuxServoEnable disenable " << retval << std::endl;
34 std::this_thread::sleep_for(std::chrono::seconds(1));
35 int servoerrcode = 0;
36 int servoErrCode;
37 int servoState;
38 double servoPos;
39 double servoSpeed;
40 double servoTorque;
41 retval = robot.AuxServoGetStatus(1, &servoErrCode, &servoState, &servoPos, &servoSpeed, &servoTorque);
42 std::cout << "AuxServoGetStatus servoState "<< servoState << std::endl;
43 std::this_thread::sleep_for(std::chrono::seconds(1));
44
45 retval = robot.AuxServoEnable(1, 1);
46 std::cout << "AuxServoEnable enable " << retval << std::endl;
47 std::this_thread::sleep_for(std::chrono::seconds(1));
48 retval = robot.AuxServoGetStatus(1, &servoErrCode, &servoState, &servoPos, &servoSpeed, &servoTorque);
49 std::cout << "AuxServoGetStatus servoState "<< servoState << std::endl;
50 std::this_thread::sleep_for(std::chrono::seconds(1));
51
52 retval = robot.AuxServoHoming(1, 1, 5, 1);
53 std::cout << "AuxServoHoming " << retval << std::endl;
54 std::this_thread::sleep_for(std::chrono::seconds(3));
55
56 retval = robot.AuxServoSetTargetPos(1, 200, 30);
57 std::cout << "AuxServoSetTargetPos " << retval << std::endl;
58 std::this_thread::sleep_for(std::chrono::seconds(1));
59 retval = robot.AuxServoGetStatus(1, &servoErrCode, &servoState, &servoPos, &servoSpeed, &servoTorque);
60 std::cout << "AuxServoGetStatus servoSpeed "<< servoSpeed << std::endl;
61 std::this_thread::sleep_for(std::chrono::seconds(1));
62
63 return 0;
64}
12.12. 设置485扩展轴目标速度(速度模式)
在 C++SDK-v2.1.3.0 版本加入.
1/**
2* @brief 设置485扩展轴目标速度(速度模式)
3* @param [in] servoId 伺服驱动器ID,范围[1-15],对应从站ID
4* @param [in] speed 目标速度,mm/s或°/s
5* @return 错误码
6*/
7errno_t AuxServoSetTargetSpeed(int servoId, double speed);
12.13. 设置状态反馈中485扩展轴数据轴号
在 C++SDK-v2.1.3.0 版本加入.
1/**
2* @brief 设置状态反馈中485扩展轴数据轴号
3* @param [in] servoId 伺服驱动器ID,范围[1-15],对应从站ID
4* @return 错误码
5*/
6errno_t AuxServosetStatusID(int servoId);
12.14. 获取机器人实时状态结构体
在 C++SDK-v2.1.3.0 版本加入.
1/**
2* @brief 获取机器人实时状态结构体
3* @param [out] pkg 机器人实时状态结构体
4* @return 错误码
5*/
6errno_t GetRobotRealTimeState(ROBOT_STATE_PKG *pkg);