15. Outras Interfaces

15.1. Obter Chave Pública SSH

Protótipo

GetSSHKeygen()

Descrição

Obtém a chave pública SSH

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • keygen: Chave pública

15.2. Enviar Comando SCP

Novo na versão python: SDK-v2.1.3

Protótipo

SetSSHScpCmd(mode, sshname, sship, usr_file_url, robot_file_url)

Descrição

Envia comando SCP

Parâmetros obrigatórios

  • mode: 0-envio (computador host -> controlador), 1-download (controlador -> computador host)

  • sshname: Nome de usuário do computador host

  • sship: Endereço IP do computador host

  • usr_file_url: Caminho do arquivo no computador host

  • robot_file_url: Caminho do arquivo no controlador do robô

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

15.3. Calcular o Valor MD5 de um Arquivo em um Caminho Especificado

Protótipo

ComputeFileMD5(file_path)

Descrição

Calcula o valor MD5 de um arquivo em um caminho especificado

Parâmetros obrigatórios

  • 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

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • md5: Valor MD5 do arquivo

15.4. Exemplo de Código de Comandos SSH e MD5 do Robô

 1from fairino import Robot
 2import time
 3import threading
 4# Estabelece conexão com o controlador do robô, retorna um objeto robô se a conexão for bem-sucedida
 5robot = Robot.RPC('192.168.58.2')
 6file_path = "/fruser/airlab.lua"
 7md5 = ""
 8emerg_state = 0
 9si0_state = 0
10si1_state = 0
11sdk_com_state = 0
12ssh_keygen = ""
13retval, ssh_keygen = robot.GetSSHKeygen()
14print(f"GetSSHKeygen retval is: {retval}")
15print(f"ssh key is: {ssh_keygen}")
16ssh_name = "fr"
17ssh_ip = "192.168.58.45"
18ssh_route = "/home/fr"
19ssh_robot_url = "/root/robot/dhpara.config"
20retval = robot.SetSSHScpCmd(1, ssh_name, ssh_ip, ssh_route, ssh_robot_url)
21print(f"SetSSHScpCmd retval is: {retval}")
22print(f"robot url is: {ssh_robot_url}")
23error, md5 = robot.ComputeFileMD5(file_path)
24print(f"md5 is: {md5}")
25robot.CloseRPC()

15.5. Definir Período de Feedback da Porta 20004 do Robô

Novo na versão python: SDK-v2.0.5

Protótipo

SetRobotRealtimeStateSamplePeriod(period)

Descrição

Define o período de feedback da porta 20004 do robô

Parâmetros obrigatórios

  • period: Período de feedback da porta 20004 do robô (ms)

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

15.6. Obter Período de Feedback da Porta 20004 do Robô

Novo na versão python: SDK-v2.0.5

Protótipo

GetRobotRealtimeStateSamplePeriod()

Descrição

Obtém o período de feedback da porta 20004 do robô

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • period: Período de feedback da porta 20004 do robô (ms)

15.7. Exemplo de Código de Configuração do Período de Feedback de Estado da Porta 20004 do Robô

 1from fairino import Robot
 2import time
 3import threading
 4# Estabelece conexão com o controlador do robô, retorna um objeto robô se a conexão for bem-sucedida
 5robot = Robot.RPC('192.168.58.2')
 6robot.SetRobotRealtimeStateSamplePeriod(10)
 7error, getPeriod = robot.GetRobotRealtimeStateSamplePeriod()
 8print(f"period is {getPeriod}")
 9time.sleep(1)
10robot.CloseRPC()

15.8. Atualização de Software do Robô

Novo na versão python: SDK-v2.0.5

Protótipo

SoftwareUpgrade(filePath, block)

Descrição

Atualização de software do robô

Parâmetros obrigatórios

  • filePath: Caminho completo do pacote de atualização de software

  • block: Se bloqueia até a conclusão da atualização true: bloqueante; false: não bloqueante

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

15.9. Obter Estado da Atualização de Software do Robô

Novo na versão python: SDK-v2.0.5

Protótipo

GetSoftwareUpgradeState()

Descrição

Obtém o estado da atualização de software do robô

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • state: Estado da atualização do pacote de software do robô, 0: ocioso ou enviando pacote de atualização, 1~100: percentagem de conclusão da atualização, -1: falha na atualização do software, -2: falha na verificação, -3: falha na verificação da 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 estendido, -8: falha na atualização da configuração do robô, -9: falha na atualização da configuração dos parâmetros DH

