3. Podstawy robota

3.1. Instancja robota

1/**
2* @brief  Konstruktor klasy interfejsu robota
3*/
4FRRobot();

3.2. Nawiązanie komunikacji z kontrolerem

1/**
2* @brief  Nawiązuje komunikację z kontrolerem robota
3* @param  [in] ip  Adres IP kontrolera, domyślnie fabrycznie 192.168.58.2
4* @return Kod błędu
5*/
6errno_t RPC(const char *ip);

3.3. Zerwanie komunikacji z kontrolerem

1/**
2 * @brief  Zrywa komunikację z kontrolerem robota
3 * @return Kod błędu
4 */
5errno_t CloseRPC();

3.4. Sprawdzenie numeru wersji SDK

1/**
2* @brief  Sprawdza numer wersji SDK
3* @param  [out] version   Numer wersji SDK
4* @return  Kod błędu
5*/
6errno_t GetSDKVersion(char *version);

3.5. Pobranie adresu IP kontrolera

1/**
2* @brief  Pobiera adres IP kontrolera
3* @param  [out] ip  Adres IP kontrolera
4* @return  Kod błędu
5*/
6errno_t GetControllerIP(char *ip);

3.6. Sterowanie wejściem lub wyjściem robota z trybu przeciągania nauczania

1/**
2* @brief  Steruje wejściem lub wyjściem robota z trybu przeciągania nauczania
3* @param  [in] state 0-wyjście z trybu przeciągania nauczania, 1-wejście w tryb przeciągania nauczania
4* @return  Kod błędu
5*/
6errno_t DragTeachSwitch(uint8_t state);

3.7. Sprawdzenie, czy robot jest w trybie przeciągania

1/**
2* @brief  Sprawdza, czy robot jest w trybie przeciągania nauczania
3* @param  [out] state 0-nie w trybie przeciągania nauczania, 1-w trybie przeciągania nauczania
4* @return  Kod błędu
5*/
6errno_t IsInDragTeach(uint8_t *state);

3.8. Sterowanie załączeniem lub odłączeniem robota

1/**
2* @brief  Steruje załączeniem lub odłączeniem robota. Po włączeniu zasilania robot domyślnie automatycznie się załącza.
3* @param  [in] state  0-odłączenie, 1-załączenie
4* @return  Kod błędu
5*/
6errno_t RobotEnable(uint8_t state);

3.9. Sterowanie przełączaniem trybu ręczny/automatyczny robota

1/**
2* @brief Steruje przełączaniem trybu ręczny/automatyczny robota
3* @param [in] mode 0-tryb automatyczny, 1-tryb ręczny
4* @return Kod błędu
5*/
6errno_t Mode(int mode);

3.10. Zamknięcie systemu operacyjnego robota

Nowe w wersji C++SDK-v2.2.1-3.8.1.

1/**
2* @brief Zamyka system operacyjny robota
3* @return Kod błędu
4*/
5errno_t ShutDownRobotOS();

3.11. Ustawienie parametrów ponownego łączenia komunikacji z robotem

Nowe w wersji C++SDK-v2.1.5.0.

1/**
2* @brief Ustawia parametry ponownego łączenia komunikacji z robotem
3* @param [in] enable Włączenie ponownego łączenia w przypadku awarii sieci true-włączone false-niewłączone
4* @param [in] reconnectTime Czas ponownego połączenia, jednostka ms
5* @param [in] period Okres ponawiania połączenia, jednostka ms
6* @return Kod błędu
7*/
8errno_t SetReConnectParam(bool enable, int reconnectTime = 30000, int period = 50);

3.12. Zamknięcie systemu operacyjnego robota

1/**
2* @brief Zamyka system operacyjny robota
3* @return Kod błędu
4*/
5int ShutDownRobotOS();

3.13. Inicjalizacja parametrów logowania

Nowe w wersji C++SDK-v2.1.2.0.

1/**
2* @brief Inicjalizuje parametry logowania;
3* @param output_model: Tryb wyjścia, 0-wyjście bezpośrednie; 1-wyjście buforowane; 2-wyjście asynchroniczne;
4* @param file_path: Ścieżka zapisu pliku + nazwa, maksymalna długość 256, nazwa musi mieć formę xxx.log, np. /home/fr/linux/fairino.log;
5* @param file_num: Liczba plików do przechowywania rotacyjnego, 1~20. Maksymalny rozmiar pojedynczego pliku 50 MB;
6* @return errno_t Kod błędu;
7*/
8errno_t LoggerInit(int output_model = 0, std::string file_path = "", int file_num = 5);

3.14. Ustawienie poziomu filtrowania logów

Nowe w wersji C++SDK-v2.1.2.0.

1/**
2* @brief Ustawia poziom filtrowania logów;
3* @param lvl: Wartość poziomu filtrowania, im mniejsza wartość, tym mniej logów jest wypisywanych. Wartość domyślna to 1. 1-błąd, 2-ostrzeżenie, 3-informacja, 4-debugowanie;
4*/
5void SetLoggerLevel(int lvl = 1);

