16. Inne interfejsy

16.1. Pobieranie klucza publicznego SSH

1/**
2* @brief Pobiera klucz publiczny SSH
3* @param [out] keygen Klucz publiczny
4* @return Kod błędu
5*/
6int GetSSHKeygen(String[] keygen)

16.2. Wysyłanie polecenia SCP

Nowe w wersji Java: SDK-v1.0.6-3.8.3

 1/**
 2* @brief Wysyła polecenie SCP
 3* @param [in] mode 0-upload (komputer nadrzędny -> kontroler), 1-pobranie (kontroler -> komputer nadrzędny)
 4* @param [in] sshname Nazwa użytkownika komputera nadrzędnego
 5* @param [in] sship Adres IP komputera nadrzędnego
 6* @param [in] usr_file_url Ścieżka do pliku na komputerze nadrzędnym
 7* @param [in] robot_file_url Ścieżka do pliku w kontrolerze robota
 8* @return Kod błędu
 9*/
10int SetSSHScpCmd(int mode, String sshname, String sship, String usr_file_url, String robot_file_url)

16.3. Obliczanie wartości MD5 pliku w określonej ścieżce

1/**
2* @brief Oblicza wartość MD5 pliku w określonej ścieżce
3* @param [in] file_path Ścieżka do pliku wraz z nazwą. Domyślna ścieżka folderu Traj to:"/fruser/traj/", np. "/fruser/traj/trajHelix_aima_1.txt"
4* @param [out] md5 Wartość MD5 pliku
5* @return Kod błędu
6*/
7int ComputeFileMD5(String file_path, String[] md5)

16.4. Przykład kodu dla poleceń SSH i MD5 robota

 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. Ustawianie okresu zwrotnego portu 20004 robota

1/**
2* @brief Ustawia okres zwrotny portu 20004 robota
3* @param [in] period Okres zwrotny portu 20004 robota (ms)
4* @return  Kod błędu
5*/
6public int SetRobotRealtimeStateSamplePeriod(int period)

16.6. Pobieranie okresu zwrotnego portu 20004 robota

1/**
2* @brief  Pobiera okres zwrotny portu 20004 robota
3* @return  List[0]:Kod błędu; List[1]:Okres zwrotny portu 20004 robota (ms)
4*/
5public List<Integer> GetRobotRealtimeStateSamplePeriod()

16.7. Przykład konfiguracji okresu zwrotnego stanu portu 20004 robota

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. Aktualizacja oprogramowania robota

1/**
2 * @brief Aktualizacja oprogramowania robota
3 * @param [in] filePath Pełna ścieżka pakietu aktualizacyjnego oprogramowania
4 * @param [in] block Czy blokować do czasu zakończenia aktualizacji: true - blokuj; false - nieblokujący
5 * @return  Kod błędu
6 */
7public int SoftwareUpgrade(String filePath, boolean block)

16.9. Pobieranie statusu aktualizacji oprogramowania robota

1/**
2* @brief  Pobiera status aktualizacji oprogramowania robota
3* @return  List[0]:Kod błędu; List[1]:Status aktualizacji oprogramowania robota: 0-bezczynność lub przesyłanie pakietu aktualizacyjnego; 1~100:procent ukończenia aktualizacji; -1:niepowodzenie aktualizacji oprogramowania; -2:niepowodzenie weryfikacji; -3:niepowodzenie weryfikacji wersji; -4:niepowodzenie dekompresji; -5:niepowodzenie aktualizacji konfiguracji użytkownika; -6:niepowodzenie aktualizacji konfiguracji urządzeń peryferyjnych; -7:niepowodzenie aktualizacji konfiguracji osi rozszerzenia; -8:niepowodzenie aktualizacji konfiguracji robota; -9:niepowodzenie aktualizacji konfiguracji parametrów DH
4*/
5public List<Integer> GetSoftwareUpgradeState()

16.10. Przykład kodu aktualizacji oprogramowania robota

 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. Pobieranie bazy danych tabeli punktów

1/**
2* @brief Pobiera bazę danych tabeli punktów
3* @param [in] pointTableName Nazwa tabeli punktów do pobrania    pointTable1.db
4* @param [in] saveFilePath Ścieżka zapisu pobranej tabeli punktów   C://test/
5* @return Kod błędu
6*/
7int PointTableDownLoad(String pointTableName, String saveFilePath);

