jump to navigation

CLHero – Primeros pasos 13 de abril de 2019

Posted by Jorge in Uncategorized.
add a comment

Hola a todos!

Hoy traigo una entrada breve, pero muy significativa para mí. Tras mucho esfuerzo por fin pude ver al hexápodo que he construido dar sus primeros pasos.

Podría estar escribiendo un montón de parrafadas, pero prefiero poner directamente el vídeo y que lo vean.

Jaguar – V4. Diseño tapa de accesorios 1 de marzo de 2019

Posted by Jorge in Jaguar V4, robotica.
Tags: , , , , ,
add a comment

Actualmente, uno de los robots con los que estoy trabajando es el Jaguar V4 de Dr. Robot.

Plataforma Dr. Robot Jaguar V4

Sin embargo, el modelo que se compró solo dispone de dos sensores externos: una IMU y un GPS.

Estos sensores se quedan cortos para las aplicaciones que se tienen pensadas para este robot: vigilancia, búsqueda y rescate.

Para ello se le quiere dotar de un Velodyne VLP-16 y de una cámara térmica Optirs Pi 640.

El problema de añadir estos sensores es que la plataforma no dispone de ningún tipo de anclaje para acoplarlos. Para ello es necesario realizar una plataforma capaz de acoplarse a la morfología del robot.

  • BASE DE METACRILATO:

Como base he tenido que emplear una plancha de metacrilato recogida de un contenedor de obra (el presupuesto nos lo habíamos dejaro en los sensores)

Lo primero que hice fue marcar la forma de la tapa del robot y empezar a cortar con la caladora. El metacrilato no es un material fácil de trabajar, al menos en el corte manual, así que fue necesario realizar varias pruebas para asegurar una buena hoja de corte, velocidad de la hoja y velocidad de avance de la caladora, de lo contrario, o no se corta adecuadamente el material y salta la sierra o se derrite el material y se vuelve a pegar entre sí, por lo que el corte es infructuoso. Además, siempre es necesario pasar una lima gruesa para eliminar toda la rebaba o material derretido que se queda tras el corte.

Una vez terminado el perímetro exterior y suavizadas las aristas es turno de ponerse con el hueco para las baterías.

Una vez cortada toda la tapa, procedemos a realizar todos los agujeros para los tornillos de anclaje y su avellanado para que queden las cabezas sin sobresalir

Para la colocación de la tapa de las baterías, se van a colocar 2 tornillos M6 al revés para luego apretarla con 2 palomillas, de modo que sea rápido poder quitar y poner la tapa.

Es importante que el agujero del tornillo no sea pasante, si no roscado, de esta forma no se caerá el tornillo y se podrá apretar sin problema la tapa.

Por último, damos unas pasadas con lija fina y lija al agua para mejorar el aspecto de la plancha, quitando de esta forma los arañazos más superficiales.

  • TAPA DE LAS BATERÍAS:

El siguiente paso ha sido crear una nueva tapa para las baterías. De esta forma no se daña la original en caso de retirar la tapa de metacrilato y además, para mí lo mejor, se mejora el anclaje de la tapa por un sistema similar pero más fiable, pues el que trae por defecto muchas veces resulta imposible cerrarlo correctamente.

Para la tapa partimos de una plancha de aluminio de 5mm de espesor, también reciclada. En este caso presentaba un doblez aproximadamente a un tercio de uno de los extremos laterales. Esto se subsano empleando el tornillo de banco ejerciendo presión y, por último, empleando el martillo de chapa hasta dejarla considerablemente recta.

Ahora toca desoldar los portafusibles originales para poder utilizar la tapa original de plantilla y acoplar los portafusibles a la nueva tapa.

A continuación se marcaron los agujeros para los fusibles de las baterías y los tornillos. También se aprovechó para incorporar un interruptor con LED para el ordenador que he también he instalado en el interior del robot. El LED se enciende siempre que encendamos el ordenador, de este modo es fácil saber su estado de encendido o apagado.

Para una mayor comodidad a la hora de sacar las baterías, al cable del interruptor del ordenador se le puso un conector de 5 pines y de forma estricta, por lo que solo se puede conectar de una única forma y nadie puede equivocarse al conectarlo de nuevo.

