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.
Intel RealSense D435 – Ubuntu 19 de febrero de 2019
Posted by Jorge in robotica, ROS.Tags: d435, driver, firmware, intel, realsense, ubuntu, update
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.
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.
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: Adams, contactos, hexapodo, robot, suelo
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.
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.
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
Los valores que introduciremos para el marcador del origen son los siguientes:
– X: -450.0
– Y: -200.0
– Z: (-suelo_ancho / 2)
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
Y con esto tendremos colocado nuestro suelo donde deseamos y con las medidas que queramos.
Creación de motores en Adams 14 de enero de 2019
Posted by Jorge in Adams.Tags: Adams, hexapodo, motores, robotica
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.
En la ventana que se nos muestra escogemos el método para definir los parámetros de nuestro motor, en este caso, analítico.
Lo siguiente es escoger el tipo de motor, escogeremos 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.
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.
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.
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: Adams, flexible, hexapodo, robot
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.
La primera ventana que se nos abre nos permite seleccionar la parte que queremos convertir en flexible y el material que queremos aplicar.
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
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
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
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.
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: arduino, control, motor paso a paso, step motor, tutorial
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.
Midiendo distancias con Arduino 12 de febrero de 2016
Posted by Jorge in Arduino, Tutorial.Tags: arduino, distancia, infrarrojo, IR, sensores, sensors, sharp, ultrasonido, US
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).
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.