16.12. Przesyłanie bazy danych tabeli punktów

1/**
2* @brief Przesyła bazę danych tabeli punktów
3* @param [in] pointTableFilePath Pełna ścieżka przesyłanej tabeli punktów   C://test/pointTable1.db
4* @return Kod błędu
5*/
6int PointTableUpLoad(String pointTableFilePath);

16.13. Aktualizacja pliku Lua tabeli punktów

1/**
2* @brief Aktualizuje plik Lua tabeli punktów
3* @param [in] pointTableName Nazwa tabeli punktów do przełączenia   "pointTable1.db". Gdy tabela punktów jest pusta, tzn. "", oznacza to aktualizację programu Lua do programu początkowego bez zastosowanej tabeli punktów
4* @param [in] luaFileName Nazwa pliku Lua do aktualizacji   "testPointTable.lua"
5* @param [out] errorStr Informacja o błędzie przełączania tabeli punktów
6* @return Kod błędu
7*/
8int PointTableUpdateLua(String pointTableName, String luaFileName, String errorStr);

16.14. Przykład operacji na tabeli punktów robota

 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. Pobieranie logów kontrolera

Nowe w wersji Java: SDK-v1.0.4-3.8.1

1/**
2* @brief Pobiera logi kontrolera
3* @param [in] savePath Ścieżka zapisu pliku "D://zDown/"
4* @return Kod błędu
5*/
6int RbLogDownload(String savePath);

16.16. Pobieranie wszystkich źródeł danych

Nowe w wersji Java: SDK-v1.0.4-3.8.1

1/**
2* @brief Pobiera wszystkie źródła danych
3* @param [in] savePath Ścieżka zapisu pliku "D://zDown/"
4* @return Kod błędu
5*/
6int AllDataSourceDownload(String savePath);

16.17. Pobieranie pakietu kopii zapasowej danych

Nowe w wersji Java: SDK-v1.0.4-3.8.1

1/**
2* @brief Pobiera pakiet kopii zapasowej danych
3* @param [in] savePath Ścieżka zapisu pliku "D://zDown/"
4* @return Kod błędu
5*/
6int DataPackageDownload(String savePath);

16.18. Przykład kodu pobierania danych z kontrolera

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. Ustawianie aktualizacji enkodera

Nowe w wersji Java: SDK-v1.0.7-3.8.4

1/**
2* @brief Ustawia aktualizację enkodera
3* @param [in] path Pełna ścieżka lokalnego pakietu aktualizacyjnego (D://zUP/XXXXX.bin)
4* @return Kod błędu
5*/
6int SetEncoderUpgrade(String path)

16.20. Ustawianie aktualizacji firmware przegubów

Nowe w wersji Java: SDK-v1.0.7-3.8.4

1/**
2* @brief Ustawia aktualizację firmware przegubów
3* @param [in] type Typ pliku aktualizacyjnego; 1-aktualizacja firmware; 2-aktualizacja pliku konfiguracyjnego stacji podrzędnej
4* @param [in] path Pełna ścieżka lokalnego pakietu aktualizacyjnego (D://zUP/XXXXX.bin)
5* @return Kod błędu
6*/
7public int SetJointFirmwareUpgrade(int type, String path)

16.21. Ustawianie aktualizacji firmware skrzynki kontrolnej

Nowe w wersji Java: SDK-v1.0.7-3.8.4

1/**
2* @brief Ustawia aktualizację firmware skrzynki kontrolnej
3* @param [in] type Typ pliku aktualizacyjnego; 1-aktualizacja firmware; 2-aktualizacja pliku konfiguracyjnego stacji podrzędnej
4* @param [in] path Pełna ścieżka lokalnego pakietu aktualizacyjnego (D://zUP/XXXXX.bin)
5* @return Kod błędu
6*/
7public int SetCtrlFirmwareUpgrade(int type, String path)

16.22. Ustawianie aktualizacji firmware końcówki

Nowe w wersji Java: SDK-v1.0.7-3.8.4

1/**
2* @brief Ustawia aktualizację firmware końcówki
3* @param [in] type Typ pliku aktualizacyjnego; 1-aktualizacja firmware; 2-aktualizacja pliku konfiguracyjnego stacji podrzędnej
4* @param [in] path Pełna ścieżka lokalnego pakietu aktualizacyjnego (D://zUP/XXXXX.bin)
5* @return Kod błędu
6*/
7public int SetEndFirmwareUpgrade(int type, String path)