Ahora es el turno de volver a soldar los portafusibles.

Una vez preparado todo lo anterior, toca colocarlo en su sitio

Y este es el resultado de la tapa colocada en su sitio, la verdad es que queda resultona con los leds de estado del robot.



Intel RealSense D435 – Ubuntu 19 de febrero de 2019

Posted by Jorge in robotica, ROS.
Tags: , , , , , ,
add a comment

Por desgracia, la cámara que presenta Intel, no es Plug&Play en Ubuntu y ROS.

Para poder utilizarla correctamente es necesario actualizar el firmware lo primero de todo. Los pasos para realizar esto se pueden encontrar en este PDF de Intel. El proceso que debemos realizar se conoce como Device Firmware Update o DFU.

Lo primero que tenemos que hacer es abrir un terminal (CTRL+ALT+T).

A continuación agregamos el repositorio de Intel

echo 'deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo xenialmain' | sudo tee /etc/apt/sources.list.d/realsense-public.list

El siguiente paso es agregar la llave pública:

sudo apt-key adv--keyserverkeys.gnupg.net --recv-key 6F3EFCDE

Seguidamente actualizaremos los repositorios para poder encontrar los paquetes necesarios para la RealSense y el DFU

Si tenemos un error que indica que el repositorio no existe o no se puede encontrar la llave:

jorge@silth:~/ws/realsense_ws$ sudo apt-key adv --keyserver hkp://keys.gnupg.net:80 --recv-keys 6F3EFCDE
Executing: /tmp/tmp.fe7CH55mwJ/gpg.1.sh --keyserver hkp://keys.gnupg.net:80 --recv-keys 6F3EFCDE
gpg: requesting key 6F3EFCDE from hkp server keys.gnupg.net
gpgkeys: key 6F3EFCDE can't be retrieved
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0
gpg: keyserver communications error: keyserver helper general error
gpg: keyserver communications error: unknown pubkey algorithm
gpg: keyserver receive failed: unknown pubkey algorithm

Para resolver este caso es necesario copiar la llave directamente desde el servidor a un fichero en nuestro ordenador.
La llave la podemos encontrar en la siguiente dirección.

A continuación creamos un fichero (en el directorio donde queramos, yo en mi caso en el directorio home) con extensión PUB y con el contenido de la llave. El fichero debe de quedar de la siguiente forma:

dfsdfsd

El siguiente paso es incluir la llave, para ello debemos indicar el directorio donde tenemos la llave:

sudo apt-key add ~/intel_key.pub

Y de nuevo ejecutamos un update para incluir el nuevo repositorio.

Si se ha actulizado todo correctamente, instalaremos el paquete DFU.

sudo apt install intel-real-sense-DFU

Después, necesitamos descargar el último firmware disponible (.bin)

Ahora toca el paso de la actualización del firmware. Para ello, previamente es necesario saber el puerto donde está conectada la RealSense, emplearemos el comando lsusb. En mi ordenador está conectada al bus USB 002 como device 002.

Visualización del puerto de la RealSense

Si queremos obtenerlo de una forma más detallado podemos emplear el comando dmesg | grep -i usb

Para poder actualizar el firmware emplearemos el siguiente comando, donde el parámetro -b indica el bus usb y el -d el device. En mi caso sería -b 002 y -d 002.

intel-realsense-dfu–b 002 –d 002 –f –i /home/TU_USUARIO/downloads/Signed_Image_UVC_5_9_2_0.bin

El proceso comenzará y nos mostrará el mensaje Done! cuando finalice correctamente.

Para comprobar que el proceso se ha realizado correctamente podemos revisar la versión del firmware con el siguiente comando:

intel-realsense-dfu -p

Por último, podemos lanzar realsense-viewer para visualizar la cámara.

Intel Realsense D435 19 de febrero de 2019

Posted by Jorge in robotica, ROS.
add a comment

En esta entrada vamos a ver la cámara de profundidad que tiene Intel.

RealSense D435

De este tipo de cámara hay varios modelos:

  • RealSense Depth D415
  • RealSense Tracking T625
  • RealSense SR300
  • RealSense Depth D435i
  • RealSense Depth D435 Fifty Limited
  • RealSense Depth D435

