La semana pasada tuvieron lugar las XXX Jornadas Técnicas del GUL. Alguien había propuesto una charla de diseño en FreeCAD, para la cual no apareció ningún ponente, así que me ofrecí voluntario. Mi idea era dar la típica charla introductoria a FreeCAD, pero Julián Caro me dio la idea de hablar de diseño paramétrico, y ese se convirtió en el tema de la charla.

La charla transcurrió sin incidentes, y aunque no dio tiempo a hacer todos los ejemplos, la gente se fue contenta. Muchos quedaron sorprendidos de la potencia de FreeCAD y del software paramétrico. Desde aquí me gustaría dar las gracias a la gente del GUL por preparar un evento de la talla de las Jornadas Técnicas y por darme la oportunidad de contribuir a ellas con un taller.

Para los que se quedaron con ganas de más, aquí están las diapositivas de la charla, y en este repo están los ejemplos para practicar en casa.

En mi anterior post compartí un tutorial de Git que había redactado como guía para los nuevos de las asociaciones ASROB y UC3Music, y que publiqué de forma abierta por si le resultaba útil a alguien más.

Al compartir el tutorial por Twitter, me llevé una grata sorpresa al ver que había mucha gente a la que le había gustado la iniciativa:

Mi filosofía es que sólo se aprende realmente haciendo cosas, poniendo en práctica lo que se lee. Y qué mejor forma de motivarse y poner en práctica esos conocimientos que un reto. Por ello os propongo el reto “Troll My Repo” (trolea mi repo).

La idea es simple: perder el miedo a colaborar con un proyecto haciendo que el proyecto en el que colaboras sea totalmente absurdo. Un repositorio creado específicamente para ser “troleado”, en el que las equivocaciones no importan en absoluto porque el contenido no tiene demasiado sentido.

¿El objetivo? Que el mayor número de personas pierdan el miedo a usar Git y colaborar. Los repositorios de GitHub tienen un apartado de contribuidores, queremos que ese número sea el más alto posible.

¿Cómo puedo participar? Muy simple. Sigue el tutorial de Git y completa los siguientes pasos:

  1. Haz un fork del repositorio troll-my-repo en que subir tus cambios.
  2. Añade lo que quieras al repositorio. Archivos de texto, imágenes, lo que sea. O cambia algo del repositorio. Si no se te da bien lo de imaginarte formas de “trolear” el repositorio, puedes simplemente escribir “X estuvo aquí” en el archivo README.md (poniendo tu nombre o alias en la X, claro).
  3. Sube los cambios a tu fork, y haz un pull request al repositorio principal. En unas horas tendrás tus cambios integrados en el repositorio troll-my-repo, y habrás contribuído a tu primer proyecto en GitHub, !Enhorabuena!

Git es un software para el control de versiones que facilita el desarrollo de software controlando qué cambios se hacen al software y quién los hace. GitHub es una plataforma online basada en Git en la que alojar nuestro código y con la que colaborar con otros desarrolladores.

Git y GitHub son muy usados en ASROB y UC3Music, incluso para gestionar asuntos no relacionados con el software. Son sencillos de usar, pero para perder el miedo a lo desconocido lo mejor es tener a alguien que te eche una mano y te explique los conceptos básicos. Pero a veces no tengo tiempo para quedar con los nuevos para explicarles estos conceptos, por lo que he hecho un tutorial en forma de GitBook titulado The Git, the Bad and the Ugly para que ellos mismos puedan aprender por su cuenta.

He pensado que podría ser útil para más gente aparte de los nuevos de las asociaciones, así que he liberado el tutorial para que cualquiera pueda beneficiarse de él. Incluye conceptos básicos de Git y GitHub, así como unas buenas prácticas a la hora de usarlos y algunas páginas web para aprender más allá de los contenidos que abarca el tutorial.

Link: The Git, the Bad and the Ugly - Una guía para empezar a colaborar en proyectos usando Git.

Reto Ferrovial-Ennomotive

El Reto Ferrovial-Ennomotive es una competición internacional de robótica que tuvo lugar durante la Robot Global Expo de este año. El objetivo de este reto era construir un robot móvil que, de forma autónoma, fuese capaz de recorrer un circuito desde un punto a otro sin chocar con ningún obstáculo.

El circuito emulaba una construcción
El circuito emulaba una construcción.

