16. Outras Interfaces
16.1. Obter Chave Pública SSH
1/**
2* @brief Obtém a chave pública SSH
3* @param [out] keygen Chave pública
4* @return Código de erro
5*/
6int GetSSHKeygen(String[] keygen)
16.2. Enviar Comando SCP
Novo na versão Java: SDK-v1.0.6-3.8.3
1/**
2* @brief Envia comando SCP
3* @param [in] mode 0-upload (PC -> controlador), 1-download (controlador -> PC)
4* @param [in] sshname Nome de usuário do PC
5* @param [in] sship Endereço IP do PC
6* @param [in] usr_file_url Caminho do arquivo no PC
7* @param [in] robot_file_url Caminho do arquivo no controlador do robô
8* @return Código de erro
9*/
10int SetSSHScpCmd(int mode, String sshname, String sship, String usr_file_url, String robot_file_url)
16.3. Calcular o Valor MD5 de um Arquivo em um Caminho Especificado
1/**
2* @brief Calcula o valor MD5 de um arquivo em um caminho especificado
3* @param [in] file_path Caminho do arquivo incluindo o nome do arquivo. O caminho padrão da pasta Traj é: "/fruser/traj/", ex: "/fruser/traj/trajHelix_aima_1.txt"
4* @param [out] md5 Valor MD5 do arquivo
5* @return Código de erro
6*/
7int ComputeFileMD5(String file_path, String[] md5)
16.4. Exemplo de Código para Comandos SSH e MD5 do Robô
1public static int TestSSHMd5(Robot robot)
2{
3 String file_path= "/fruser/airlab.lua";
4 String[] md5 =new String[]{""};
5
6 String[] ssh_keygen=new String[]{""};
7 int retval = robot.GetSSHKeygen(ssh_keygen);
8 System.out.println(ssh_keygen[0]);
9
10 String ssh_name = "fr";
11 String ssh_ip = "192.168.58.45";
12 String ssh_route = "/home/fr";
13 String ssh_robot_url = "/root/robot/dhpara.config";
14 retval = robot.SetSSHScpCmd(1, ssh_name, ssh_ip, ssh_route, ssh_robot_url);
15 System.out.println("SetSSHScpCmd retval is:"+ retval);
16 System.out.println("robot url is:"+ ssh_robot_url);
17
18 robot.ComputeFileMD5(file_path, md5);
19 System.out.println("md5 is:+"+ md5[0]);
20 return 0;
21}
16.5. Definir o Período de Feedback da Porta 20004 do Robô
1/**
2* @brief Define o período de feedback da porta 20004 do robô
3* @param [in] period Período de feedback da porta 20004 do robô (ms)
4* @return Código de erro
5*/
6public int SetRobotRealtimeStateSamplePeriod(int period)
16.6. Obter o Período de Feedback da Porta 20004 do Robô
1/**
2* @brief Obtém o período de feedback da porta 20004 do robô
3* @return List[0]: Código de erro; List[1]: Período de feedback da porta 20004 do robô (ms)
4*/
5public List<Integer> GetRobotRealtimeStateSamplePeriod()
16.7. Exemplo de Código para Configuração do Período de Feedback de Estado da Porta 20004 do Robô
1public static int TestRealtimePeriod(Robot robot)
2{
3 robot.SetRobotRealtimeStateSamplePeriod(10);
4 List<Integer> getPeriod = new ArrayList<>();
5 getPeriod=robot.GetRobotRealtimeStateSamplePeriod();
6 robot.Sleep(1000);
7
8 return 0;
9}
16.8. Atualização de Software do Robô
1/**
2 * @brief Atualização de software do robô
3 * @param [in] filePath Caminho completo do pacote de atualização de software
4 * @param [in] block Se bloqueia até que a atualização seja concluída true: bloqueia; false: não bloqueia
5 * @return Código de erro
6 */
7public int SoftwareUpgrade(String filePath, boolean block)
16.9. Obter Estado da Atualização de Software do Robô
1/**
2* @brief Obtém o estado da atualização de software do robô
3* @return List[0]: Código de erro; List[1]: Estado da atualização de software do robô 0-ocioso ou enviando pacote de atualização; 1~100: porcentagem de conclusão da atualização; -1: falha na atualização do software; -2: falha na verificação; -3: falha na verificação de versão; -4: falha na descompactação; -5: falha na atualização da configuração do usuário; -6: falha na atualização da configuração do periférico; -7: falha na atualização da configuração do eixo de extensão; -8: falha na atualização da configuração do robô; -9: falha na atualização da configuração do parâmetro DH
4*/
5public List<Integer> GetSoftwareUpgradeState()
16.10. Exemplo de Código para Atualização de Software do Robô
1public static int TestUpgrade(Robot robot)
2{
3 robot.SoftwareUpgrade("D://zUP/QNX382/software.tar.gz", false);
4 while (true)
5 {
6 List<Integer> inter=new ArrayList<>();
7 inter=robot.GetSoftwareUpgradeState();
8 System.out.println("upgrade state is:"+ inter.get(1));
9 robot.Sleep(300);
10 }
11}
16.11. Download do Banco de Dados da Tabela de Pontos
1/**
2* @brief Download do banco de dados da tabela de pontos
3* @param [in] pointTableName Nome da tabela de pontos a ser baixada pointTable1.db
4* @param [in] saveFilePath Caminho para salvar a tabela de pontos baixada C://test/
5* @return Código de erro
6*/
7int PointTableDownLoad(String pointTableName, String saveFilePath);
16.12. Upload do Banco de Dados da Tabela de Pontos
1/**
2* @brief Upload do banco de dados da tabela de pontos
3* @param [in] pointTableFilePath Caminho completo do arquivo da tabela de pontos a ser enviado C://test/pointTable1.db
4* @return Código de erro
5*/
6int PointTableUpLoad(String pointTableFilePath);
16.13. Atualizar Arquivo Lua com a Tabela de Pontos
1/**
2* @brief Atualizar o arquivo Lua com a tabela de pontos
3* @param [in] pointTableName Nome da tabela de pontos a ser alternada "pointTable1.db". Quando a tabela de pontos estiver vazia, ou seja, "", indica que o programa Lua deve ser atualizado para o programa inicial sem a tabela de pontos aplicada
4* @param [in] luaFileName Nome do arquivo Lua a ser atualizado "testPointTable.lua"
5* @param [out] errorStr Mensagem de erro ao alternar a tabela de pontos
6* @return Código de erro
7*/
8int PointTableUpdateLua(String pointTableName, String luaFileName, String errorStr);
16.14. Exemplo de Código para Operações com Tabela de Pontos do Robô
1public static int TestPointTable(Robot robot)
2{
3 String save_path = "D://zDOWN/";
4 String point_table_name = "point_table_FR5.db";
5 int rtn = robot.PointTableDownLoad(point_table_name, save_path);
6
7 String upload_path = "D://zUP/point_table_FR5.db";
8 rtn = robot.PointTableUpLoad(upload_path);
9
10 String point_tablename = "point_table_FR5.db";
11 String lua_name = "airlab.lua";
12 String err="";
13 rtn = robot.PointTableUpdateLua(point_tablename, lua_name,err);
14
15 robot.CloseRPC();
16 return 0;
17}
16.15. Download de Log do Controlador
Novo na versão Java: SDK-v1.0.4-3.8.1
1/**
2* @brief Download de log do controlador
3* @param [in] savePath Caminho para salvar o arquivo "D://zDown/"
4* @return Código de erro
5*/
6int RbLogDownload(String savePath);
16.16. Download de Todas as Fontes de Dados
Novo na versão Java: SDK-v1.0.4-3.8.1
1/**
2* @brief Download de todas as fontes de dados
3* @param [in] savePath Caminho para salvar o arquivo "D://zDown/"
4* @return Código de erro
5*/
6int AllDataSourceDownload(String savePath);
16.17. Download do Pacote de Backup de Dados
Novo na versão Java: SDK-v1.0.4-3.8.1
1/**
2* @brief Download do pacote de backup de dados
3* @param [in] savePath Caminho para salvar o arquivo "D://zDown/"
4* @return Código de erro
5*/
6int DataPackageDownload(String savePath);
16.18. Exemplo de Código para Download de Dados do Controlador
1public static int TestDownLoadRobotData(Robot robot)
2{
3 int rtn = robot.RbLogDownload("D://zDOWN/");
4
5 rtn = robot.AllDataSourceDownload("D://zDOWN/");
6
7 rtn = robot.DataPackageDownload("D://zDOWN/");
8 return 0;
9}
16.19. Definir Atualização do Codificador
Novo na versão Java: SDK-v1.0.7-3.8.4
1/**
2* @brief Define a atualização do codificador
3* @param [in] path Caminho completo do pacote de atualização local (D://zUP/XXXXX.bin)
4* @return Código de erro
5*/
6int SetEncoderUpgrade(String path)
16.20. Definir Atualização de Firmware das Juntas
Novo na versão Java: SDK-v1.0.7-3.8.4
1/**
2* @brief Define a atualização de firmware das juntas
3* @param [in] type Tipo de arquivo de atualização; 1-atualizar firmware; 2-atualizar arquivo de configuração do escravo
4* @param [in] path Caminho completo do pacote de atualização local (D://zUP/XXXXX.bin)
5* @return Código de erro
6*/
7public int SetJointFirmwareUpgrade(int type, String path)
16.21. Definir Atualização de Firmware do Painel de Controle
Novo na versão Java: SDK-v1.0.7-3.8.4
1/**
2* @brief Define a atualização de firmware do painel de controle
3* @param [in] type Tipo de arquivo de atualização; 1-atualizar firmware; 2-atualizar arquivo de configuração do escravo
4* @param [in] path Caminho completo do pacote de atualização local (D://zUP/XXXXX.bin)
5* @return Código de erro
6*/
7public int SetCtrlFirmwareUpgrade(int type, String path)
16.22. Definir Atualização de Firmware da Extremidade
Novo na versão Java: SDK-v1.0.7-3.8.4
1/**
2* @brief Define a atualização de firmware da extremidade
3* @param [in] type Tipo de arquivo de atualização; 1-atualizar firmware; 2-atualizar arquivo de configuração do escravo
4* @param [in] path Caminho completo do pacote de atualização local (D://zUP/XXXXX.bin)
5* @return Código de erro
6*/
7public int SetEndFirmwareUpgrade(int type, String path)
16.23. Atualização do Arquivo de Configuração Completa de Parâmetros das Juntas
Novo na versão Java: SDK-v1.0.7-3.8.4
1/**
2* @brief Atualização do arquivo de configuração completa de parâmetros das juntas
3* @param [in] path Caminho completo do pacote de atualização local (D://zUP/XXXXX.bin)
4* @return Código de erro
5*/
6public int JointAllParamUpgrade(String path)
16.24. Exemplo de Código para Atualização de Firmware do Escravo do Robô
1public static void TestFirmWareUpgrade(Robot robot)
2{
3 robot.RobotEnable(0);
4 robot.Sleep(200);
5 int rtn = robot.JointAllParamUpgrade("D://zUP/standardQX/jointallparametersFR56.0.db");
6 System.out.println("robot JointAllParamUpgrade rtn is:"+ rtn);
7
8 rtn = robot.SetCtrlFirmwareUpgrade(2, "D://zUP/upgrade/FAIR_Cobot_Cbd_Asix_V2.0.bin");
9 System.out.println("robot SetCtrlFirmwareUpgrade config param rtn is:"+ rtn);
10
11 rtn = robot.SetEndFirmwareUpgrade(2, "D://zUP/upgrade/FAIR_Cobot_Axle_Asix_V2.4.bin");
12 System.out.println("robot SetEndFirmwareUpgrade config param rtn is:"+ rtn);
13
14 robot.SetSysServoBootMode();
15 rtn = robot.SetCtrlFirmwareUpgrade(1, "D://zUP/standardQX/FR_CTRL_PRIMCU_FV201010_MAIN_U4_T01_20240529.bin");
16 System.out.println("robot SetCtrlFirmwareUpgrade rtn is:"+ rtn);
17
18 rtn = robot.SetEndFirmwareUpgrade(1, "D://zUP/standardQX/FR_END_FV201010_MAIN_U01_T01_20250522.bin");
19 System.out.println("robot SetEndFirmwareUpgrade rtn is:"+ rtn);
20
21 rtn = robot.SetJointFirmwareUpgrade(1, "D://zUP/standardQX/FR_SERVO_FV502211_MAIN_U7_T07_20250217.bin");
22 System.out.println("robot SetJointFirmwareUpgrade rtn is:"+ rtn);
23
24 robot.CloseRPC();
25}
16.25. Atualização do Sistema Operacional do Robô (Painel de Controle LA)
Novo na versão Java: SDK-v1.0.9-3.8.6
1/**
2 * @brief Atualização do sistema operacional do robô (Painel de controle LA)
3 * @param [in] filePath Caminho completo do pacote de atualização do sistema operacional
4 * @return Código de erro
5 */
6public int KernelUpgrade(String filePath)
16.26. Obter Resultado da Atualização do Sistema Operacional do Robô (Painel de Controle LA)
Novo na versão Java: SDK-v1.0.9-3.8.6
1/**
2 * @brief Obtém o resultado da atualização do sistema operacional do robô (Painel de controle LA)
3 * @param [out] result Resultado da atualização: 0: sucesso; -1: falha
4 * @return Código de erro
5 */
6public int GetKernelUpgradeResult(int[] result)
16.27. Geração de Log MCU do Robô
1/**
2* @brief Geração de log MCU do robô
3* @return Código de erro
4*/
5public int RobotMCULogCollect()
16.28. Definir Parada do Robô Quando a Comunicação da Porta é Desconectada
1/**
2* @brief Define a parada do robô quando a comunicação da porta é desconectada
3* @param portID Número da porta 0-8080; 1-8083; 2-20002; 3-20004
4* @param enable 0-desativar; 1-ativar
5* @param confirmTime Duração de confirmação de interrupção da comunicação (ms)[0-5000]
6* @return Código de erro
7*/
8public int SetRobotStopOnComDisc(int portID, bool enable, int confirmTime)
16.29. Obter Parâmetros de Parada do Robô Quando a Comunicação da Porta é Desconectada
1/**
2* @brief Obtém os parâmetros de parada do robô quando a comunicação da porta é desconectada
3* @param portID Número da porta 0-8080; 1-8083; 2-20002; 3-20004
4* @param enable Array de resultados, índice 0: 0-desativar; 1-ativar
5* @param confirmTime Array de resultados, índice 0: Duração de confirmação de interrupção da comunicação (ms)[0-5000]
6* @return Código de erro
7*/
8public int GetRobotStopOnComDisc(int portID, int[] enable, int[] confirmTime)
16.30. Exemplo de Código para Parâmetros de Parada do Robô Quando a Comunicação da Porta é Desconectada
1void TestRobotStopOnComDisc(Robot robot)
2{
3 int[] enable = {0};
4 int[] confirmTime = {0};
5 int rtn = 0;
6 rtn = robot.SetRobotStopOnComDisc(0, true, 330);
7 rtn = robot.SetRobotStopOnComDisc(1, true, 550);
8 rtn = robot.SetRobotStopOnComDisc(2, true, 110);
9 rtn = robot.SetRobotStopOnComDisc(3, true, 220);
10 System.out.printf("SetRobotStopOnComDisc %d\n", rtn);
11
12 robot.GetRobotStopOnComDisc(0, enable, confirmTime);
13 System.out.printf("GetRobotStopOnComDisc 8080 rtn %d; enable is %d; confirm time is %d\n", rtn, enable[0], confirmTime[0]);
14 robot.GetRobotStopOnComDisc(1, enable, confirmTime);
15 System.out.printf("GetRobotStopOnComDisc 8083 rtn %d; enable is %d; confirm time is %d\n", rtn, enable[0], confirmTime[0]);
16 robot.GetRobotStopOnComDisc(2, enable, confirmTime);
17 System.out.printf("GetRobotStopOnComDisc 20002 rtn %d; enable is %d; confirm time is %d\n", rtn, enable[0], confirmTime[0]);
18 robot.GetRobotStopOnComDisc(3, enable, confirmTime);
19 System.out.printf("GetRobotStopOnComDisc 20004 rtn %d; enable is %d; confirm time is %d\n", rtn, enable[0], confirmTime[0]);
20
21 return;
22}
16.31. Enviar Quadro de Comando UDP
1/**
2* @brief Envia quadro de comando UDP
3* @param quadro de comando
4* @return Código de erro
5*/
6public int SendUDPFrame(String frame)
16.32. Exemplo de Código SDK para Comunicação UDP
1public static void TestRobotUDP (Robot robot) {
2 robot.udpCmdClient.SetUDPCmdRpyCallback((srcType, count, cmdID, dataLen, content) -> {
3 System.out.println("\n[Resposta UDP recebida do robô]");
4 System.out.println("srcType: " + srcType);
5 System.out.println("count: " + count);
6 System.out.println("cmdID: " + cmdID);
7 System.out.println("dataLen: " + dataLen);
8 System.out.println("内容 (content): " + content);
9 return 0;
10 });
11 // Enviar quadro
12 String frameToSend = "/f/bIII52III236III7IIIMode(1)III/b/f";
13 robot.SendUDPFrame(frameToSend);
14 robot.Sleep(2000);
15 frameToSend = "/f/bIII52III236III7IIIMode(0)III/b/f";
16 robot.SendUDPFrame(frameToSend);
17 robot.Sleep(2000);
18 frameToSend = "/f/bIII41III201III153IIIMoveJ(53.857,-89.441,119.453,-22.664,61.059,3.369,-54.249,-491.930,375.396,96.474,-6.896,-7.783,0,0,100,100,100,0.000,0.000,0.000,0.000,-1,0,0,0,0,0,0,0)III/b/f";
19 robot.SendUDPFrame(frameToSend);
20 robot.Sleep(2000);
21 frameToSend = "/f/bIII42III203III163IIIMoveL(81.736,-85.284,114.974,-23.261,88.746,6.799,125.744,-506.570,375.396,96.474,-6.896,-7.783,0,0,100,100,100,-1,0,0.000,0.000,0.000,0.000,0,0,0,0,0,0,0,0,100,0)III/b/f";
22 robot.SendUDPFrame(frameToSend);
23 robot.Sleep(2000);
24 frameToSend = "/f/bIII47III400III15IIIGetMCVersion(1)III/b/f/f/bIII48III424III21IIIGetSlaveFirmVersion()III/b/f";
25 robot.SendUDPFrame(frameToSend);
26 robot.Sleep(2000);
27}
16.33. Definir Cor do LED da Extremidade do Robô Personalizada pelo Usuário
1/**
2* @brief Define a cor do LED da extremidade do robô personalizada pelo usuário
3* @param r Controle do LED vermelho da extremidade; 0-desligado; 1-ligado
4* @param g Controle do LED verde da extremidade; 0-desligado; 1-ligado
5* @param b Controle do LED azul da extremidade; 0-desligado; 1-ligado
6* @return Código de erro
7*/
8public int SetUserLEDColor(bool r, bool g, bool b)
16.34. Exemplo de Código SDK para Definir Cor do LED da Extremidade do Robô Personalizada pelo Usuário
1public void testled(robot)
2{
3 robot.SetUserLEDColor(true, true, true);
4 robot.Sleep(1000);
5 robot.SetUserLEDColor(false, false, false);
6 robot.Sleep(1000);
7 robot.SetUserLEDColor(true, false, false);
8 robot.Sleep(1000);
9 robot.SetUserLEDColor(false, true, false);
10 robot.Sleep(1000);
11 robot.SetUserLEDColor(false, false, true);
12}