【Jetson nano controla el brazo robótico DOBOT Magician】

El pequeño brazo robótico DOBOT Magician se puede controlar desde una PC o SBC a través de una conexión USB. Dado que la API para controlar el brazo robótico se prepara como una biblioteca compartida (DLL u objeto compartido), el lenguaje de programación se puede seleccionar en C++ o Python, lo que amplía el ámbito de uso.

Sin embargo, las bibliotecas compartidas proporcionadas por DOBOT son solo bibliotecas compartidas para CPU tipo Intel. Para controlar DOBOT Magician (que a menudo se encuentra en SBC) en una CPU tipo ARM, es necesario compilarlo desde la fuente.

Aquí, tomaremos Jetson Nano como ejemplo para resumir cómo preparar el entorno para controlar DOBOT Magician desde Python.

1. Instale los paquetes necesarios

Instale los paquetes básicos necesarios para crear la biblioteca compartida de la API de DOBOT.

$ sudo apt-get update
$ sudo apt-get upgrade -y
$ sudo apt-get install -y libqt5serialport5 libqt5serialport5-dev \
  python3-serial
$ sudo apt-get install -y qt5-default qt4-dev-tools

Nota: Los paquetes de software necesarios varían según el SBC y el sistema operativo.

2. Obtenga el código fuente de la API DOBOT

El código fuente de DOBOT API está incluido en la demostración de DOBOT V2.0, que se puede encontrar en la página de descarga del sitio web oficial de DOBOT.

DobotDemo V2.0 es una colección de ejemplos simples de cómo controlar DOBOT Magician desde varios lenguajes y procesadores/microcontroladores, incluidas las bibliotecas compartidas y los códigos fuente compilados de la API de DOBOT. Tenga en cuenta que la biblioteca compartida compilada es solo para CPU Intel.

Para compilar para procesadores ARM, cree un directorio de trabajo en Jetson Nano, luego descargue y extraiga el paquete zip DobotDemo v2.0.

$ mkdir dobot
$ cd dobot
$ wget https://download.dobot.cc/development-protocol/dobot-magician/win7-win10/Demo/DobotDemoV2.0/EN/DobotDemoV2.0.zip
$ unzip DobotDemoV2.0.zip

Mueva el directorio a la misma jerarquía que el código fuente. El directorio donde reside el código fuente tiene espacios en el nombre del directorio, lo cual es difícil de manejar en Linux, así que cambiémoslo al nombre del directorio src.

$ cd DobotDemoV2.0/DobotDll/
$ mv DobotDll\ source\ code src
$ cd src

3. Crear biblioteca compartida API DOBOT

En el mismo directorio que el código fuente, se coloca un archivo (archivo .pro) que se utiliza como plantilla para generar el archivo MAKE. Use qmake para generar un archivo MAKE, luego créelo.

$ qmake -o makefile DobotDll.pro
$ make

Luego, se creará un directorio llamado DobotDllOutput junto al directorio donde se extrajo DobotDemo V2.0. La biblioteca compartida que crea se almacena en ella con un archivo llamado libDobotDll.so.

$ cd ~/dobot/DobotDllOutput/
$ ls
libDobotDll.so libDobotDll.so.1 libDobotDll.so.1.0 libDobotDll.so.1.0.0
$

4. Función contenedora para llamar a la API desde Python

La API DOBOT de la biblioteca compartida es una función de C++, por lo que llamarla desde Python es un poco engorrosa. Se proporciona un contenedor en DobotDemo V2.0 para llamar más fácilmente como una función de Python, así que copiémoslo en el mismo directorio que la biblioteca compartida para que pueda importarse fácilmente.

