2. Descrição das Estruturas de Dados

2.1. Pacote de Dados de Retroalimentação de Estado do Controlador

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

Variável

Significado

program_state

Estado de execução do programa, 1-parado; 2-em execução; 3-pausado

robot_state

Estado de movimento do robô, 1-parado; 2-em movimento; 3-pausado; 4-arrasto

main_code

Código de falha principal

sub_code

Código de falha secundário

robot_mode

Modo do robô, 0-modo automático; 1-modo manual

jt_cur_pos[i]

Posições atuais das juntas, em graus, i:0~5

tl_cur_pos[i]

Pose atual da ferramenta, em graus e mm, i:0~5

flange_cur_pos[i]

Pose atual do flange da extremidade, em graus e mm, i:0~5

actual_qd[i]

Velocidades atuais das juntas do robô, em graus/s, i:0~5

actual_qdd[i]

Acelerações atuais das juntas do robô, em graus/s², i:0~5

target_TCP_CmpSpeed[i]

Velocidade de comando sintética do TCP do robô, em mm/s e graus/s, i:0~1

target_TCP_Speed[i]

Velocidade de comando do TCP do robô, em mm/s e graus/s, i:0~5

actual_TCP_CmpSpeed[i]

Velocidade real sintética do TCP do robô, em mm/s e graus/s, i:0~1

actual_TCP_Speed[i]

Velocidade real do TCP do robô, em mm/s e graus/s, i:0~5

jt_cur_tor[i]

Torques atuais, em N·m, i:0~5

tool

Número do sistema de coordenadas da ferramenta aplicado

user

Número do sistema de coordenadas da peça aplicado

cl_dgt_output_h

Saída digital da caixa de controle 15-8

cl_dgt_output_l

Saída digital da caixa de controle 7-0

tl_dgt_output_l

Saída digital da ferramenta 7-0, apenas bits 0-1 são válidos

dgt_input_h

Entrada digital da caixa de controle 15-8

cl_dgt_input_l

Entrada digital da caixa de controle 7-0

tl_dgt_input_l

Entrada digital da ferramenta 7-0, apenas bits 0-1 são válidos

cl_analog_input[i]

Entrada analógica da caixa de controle, i:0~2

tl_anglog_input

Entrada analógica da ferramenta

ft_sensor_raw_data

Dados brutos do sensor de torque, em N e Nm, i:0~5

ft_sensor_data

Dados do sensor de torque, em N e Nm, i:0~5

ft_sensor_active

Estado de ativação do sensor de torque, 0-reset, 1-ativado

EmergencyStop

Sinalizador de parada de emergência, 0-parada de emergência não pressionada, 1-parada de emergência pressionada

motion_done

Sinal de movimento concluído, 1-concluído, 0-não concluído

gripper_motiondone

Sinal de movimento concluído da garra, 1-concluído, 0-não concluído

mc_queue_len

Comprimento da fila de instruções de movimento

collisionState

Detecção de colisão, 1-colisão, 0-sem colisão

trajectory_pnum

Número do ponto de trajetória

safety_stop0_state

Sinal de parada de segurança SI0

safety_stop1_state

Sinal de parada de segurança SI1

gripper_fault_id

Número da garra com falha

gripper_fault

Falha da garra

gripper_active

Estado de ativação da garra, 0-não ativada, 1-ativada

gripper_position

Posição da garra (percentagem)

gripper_speed

Velocidade da garra (percentagem)

gripper_current

Corrente da garra (percentagem)

gripper_tmp

Temperatura da garra, em °C

gripper_voltage

Tensão da garra, em V

auxState.servoId

Eixo estendido 485, número de ID do servo driver, i:0~3

auxState.servoErrCode

Eixo estendido 485, código de falha do servo driver, i:0~3

auxState.servoState

Eixo estendido 485, estado do servo driver, i:0~3

auxState.servoPos

Eixo estendido 485, posição atual do servo, i:0~3

auxState.servoVel

Eixo estendido 485, velocidade atual do servo, i:0~3

auxState.servoTorque

Eixo estendido 485, torque atual do servo, i:0~3

extAxisStatus[i].pos

Eixo estendido UDP, posição, i:0~3

extAxisStatus[i].vel

Eixo estendido UDP, velocidade, i:0~3