15.10. Exemplo de Código de Atualização de Software do Robô

 1from fairino import Robot
 2import time
 3import threading
 4# Estabelece conexão com o controlador do robô, retorna um objeto robô se a conexão for bem-sucedida
 5robot = Robot.RPC('192.168.58.2')
 6error = robot.SoftwareUpgrade("D://zUP/QNX382/software.tar.gz", False)
 7print(f"SoftwareUpgrade error is {error}")
 8while True:
 9    curState = robot.GetSoftwareUpgradeState()
10    print(f"upgrade state is {curState}")
11    time.sleep(3)
12robot.CloseRPC()

15.11. Download do Banco de Dados da Tabela de Pontos

Novo na versão python: SDK-v2.0.1

Protótipo

PointTableDownLoad(point_table_name, save_file_path)

Descrição

Download do banco de dados da tabela de pontos

Parâmetros obrigatórios

  • point_table_name: Nome da tabela de pontos a ser baixada pointTable1.db;

  • save_file_path: Caminho de armazenamento para download da tabela de pontos C://test/;

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

15.12. Upload do Banco de Dados da Tabela de Pontos

Novo na versão python: SDK-v2.0.1

Protótipo

PointTableUpLoad(point_table_file_path)

Descrição

Upload do banco de dados da tabela de pontos

Parâmetros obrigatórios

  • point_table_file_path: Caminho completo do arquivo da tabela de pontos para upload C://test/pointTable1.db

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

15.13. Atualização do Arquivo Lua da Tabela de Pontos

Novo na versão python: SDK-v2.0.1

Protótipo

PointTableUpdateLua(point_table_name, lua_file_name)

Descrição

Atualização do arquivo Lua da tabela de pontos

Parâmetros obrigatórios

  • point_table_name: Nome da tabela de pontos a ser alternada pointTable1.db, quando a tabela de pontos estiver vazia, ou seja «, indica que o programa Lua será atualizado para o programa inicial sem aplicação da tabela de pontos

  • lua_file_name: Nome do arquivo Lua a ser atualizado testPointTable.lua

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

15.14. Exemplo de Código de Operação da Tabela de Pontos do Robô

 1from fairino import Robot
 2# Estabelece conexão com o controlador do robô, retorna um objeto robô se a conexão for bem-sucedida
 3robot = Robot.RPC('192.168.58.2')
 4save_path = "D://zDOWN/"
 5point_table_name = "point_table_FR5.db"
 6rtn = robot.PointTableDownLoad(point_table_name, save_path)
 7print(f"download : {point_table_name} fail: {rtn}")
 8upload_path = "D://zDOWN/point_table_FR5.db"
 9rtn = robot.PointTableUpLoad(upload_path)
10print(f"retval is: {rtn}")
11point_tablename = "point_table_FR5.db"
12lua_name = "test0610.lua"
13rtn, error = robot.PointTableUpdateLua(point_tablename, lua_name)
14print(f"retval is: {rtn}")
15robot.CloseRPC()

15.15. Download de Logs do Controlador

Novo na versão python: SDK-v2.1.1

Protótipo

RbLogDownload(savePath)

Descrição

Download de logs do controlador

Parâmetros obrigatórios

  • savePath: Caminho para salvar o arquivo D://zDown/

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

15.16. Download de Todas as Fontes de Dados

Novo na versão python: SDK-v2.1.1

Protótipo

AllDataSourceDownload(savePath)

Descrição

Download de todas as fontes de dados

Parâmetros obrigatórios

  • savePath: Caminho para salvar o arquivo D://zDown/

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

15.17. Download do Pacote de Backup de Dados

Novo na versão python: SDK-v2.1.1

Protótipo

DataPackageDownload(savePath)

Descrição

Download do pacote de backup de dados

Parâmetros obrigatórios

  • savePath: Caminho para salvar o arquivo D://zDown/

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

15.18. Exemplo de Código de Download de Dados do Controlador

 1from fairino import Robot
 2import time
 3import threading
 4# Estabelece conexão com o controlador do robô, retorna um objeto robô se a conexão for bem-sucedida
 5robot = Robot.RPC('192.168.58.2')
 6rtn = robot.RbLogDownload("D://zDOWN/")
 7print(f"RbLogDownload rtn is {rtn}")
 8rtn = robot.AllDataSourceDownload("D://zDOWN/")
 9print(f"AllDataSourceDownload rtn is {rtn}")
10rtn = robot.DataPackageDownload("D://zDOWN/")
11print(f"DataPackageDownload rtn is {rtn}")
12robot.CloseRPC()

15.19. Definir Atualização do Codificador

