8. Consulta de Estado do Robô
8.1. Obter Posição Articular Atual (graus)
1/**
2* @brief Obtém a posição articular atual (graus)
3* @param [in] flag 0-bloqueante, 1-não bloqueante
4* @param [out] jPos Posições das seis juntas, em graus
5* @return Código de erro
6*/
7int GetActualJointPosDegree(byte flag, ref JointPos jPos);
8.2. Obter Posição Articular Atual (radianos)
1/**
2* @brief Obtém a posição articular atual (radianos)
3* @param [in] flag 0-bloqueante, 1-não bloqueante
4* @param [out] jPos Posições das seis juntas, em radianos
5* @return Código de erro
6*/
7int GetActualJointPosRadian(byte flag, ref JointPos jPos);
8.3. Obter Velocidade de Feedback Articular
1/**
2* @brief Obtém a velocidade de feedback articular - graus/s
3* @param [in] flag 0-bloqueante, 1-não bloqueante
4* @param [out] speed Velocidades das seis juntas
5* @return Código de erro
6*/
7int GetActualJointSpeedsDegree(byte flag, ref double[] speed);
8.4. Obter Aceleração de Feedback Articular
1/**
2* @brief Obtém a aceleração de feedback articular - graus/s^2
3* @param [in] flag 0-bloqueante, 1-não bloqueante
4* @param [out] acc Acelerações das seis juntas
5* @return Código de erro
6*/
7int GetActualJointAccDegree(byte flag, ref double[] acc);
8.5. Obter Velocidade de Comando TCP - Velocidade Resultante
1/**
2* @brief Obtém a velocidade de comando TCP - velocidade resultante
3* @param [in] flag 0-bloqueante, 1-não bloqueante
4* @param [out] tcp_speed Velocidade linear
5* @param [out] ori_speed Velocidade de orientação
6* @return Código de erro
7*/
8int GetTargetTCPCompositeSpeed(byte flag, ref double tcp_speed, ref double ori_speed);
8.6. Obter Velocidade de Feedback TCP - Velocidade Resultante
1/**
2* @brief Obtém a velocidade de feedback TCP - velocidade resultante
3* @param [in] flag 0-bloqueante, 1-não bloqueante
4* @param [out] tcp_speed Velocidade linear
5* @param [out] ori_speed Velocidade de orientação
6* @return Código de erro
7*/
8int GetActualTCPCompositeSpeed(byte flag, ref double tcp_speed, ref double ori_speed);
8.7. Obter Velocidade de Comando TCP - Velocidades Componentes
1/**
2* @brief Obtém a velocidade de comando TCP - velocidades componentes
3* @param [in] flag 0-bloqueante, 1-não bloqueante
4* @param [out] speed Velocidades [x, y, z, rx, ry, rz]
5* @return Código de erro
6*/
7int GetTargetTCPSpeed(byte flag, ref double[] speed);
8.8. Obter Velocidade de Feedback TCP - Velocidades Componentes
1/**
2* @brief Obtém a velocidade de feedback TCP - velocidades componentes
3* @param [in] flag 0-bloqueante, 1-não bloqueante
4* @param [out] speed Velocidades [x, y, z, rx, ry, rz]
5* @return Código de erro
6*/
7int GetActualTCPSpeed(byte flag, ref double[] speed);
8.9. Obter Pose da Ferramenta Atual
1/**
2* @brief Obtém a pose da ferramenta atual
3* @param [in] flag 0-bloqueante, 1-não bloqueante
4* @param [out] desc_pos Pose da ferramenta
5* @return Código de erro
6*/
7int GetActualTCPPose(byte flag, ref DescPose desc_pos);
8.10. Obter Número do Sistema de Coordenadas da Ferramenta Atual
1/**
2* @brief Obtém o número do sistema de coordenadas da ferramenta atual
3* @param [in] flag 0-bloqueante, 1-não bloqueante
4* @param [out] id Número do sistema de coordenadas da ferramenta
5* @return Código de erro
6*/
7int GetActualTCPNum(byte flag, ref int id);
8.11. Obter Número do Sistema de Coordenadas da Peça Atual
1/**
2* @brief Obtém o número do sistema de coordenadas da peça atual
3* @param [in] flag 0-bloqueante, 1-não bloqueante
4* @param [out] id Número do sistema de coordenadas da peça
5* @return Código de erro
6*/
7int GetActualWObjNum(byte flag, ref int id);
8.12. Obter Pose do Flange da Extremidade Atual
1/**
2* @brief Obtém a pose do flange da extremidade atual
3* @param [in] flag 0-bloqueante, 1-não bloqueante
4* @param [out] desc_pos Pose do flange
5* @return Código de erro
6*/
7int GetActualToolFlangePose(byte flag, ref DescPose desc_pos);
8.13. Obter Torque Articular Atual
1/**
2* @brief Obtém o torque articular atual
3* @param [in] flag 0-bloqueante, 1-não bloqueante
4* @param [out] torques Torques das juntas
5* @return Código de erro
6*/
7int GetJointTorques(byte flag, float[] torques);
8.14. Obter a Hora do Sistema
1/**
2* @brief Obter a hora do sistema
3* @param [out] t_ms Unidade ms, pode ser convertida de acordo com o tempo UTC. Quando o robô está em estado de falha, GetSystemClock retorna 0 e retorna um código de erro.
4* @return Código de erro
5*/
6public int GetSystemClock(ref double t_ms)
8.15. Verificar se o Movimento do Robô está Concluído
1/**
2* @brief Verifica se o movimento do robô está concluído
3* @param [out] state 0-não concluído, 1-concluído
4* @return Código de erro
5*/
6int GetRobotMotionDone(ref byte state);
8.16. Consultar o Comprimento da Fila de Cache de Movimento do Robô
1/**
2* @brief Consulta o comprimento da fila de cache de movimento do robô
3* @param [out] len Comprimento da cache
4* @return Código de erro
5*/
6int GetMotionQueueLength(ref int len);
8.17. Obter Estado de Parada de Emergência do Robô
1/**
2* @brief Obtém o estado de parada de emergência do robô
3* @param [out] state Estado de parada de emergência, 0-não em parada de emergência, 1-em parada de emergência
4* @return Código de erro
5*/
6int GetRobotEmergencyStopState(ref byte state);
8.18. Obter Estado de Comunicação entre SDK e o Robô
1/**
2* @brief Obtém o estado de comunicação entre SDK e o robô
3* @param [out] state Estado de comunicação, 0-comunicação normal, 1-comunicação anormal
4*/
5int GetSDKComState(ref int state);
8.19. Obter Sinal de Parada de Segurança
1/**
2* @brief Obtém o sinal de parada de segurança
3* @param [out] si0_state Sinal de parada de segurança SI0, 0-inválido, 1-válido
4* @param [out] si1_state Sinal de parada de segurança SI1, 0-inválido, 1-válido
5*/
6int GetSafetyStopState(ref byte si0_state, ref byte si1_state);
8.20. Obter Temperatura do Driver Articular do Robô (°C)
1/**
2* @brief Obtém a temperatura do driver articular do robô (°C)
3* @return Código de erro
4*/
5int GetJointDriverTemperature(double[] temperature);
8.21. Obter Torque do Driver Articular do Robô (Nm)
1/**
2* @brief Obtém o torque do driver articular do robô (Nm)
3* @return Código de erro
4*/
5int GetJointDriverTorque(double torque[]);
8.22. Obter o Último Quadro dos Dados de Estado em Tempo Real do Robô (Alteração no Mecanismo Interno)
1/**
2* @brief Obter o último quadro dos dados de estado em tempo real do robô (thread interno atualiza continuamente, esta interface retorna diretamente os dados em cache)
3* @param [out] pkg Parâmetro de referência para receber os dados de estado do robô (estrutura ROBOT_STATE_PKG)
4* @return Retorna 0 em caso de sucesso; retorna um código de erro negativo em caso de falha (ex. erro de comunicação de rede)
5*/
6public int GetRobotRealTimeState(ref ROBOT_STATE_PKG pkg)
8.23. Exemplo de Código de Consulta de Estado do Robô
1private void button29_Click(object sender, EventArgs e)
2{
3 ROBOT_STATE_PKG pkg = new ROBOT_STATE_PKG();
4 double yangle = 0, zangle = 0;
5 robot.GetRobotInstallAngle(ref yangle, ref zangle);
6 Console.WriteLine($"yangle:{yangle},zangle:{zangle}");
7
8 JointPos j_deg = new JointPos(0,0,0,0,0,0);
9 robot.GetActualJointPosDegree(0, ref j_deg);
10 Console.WriteLine($"joint pos deg:{j_deg.jPos[0]},{j_deg.jPos[1]},{j_deg.jPos[2]},{j_deg.jPos[3]},{j_deg.jPos[4]},{j_deg.jPos[5]}");
11
12 double[] jointSpeed = new double[6];
13 robot.GetActualJointSpeedsDegree(0, ref jointSpeed);
14 Console.WriteLine($"joint speeds deg:{jointSpeed[0]},{jointSpeed[1]},{jointSpeed[2]},{jointSpeed[3]},{jointSpeed[4]},{jointSpeed[5]}");
15
16 double[] jointAcc = new double[6];
17 robot.GetActualJointAccDegree(0, ref jointAcc);
18 Console.WriteLine($"joint acc deg:{jointAcc[0]},{jointAcc[1]},{jointAcc[2]},{jointAcc[3]},{jointAcc[4]},{jointAcc[5]}");
19
20 double tcp_speed = 0, ori_speed = 0;
21 robot.GetTargetTCPCompositeSpeed(0, ref tcp_speed, ref ori_speed);
22 Console.WriteLine($"GetTargetTCPCompositeSpeed tcp {tcp_speed}; ori {ori_speed}");
23
24 robot.GetActualTCPCompositeSpeed(0, ref tcp_speed, ref ori_speed);
25 Console.WriteLine($"GetActualTCPCompositeSpeed tcp {tcp_speed}; ori {ori_speed}");
26
27 double[] targetSpeed = new double[6];
28 robot.GetTargetTCPSpeed(0,ref targetSpeed);
29 Console.WriteLine($"GetTargetTCPSpeed {targetSpeed[0]},{targetSpeed[1]},{targetSpeed[2]},{targetSpeed[3]},{targetSpeed[4]},{targetSpeed[5]}");
30
31 double[] actualSpeed = new double[6];
32 robot.GetActualTCPSpeed(0, ref actualSpeed);
33 Console.WriteLine($"GetTargetTCPSpeed {actualSpeed[0]},{actualSpeed[1]},{actualSpeed[2]},{actualSpeed[3]},{actualSpeed[4]},{actualSpeed[5]}");
34
35 DescPose tcp = new DescPose(0, 0, 0, 0, 0, 0);
36 robot.GetActualTCPPose(0, ref tcp);
37 Console.WriteLine($"tcp pose:{tcp.tran.x},{tcp.tran.y},{tcp.tran.z},{tcp.rpy.rx},{tcp.rpy.ry},{tcp.rpy.rz}");
38
39 DescPose flange = new DescPose(0, 0, 0, 0, 0, 0);
40 robot.GetActualToolFlangePose(0, ref flange);
41 Console.WriteLine($"flange pose:{flange.tran.x},{flange.tran.y},{flange.tran.z},{flange.rpy.rx},{flange.rpy.ry},{flange.rpy.rz}");
42
43 int id = 0;
44 robot.GetActualTCPNum(0, ref id);
45 Console.WriteLine($"tcp num:{id}");
46
47 robot.GetActualWObjNum(0, ref id);
48 Console.WriteLine($"wobj num:{id}");
49
50 double[] jtorque = new double[6];
51 robot.GetJointTorques(0, jtorque);
52 Console.WriteLine($"torques:{jtorque[0]},{jtorque[1]},{jtorque[2]},{jtorque[3]},{jtorque[4]},{jtorque[5]}");
53
54 double t_ms = 0;
55 robot.GetSystemClock(ref t_ms);
56 Console.WriteLine($"system clock:{t_ms}");
57
58 int config = 0;
59 robot.GetRobotCurJointsConfig(ref config);
60 Console.WriteLine($"joint config:{config}");
61
62 byte motionDone = 0;
63 robot.GetRobotMotionDone(ref motionDone);
64 Console.WriteLine($"GetRobotMotionDone :{motionDone}");
65
66 int len = 0;
67 robot.GetMotionQueueLength(ref len);
68 Console.WriteLine($"GetMotionQueueLength :{len}");
69
70 byte emergState = 0;
71 robot.GetRobotEmergencyStopState(ref emergState);
72 Console.WriteLine($"GetRobotEmergencyStopState :{emergState}");
73
74 int comstate = 0;
75 robot.GetSDKComState(ref comstate);
76 Console.WriteLine($"GetSDKComState :{comstate}");
77
78 byte si0_state = 0, si1_state = 0;
79 robot.GetSafetyStopState(ref si0_state, ref si1_state);
80 Console.WriteLine($"GetSafetyStopState :{si0_state} {si1_state}");
81
82 double[] temp = new double[6];
83 robot.GetJointDriverTemperature(temp);
84 Console.WriteLine($"Temperature:{temp[0]},{temp[1]},{temp[2]},{temp[3]},{temp[4]},{temp[5]}");
85
86 double[] torque = new double[6];
87 robot.GetJointDriverTorque(torque);
88 Console.WriteLine($"torque:{torque[0]},{torque[1]},{torque[2]},{torque[3]},{torque[4]},{torque[5]}");
89
90 robot.GetRobotRealTimeState(ref pkg);
91}
8.24. Solução de Cinemática Inversa
1/**
2* @brief Solução de cinemática inversa
3* @param [in] type 0-pose absoluta (sistema de coordenadas base), 1-pose incremental (sistema de coordenadas base), 2-pose incremental (sistema de coordenadas da ferramenta)
4* @param [in] desc_pos Pose cartesiana
5* @param [in] config Configuração do espaço articular, [-1]-resolver com base na posição articular atual, [0~7]-resolver com base em uma configuração específica do espaço articular
6* @param [out] joint_pos Posição articular
7* @return Código de erro
8*/
9int GetInverseKin(int type, DescPose desc_pos, int config, ref JointPos joint_pos);
8.25. Solução de Cinemática Inversa (com posição de referência)
1/**
2* @brief Solução de cinemática inversa, verifica se há solução com base na posição articular de referência especificada
3* @param [in] type 0-pose absoluta (sistema de coordenadas base), 1-pose incremental (sistema de coordenadas base), 2-pose incremental (sistema de coordenadas da ferramenta)
4* @param [in] desc_pos Pose cartesiana
5* @param [in] joint_pos_ref Posição articular de referência
6* @param [out] result 0-sem solução, 1-com solução
7* @return Código de erro
8*/
9int GetInverseKinRef(int posMode, DescPose desc_pos, JointPos joint_pos_ref, ref JointPos joint_pos);
8.26. Solução de Cinemática Inversa incluindo posição do eixo estendido no espaço cartesiano
1/**
2* @brief Solução de cinemática inversa incluindo posição do eixo estendido no espaço cartesiano
3* @param [in] type 0-pose absoluta (sistema de coordenadas base), 1-pose incremental (sistema de coordenadas base), 2-pose incremental (sistema de coordenadas da ferramenta)
4* @param [in] desc_pos Pose cartesiana
5* @param [in] exaxis Posição do eixo estendido
6* @param [in] tool Número da ferramenta
7* @param [in] workPiece Número da peça
8* @param [out] joint_pos Posição articular
9* @return Código de erro
10*/
11public int GetInverseKinExaxis(int type, DescPose desc_pos, ExaxisPos exaxis, int tool, int workPiece, ref JointPos joint_pos);
8.27. Exemplo de Código de Solução de Cinemática Inversa incluindo posição do eixo estendido
1public void TestInverseKinExaxis()
2{
3 ROBOT_STATE_PKG pkg = new ROBOT_STATE_PKG();
4
5 DescPose desc = new DescPose(99.957f, -0.002f, 29.994f, -176.569f, -6.757f, -167.462f);
6 ExaxisPos exaxis = new ExaxisPos(100.0f, 0.0f, 0.0f, 0.0f);
7 JointPos jointPos = new JointPos(0,0,0,0,0,0);
8 DescPose offsetPos = new DescPose(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
9 int rtn;
10 robot.GetRobotRealTimeState(ref pkg);
11 int toolnum = pkg.tool;
12 int workPcsNum = pkg.user;
13
14 robot.GetInverseKinExaxis(0, desc, exaxis, toolnum, workPcsNum, ref jointPos);
15 Console.WriteLine($"GetInverseKinExaxis joint is {jointPos.jPos[0]}, {jointPos.jPos[1]}, {jointPos.jPos[2]}, {jointPos.jPos[3]}, {jointPos.jPos[4]}, {jointPos.jPos[5]}");
16
17 robot.ExtAxisMove(exaxis, 100, -1);
18
19 int blendMode = 0;
20 int velAccMode = 0;
21 float oacc = 100.0f;
22 byte flag = 0;
23 robot.MoveJ(jointPos, desc, toolnum, workPcsNum, (float)100.0, (float)100.0, (float)100.0, exaxis, -1, 0, offsetPos);
24}
8.28. Verificar se a Solução de Cinemática Inversa Existe
1/**
2* @brief Solução de cinemática inversa, verifica se há solução com base na posição articular de referência especificada
3* @param [in] posMode 0-pose absoluta, 1-pose relativa - sistema de coordenadas base, 2-pose relativa - sistema de coordenadas da ferramenta
4* @param [in] desc_pos Pose cartesiana
5* @param [in] joint_pos_ref Posição articular de referência
6* @param [out] hasResult 0-sem solução, 1-com solução
7* @return Código de erro
8*/
9int GetInverseKinHasSolution(int posMode, DescPose desc_pos, JointPos joint_pos_ref, ref bool hasResult);
8.29. Solução de Cinemática Direta
1/**
2* @brief Solução de cinemática direta
3* @param [in] joint_pos Posição articular
4* @param [out] desc_pos Pose cartesiana
5* @return Código de erro
6*/
7int GetForwardKin(JointPos joint_pos, ref DescPose desc_pos);
8.30. Exemplo de Código de Cálculo de Cinemática Direta e Inversa do Robô
1private void button30_Click(object sender, EventArgs e)
2{
3 JointPos j1 = new JointPos(-11.904f, -99.669f, 117.473f, -108.616f, -91.726f, 74.256f);
4 DescPose desc_pos1 = new DescPose(-419.524f, -13.000f, 351.569f, -178.118f, 0.314f, 3.833f);
5
6 JointPos inverseRtn = new JointPos(0, 0, 0, 0, 0, 0);
7
8 robot.GetInverseKin(0, desc_pos1, -1, ref inverseRtn);
9 Console.WriteLine($"dcs1 GetInverseKin rtn is {inverseRtn.jPos[0]} {inverseRtn.jPos[1]} {inverseRtn.jPos[2]} {inverseRtn.jPos[3]} {inverseRtn.jPos[4]} {inverseRtn.jPos[5]}");
10 robot.GetInverseKinRef(0, desc_pos1, j1, ref inverseRtn);
11 Console.WriteLine($"dcs1 GetInverseKinRef rtn is {inverseRtn.jPos[0]} {inverseRtn.jPos[1]} {inverseRtn.jPos[2]} {inverseRtn.jPos[3]} {inverseRtn.jPos[4]} {inverseRtn.jPos[5]}");
12
13 bool hasResut = false;
14 robot.GetInverseKinHasSolution(0, desc_pos1, j1, ref hasResut);
15 Console.WriteLine($"dcs1 GetInverseKinRef result {hasResut}");
16
17 DescPose forwordResult = new DescPose(0, 0, 0, 0, 0, 0);
18 robot.GetForwardKin(j1, ref forwordResult);
19 Console.WriteLine($"jpos1 forwordResult rtn is {forwordResult.tran.x} {forwordResult.tran.y} {forwordResult.tran.z} {forwordResult.rpy.rx} {forwordResult.rpy.ry} {forwordResult.rpy.rz}");
20}
8.31. Consultar Dados do Ponto de Gerenciamento de Ensino do Robô
1/**
2* @brief Consulta os dados do ponto de gerenciamento de ensino do robô
3* @param [in] name Nome do ponto
4* @param [out] data Dados do ponto double[20]{x,y,z,rx,ry,rz,j1,j2,j3,j4,j5,j6,tool,wobj,speed,acc,e1,e2,e3,e4}
5* @return Código de erro
6*/
7int GetRobotTeachingPoint(string name, ref double[] data);
8.32. Obter Valores de Compensação dos Parâmetros DH do Robô
1/**
2* @brief Obtém os valores de compensação dos parâmetros DH do robô
3* @param [out] dhCompensation Valores de compensação dos parâmetros DH do robô (mm) [cmpstD1,cmpstA2,cmpstA3,cmpstD4,cmpstD5,cmpstD6]
4* @return Código de erro
5*/
6int GetDHCompensation(ref double[] dhCompensation);
8.33. Obter Número de Série da Caixa de Controle
1/**
2* @brief Obtém o número de série da caixa de controle
3* @param [out] SNCode Número de série da caixa de controle
4* @return Código de erro
5*/
6int GetRobotSN(ref string SNCode);
8.34. Exemplo de Código de Consulta de Dados do Ponto de Gerenciamento de Ensino do Robô
1private void button31_Click(object sender, EventArgs e)
2{
3 string name = "A0";
4 double[] data = new double[20];
5 int rtn = robot.GetRobotTeachingPoint(name, ref data);
6 Console.WriteLine(" {0} name is: {1} \n", rtn, name);
7 for (int i = 0; i < 20; i++)
8 {
9 Console.WriteLine("data is: {0} \n", data[i]);
10 }
11
12 int que_len = 0;
13 rtn = robot.GetMotionQueueLength(ref que_len);
14 Console.WriteLine("GetMotionQueueLength rtn is: {0}, queue length is: {1} \n", rtn, que_len);
15
16 double[] dh = { 0, 0, 0, 0, 0, 0 };
17 int retval = 0;
18 retval = robot.GetDHCompensation(ref dh);
19 Console.WriteLine($"retval is {retval}");
20 Console.WriteLine($"dh is {dh[0]}, {dh[1]}, {dh[2]}, {dh[3]}, {dh[4]}, {dh[5]}");
21 string SN = "";
22 robot.GetRobotSN(ref SN);
23 Console.WriteLine($"robot SN is {SN}");
24}
8.35. Obter Sistema de Coordenadas da Ferramenta por ID
Novo na versão C#SDK-V1.1.8: Web-3.8.6
1/**
2* @brief Obtém o sistema de coordenadas da ferramenta por ID
3* @param [in] id Número do sistema de coordenadas da ferramenta
4* @param [out] coord Valores do sistema de coordenadas
5* @return Código de erro
6*/
7int GetToolCoordWithID(int id,ref DescPose coord)
8.36. Obter Sistema de Coordenadas da Peça por ID
Novo na versão C#SDK-V1.1.8: Web-3.8.6
1/**
2* @brief Obtém o sistema de coordenadas da peça por ID
3* @param [in] id Número do sistema de coordenadas da peça
4* @param [out] coord Valores do sistema de coordenadas
5* @return Código de erro
6*/
7public int GetWObjCoordWithID(int id, ref DescPose coord)
8.37. Obter Sistema de Coordenadas da Ferramenta Externa por ID
Novo na versão C#SDK-V1.1.8: Web-3.8.6
1/**
2* @brief Obtém o sistema de coordenadas da ferramenta externa por ID
3* @param [in] id Número do sistema de coordenadas da ferramenta externa
4* @param [out] coord Valores do sistema de coordenadas
5* @return Código de erro
6*/
7public int GetExToolCoordWithID(int id, ref DescPose coord)
8.38. Obter Sistema de Coordenadas do Eixo Estendido por ID
Novo na versão C#SDK-V1.1.8: Web-3.8.6
1/**
2* @brief Obtém o sistema de coordenadas do eixo estendido por ID
3* @param [in] id Número do sistema de coordenadas da ferramenta externa
4* @param [out] coord Valores do sistema de coordenadas
5* @return Código de erro
6*/
7public int GetExAxisCoordWithID(int id, ref DescPose coord)
8.39. Obter Sistema de Coordenadas da Ferramenta Atual
Novo na versão C#SDK-V1.1.8: Web-3.8.6
1/**
2 * @brief Obtém o sistema de coordenadas da ferramenta atual
3 * @param [out] coord Valores do sistema de coordenadas
4 * @return Código de erro
5 */
6public int GetCurToolCoord(ref DescPose coord)
8.40. Obter Sistema de Coordenadas da Peça Atual
Novo na versão C#SDK-V1.1.8: Web-3.8.6
1/**
2 * @brief Obtém o sistema de coordenadas da peça atual
3 * @param [out] coord Valores do sistema de coordenadas
4 * @return Código de erro
5 */
6public int GetCurWObjCoord(ref DescPose coord)
8.41. Obter Sistema de Coordenadas da Ferramenta Externa Atual
Novo na versão C#SDK-V1.1.8: Web-3.8.6
1/**
2 * @brief Obtém o sistema de coordenadas da ferramenta externa atual
3 * @param [out] coord Valores do sistema de coordenadas
4 * @return Código de erro
5 */
6public int GetCurExToolCoord(ref DescPose coord)
8.42. Obter Sistema de Coordenadas do Eixo Estendido Atual
Novo na versão C#SDK-V1.1.8: Web-3.8.6
1/**
2 * @brief Obtém o sistema de coordenadas do eixo estendido atual
3 * @param [out] coord Valores do sistema de coordenadas
4 * @return Código de erro
5 */
6public int GetCurExAxisCoord(ref DescPose coord)
8.43. Exemplo de Código de Sistemas de Coordenadas e Carga do Robô
Novo na versão C#SDK-V1.1.8: Web-3.8.6
1public void TestCoordMain()
2{
3 DescPose t_coord = new DescPose(0, 0, 0, 0, 0, 0);
4 t_coord.tran.x = 1.0;
5 t_coord.tran.y = 2.0;
6 t_coord.tran.z = 300.0;
7 t_coord.rpy.rx = 4.0;
8 t_coord.rpy.ry = 5.0;
9 t_coord.rpy.rz = 6.0;
10 int id = 1;
11 DescPose toolCoord = new DescPose();
12 robot.GetToolCoordWithID(id, ref toolCoord);
13 Console.WriteLine($"GetToolCoordWithID {id}, {toolCoord.tran.x} {toolCoord.tran.y} {toolCoord.tran.z} {toolCoord.rpy.rx} {toolCoord.rpy.ry} {toolCoord.rpy.rz}");
14 DescPose wobjCoord = new DescPose();
15 robot.GetWObjCoordWithID(id, ref wobjCoord);
16 Console.WriteLine($"GetWObjCoordWithID {id}, {wobjCoord.tran.x} {wobjCoord.tran.y} {wobjCoord.tran.z} {wobjCoord.rpy.rx} {wobjCoord.rpy.ry} {wobjCoord.rpy.rz}");
17 DescPose extoolCoord = new DescPose();
18 robot.GetExToolCoordWithID(id, ref extoolCoord);
19 Console.WriteLine($"GetExToolCoordWithID {id}, {extoolCoord.tran.x} {extoolCoord.tran.y} {extoolCoord.tran.z} {extoolCoord.rpy.rx} {extoolCoord.rpy.ry} {extoolCoord.rpy.rz}");
20 DescPose exAxisCoord = new DescPose();
21 robot.GetExAxisCoordWithID(id, ref exAxisCoord);
22 Console.WriteLine($"GetExAxisCoordWithID {id}, {exAxisCoord.tran.x} {exAxisCoord.tran.y} {exAxisCoord.tran.z} {exAxisCoord.rpy.rx} {exAxisCoord.rpy.ry} {exAxisCoord.rpy.rz}");
23 double weight = 0.0;
24 DescTran cog = new DescTran();
25 robot.GetTargetPayloadWithID(id, ref weight, ref cog);
26 Console.WriteLine($"GetTargetPayloadWithID {id}, {weight} {cog.x} {cog.y} {cog.z}");
27 robot.GetCurToolCoord(ref toolCoord);
28 Console.WriteLine($"GetCurToolCoord {toolCoord.tran.x} {toolCoord.tran.y} {toolCoord.tran.z} {toolCoord.rpy.rx} {toolCoord.rpy.ry} {toolCoord.rpy.rz}");
29
30 robot.GetCurWObjCoord(ref wobjCoord);
31 Console.WriteLine($"GetCurWObjCoord {wobjCoord.tran.x} {wobjCoord.tran.y} {wobjCoord.tran.z} {wobjCoord.rpy.rx} {wobjCoord.rpy.ry} {wobjCoord.rpy.rz}");
32 robot.GetCurExToolCoord(ref extoolCoord);
33 Console.WriteLine($"GetExToolCoordWithID {extoolCoord.tran.x} {extoolCoord.tran.y} {extoolCoord.tran.z} {extoolCoord.rpy.rx} {extoolCoord.rpy.ry} {extoolCoord.rpy.rz}");
34 robot.GetCurExAxisCoord(ref exAxisCoord);
35 Console.WriteLine($"GetCurExAxisCoord {exAxisCoord.tran.x} {exAxisCoord.tran.y} {exAxisCoord.tran.z} {exAxisCoord.rpy.rx} {exAxisCoord.rpy.ry} {exAxisCoord.rpy.rz}");
36 double weightT = 0.0f;
37 DescTran cogT = new DescTran();
38 robot.GetTargetPayload(0, ref weightT);
39 robot.GetTargetPayloadCog(0, ref cogT);
40 Console.WriteLine($"GetTargetPayload {weightT} {cogT.x} {cogT.y} {cogT.z}");
41 DescPose coordSet = new DescPose(0, 10, 2, 3, 4, 5);
42 robot.SetToolCoord(2, coordSet, 0, 0, 1, 0);
43 DescPose Coordset0 = new DescPose(0, 0, 0, 0, 0, 0);
44 DescPose Coordset = new DescPose(1, 2, 3, 4, 5, 6);
45 DescPose etcp = new DescPose(10, 20, 30, 40, 50, 60);
46 DescPose etctool = new DescPose(0.1, 0.2, 0.3, 0.4, 0.5, 0.6);
47 robot.SetToolCoord(id, Coordset, 0, 0, 1, 0);
48 Thread.Sleep(100);
49 robot.SetWObjCoord(id, Coordset, 0);
50 Thread.Sleep(100);
51 robot.ExtAxisActiveECoordSys(id, 1, Coordset, 0);
52 Thread.Sleep(100);
53 robot.SetExToolCoord(id, etcp, etctool);
54 Thread.Sleep(100);
55 robot.SetLoadWeight(id, (float)1.5);
56 //Thread.Sleep(500);
57 robot.SetLoadCoord(id, cog);
58 Thread.Sleep(100);
59}