extAxisStatus[i].errorCode

Eixo estendido UDP, código de falha, i:0~3

extAxisStatus[i].ready

Eixo estendido UDP, servo pronto, i:0~3

extAxisStatus[i].inPos

Eixo estendido UDP, servo no lugar, i:0~3

extAxisStatus[i].alarm

Eixo estendido UDP, alarme do servo, i:0~3

extAxisStatus[i].flerr

Eixo estendido UDP, erro de seguimento, i:0~3

extAxisStatus[i].nlimit

Eixo estendido UDP, limite negativo atingido, i:0~3

extAxisStatus[i].pLimit

Eixo estendido UDP, limite positivo atingido, i:0~3

extAxisStatus[i].mdbsOffLine

Eixo estendido UDP, driver offline no barramento 485

extAxisStatus[i].mdbsTimeout

Eixo estendido UDP, tempo limite de comunicação 485 entre placa de controle e caixa de controle

extAxisStatus[i].homingStatus

Eixo estendido UDP, estado de retorno à origem

extDIState

Estado de entrada digital estendida

extDOState

Estado de saída digital estendida

extAIState

Estado de entrada analógica estendida

extAOState

Estado de saída analógica estendida

rbtEnableState

Estado de habilitação do robô

jointDriverTorque

Torque atual do driver articular

jointDriverTemperature

Temperatura atual do driver articular

year

Ano

mouth

Mês

day

Dia

hour

Hora

minute

Minuto

second

Segundo

millisecond

Milissegundo

softwareUpgradeState

Estado de atualização de software do robô

endLuaErrCode

Estado de execução do LUA da extremidade

cl_analog_output[i]

Saída analógica da caixa de controle, i:0~1

tl_analog_output

Saída analógica da ferramenta

gripperRotNum

Número atual de rotações da garra rotativa

gripperRotSpeed

Percentagem da velocidade atual de rotação da garra rotativa

gripperRotTorque

Percentagem do torque atual de rotação da garra rotativa

weldingBreakOffState

Estado de interrupção da soldagem

jt_tgt_tor

Torque de comando das juntas

smartToolState

Estado do botão do SmartTool

wideVoltageCtrlBoxTemp

Temperatura da caixa de controle de larga tensão

wideVoltageCtrlBoxFanCurrent

Corrente da ventoinha da caixa de controle de larga tensão (mA)

toolCoord[i]

Sistema de coordenadas da ferramenta, i:0~5

wobjCoord[i]

Sistema de coordenadas da peça, i:0~5

extoolCoord[i]

Sistema de coordenadas da ferramenta externa, i:0~5

exAxisCoord[i]

Sistema de coordenadas do eixo estendido, i:0~5

load

Massa da carga

loadCog[i]

Centro de massa da carga, i:0~2

lastServoTarget[i]

Última posição alvo do ServoJ na fila, i:0~5

servoJCmdNum

Contagem de instruções ServoJ

2.2. Estado do Controlador Servo

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

Variável

Significado

servoId

Número de ID do servo driver

servoErrCode

Código de falha do servo driver

servoState

Estado do servo driver

servoPos

Posição atual do servo

servoVel

Velocidade atual do servo

servoTorque

Torque atual do servo

2.3. Estado do Eixo Estendido

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

Variável

Significado

pos

Posição do eixo estendido

vel

Velocidade do eixo estendido

errorCode

Código de falha do eixo estendido

ready

Servo pronto

inPos

Servo no lugar

alarm

Alarme do servo

flerr

Erro de seguimento

nlimit

Limite negativo atingido

pLimit

Limite positivo atingido

mdbsOffLine

Driver offline no barramento 485

mdbsTimeout

Tempo limite de comunicação 485 entre placa de controle e caixa de controle

homingStatus

Estado de retorno à origem do eixo estendido

2.4. Estado de Interrupção da Soldagem

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

Variável

Significado

breakOffState

Estado de interrupção da soldagem

weldArcState

Estado de interrupção do arco de soldagem