En el momento en que compramos la cámara, la D435i no existía, pero hoy en día es la mejor opción ya que por 20$ más tienes incluida una IMU

La familia de cámaras RealSense emplea un par estereoscópico para calcular la información de profundidad de la escena.

La cámara incluye un par esteresocópico, una cámara RGB y un emisor infrarrojo.

El campo de visión estero es 85.2º x 58º x 94º (Horizontal – Vertical – Diagonal). Y el de la cámara RGB 69.4º x 42.5º x 77º.

La resolución máxima del par estereo es de 1280×720 (HD) a un máximo de 90FPS. Por su parte el sensor RGB presenta una resolución máxima de 1920×1080 a 30FPS.

La distancia mínima de medida es 0.2m, que además coincide con su eje Z. Y la distancia máxima es de 10m. aunque depende mucho de la calibración, la escena y las condiciones de luz.

Las dimensiones de la cámara son: 90x25x25 mm.

Y para obtener todas las prestaciones de la cámara es necesario conectarla con un cable tipo ‘C’ y con conectividad USB 3.1. Si no es así, no se podrá utilizar toda la resolución disponible ni el frame rate.

Lo más importante de esta cámara, es que presenta paquetes para ROS y posiblemente se pueda emplear sin mucha dificulta para SLAM con RTABMAP.

Por último, los requisitos de hardware que recomienda Intel para utilizar la cámara bajo Ubuntu 16.04 son los siguientes:

  • Disponibilidad de un puerto USB 3.1
  • Memoria RAM >= 4GB
  • Disco duro >= 128GB


Crear un suelo en Adams 14 de enero de 2019

Posted by Jorge in Adams.
Tags: , , , ,
add a comment

Para poder simular un desplazamiento de nuestro robot en Adams es necesario que incluyamos un suelo anclado al cuerpo «Ground«.

Para ello lo primero que hacemos es ir al menú Bodies y dentro de los sólidos el primero de todos, RigidBody:Box.

Icono para crear un rígido con forma de cubo

En el menú que nos sale a la izquierda es necesario seleccionar la opción de que se añada al cuerpo «On Ground«. Las dimensiones se las podemos incluir ya o posteriormente.

Asignación del nuevo cuerpo a On Ground

Una vez situamos el plano en el espacio (da igual el lugar) vamos a introducir en su marcador el origen del mismo. Para ello creamos una variable de diseño:
– suelo_ancho: 800mm

Creación de la variable suelo_ancho

Los valores que introduciremos para el marcador del origen son los siguientes:
– X: -450.0
– Y: -200.0
– Z: (-suelo_ancho / 2)

Coordenadas de origen para el marcador

A continuación, en los parámetros del sólido modificamos las coordenadas de la esquina en diagonal (Diag Corner Coords) con los siguientes datos:
– suelo_largo
– -suelo_espesor
– suelo_ancho

Parámetros para la geometría del suelo

Y con esto tendremos colocado nuestro suelo donde deseamos y con las medidas que queramos.

Robot con el suelo puesto
Robot con el suelo puesto

Creación de motores en Adams 14 de enero de 2019

Posted by Jorge in Adams.
Tags: , , ,
add a comment

Con la extensión de Adams Machinery, es posible introducir motores en los diseños que creamos, de esta forma podemos generar un movimiento pero con las restricciones del motor que tenemos montado en nuestro diseño.

Para ello lo primero es ir al menú Machinery y luego a la sección Motor.

Icono para crear un motor

En la ventana que se nos muestra escogemos el método para definir los parámetros de nuestro motor, en este caso, analítico.

Método para definir los parámetros del motor

Lo siguiente es escoger el tipo de motor, escogeremos Brushless DC.

Tipo de motor: Brushless DC

La pestaña de las conexiones del motor se divide en dos apartados.

En el primero definimos el nombre del motor, si el motor es un elemento nuevo o sustituye a un movimiento o par externo y la dirección de giro (horario CW o antihorario CCW).

La segunda parte sirve para la colocación del motor en el modelo. En este caso lo situamos respecto al joint1, para ello debe de ir lo siguiente: (LOC_RELATIVE_TO({0.0, 0.0, 0.0},leg_1_flex.origin)). El eje de rotación lo queremos respecto al eje Z. El rotor que esté fijo a la pata (leg_1_flex) y el estator solidario al chásis.