$ cp ../DobotDemoV2.0/DobotDemoForPython/*.py  ./

Arriba, copiamos el archivo contenedor DobotDllType.py y el programa de muestra DobotControl.py para verificar la operación.

Las funciones de carga de archivos compartidos codificadas en este archivo contenedor no funcionan bien en Linux basado en ARM . Debe editarse como se muestra en rojo a continuación.

A partir del 24 de enero de 2022, este cambio se ha confirmado para entornos x86_64.

antes

456 ################## API func ##################
457
458 def load():
459     if platform.system() == "Windows":
460         return CDLL("DobotDll.dll", RTLD_GLOBAL)
461     elif platform.system() == "Darwin" :
462         return CDLL("libDobotDll.dylib", RTLD_GLOBAL)
463     else:
464         return cdll.loadLibrary("libDobotDll.so")
465

Ahora

456 ################## API func ##################
457
458 def load():
459     if platform.system() == "Windows":
460         return CDLL("DobotDll.dll", RTLD_GLOBAL)
461     elif platform.system() == "Darwin" :
462         return CDLL("libDobotDll.dylib", RTLD_GLOBAL)
463     else:
464         return CDLL("./libDobotDll.so")
465

5. Cambiar los derechos de acceso al puerto de comunicación del mago DOBOT

DOBOT Magician se comunica desde el SBC a través del puerto serie. Los puertos serie se usaban como rutas de inicio de sesión en los primeros días de Linux/Unix. Incluso ahora, si lo está utilizando para un propósito especial, como no conectar una pantalla pero desea controlarla, probablemente iniciará sesión a través de una comunicación en serie.

En los sistemas operativos tipo Linux, para garantizar la seguridad, la ruta para obtener inicios de sesión desde el exterior está restringida por defecto. Por lo tanto, DOBOT Magician requiere privilegios de root para comunicarse a través del puerto serie. En otras palabras, debe ejecutar Python con sudo, por ejemplo, sudo python3 xxx.py.

Dado que esto no es fácil de usar, usemos un mecanismo plug-and-play llamado udev para cambiar automáticamente la configuración para permitir el acceso al puerto serie con privilegios de usuario normales.

Para hacer esto, cree un archivo de reglas para udev.

En /etc/udev/rules.d/, cree un archivo de reglas con el nombre de archivo 50-udev-default.rules y la siguiente regla de una línea:

KERNEL=="ttyUSB[0-9]*", GROUP="$USER", MODE="0666"

Por supuesto, los archivos bajo /etc/ solo pueden ser editados por root. Al iniciar el editor de texto, hágalo con sudo.

$ sudo  vi  /etc/udev/rules.d/50-udev-default.rules

o

$ sudo  gedit  /etc/udev/rules.d/50-udev-default.rules

Por ejemplo, si es nuevo en un editor de texto, puede ejecutarlo así.

$ echo 'KERNEL=="ttyUSB[0-9]*", GROUP="$USER", MODE="0666"' > 50-udev-default.rules
$ sudo mv 50-udev-default.rules /etc/udev/rules.d/
$ sudo chown root /etc/udev/rules.d/50-udev-default.rules
$ sudo chgrp root /etc/udev/rules.d/50-udev-default.rules

6. Establecer variables de entorno

Al ejecutar un programa de Python, debe establecer una variable de entorno que le indique dónde está la biblioteca compartida de la API DOBOT (dónde puede encontrarla).

$ export LD_LIBRARY_PATH="."
$ sudo ldconfig

7. ¡Ejecutemos el programa de muestra!

Cuando esté listo, ejecutemos el programa de muestra copiado en el paso 4.

Conecte DOBOT Magician a Jetson Nano a través de USB y encienda el SW de alimentación de DOBOT Magician.

En la siguiente línea, el brazo repite el movimiento de subir y bajar varias veces, se detiene y finaliza el programa.

$ python3 DobotControl.py

¿Está funcionando correctamente?

8. Conclusión

Si se topa con un problema con cualquiera de los pasos hasta el momento, discútalo a través de la sección de comentarios a continuación.

Supongo que te gusta

Origin blog.csdn.net/weixin_44355653/article/details/132056108
Recomendado
Clasificación