2.5. Exemplo de Código

  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')
  4print("program_state:", robot.robot_state_pkg.program_state)
  5print("robot_state:", robot.robot_state_pkg.robot_state)
  6print("main_code:", robot.robot_state_pkg.main_code)
  7print("sub_code:", robot.robot_state_pkg.sub_code)
  8print("robot_mode:", robot.robot_state_pkg.robot_mode)
  9print("jt_cur_pos0:", robot.robot_state_pkg.jt_cur_pos[0])
 10print("jt_cur_pos1:", robot.robot_state_pkg.jt_cur_pos[1])
 11print("jt_cur_pos2:", robot.robot_state_pkg.jt_cur_pos[2])
 12print("jt_cur_pos3:", robot.robot_state_pkg.jt_cur_pos[3])
 13print("jt_cur_pos4:", robot.robot_state_pkg.jt_cur_pos[4])
 14print("jt_cur_pos5:", robot.robot_state_pkg.jt_cur_pos[5])
 15print("tl_cur_pos0:", robot.robot_state_pkg.tl_cur_pos[0])
 16print("tl_cur_pos1:", robot.robot_state_pkg.tl_cur_pos[1])
 17print("tl_cur_pos2:", robot.robot_state_pkg.tl_cur_pos[2])
 18print("tl_cur_pos3:", robot.robot_state_pkg.tl_cur_pos[3])
 19print("tl_cur_pos4:", robot.robot_state_pkg.tl_cur_pos[4])
 20print("tl_cur_pos5:", robot.robot_state_pkg.tl_cur_pos[5])
 21print("flange_cur_pos0:", robot.robot_state_pkg.flange_cur_pos[0])
 22print("flange_cur_pos1:", robot.robot_state_pkg.flange_cur_pos[1])
 23print("flange_cur_pos2:", robot.robot_state_pkg.flange_cur_pos[2])
 24print("flange_cur_pos3:", robot.robot_state_pkg.flange_cur_pos[3])
 25print("flange_cur_pos4:", robot.robot_state_pkg.flange_cur_pos[4])
 26print("flange_cur_pos5:", robot.robot_state_pkg.flange_cur_pos[5])
 27print("actual_qd0:", robot.robot_state_pkg.actual_qd[0])
 28print("actual_qd1:", robot.robot_state_pkg.actual_qd[1])
 29print("actual_qd2:", robot.robot_state_pkg.actual_qd[2])
 30print("actual_qd3:", robot.robot_state_pkg.actual_qd[3])
 31print("actual_qd4:", robot.robot_state_pkg.actual_qd[4])
 32print("actual_qd5:", robot.robot_state_pkg.actual_qd[5])
 33print("actual_qdd0:", robot.robot_state_pkg.actual_qdd[0])
 34print("actual_qdd1:", robot.robot_state_pkg.actual_qdd[1])
 35print("actual_qdd2:", robot.robot_state_pkg.actual_qdd[2])
 36print("actual_qdd3:", robot.robot_state_pkg.actual_qdd[3])
 37print("actual_qdd4:", robot.robot_state_pkg.actual_qdd[4])
 38print("actual_qdd5:", robot.robot_state_pkg.actual_qdd[5])
 39print("target_TCP_CmpSpeed0:", robot.robot_state_pkg.target_TCP_CmpSpeed[0])
 40print("target_TCP_CmpSpeed1:", robot.robot_state_pkg.target_TCP_CmpSpeed[1])
 41print("target_TCP_Speed0:", robot.robot_state_pkg.target_TCP_Speed[0])
 42print("target_TCP_Speed1:", robot.robot_state_pkg.target_TCP_Speed[1])
 43print("target_TCP_Speed2:", robot.robot_state_pkg.target_TCP_Speed[2])
 44print("target_TCP_Speed3:", robot.robot_state_pkg.target_TCP_Speed[3])
 45print("target_TCP_Speed4:", robot.robot_state_pkg.target_TCP_Speed[4])
 46print("target_TCP_Speed5:", robot.robot_state_pkg.target_TCP_Speed[5])
 47print("actual_TCP_CmpSpeed0:", robot.robot_state_pkg.actual_TCP_CmpSpeed[0])
 48print("actual_TCP_CmpSpeed1:", robot.robot_state_pkg.actual_TCP_CmpSpeed[1])
 49print("actual_TCP_Speed0:", robot.robot_state_pkg.actual_TCP_Speed[0])
 50print("actual_TCP_Speed1:", robot.robot_state_pkg.actual_TCP_Speed[1])
 51print("actual_TCP_Speed2:", robot.robot_state_pkg.actual_TCP_Speed[2])
 52print("actual_TCP_Speed3:", robot.robot_state_pkg.actual_TCP_Speed[3])
 53print("actual_TCP_Speed4:", robot.robot_state_pkg.actual_TCP_Speed[4])
 54print("actual_TCP_Speed5:", robot.robot_state_pkg.actual_TCP_Speed[5])
 55print("jt_cur_tor0:", robot.robot_state_pkg.jt_cur_tor[0])
 56print("jt_cur_tor1:", robot.robot_state_pkg.jt_cur_tor[1])
 57print("jt_cur_tor2:", robot.robot_state_pkg.jt_cur_tor[2])
 58print("jt_cur_tor3:", robot.robot_state_pkg.jt_cur_tor[3])
 59print("jt_cur_tor4:", robot.robot_state_pkg.jt_cur_tor[4])
 60print("jt_cur_tor5:", robot.robot_state_pkg.jt_cur_tor[5])
 61print("tool:", robot.robot_state_pkg.tool)
 62print("user:", robot.robot_state_pkg.user)
 63print("cl_dgt_output_h:", robot.robot_state_pkg.cl_dgt_output_h)
 64print("cl_dgt_output_l:", robot.robot_state_pkg.cl_dgt_output_l)
 65print("tl_dgt_output_l:", robot.robot_state_pkg.tl_dgt_output_l)
 66print("cl_dgt_input_h:", robot.robot_state_pkg.cl_dgt_input_h)
 67print("cl_dgt_input_l:", robot.robot_state_pkg.cl_dgt_input_l)
 68print("tl_dgt_input_l:", robot.robot_state_pkg.tl_dgt_input_l)
 69print("cl_analog_input0:", robot.robot_state_pkg.cl_analog_input[0])
 70print("cl_analog_input1:", robot.robot_state_pkg.cl_analog_input[1])
 71print("tl_anglog_input:", robot.robot_state_pkg.tl_anglog_input)
 72print("ft_sensor_raw_data0:", robot.robot_state_pkg.ft_sensor_raw_data[0])
 73print("ft_sensor_raw_data1:", robot.robot_state_pkg.ft_sensor_raw_data[1])
 74print("ft_sensor_raw_data2:", robot.robot_state_pkg.ft_sensor_raw_data[2])
 75print("ft_sensor_raw_data3:", robot.robot_state_pkg.ft_sensor_raw_data[3])
 76print("ft_sensor_raw_data4:", robot.robot_state_pkg.ft_sensor_raw_data[4])
 77print("ft_sensor_raw_data5:", robot.robot_state_pkg.ft_sensor_raw_data[5])
 78print("ft_sensor_data0:", robot.robot_state_pkg.ft_sensor_data[0])
 79print("ft_sensor_data1:", robot.robot_state_pkg.ft_sensor_data[1])
 80print("ft_sensor_data2:", robot.robot_state_pkg.ft_sensor_data[2])
 81print("ft_sensor_data3:", robot.robot_state_pkg.ft_sensor_data[3])
 82print("ft_sensor_data4:", robot.robot_state_pkg.ft_sensor_data[4])
 83print("ft_sensor_data5:", robot.robot_state_pkg.ft_sensor_data[5])
 84print("ft_sensor_active:", robot.robot_state_pkg.ft_sensor_active)
 85print("EmergencyStop:", robot.robot_state_pkg.EmergencyStop)
 86print("motion_done:", robot.robot_state_pkg.motion_done)
 87print("gripper_motiondone:", robot.robot_state_pkg.gripper_motiondone)
 88print("mc_queue_len:", robot.robot_state_pkg.mc_queue_len)
 89print("collisionState:", robot.robot_state_pkg.collisionState)
 90print("trajectory_pnum:", robot.robot_state_pkg.trajectory_pnum)
 91print("safety_stop0_state:", robot.robot_state_pkg.safety_stop0_state)
 92print("safety_stop1_state:", robot.robot_state_pkg.safety_stop1_state)
 93print("gripper_fault_id:", robot.robot_state_pkg.gripper_fault_id)
 94print("gripper_fault:", robot.robot_state_pkg.gripper_fault)
 95print("gripper_active:", robot.robot_state_pkg.gripper_active)
 96print("gripper_position:", robot.robot_state_pkg.gripper_position)
 97print("gripper_speed:", robot.robot_state_pkg.gripper_speed)
 98print("gripper_current:", robot.robot_state_pkg.gripper_current)
 99print("gripper_tmp:", robot.robot_state_pkg.gripper_tmp)
100print("gripper_voltage:", robot.robot_state_pkg.gripper_voltage)
101print("auxState.servoId:", robot.robot_state_pkg.auxState.servoId)
102print("auxState.servoErrCode:", robot.robot_state_pkg.auxState.servoErrCode)
103print("auxState.servoState:", robot.robot_state_pkg.auxState.servoState)
104print("auxState.servoPos:", robot.robot_state_pkg.auxState.servoPos)
105print("auxState.servoVel:", robot.robot_state_pkg.auxState.servoVel)
106print("auxState.servoTorque:", robot.robot_state_pkg.auxState.servoTorque)
107for i in range(4):
108    print("extAxisStatus.pos:", i, robot.robot_state_pkg.extAxisStatus[i].pos)
109    print("extAxisStatus.vel:", i, robot.robot_state_pkg.extAxisStatus[i].vel)
110    print("extAxisStatus.errorCode:", i, robot.robot_state_pkg.extAxisStatus[i].errorCode)
111    print("extAxisStatus.ready:", i, robot.robot_state_pkg.extAxisStatus[i].ready)
112    print("extAxisStatus.inPos:", i, robot.robot_state_pkg.extAxisStatus[i].inPos)
113    print("extAxisStatus.alarm:", i, robot.robot_state_pkg.extAxisStatus[i].alarm)
114    print("extAxisStatus.flerr:", i, robot.robot_state_pkg.extAxisStatus[i].flerr)
115    print("extAxisStatus.nlimit:", i, robot.robot_state_pkg.extAxisStatus[i].nlimit)
116    print("extAxisStatus.pLimit:", i, robot.robot_state_pkg.extAxisStatus[i].pLimit)
117    print("extAxisStatus.mdbsOffLine:", i, robot.robot_state_pkg.extAxisStatus[i].mdbsOffLine)
118    print("extAxisStatus.mdbsTimeout:", i, robot.robot_state_pkg.extAxisStatus[i].mdbsTimeout)
119    print("extAxisStatus.homingStatus:", i, robot.robot_state_pkg.extAxisStatus[i].homingStatus)
120for i in range(8):
121    print("extDIState:", i, robot.robot_state_pkg.extDIState[i])
122    print("extDOState:", i, robot.robot_state_pkg.extDOState[i])
123for i in range(4):
124    print("extAIState:", i, robot.robot_state_pkg.extAIState[i])
125    print("extAOState:", robot.robot_state_pkg.extAOState[i])
126print("rbtEnableState:", robot.robot_state_pkg.rbtEnableState)
127print("jointDriverTorque0:", robot.robot_state_pkg.jointDriverTorque[0])
128print("jointDriverTorque1:", robot.robot_state_pkg.jointDriverTorque[1])
129print("jointDriverTorque2:", robot.robot_state_pkg.jointDriverTorque[2])
130print("jointDriverTorque3:", robot.robot_state_pkg.jointDriverTorque[3])
131print("jointDriverTorque4:", robot.robot_state_pkg.jointDriverTorque[4])
132print("jointDriverTorque5:", robot.robot_state_pkg.jointDriverTorque[5])
133print("jointDriverTemperature:", robot.robot_state_pkg.jointDriverTemperature[0])
134print("jointDriverTemperature:", robot.robot_state_pkg.jointDriverTemperature[1])
135print("jointDriverTemperature:", robot.robot_state_pkg.jointDriverTemperature[2])
136print("jointDriverTemperature:", robot.robot_state_pkg.jointDriverTemperature[3])
137print("jointDriverTemperature:", robot.robot_state_pkg.jointDriverTemperature[4])
138print("jointDriverTemperature:", robot.robot_state_pkg.jointDriverTemperature[5])
139print("year:", robot.robot_state_pkg.year)
140print("mouth:", robot.robot_state_pkg.mouth)
141print("day:", robot.robot_state_pkg.day)
142print("hour:", robot.robot_state_pkg.hour)
143print("minute:", robot.robot_state_pkg.minute)
144print("second:", robot.robot_state_pkg.second)
145print("millisecond:", robot.robot_state_pkg.millisecond)
146print("softwareUpgradeState:", robot.robot_state_pkg.softwareUpgradeState)
147print("endLuaErrCode:", robot.robot_state_pkg.endLuaErrCode)
148print("cl_analog_output[0]:", robot.robot_state_pkg.cl_analog_output[0])
149print("cl_analog_output[1]:", robot.robot_state_pkg.cl_analog_output[1])
150print("tl_analog_output:", robot.robot_state_pkg.tl_analog_output)
151print("gripperRotNum:", robot.robot_state_pkg.gripperRotNum)
152print("gripperRotSpeed:", robot.robot_state_pkg.gripperRotSpeed)
153print("gripperRotTorque:", robot.robot_state_pkg.gripperRotTorque)
154print("jt_tgt_tor:", robot.robot_state_pkg.jt_tgt_tor)
155print("smartToolState:", robot.robot_state_pkg.smartToolState)
156print("wideVoltageCtrlBoxTemp:", robot.robot_state_pkg.wideVoltageCtrlBoxTemp)
157print("wideVoltageCtrlBoxFanCurrent:", robot.robot_state_pkg.wideVoltageCtrlBoxFanCurrent)
158print("toolCoord0:", robot.robot_state_pkg.toolCoord[0])
159print("toolCoord1:", robot.robot_state_pkg.toolCoord[1])
160print("toolCoord2:", robot.robot_state_pkg.toolCoord[2])
161print("toolCoord3:", robot.robot_state_pkg.toolCoord[3])
162print("toolCoord4:", robot.robot_state_pkg.toolCoord[4])
163print("toolCoord5:", robot.robot_state_pkg.toolCoord[5])
164print("wobjCoord0:", robot.robot_state_pkg.wobjCoord[0])
165print("wobjCoord1:", robot.robot_state_pkg.wobjCoord[1])
166print("wobjCoord2:", robot.robot_state_pkg.wobjCoord[2])
167print("wobjCoord3:", robot.robot_state_pkg.wobjCoord[3])
168print("wobjCoord4:", robot.robot_state_pkg.wobjCoord[4])
169print("wobjCoord5:", robot.robot_state_pkg.wobjCoord[5])
170print("extoolCoord0:", robot.robot_state_pkg.extoolCoord[0])
171print("extoolCoord1:", robot.robot_state_pkg.extoolCoord[1])
172print("extoolCoord2:", robot.robot_state_pkg.extoolCoord[2])
173print("extoolCoord3:", robot.robot_state_pkg.extoolCoord[3])
174print("extoolCoord4:", robot.robot_state_pkg.extoolCoord[4])
175print("extoolCoord5:", robot.robot_state_pkg.extoolCoord[5])
176print("exAxisCoord0:", robot.robot_state_pkg.exAxisCoord[0])
177print("exAxisCoord1:", robot.robot_state_pkg.exAxisCoord[1])
178print("exAxisCoord2:", robot.robot_state_pkg.exAxisCoord[2])
179print("exAxisCoord3:", robot.robot_state_pkg.exAxisCoord[3])
180print("exAxisCoord4:", robot.robot_state_pkg.exAxisCoord[4])
181print("exAxisCoord5:", robot.robot_state_pkg.exAxisCoord[5])
182print("load:", robot.robot_state_pkg.load)
183print("loadCog0:", robot.robot_state_pkg.loadCog[0])
184print("loadCog1:", robot.robot_state_pkg.loadCog[1])
185print("loadCog2:", robot.robot_state_pkg.loadCog[2])
186print("lastServoTarget0:", robot.robot_state_pkg.lastServoTarget[0])
187print("lastServoTarget1:", robot.robot_state_pkg.lastServoTarget[1])
188print("lastServoTarget2:", robot.robot_state_pkg.lastServoTarget[2])
189print("lastServoTarget3:", robot.robot_state_pkg.lastServoTarget[3])
190print("lastServoTarget4:", robot.robot_state_pkg.lastServoTarget[4])
191print("lastServoTarget5:", robot.robot_state_pkg.lastServoTarget[5])
192print("servoJCmdNum:", robot.robot_state_pkg.servoJCmdNum)