Colocación del motor

Para la creación del motor crearemos un motor de pequeñas dimensiones y de peso prácticamente nulo. Esto lo hacemos porque simplemente queremos actuar sobre el motor, el peso y la inercia que genera no nos interesa porque ya lo tenemos incluido en las características del modelo del chasis.

Geomtería del motor

En las características del motor debemos de incluir los datos que nos ofrezca el fabricante. El campo más importante en este aspecto es el valor de la consigna (Target Value) que lo debemos de dejar preparado para que acepte una variable externa que generamos en nuestro programa de control.
A continuación muestro una imagen con los parámetros del motor que estoy empleando.

Parámetros del motor

Por último, en la salida del motor no es necesario modificar ninguno de los datos.

Cuerpos flexibles en Adams 14 de enero de 2019

Posted by Jorge in Adams.
Tags: , , ,
add a comment

En las últimas versiones de MSC Adams, ya está disponible de forma nativa la posibilidad de crear cuerpos flexibles en nuestro modelo. Anteriormente era necesario pasar previamente por MSC Nastram, generar la malla y calcular el modelo (MNF) para luego importarlo en Adams.

Para ello, en el menú de cuerpos, nos dirijimos a la sección Flexible Bodies y escogemos la opción: ViewFlex: create flex body without MNF import.

ViewFlex en el menú

La primera ventana que se nos abre nos permite seleccionar la parte que queremos convertir en flexible y el material que queremos aplicar.

Ventana para crear un cuerpo flexible

Si no queremos un material particular que no se encuentra en la base de datos lo podemos introducir desde este menú. Para este caso, yo voy a introducir un material a mano con las siguientes características:
– Densidad: 1.43 gr/cm^3.
– Tipo: Isotrópico
– Módulo de Young: 277.0
– Ratio de Poissons: 0.33

Caraterísticas del material para la pata

Para que el proceso pueda concluir correctamente es necesario que la parte tenga un conector a otro cuerpo, en este caso un joint al chásis del robot. El proceso habrá finalizado correctamente cuando obtengamos el mensaje: Replace process succesfully completed

Proceso completado correctamente

En el menú de cuerpos de nuestra base de datos veremos como se ha desactivado la pata original y se ha creado una nueva con el icono de elemento flexible

Nueva pata creada

Y de esta forma se crea un nuevo elemento flexible en Adams con las características más básicas.

Si se desea profundizar más en la personalización del elemento flexible se puede entrar en el modo avanzado al crear el cuerpo, lo que nos despliega un menú con muchas más opciones.

Menú avanzado
Robot hexápodo con una de sus 6 patas flexible

Posibles fallos:
Si Adams nos da fallos a la hora de crear el cuerpo puede deberse (entre otras razones) a dos motivos:
– El cuerpo que queremos convertir no tiene un conector a otro cuerpo.
– La ruta donde trabajamos tiene algún caracter especial.


Motor paso a paso con Arduino 18 de febrero de 2016

Posted by Jorge in Arduino, Tutorial.
Tags: , , , ,
add a comment

En esta entrada vamos a ver como controlar un motor paso a paso con Arduino. En concreto el modelo 28BYJ-48 que funciona a 5V.

28byj-48

(más…)

Midiendo distancias con Arduino 12 de febrero de 2016

Posted by Jorge in Arduino, Tutorial.
Tags: , , , , , , , ,
add a comment

En esta entrada vamos a aprender como medir distancias con el Arduino, algo muy interesante por ejemplo para que un robot pueda seguir una pared a una cierta distancia.

Para ello realizaremos dos sketches distintos, uno con un sensor de ultrasonido (SR04) y el otro con un sensor infrarrojo (Sharp GP2Y0A02YK0F).

ussharp

(más…)

Vúmeter con Arduino 12 de febrero de 2016

Posted by Jorge in Arduino, Tutorial.
1 comment so far

En esta nueva entrada vamos crear un vúmeter que se encienda en proporción a un valor leído desde un pin analógico.

Para ello necesitaremos una barra led u 8 LEDs, 8 resistencias de 330 ó 220 ohms y un potenciómetro.

bar 220_ohm pot

 

 

 

 

(más…)