15. Weitere Schnittstellen
15.1. SSH öffentlichen Schlüssel abrufen
1/**
2* @brief SSH öffentlichen Schlüssel abrufen
3* @param [out] keygen Öffentlicher Schlüssel
4* @return Fehlercode
5*/
6errno_t GetSSHKeygen(char keygen[1024]);
15.2. SCP-Befehl senden
1/**
2* @brief SCP-Befehl senden
3* @param [in] mode 0 - Hochladen (PC -> Controller), 1 - Herunterladen (Controller -> PC)
4* @param [in] sshname Benutzername auf dem PC
5* @param [in] sship IP-Adresse des PCs
6* @param [in] usr_file_url Dateipfad auf dem PC
7* @param [in] robot_file_url Dateipfad auf der Robotersteuerung
8* @return Fehlercode
9*/
10errno_t SetSSHScpCmd(int mode, char sshname[32], char sship[32], char usr_file_url[128], char robot_file_url[128]);
15.3. MD5-Wert einer Datei unter einem bestimmten Pfad berechnen
1/**
2* @brief MD5-Wert einer Datei unter einem bestimmten Pfad berechnen
3* @param [in] file_path Dateipfad inklusive Dateiname. Standard-Traj-Ordnerpfad: "/fruser/traj/", z.B. "/fruser/traj/trajHelix_aima_1.txt"
4* @param [out] md5 MD5-Wert der Datei
5* @return Fehlercode
6*/
7errno_t ComputeFileMD5(char file_path[256], char md5[256]);
15.4. Codebeispiel für SSH- und MD5-Befehle des Roboters
1int TestSSHMd5(void)
2{
3 ROBOT_STATE_PKG pkg = {};
4 FRRobot robot;
5 robot.LoggerInit();
6 robot.SetLoggerLevel(1);
7 int rtn = robot.RPC("192.168.58.2");
8 if (rtn != 0)
9 {
10 return -1;
11 }
12 robot.SetReConnectParam(true, 30000, 500);
13 char file_path[256] = "/fruser/airlab.lua";
14 char md5[256] = { 0 };
15 uint8_t emerg_state = 0;
16 uint8_t si0_state = 0;
17 uint8_t si1_state = 0;
18 int sdk_com_state = 0;
19 char ssh_keygen[1024] = { 0 };
20 int retval = robot.GetSSHKeygen(ssh_keygen);
21 printf("GetSSHKeygen retval is: %d\n", retval);
22 printf("ssh key is: %s \n", ssh_keygen);
23 char ssh_name[32] = "fr";
24 char ssh_ip[32] = "192.168.58.45";
25 char ssh_route[128] = "/home/fr";
26 char ssh_robot_url[128] = "/root/robot/dhpara.config";
27 retval = robot.SetSSHScpCmd(1, ssh_name, ssh_ip, ssh_route, ssh_robot_url);
28 printf("SetSSHScpCmd retval is: %d\n", retval);
29 printf("robot url is: %s\n", ssh_robot_url);
30 robot.ComputeFileMD5(file_path, md5);
31 printf("md5 is: %s \n", md5);
32 robot.CloseRPC();
33 return 0;
34}
15.5. Rückmeldezyklus für den Roboter-Port 20004 einstellen
Neu in Version C++SDK-v2.1.5.0.
1/**
2* @brief Rückmeldezyklus für den Roboter-Port 20004 einstellen
3* @param [in] period Rückmeldezyklus für Port 20004 (ms)
4* @return Fehlercode
5*/
6errno_t SetRobotRealtimeStateSamplePeriod(int period);
15.6. Rückmeldezyklus für den Roboter-Port 20004 abrufen
Neu in Version C++SDK-v2.1.5.0.
1/**
2* @brief Rückmeldezyklus für den Roboter-Port 20004 abrufen
3* @param [out] period Rückmeldezyklus für Port 20004 (ms)
4* @return Fehlercode
5*/
6errno_t GetRobotRealtimeStateSamplePeriod(int& period);
15.7. Codebeispiel für die Konfiguration des Statusrückmeldezyklus (Port 20004)
1int TestRealtimePeriod(void)
2{
3 ROBOT_STATE_PKG pkg = {};
4 FRRobot robot;
5 robot.LoggerInit();
6 robot.SetLoggerLevel(1);
7 int rtn = robot.RPC("192.168.58.2");
8 if (rtn != 0)
9 {
10 return -1;
11 }
12 robot.SetReConnectParam(true, 30000, 500);
13 robot.SetRobotRealtimeStateSamplePeriod(10);
14 int getPeriod = 0;
15 robot.GetRobotRealtimeStateSamplePeriod(getPeriod);
16 cout << "period is " << getPeriod << endl;
17 robot.Sleep(1000);
18 robot.CloseRPC();
19 return 0;
20}
15.8. Roboter-Software-Upgrade
Neu in Version C++SDK-v2.1.5.0.
1/**
2* @brief Roboter-Software-Upgrade
3* @param [in] filePath Vollständiger Pfad zum Software-Upgrade-Paket
4* @param [in] block Blockierend bis zum Upgrade-Abschluss? true: blockierend, false: nicht blockierend
5* @return Fehlercode
6*/
7errno_t SoftwareUpgrade(std::string filePath, bool block);
15.9. Status des Roboter-Software-Upgrades abrufen
Neu in Version C++SDK-v2.1.5.0.
1/**
2* @brief Status des Roboter-Software-Upgrades abrufen
3* @param [out] state Status des Softwarepaket-Upgrades (0 - inaktiv oder Upload läuft; 1~100 - Upgrade-Fortschritt in Prozent; -1: Upgrade fehlgeschlagen; -2: Prüfsummenfehler; -3: Versionsprüfung fehlgeschlagen; -4: Entpacken fehlgeschlagen; -5: Upgrade der Benutzerkonfiguration fehlgeschlagen; -6: Upgrade der Peripheriekonfiguration fehlgeschlagen; -7: Upgrade der Erweiterungsachsenkonfiguration fehlgeschlagen; -8: Upgrade der Roboterko nfiguration fehlgeschlagen; -9: Upgrade der DH-Parameterkonfiguration fehlgeschlagen)
4* @return Fehlercode
5*/
6errno_t GetSoftwareUpgradeState(int &state);
15.10. Codebeispiel für Roboter-Software-Upgrade
1int TestUpgrade(void)
2{
3 ROBOT_STATE_PKG pkg = {};
4 FRRobot robot;
5 robot.LoggerInit();
6 robot.SetLoggerLevel(3);
7 int rtn = robot.RPC("192.168.58.2");
8 if (rtn != 0)
9 {
10 return -1;
11 }
12 robot.SetReConnectParam(true, 30000, 500);
13 robot.SoftwareUpgrade("D://zUP/QNX/software.tar.gz", false);
14 while (true)
15 {
16 int curState = -1;
17 robot.GetSoftwareUpgradeState(curState);
18 printf("upgrade state is %d\n", curState);
19 robot.Sleep(300);
20 }
21 robot.CloseRPC();
22 return 0;
23}
15.11. Punktetabellen-Datenbank herunterladen
Neu in Version C++SDK-v2.1.1.0.
1/**
2* @brief Punktetabellen-Datenbank herunterladen
3* @param [in] pointTableName Name der herunterzuladenden Punktetabelle, z.B. "pointTable1.db"
4* @param [in] saveFilePath Speicherpfad für die heruntergeladene Punktetabelle, z.B. "C://test/"
5* @return Fehlercode
6*/
7errno_t PointTableDownLoad(const std::string &pointTableName, const std::string &saveFilePath);
15.12. Punktetabellen-Datenbank hochladen
Neu in Version C++SDK-v2.1.1.0.
1/**
2* @brief Punktetabellen-Datenbank hochladen
3* @param [in] pointTableFilePath Vollständiger Pfad zur hochzuladenden Punktetabelle, z.B. "C://test/pointTable1.db"
4* @return Fehlercode
5*/
6errno_t PointTableUpLoad(const std::string &pointTableFilePath);
15.13. Lua-Datei mit Punktetabelle aktualisieren
Neu in Version C++SDK-v2.1.1.0.
1/**
2* @brief Lua-Datei mit Punktetabelle aktualisieren
3* @param [in] pointTableName Name der zu verwendenden Punktetabelle, z.B. "pointTable1.db". Wenn der Name leer ist (""), wird das Lua-Programm auf das ursprüngliche Programm ohne Punktetabelle zurückgesetzt.
4* @param [in] luaFileName Name der zu aktualisierenden Lua-Datei, z.B. "testPointTable.lua"
5* @param [out] errorStr Fehlermeldung beim Wechsel der Punktetabelle
6* @return Fehlercode
7*/
8errno_t PointTableUpdateLua(const std::string &pointTableName, const std::string &luaFileName);
15.14. Codebeispiel für Roboter-Punktetabellen-Operationen
1int TestPointTable(void)
2{
3 ROBOT_STATE_PKG pkg = {};
4 FRRobot robot;
5 robot.LoggerInit();
6 robot.SetLoggerLevel(1);
7 int rtn = robot.RPC("192.168.58.2");
8 if (rtn != 0)
9 {
10 return -1;
11 }
12 robot.SetReConnectParam(true, 30000, 500);
13 string save_path = "D://zDOWN/";
14 string point_table_name = "point_table_FR5.db";
15 rtn = robot.PointTableDownLoad(point_table_name, save_path);
16 cout << "download : " << point_table_name << " fail: " << rtn << endl;
17 string upload_path = "D://zUP/point_table_FR5.db";
18 rtn = robot.PointTableUpLoad(upload_path);
19 cout << "retval is: " << rtn << endl;
20 string point_tablename = "point_table_FR5.db";
21 string lua_name = "airlab.lua";
22 rtn = robot.PointTableUpdateLua(point_tablename, lua_name);
23 cout << "retval is: " << rtn << endl;
24 robot.CloseRPC();
25 return 0;
26}
15.15. Controller-Protokolle herunterladen
Neu in Version C++SDK-v2.2.1-3.8.1.
1/**
2* @brief Controller-Protokolle herunterladen
3* @param [in] savePath Pfad zum Speichern der Datei, z.B. "D://zDown/"
4* @return Fehlercode
5*/
6errno_t RbLogDownload(std::string savePath);
15.16. Alle Datenquellen herunterladen
Neu in Version C++SDK-v2.2.1-3.8.1.
1/**
2* @brief Alle Datenquellen herunterladen
3* @param [in] savePath Pfad zum Speichern der Datei, z.B. "D://zDown/"
4* @return Fehlercode
5*/
6errno_t AllDataSourceDownload(std::string savePath);
15.17. Daten-Backup-Paket herunterladen
Neu in Version C++SDK-v2.2.1-3.8.1.
1/**
2* @brief Daten-Backup-Paket herunterladen
3* @param [in] savePath Pfad zum Speichern der Datei, z.B. "D://zDown/"
4* @return Fehlercode
5*/
6errno_t DataPackageDownload(std::string savePath);
15.18. Codebeispiel zum Herunterladen von Controller-Daten
1int TestDownLoadRobotData(void)
2{
3 ROBOT_STATE_PKG pkg = {};
4 FRRobot robot;
5 robot.LoggerInit();
6 robot.SetLoggerLevel(1);
7 int rtn = robot.RPC("192.168.58.2");
8 if (rtn != 0)
9 {
10 return -1;
11 }
12 robot.SetReConnectParam(true, 30000, 500);
13 rtn = robot.RbLogDownload("D://zDOWN/");
14 cout << "RbLogDownload rtn is " << rtn << endl;
15 rtn = robot.AllDataSourceDownload("D://zDOWN/");
16 cout << "AllDataSourceDownload rtn is " << rtn << endl;
17 rtn = robot.DataPackageDownload("D://zDOWN/");
18 cout << "DataPackageDownload rtn is " << rtn << endl;
19 robot.CloseRPC();
20 return 0;
21}
15.19. Gelenk-Firmware-Upgrade einstellen
1/**
2* @brief Gelenk-Firmware-Upgrade einstellen
3* @param [in] type Dateityp für das Upgrade: 1 - Firmware-Upgrade (vor Verwendung muss der Roboter in den Boot-Modus versetzt werden); 2 - Upgrade der Slave-Konfigurationsdatei (vor Verwendung muss der Roboter deaktiviert werden)
4* @param [in] path Vollständiger Pfad zum lokalen Upgrade-Paket (z.B. D://zUP/XXXXX.bin)
5* @return Fehlercode
6*/
7errno_t SetJointFirmwareUpgrade(int type, std::string path);
15.20. Steuerkasten-Firmware-Upgrade einstellen
1/**
2* @brief Steuerkasten-Firmware-Upgrade einstellen
3* @param [in] type Dateityp für das Upgrade: 1 - Firmware-Upgrade (vor Verwendung muss der Roboter in den Boot-Modus versetzt werden); 2 - Upgrade der Slave-Konfigurationsdatei (vor Verwendung muss der Roboter deaktiviert werden)
4* @param [in] path Vollständiger Pfad zum lokalen Upgrade-Paket (z.B. D://zUP/XXXXX.bin)
5* @return Fehlercode
6*/
7errno_t SetCtrlFirmwareUpgrade(int type, std::string path);
15.21. Endeffektor-Firmware-Upgrade einstellen
1/**
2* @brief Endeffektor-Firmware-Upgrade einstellen
3* @param [in] type Dateityp für das Upgrade: 1 - Firmware-Upgrade (vor Verwendung muss der Roboter in den Boot-Modus versetzt werden); 2 - Upgrade der Slave-Konfigurationsdatei (vor Verwendung muss der Roboter deaktiviert werden)
4* @param [in] path Vollständiger Pfad zum lokalen Upgrade-Paket (z.B. D://zUP/XXXXX.bin)
5* @return Fehlercode
6*/
7errno_t SetEndFirmwareUpgrade(int type, std::string path);
15.22. Upgrade der vollständigen Gelenkparameter-Konfigurationsdatei
1/**
2* @brief Upgrade der vollständigen Gelenkparameter-Konfigurationsdatei (vor Verwendung muss der Roboter deaktiviert werden)
3* @param [in] path Vollständiger Pfad zum lokalen Upgrade-Paket (z.B. D://zUP/XXXXX.bin)
4* @return Fehlercode
5*/
6errno_t JointAllParamUpgrade(std::string path);
15.23. Codebeispiel für Roboter-Slave-Firmware-Upgrade
1int TestFirmWareUpgrade()
2{
3 ROBOT_STATE_PKG pkg = {};
4 FRRobot robot;
5 robot.LoggerInit();
6 robot.SetLoggerLevel(1);
7 int rtn = robot.RPC("192.168.58.2");
8 if (rtn != 0)
9 {
10 return -1;
11 }
12 robot.SetReConnectParam(true, 30000, 500);
13 robot.RobotEnable(0);
14 robot.Sleep(200);
15 rtn = robot.JointAllParamUpgrade("D://zUP/upgrade/jointallparameters.db");
16 printf("robot JointAllParamUpgrade rtn ist %d\n", rtn);
17 rtn = robot.SetCtrlFirmwareUpgrade(2, "D://zUP/upgrade/FAIR_Cobot_Cbd_Asix_V2.0.bin");
18 printf("robot SetCtrlFirmwareUpgrade (Konfiguration) rtn ist %d\n", rtn);
19 rtn = robot.SetEndFirmwareUpgrade(2, "D://zUP/upgrade/FAIR_Cobot_Axle_Asix_V2.4.bin");
20 printf("robot SetEndFirmwareUpgrade (Konfiguration) rtn ist %d\n", rtn);
21 robot.SetSysServoBootMode();
22 rtn = robot.SetCtrlFirmwareUpgrade(1, "D://zUP/upgrade/FR_CTRL_PRIMCU_FV201212_MAIN_U4_T01_20250428(MT).bin");
23 printf("robot SetCtrlFirmwareUpgrade (Firmware) rtn ist %d\n", rtn);
24 rtn = robot.SetEndFirmwareUpgrade(1, "D://zUP/upgrade/FR_END_FV201009_MAIN_U1_T01_20250428.bin");
25 printf("robot SetEndFirmwareUpgrade (Firmware) rtn ist %d\n", rtn);
26 rtn = robot.SetJointFirmwareUpgrade(1, "D://zUP/upgrade/FR_SERVO_FV504214_MAIN_U7_T07_20250519.bin");
27 printf("robot SetJointFirmwareUpgrade (Firmware) rtn ist %d\n", rtn);
28 robot.CloseRPC();
29 return 0;
30}
15.24. Upgrade des Roboter-Betriebssystems (LA-Steuerkasten)
Neu in Version C++SDK-v3.8.6.
1/**
2* @brief Upgrade des Roboter-Betriebssystems (LA-Steuerkasten)
3* @param [in] filePath Vollständiger Pfad zum Betriebssystem-Upgrade-Paket
4* @return Fehlercode
5*/
6errno_t KernelUpgrade(std::string filePath);
15.25. Ergebnis des Roboter-Betriebssystem-Upgrades abrufen (LA-Steuerkasten)
Neu in Version C++SDK-v3.8.6.
1/**
2* @brief Ergebnis des Roboter-Betriebssystem-Upgrades abrufen (LA-Steuerkasten)
3* @param [out] result Upgrade-Ergebnis: 0 = Erfolg, -1 = Fehlschlag
4* @return Fehlercode
5*/
6errno_t GetKernelUpgradeResult(int& result);
15.26. Roboter-MCU-Protokoll generieren
1/**
2* @brief Roboter-MCU-Protokoll generieren
3* @return Fehlercode
4*/
5errno_t RobotMCULogCollect();