Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5

Custom driver not executing Connect() with educational license

#1
Dear RoboDK Team,

We are a Vocational Training Centre, and we recently renewed our educational license, which is shown as activated correctly within the RoboDK interface.

We are developing an educational robot (Arctos) controlled by GRBL and ESP32, and we've created a custom Python driver, following your documentation:
https://robodk.com/doc/en/Robot-Drivers.html#DriverAPI

The issue is that, although RoboDK loads the .py file without errors, it never calls the Connect() function of the driver. To rule out mistakes on our side, we tested the following:

We built a minimal driver script (ArctosDriver_TEST.py) including all required functions (Connect, Disconnect, MoveJ, MoveL, setSpeed, etc.).

The script is imported properly (SCRIPT IMPORTED is logged).

However, Connect() is never called, and RoboDK displays the message:
Driver ArctosDriver_TEST.py not connected.

Please find attached a screenshot clearly showing this behavior.

We kindly ask:

Should Connect() work with an activated educational license?

Is there any extra step required to enable custom drivers?

Thank you in advance for your support.

Best regards,

Teacher, Department of Electricity


Attached Files
.jpg   R2.jpg (Size: 124.4 KB / Downloads: 25)
.jpg   R1.jpg (Size: 163.66 KB / Downloads: 28)
#2
The connect action is triggered by the connect command.
For example, RoboDK will call the following command when you click on connect:
CONNECT <IP> <PORT>
I recommend you to look at the apikukaiiwa.py driver in the folder C:/RoboDK/api/robot/. 

This integration looks promising, if you can provide us with your driver file we can better help you.
#3
Hola equipo de RoboDK,

Somos un centro educativo en Asturias (España), que está desarrollando un robot educativo de 6 ejes llamado Arctos, basado en GRBL, y estamos trabajando para conectarlo directamente a RoboDK utilizando un controlador Python personalizado.

Después de muchas horas de pruebas, hemos logrado un progreso significativo:

✅ RoboDK se conecta exitosamente al robot usando comunicación de socket
✅ El robot devuelve ok y respuestas GRBL como <Idle|WPos:...>
✅ El jogging (movimientos manuales mediante "Movimiento articular/eje") funciona correctamente
✅ Los comandos de código G como G1 X10 Y0 Z0 se reciben y ejecutan correctamente
✅ El controlador recibe y responde a los comandos CONECTAR, DESCONECTAR y avance del eje.

Sin embargo, todavía tenemos un problema crítico:

❌ Cuando ejecutamos un programa RoboDK que incluye comandos MoveJ/MoveL, el robot no se mueve, aunque RoboDK no muestra errores y la conexión permanece abierta.

🔎Nuestras preguntas:
¿Los comandos MoveJ/MoveL se envían de forma diferente a los de jogging? ¿Hay alguna diferencia en el formato o protocolo que el controlador debe gestionar?

¿Qué formato usa RoboDK para enviar comandos MoveJ y MoveL a través de la API del controlador? ¿Recibimos ángulos de articulación, posiciones cartesianas o ambos?

¿Cuál es la forma correcta de responder a RoboDK desde el controlador tras ejecutar un comando de movimiento? ¿Se esperan cadenas específicas (p. ej., Listo, OK)?

¿Cómo podemos inspeccionar el comando exacto que RoboDK envía al controlador cuando se ejecuta un programa MoveJ/MoveL?

¿Podemos utilizar una terminal o un registro detallado dentro de RoboDK para rastrear la ejecución del programa paso a paso?

¿Podrías revisar nuestro archivo de controlador adjunto (ArctosDriver_Debug.py) y sugerir qué podría faltar para que pueda manejar la ejecución completa del programa?

Este proyecto está destinado a un uso educativo abierto y nuestro objetivo es brindar a los estudiantes experiencia práctica combinando simulación de robot y control físico.

Agradecemos sinceramente su apoyo.

Atentamente,
Canal Antonino Cobián
CFPE Escuela Revillagigedo
Gijón, Asturias (España)


Attached Files
.png   Captura_270525.png (Size: 398.11 KB / Downloads: 21)
.py   ArctosDriver.py (Size: 3.02 KB / Downloads: 19)
#4
Muy interesante. Veo que habeis conseguido establecer una conexion en socket con el robot. 

Sin embargo, para que el driver funcione se debe establecer una comunicacion por el canal STDIN/STDOUT (modo consola). He añadido la funciones necesarias para que se pueda integrar bien como driver. Lo mas importante es que el bucle principal como driver sea el siguiente:
Code:
def RunDriver():
    for line in sys.stdin:
        RunCommand(line)
Es decir, que el driver/robot esta a la espera de nuevos comandos de RoboDK (como por ejemplo CONNECT, MOVJ, MOVL, etc). Podeis ver por ejemplo el driver apikukaiiwa.py que tambien usa una conexion por socket con el robot. He tomado la mayoria de funciones de alli.

La funcion RunCommand interpreta los comandos enviados por RoboDK para ejecutarlos por el robot.

Todo deberia funcionar bien y no deberias tener restricciones usando los drivers con las licencias educacionales y tambien incluso con las licencias gratuitas.


Attached Files
.py   ArctosDriver.py (Size: 14.9 KB / Downloads: 26)
#5
Muchas gracias por la respuesta, muy amables. Seguimos trabajando en la solución.


Attached Files
.py   ArctosDriver.py (Size: 14.91 KB / Downloads: 11)
#6
He conseguido que funcione el driver. ¡Muchas gracias!

Atentamente,
Canal Antonino Cobián
CFPE Escuela Revillagigedo
Gijón, Asturias (España)


Attached Files
.mp4   Video_Arctos.mp4 (Size: 6.14 MB / Downloads: 11)
.py   ArctosDriver.py (Size: 14.91 KB / Downloads: 10)
  




Users browsing this thread:
1 Guest(s)