Novo na versão python: SDK-v2.1.4

Protótipo

SetEncoderUpgrade(path)

Descrição

Define a atualização do codificador

Parâmetros obrigatórios

  • path: Caminho completo do pacote de atualização local (D://zUP/XXXXX.bin)

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

15.20. Definir Atualização de Firmware das Juntas

Novo na versão python: SDK-v2.1.4

Protótipo

SetJointFirmwareUpgrade(type, path)

Descrição

Define a atualização de firmware das juntas

Parâmetros obrigatórios

  • type: Tipo de arquivo de atualização; 1-atualização de firmware; 2-atualização do arquivo de configuração do escravo

  • path: Caminho completo do pacote de atualização local (D://zUP/XXXXX.bin)

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

15.21. Definir Atualização de Firmware da Caixa de Controle

Novo na versão python: SDK-v2.1.4

Protótipo

SetCtrlFirmwareUpgrade(type, path)

Descrição

Define a atualização de firmware da caixa de controle

Parâmetros obrigatórios

  • type: Tipo de arquivo de atualização; 1-atualização de firmware; 2-atualização do arquivo de configuração do escravo

  • path: Caminho completo do pacote de atualização local (D://zUP/XXXXX.bin)

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

15.22. Definir Atualização de Firmware da Extremidade

Novo na versão python: SDK-v2.1.4

Protótipo

SetEndFirmwareUpgrade(type, path)

Descrição

Define a atualização de firmware da extremidade

Parâmetros obrigatórios

  • type: Tipo de arquivo de atualização; 1-atualização de firmware; 2-atualização do arquivo de configuração do escravo

  • path: Caminho completo do pacote de atualização local (D://zUP/XXXXX.bin)

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

15.23. Atualização do Arquivo de Configuração de Parâmetros Completos das Juntas

Novo na versão python: SDK-v2.1.4

Protótipo

JointAllParamUpgrade(path)

Descrição

Atualização do arquivo de configuração de parâmetros completos das juntas

Parâmetros obrigatórios

  • path: Caminho completo do pacote de atualização local (D://zUP/XXXXX.bin)

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

15.24. Exemplo de Código de Atualização de Firmware dos Escravos do Robô

 1from fairino import Robot
 2import time
 3import threading
 4# Estabelece conexão com o controlador do robô, retorna um objeto robô se a conexão for bem-sucedida
 5robot = Robot.RPC('192.168.58.2')
 6robot.RobotEnable(0)
 7time.sleep(0.2)
 8rtn = robot.JointAllParamUpgrade("D://zUP/MT/joint0603/jointallparameters.db")
 9print(f"robot JointAllParamUpgrade rtn is {rtn}")
10rtn = robot.SetCtrlFirmwareUpgrade(2, "D://zUP/MT/FAIR_Cobot_Cbd_Asix_V2.0.bin")
11print(f"robot SetCtrlFirmwareUpgrade rtn is {rtn}")
12rtn = robot.SetEndFirmwareUpgrade(2, "D://zUP/MT/FAIR_Cobot_Axle_Asix_V2.4.bin")
13print(f"robot SetEndFirmwareUpgrade rtn is {rtn}")
14robot.SetSysServoBootMode()
15time.sleep(0.2)
16rtn = robot.SetCtrlFirmwareUpgrade(1, "D://zUP/MT/FR_CTRL_PRIMCU_FV201412_MAIN_U4_T01_20250630(MT).bin")
17print(f"robot SetCtrlFirmwareUpgrade rtn is {rtn}")
18rtn = robot.SetEndFirmwareUpgrade(1, "D://zUP/MT/FR_END_FV2010010_MAIN_U1_T01_20250603.bin")
19print(f"robot SetEndFirmwareUpgrade rtn is {rtn}")
20rtn = robot.SetJointFirmwareUpgrade(1, "D://zUP/MT/FR_SERVO_FV504215_MAIN_U7_T07_20250603.bin")
21print(f"robot SetJointFirmwareUpgrade rtn is {rtn}")
22robot.CloseRPC()

15.25. Atualização do Sistema Operacional do Robô (Caixa de Controle LA)

Novo na versão python: SDK-v2.1.6

Protótipo

KernelUpgrade(filePath)

Descrição

Atualização do sistema operacional do robô (caixa de controle LA)

Parâmetros obrigatórios

  • filePath: Caminho completo do pacote de atualização do sistema operacional

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

15.26. Obter Resultado da Atualização do Sistema Operacional do Robô (Caixa de Controle LA)

Novo na versão python: SDK-v2.1.6

Protótipo

GetKernelUpgradeResult()

Descrição

Obtém o resultado da atualização do sistema operacional do robô (caixa de controle LA)

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

15.27. Geração de Logs MCU do Robô

Novo na versão python: SDK-v2.1.7

Protótipo

RobotMCULogCollect()

Descrição

Geração de logs MCU do robô

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

15.28. Definir Parada da Operação do Robô Quando a Comunicação da Porta For Desconectada

Protótipo

SetRobotStopOnComDisc(portID, enable, confirmTime)

Descrição

Define a parada da operação do robô quando a comunicação da porta for desconectada

Parâmetros obrigatórios

  • portID: Número da porta 0-8080; 1-8083; 2-20002; 3-20004

  • enable: 0-desativar; 1-ativar

  • confirmTime: Duração de confirmação da interrupção da comunicação (ms)[0-5000]

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

15.29. Obter Parâmetros de Parada da Operação do Robô Quando a Comunicação da Porta For Desconectada

Protótipo

GetRobotStopOnComDisc(portID)

Descrição

Obtém os parâmetros de parada da operação do robô quando a comunicação da porta for desconectada

Parâmetros obrigatórios

  • portID: Número da porta 0-8080; 1-8083; 2-20002; 3-20004

  • enable: 0-desativar; 1-ativar

  • confirmTime: Duração de confirmação da interrupção da comunicação (ms)[0-5000]

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

15.30. Exemplo de Código de Parâmetros de Parada da Operação do Robô Quando a Comunicação da Porta For Desconectada

 1from time import sleep
 2import time
 3from fairino import Robot
 4# Estabelece conexão com o controlador do robô
 5robot = Robot.RPC('192.168.58.2')
 6
 7def test_robot_stop_on_com_disc(self):
 8    # Inicializar parâmetros
 9    enable = False
10    confirm_time = 0
11
12    # Definir a função de parada do robô quando a comunicação for desconectada
13    rtn = robot.SetRobotStopOnComDisc(0, True, 330)
14    print(f"SetRobotStopOnComDisc index0: {rtn}")
15
16    rtn = robot.SetRobotStopOnComDisc(1, True, 550)
17    print(f"SetRobotStopOnComDisc index1: {rtn}")
18
19    rtn = robot.SetRobotStopOnComDisc(2, True, 110)
20    print(f"SetRobotStopOnComDisc index2: {rtn}")
21
22    rtn = robot.SetRobotStopOnComDisc(3, True, 220)
23    print(f"SetRobotStopOnComDisc index3: {rtn}")
24
25    # Obter a configuração de parada do robô quando a comunicação for desconectada
26    rtn, enable, confirm_time = robot.GetRobotStopOnComDisc(0)
27    print(f"GetRobotStopOnComDisc 8080 rtn {rtn}; enable is {enable}; confirm time is {confirm_time}")
28
29    rtn, enable, confirm_time = robot.GetRobotStopOnComDisc(1)
30    print(f"GetRobotStopOnComDisc 80803 rtn {rtn}; enable is {enable}; confirm time is {confirm_time}")
31
32    rtn, enable, confirm_time = robot.GetRobotStopOnComDisc(2)
33    print(f"GetRobotStopOnComDisc 20002 rtn {rtn}; enable is {enable}; confirm time is {confirm_time}")
34
35    rtn, enable, confirm_time = robot.GetRobotStopOnComDisc(3)
36    print(f"GetRobotStopOnComDisc 20004 rtn {rtn}; enable is {enable}; confirm time is {confirm_time}")
37
38    # Fechar conexão RPC
39    robot.CloseRPC()
40    return 0
41
42test_robot_stop_on_com_disc(robot)

15.31. Envio de Quadro de Comando via UDP

Protótipo

SendUDPFrame(frame)

Descrição

Envio de quadro de comando via UDP

Parâmetros obrigatórios

  • frame: Envia dados UDP, transmissão transparente, não encapsulada

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

15.32. Exemplo de Código SDK Baseado em Comunicação UDP

 1from time import sleep
 2import time
 3from fairino import Robot
 4
 5# Estabelece conexão com o controlador do robô
 6robot = Robot.RPC('192.168.58.2')
 7
 8def TestSendUDPFrame(self):
 9    # Definir retorno de chamada
10    def callback(src_type, count, cmd_id, data_len, content):
11        print("Resposta recebida: cmd_id={} count={} data_len={} content={}".format(cmd_id, count, data_len, content))
12        return 0
13    robot.SetUDPCmdRpyCallback(callback)
14
15    rtn = robot.SendUDPFrame("/f/bIII20III303III7IIIMode(0)III/b/f")
16    print(f"SendUDPFrame Mode(0) rtn is {rtn}")
17    time.sleep(1)
18
19    rtn = robot.SendUDPFrame("/f/bIII21III303III7IIIMode(1)III/b/f")
20    print(f"SendUDPFrame Mode(1) rtn is {rtn}")
21    time.sleep(1)
22
23    rtn = robot.SendUDPFrame(
24        "/f/bIII49III201III184IIIMoveJ(-15.625, -82.680, 101.654, -110.950, -88.290, 0.017, -383.012, -2.325, 242.655, -178.024, 1.710, 74.416, 0, 0, 100, 100, 100, 0.000, 0.000, 0.000, 0.000, -1, 0, 0, 0, 0, 0, 0, 0)III/b/f")
25    print(f"SendUDPFrame MoveJ(-15.625) rtn is {rtn}")
26    time.sleep(1)
27
28    rtn = robot.SendUDPFrame(
29        "/f/bIII48III203III199IIIMoveL(-75.622, -82.680, 101.654, -110.950, -88.290, 0.017, -193.537, 330.525, 242.657, -178.024, 1.710, 14.420, 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")
30    print(f"SendUDPFrame MoveL(-75.622) rtn is {rtn}")
31    time.sleep(1)
32
33    rtn = robot.SendUDPFrame("/f/bIII4III905III20IIIGetSoftwareVersion()III/b/f")
34    print(f"SendUDPFrame GetSoftwareVersion() rtn is {rtn}")
35
36    time.sleep(1)
37
38    # Teste de validação de envio de quadro UDP
39    rtn = robot.SendUDPFrame("/f/bIII20III303III7IIIMode(0)III/b/f")
40    print(f"SendUDPFrame rtn is {rtn}")
41
42    rtn = robot.SendUDPFrame("III20III303III7IIIMode(0)III/b/f")
43    print(f"SendUDPFrame rtn is {rtn}")
44
45    rtn = robot.SendUDPFrame("/f/bIII20III303III7IIIMode(0)")
46    print(f"SendUDPFrame rtn is {rtn}")
47
48    rtn = robot.SendUDPFrame("/f/bIII20III303III6IIIMode(0)III/b/f")
49    print(f"SendUDPFrame rtn is {rtn}")
50
51    rtn = robot.SendUDPFrame("/f/b|||20|||303|||7|||Mode(0)|||/b/f")
52    print(f"SendUDPFrame rtn is {rtn}")
53
54    rtn = robot.SendUDPFrame("/f/bII20II303II7IIMode(0)II/b/f")
55    print(f"SendUDPFrame rtn is {rtn}")
56
57    robot.CloseRPC()
58    time.sleep(1)
59
60TestSendUDPFrame(robot)

15.33. Definir Cor da Luz da Extremidade do Robô Personalizada pelo Usuário

Protótipo

SetUserLEDColor(r, g, b)

Descrição

Define a cor da luz da extremidade do robô personalizada pelo usuário

Parâmetros obrigatórios

  • r: Controle da luz vermelha da extremidade; 0-apagada; 1-acesa

  • g: Controle da luz verde da extremidade; 0-apagada; 1-acesa

  • b: Controle da luz azul da extremidade; 0-apagada; 1-acesa

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

15.34. Exemplo de Código SDK para Definir Cor da Luz da Extremidade do Robô Personalizada pelo Usuário

 1from time import sleep
 2import time
 3from fairino import Robot
 4
 5# Estabelece conexão com o controlador do robô
 6robot = Robot.RPC('192.168.58.2')
 7
 8
 9def testled(self):
10    # Definir cor da luz LED do usuário
11    # Ordem dos parâmetros: R, G, B (vermelho, verde, azul)
12
13    # Branco (vermelho, verde e azul acesos)
14    robot.SetUserLEDColor(True, True, True)
15    time.sleep(1)
16
17    # Desligar todas as luzes
18    robot.SetUserLEDColor(False, False, False)
19    time.sleep(1)
20
21    # Vermelho (apenas luz vermelha acesa)
22    robot.SetUserLEDColor(True, False, False)
23    time.sleep(1)
24
25    # Verde (apenas luz verde acesa)
26    robot.SetUserLEDColor(False, True, False)
27    time.sleep(1)
28
29    # Azul (apenas luz azul acesa)
30    robot.SetUserLEDColor(False, False, True)
31
32    # Fechar conexão
33    robot.CloseRPC()
34
35testled(robot)