3.15. Przykład kodu podstawowego sterowania robotem

 1int TestRobotCtrl(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        robot.SetReConnectParam(true, 30000, 500);
 9        char ip[64] = "";
10        char version[64] = "";
11        uint8_t state;
12        robot.GetSDKVersion(version);
13        printf("SDK version:%s\n", version);
14        robot.GetControllerIP(ip);
15        printf("controller ip:%s\n", ip);
16        robot.Mode(1);
17        robot.Sleep(1000);
18        robot.DragTeachSwitch(1);
19        robot.Sleep(1000);
20        robot.IsInDragTeach(&state);
21        printf("drag state :%u\n", state);
22        robot.Sleep(3000);
23        robot.DragTeachSwitch(0);
24        robot.Sleep(1000);
25        robot.IsInDragTeach(&state);
26        printf("drag state :%u\n", state);
27        robot.Sleep(3000);
28        robot.RobotEnable(0);
29        robot.Sleep(3000);
30        robot.RobotEnable(1);
31        robot.Mode(0);
32        robot.Sleep(1000);
33        robot.Mode(1);
34        robot.Sleep(3000);
35        robot.ShutDownRobotOS();
36        robot.CloseRPC();
37        return 0;
38}

3.16. Przykład kodu pobierania wersji oprogramowania robota

1/**
2* @brief Pobiera wersję oprogramowania robota
3* @param[out] robotModel Model robota
4* @param[out] webversion Wersja web
5* @param[out] controllerVersion Wersja kontrolera
6* @return Kod błędu
7*/
8errno_t GetSoftwareVersion(char robotModel[64], char webVersion[64], char controllerVersion[64]);

3.17. Pobranie wersji sprzętowej robota

Nowe w wersji C++SDK-v2.1.1.0.

 1/**
 2* @brief Pobiera wersję sprzętową robota
 3* @param[out] ctrlBoxBoardversion Wersja sprzętowa płyty nośnej skrzynki sterowniczej
 4* @param[out] driver1version Wersja sprzętowa napędu 1
 5* @param[out] driver2version Wersja sprzętowa napędu 2
 6* @param[out] driver3version Wersja sprzętowa napędu 3
 7* @param[out] driver4version Wersja sprzętowa napędu 4
 8* @param[out] driver5version Wersja sprzętowa napędu 5
 9* @param[out] driver6version Wersja sprzętowa napędu 6
10* @param[out] endBoardversion Wersja sprzętowa płyty końcowej
11*/
12errno_t GetHardwareVersion(char ctrlBoxBoardversion[128], char driver1version[128], char driver2version[128], char driver3version[128], char driver4version[128], char driver5version[128], char driver6version[128], char endBoardversion[128]);

3.18. Pobranie wersji oprogramowania sprzętowego robota

Nowe w wersji C++SDK-v2.1.1.0.

 1/**
 2* @brief Pobiera wersję oprogramowania sprzętowego robota
 3* @param[out] ctrlBoxBoardversion Wersja oprogramowania sprzętowego płyty nośnej skrzynki sterowniczej
 4* @param[out] driver1version Wersja oprogramowania sprzętowego napędu 1
 5* @param[out] driver2version Wersja oprogramowania sprzętowego napędu 2
 6* @param[out] driver3version Wersja oprogramowania sprzętowego napędu 3
 7* @param[out] driver4version Wersja oprogramowania sprzętowego napędu 4
 8* @param[out] driver5version Wersja oprogramowania sprzętowego napędu 5
 9* @param[out] driver6version Wersja oprogramowania sprzętowego napędu 6
10* @param[out] endBoardversion Wersja oprogramowania sprzętowego płyty końcowej
11*/
12errno_t GetFirmwareVersion(char ctrlBoxBoardversion[128], char driver1version[128], char driver2version[128], char driver3version[128], char driver4version[128], char driver5version[128], char driver6version[128], char endBoardversion[128]);

3.19. Przykład kodu pobierania wersji oprogramowania i oprogramowania sprzętowego robota

 1int TestGetVersions(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 robotModel[64] = { 0 };
14     char webversion[64] = { 0 };
15     char controllerVersion[64] = { 0 };
16     char ctrlBoxBoardversion[128] = { 0 };
17     char driver1version[128] = { 0 };
18     char driver2version[128] = { 0 };
19     char driver3version[128] = { 0 };
20     char driver4version[128] = { 0 };
21     char driver5version[128] = { 0 };
22     char driver6version[128] = { 0 };
23     char endBoardversion[128] = { 0 };
24     rtn = robot.GetSoftwareVersion(robotModel, webversion, controllerVersion);
25     printf("Getsoftwareversion rtn is: %d\n", rtn);
26     printf("robotmodel is: %s, webversion is: %s, controllerVersion is: %s \n\n", robotModel, webversion, controllerVersion);
27     rtn = robot.GetHardwareVersion(ctrlBoxBoardversion, driver1version, driver2version, driver3version, driver4version, driver5version, driver6version, endBoardversion);
28     printf("GetHardwareversion rtn is: %d\n", rtn);
29     printf("GetHardwareversion get hardware versoin is: %s, %s, %s, %s, %s, %s, %s, %s\n\n", ctrlBoxBoardversion, driver1version, driver2version, driver3version, driver4version, driver5version, driver6version, endBoardversion);
30     rtn = robot.GetFirmwareVersion(ctrlBoxBoardversion, driver1version, driver2version, driver3version, driver4version, driver5version, driver6version, endBoardversion);
31     printf("GetFirmwareversion rtn is: %d\n", rtn);
32     printf("GetHardwareversion get hardware versoin is: %s, %s, %s, %s, %s, %s, %s, %s\n\n", ctrlBoxBoardversion, driver1version, driver2version, driver3version, driver4version, driver5version, driver6version, endBoardversion);
33     robot.CloseRPC();
34     return 0;
35 }