16.23. Aktualizacja pliku konfiguracji pełnych parametrów przegubu

Nowe w wersji Java: SDK-v1.0.7-3.8.4

1/**
2* @brief Aktualizacja pliku konfiguracji pełnych parametrów przegubu
3* @param [in] path Pełna ścieżka lokalnego pakietu aktualizacyjnego (D://zUP/XXXXX.bin)
4* @return Kod błędu
5*/
6public int JointAllParamUpgrade(String path)

16.24. Przykład kodu aktualizacji firmware stacji podrzędnej robota

 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. Aktualizacja systemu operacyjnego robota (skrzynka kontrolna LA)

Nowe w wersji Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Aktualizacja systemu operacyjnego robota (skrzynka kontrolna LA)
3 * @param [in] filePath Pełna ścieżka pakietu aktualizacyjnego systemu operacyjnego
4 * @return  Kod błędu
5 */
6public int KernelUpgrade(String filePath)

16.26. Pobieranie wyniku aktualizacji systemu operacyjnego robota (skrzynka kontrolna LA)

Nowe w wersji Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Pobiera wynik aktualizacji systemu operacyjnego robota (skrzynka kontrolna LA)
3 * @param [out] result Wynik aktualizacji: 0:sukces; -1:niepowodzenie
4 * @return  Kod błędu
5 */
6public int GetKernelUpgradeResult(int[] result)

16.27. Generowanie logów MCU robota

1/**
2* @brief Generuje logi MCU robota
3* @return Kod błędu
4*/
5public int RobotMCULogCollect()

16.28. Ustawianie zatrzymania robota po rozłączeniu komunikacji portu

1/**
2* @brief Ustawia zatrzymanie robota po rozłączeniu komunikacji portu
3* @param portID Numer portu 0-8080; 1-8083; 2-20002; 3-20004
4* @param enable 0-wyłącz; 1-włącz
5* @param confirmTime Czas potwierdzenia przerwania komunikacji (ms)[0-5000]
6* @return Kod błędu
7*/
8public int SetRobotStopOnComDisc(int portID, bool enable, int confirmTime)

16.29. Pobieranie parametrów zatrzymania robota po rozłączeniu komunikacji portu

1/**
2* @brief Pobiera parametry zatrzymania robota po rozłączeniu komunikacji portu
3* @param portID Numer portu 0-8080; 1-8083; 2-20002; 3-20004
4* @param enable Tablica wyników, index 0: 0-wyłącz; 1-włącz
5* @param confirmTime Tablica wyników, index 0: Czas potwierdzenia przerwania komunikacji (ms)[0-5000]
6* @return Kod błędu
7*/
8public int GetRobotStopOnComDisc(int portID, int[] enable, int[] confirmTime)

16.30. Przykład kodu parametrów zatrzymania robota po rozłączeniu komunikacji portu

 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. Wysyłanie ramki polecenia UDP

1/**
2* @brief Wysyła ramkę polecenia UDP
3* @param ramka polecenia
4* @return Kod błędu
5*/
6public int SendUDPFrame(String frame)

16.32. Przykład kodu SDK dla komunikacji UDP

 1public static void TestRobotUDP (Robot robot) {
 2    robot.udpCmdClient.SetUDPCmdRpyCallback((srcType, count, cmdID, dataLen, content) -> {
 3        System.out.println("\n[收到机器人 UDP 回复]");
 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    // 发送帧
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. Ustawianie niestandardowego koloru lampki końcówki robota przez użytkownika

1/**
2* @brief Ustawia niestandardowy kolor lampki końcówki robota przez użytkownika
3* @param r Sterowanie czerwoną lampką końcówki; 0-wyłącz; 1-włącz
4* @param g Sterowanie zieloną lampką końcówki; 0-wyłącz; 1-włącz
5* @param b Sterowanie niebieską lampką końcówki; 0-wyłącz; 1-włącz
6* @return Kod błędu
7*/
8public int SetUserLEDColor(bool r, bool g, bool b)

16.34. Przykład kodu SDK ustawiania niestandardowego koloru lampki końcówki robota przez użytkownika

 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}