Como en ASROB nos van los retos más que a un tonto un lápiz, formamos un equipo para competir en el reto. El equipo lo componíamos Juan G. Víctores, Víctor Díaz, Ignacio Montesino y un servidor (me refiero a mi, no a las cosas esas que se conectan a internet, aunque también paso bastante tiempo conectado…).

Nuestra idea inicial era resucitar la plataforma ECRO, que por su tamaño y forma nos pareció perfecta para el transporte de objetos desde un punto A hasta un punto B. Además, como mecánicamente ya estaba prácticamente montado eso nos quitaría mucho trabajo. Error número 1. Al leer las bases del concurso, nos dimos cuenta de que el ECRO sobrepasaba ampliamente los límites de tamaño. Vamos, que si lo metíamos tal cual en el circuito, en lugar de evitar los obstáculos pasaría por encima de ellos.

El siquiente paso fue hacerle al ECRO una reducción de tamaño considerable, conectando todas las piezas (motores, ruedas, drivers, etc) del robot original a una nueva base de plástico. Al quitarle la plancha metálica original, además, perdió bastante peso, aunque seguía pesando un quintal. A esta versión de ECRO la llamamos cariñosamente NECRO (New ECRO). Con el robot ya hecho, pasamos a cablearlo todo y conectar los contorladores de las ruedas con el PC para poder encender los motores. Tras muchos quebraderos de cabeza conseguimos que los motores se movieran, justo el día antes de que empezase la expo.

ECRO antes ECRO después (NECRO)
ECRO vs New ECRO

El primer día de la competición era de entrenamientos libres para poner a punto el robot en el circuito. En nuestro caso, el primer día consistió en volver a hacer que los motores se volviesen a mover. En algún momento del transporte del ECRO y su reconexión cometimos el error número 2, y una de las controladoras de las ruedas dejó de funcionar. Tras estar hasta las tantas en la uni solucionando el problema los motores volvieron a funcionar, esta vez hablando directamente con un Arduino a los drivers.

Y así llegó el segundo día de competición, en el que tendría lugar la clasificación para la final. Y nosotros todavía con el robot sin programar. Tras muchas pruebas en el circuito, Juan se curró un pedazo de algoritmo reactivo que usaba la imagen de profundidad de una ASUS XTION Pro para evitar obstáculos y navegar por el circuito. El robot se portó muy bien y quedamos terceros, lo que nos aseguraba un puesto en la final.

El tercer y último día tuvo lugar la final, casi sin tiempo para más pruebas. Esta vez, al comenzar la prueba, el NECRO empezó a arrasar con todos los obstáculos, como si no los viera. Error número 3. Con las prisas, no comprobamos hacia donde miraba la cámara del robot antes de arrancar el programa.Y resulta que la cámara estaba mirando hacia el techo (ligeramente). Cuando lo corregimos ya iba por la recta final, pero aún así empatamos en el tercer puesto. La organización decidió hacer otra ronda de desempate, y esta vez nuestro robot miraba correctamente a los obstáculos, así que quedamos terceros. ¡Todo un éxito!

Hoy, a través del twitter de Adafruit me he enterado de que O’Reilly tenía disponibles más de 243 eBooks sobre informática y programación gratis desde su web.

Como hace poco “liberaron” eBooks de manera similar, y me costó un rato hacerme con todos los links y descargar los eBooks, esta vez opté por automatizar el proceso. Para ello, usé Python y Beautiful Soup para extraer de forma automática los links de la web de O’Reilly (y ya de paso no tener que logearme).

El script es sencillo, busca las distintas categorías a partir de la página principal y dentro de cada categoría busca los libros que aparecen disponibles. Una vez se tiene la url de la página de cada libro, con una sencilla modificación se obtiene la url del libro en pdf, mobi y epub. Todas estas urls se guardan en un archivo books.txt. Además, como ya tenía descargados algunos de ellos de la vez anterior, he añadido una pequeña comprobación. Si encuentra en la carpeta desde la que se lanza el script un archivo con el mismo nombre que el archivo a descargar, lo ignora.

Una vez se tiene el archivo books.txt con el listado de links, se puede usar un programa como wget o curl para descargar de forma automática todos los links.

Este script está disponible en un Gist para todo el que quiera usarlo o simplemente echarle un ojo: