FAIRINO México
Soporte técnico

Base de conocimiento

Comandos servo del Fairino (SDK)

Los comandos servo intimidan al principio, pero son la forma de bajo nivel de controlar el robot con movimientos precisos: son ideales cuando necesitas control fino y exactitud.

Al usar estos comandos servo desde el SDK vas a ver muchas variables, algunas de las cuales no entiendes o no te importan. En la mayoría de los casos puedes ignorarlas y pasar solo los argumentos necesarios. Un ejemplo mínimo de una llamada a ServoJ se ve así:

robot.ServoJ(joint_pos, epos, vel=20)

Donde joint_pos es simplemente la posición articular objetivo, escrita como arreglo. Mientras todos los valores articulares objetivo estén dentro de 1 mm de los valores actuales, el comando se ejecuta bien.

Estos son los requisitos para que los comandos servo funcionen con el SDK de Python:

ServoCart():

1) Posición de destino (representada por un arreglo de 6 valores con las coordenadas 3D).

2) Posición del eje extendido (epos).

3) Velocidad.

ServoJ():

1) Posición de destino.

2) Velocidad.

3) Aceleración.

Abajo están las preguntas más frecuentes sobre cómo hacerlos funcionar, con un par de ejemplos cortos.

P: ¿Por qué mis comandos ServoCart() o ServoJ() se ven bruscos?

R: Los movimientos bruscos casi siempre vienen de un tiempo o una frecuencia de comando mal elegidos.

Estos comandos no pueden emitirse fuera del rango de 60 Hz a 1000 Hz (de 1 a 16 ms entre cada comando). No hace falta especificar el tiempo de comando para que corran: basta con dejar una pausa de 1 a 16 ms después de cada llamada. Aquí hay un ejemplo de cada uno.

Ejemplo de ciclo con ServoJ:

epos = [0.0, 0.0, 0.0, 0.0]
er, joint_pos = robot.GetActualJointPosDegree()
for i in range(70):
robot.ServoJ(joint_pos, epos, vel=20)
joint_pos[0] -= 0.5
time.sleep(0.008)

Ejemplo con ServoCart para palpar una superficie con un sensor de fuerza:

while(True):
force = robot.FT_GetForceTorqueRCS()[1]
fz = force[2]
if(abs(fz) > 1):
break
robot.ServoCart(1, [0,0, -0.1, 0, 0, 0], vel=20, acc=20)
time.sleep(0.008)

P: Al correr mis comandos servo aparece “joint command speed command error”. ¿Qué significa y cómo lo arreglo?

R:

El error de velocidad de comando articular ocurre cuando mandas un ServoCart o un ServoJ con valores objetivo demasiado grandes para un solo paso. Las llamadas a ServoJ admiten un cambio máximo de 1 grado por articulación por llamada: si mandas un ServoJ con más de un grado de diferencia en cualquier articulación, te devuelve ese error.

Traducido de la documentación de Fairino. Ante cualquier duda de seguridad, valida contra el manual del equipo y con tu asesor antes de mover el robot.

¿Sigues atorado?

Escríbenos con el número de serie y lo que ya intentaste. Contesta alguien que ha instalado estos equipos.

Pedir soporte