Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
David Meléndez Cano                                     @taiksontexasTaiksonprojects.blogspot.com   Taiksonprojects.blogsp...
¿Qué es TRRP?                  ➔                      Plataforma de desarrollo de bajo o ningún coste                  ➔  ...
Usa tu viejo router como plataforma domótica / robótica            ➔             Inversión inicial cero. Ya dispones de él...
Primer contacto: ROV Texas RangerTaiksonprojects.blogspot.com
ROV Texas Ranger - Software                        Interfaz WEB           Cgi/Iframe_comet.bin                            ...
Afinando: Cuadricóptero Atropos➔    Fonera 2201➔    OpenWRT➔    Programa de estabilización➔    Telemetría y control HTML5 ...
Taiksonprojects.blogspot.com
Plataforma router: Puertos I2C     Buscar pines GPIO de la CPUTaiksonprojects.blogspot.com
Plataforma router: Puertos I2C y serie      GPIO---> I2C / RS232Puerto serie                                           Pin...
Plataforma router: Carga de módulos        rm /etc/modules.d/59­i2c­gpio        echo "i2c­gpio­custom bus0=0,4,7 bus1=1,3,...
Plataforma router: Puerto serie             stty -F /dev/ttyS0 raw             stty -F /dev/ttyS0 speed 115200Taiksonproje...
Plataforma router: Sensores - Giroscopio     Wii Motion Plus     Giroscopio triaxial     Puerto I2C        •            No...
Plataforma router: Sensores - Acelerómetro        Wii Nunchuck        Acelerómetro triaxial        Puerto I2C     Mide la ...
Plataforma router: Sensores - Magnetómetro          -Magnetómetro triaxial HMC5881L          -Gauss en cada plano         ...
acelerómetro     giroscopio  Imagen: “The Balance Filter” MITPro: “Filtro de Kalman”; “Matriz de Cosenos Directores”Taikso...
Plataforma router: Leyendo los sensores    ID único para cada sensor. Ej Wii Motion+: 0x52    •     Petición de datos escr...
Plataforma router: programa estabilización IMU   ➔     Programa crítico que debe ejecutarse en intervalo de tiempo fijo   ...
El proceso watchdog informa al kernel de que el sistema no está colgado.                                  ●               ...
Plataforma router: placa de control     -Mínimos componentes externos: Sólo para generar señales PWM     -Válido cualquier...
Control HTTP    Las órdenes se transmiten a través de peticiones HTTP GET    -Desde eventos keydown keyup de javascript po...
Control UDP desde mando USB     cat /dev/input/js0     ­­­­     pad=open(“/dev/input/js0”,O_RDONLY);     reads=read(pad,ms...
Video:Vuelo Atropos QuadrocopterTaiksonprojects.blogspot.com
Gracias!                                  David Meléndez Cano                                     @TaiksonTexas           ...
Upcoming SlideShare
Loading in …5
×

David Meléndez Cano - Trash Robotic Router Platform (TRRP) [Rooted CON 2013]

1,682 views

Published on

En esta charla se presentará una plataforma robótica integral, basada en elementos que tenemos por casa, y de fácil y barata adquisición. Por eso, la elección como prueba de concepto, se apoya en dos robots que he realizado a lo largo de 3 años de forma casera, usando sendos routers Wifi. Se trata del WRT54GL y La Fonera 2201.

Uno es un ROV y el otro un cuadricóptero, ambos controlados mediante HTML5 ofrecido desde el servidor web de cada router. Los aspectos técnicos de la ponencia incluyen:

- Por qué el firmware OpenWRT.
- I2C bitbanging con La Fonera. Conexiones de los GPIO y cargas de los módulos Kernel necesarios. Entrada de mi blog
- Lectura de mandos Wii mediante el I2C emulado previamente.
- Extender funcionalidades a través del puerto serie, a un microcontrolador
- Procesos en background desde OpenWrt, manejo de prioridades fuera de espacio de usuario para procesos críticos.
- Manipulación de httpd en BusyBox para atender ciertas peticiones ajax más rápido, mediante memoria compartida
- Integración de técnicas AJAX y AJAX PUSH (COMET) para aceptar órdenes y transmitir datos de telemetría.
- Lectura de mandos de consola, PS2, Entrenadores de vuelo RC, etc mediante programa en C bajo GNU/Linux y envío de los datos a través de peticiones HTTP o paquetes UDP
- Compilación cruzada de programas para arquitecturas empotradas (MIPS, ARM..)

  • Be the first to comment

  • Be the first to like this

David Meléndez Cano - Trash Robotic Router Platform (TRRP) [Rooted CON 2013]

  1. 1. David Meléndez Cano @taiksontexasTaiksonprojects.blogspot.com Taiksonprojects.blogspot.com
  2. 2. ¿Qué es TRRP? ➔ Plataforma de desarrollo de bajo o ningún coste ➔ “Internet de las cosas” ➔ Usa lo que tengas por casa ➔ Los trastos pueden ser útiles ➔ No tirar, no reciclar: ReutilizarTaiksonprojects.blogspot.com 2
  3. 3. Usa tu viejo router como plataforma domótica / robótica ➔ Inversión inicial cero. Ya dispones de él ➔ Cambia el firmware: Ej: Linux OpenWRT Pruebas de concepto: ROVER Texas Ranger: Linksys Cuadricóptero ATROPOS: WRT54GL La Fonera 2201Taiksonprojects.blogspot.com
  4. 4. Primer contacto: ROV Texas RangerTaiksonprojects.blogspot.com
  5. 5. ROV Texas Ranger - Software Interfaz WEB Cgi/Iframe_comet.bin ajax comet Libjpeg.h /dev/ttyS0 Target.c Placa camara i2cTaiksonprojects.blogspot.com Wii nunchuck
  6. 6. Afinando: Cuadricóptero Atropos➔ Fonera 2201➔ OpenWRT➔ Programa de estabilización➔ Telemetría y control HTML5 Taiksonprojects.blogspot.com
  7. 7. Taiksonprojects.blogspot.com
  8. 8. Plataforma router: Puertos I2C Buscar pines GPIO de la CPUTaiksonprojects.blogspot.com
  9. 9. Plataforma router: Puertos I2C y serie GPIO---> I2C / RS232Puerto serie Pines GPIO Taiksonprojects.blogspot.com
  10. 10. Plataforma router: Carga de módulos rm /etc/modules.d/59­i2c­gpio echo "i2c­gpio­custom bus0=0,4,7 bus1=1,3,1" >/etc/modules.d/59­i2c­gpio­custom echo "i2c­gpio" >/etc/modules.d/60­i2c­gpio [reboot] i2c­detect /dev/i2c0 Taiksonprojects.blogspot.com
  11. 11. Plataforma router: Puerto serie stty -F /dev/ttyS0 raw stty -F /dev/ttyS0 speed 115200Taiksonprojects.blogspot.com
  12. 12. Plataforma router: Sensores - Giroscopio Wii Motion Plus Giroscopio triaxial Puerto I2C • Nos dice a qué velocidad estamos girando en cada plano • No tan sencillo: DerivaTaiksonprojects.blogspot.com
  13. 13. Plataforma router: Sensores - Acelerómetro Wii Nunchuck Acelerómetro triaxial Puerto I2C Mide la aceleración (g) en cada plano.Taiksonprojects.blogspot.com
  14. 14. Plataforma router: Sensores - Magnetómetro -Magnetómetro triaxial HMC5881L -Gauss en cada plano -El acelerómetro sólo anula la deriva en los planos de cabeceo y alabeo. -El plano de guiñada (rumbo) se corrige obteniendo el rumbo actual en grados, con respecto al norte.Taiksonprojects.blogspot.com
  15. 15. acelerómetro giroscopio Imagen: “The Balance Filter” MITPro: “Filtro de Kalman”; “Matriz de Cosenos Directores”Taiksonprojects.blogspot.com
  16. 16. Plataforma router: Leyendo los sensores ID único para cada sensor. Ej Wii Motion+: 0x52 • Petición de datos escribiendo al dispositivo • Lectura de datos en buffer #include <linux/i2c­dev.h> f_i2c0=open(I2C0, O_RDWR); ioctl(f_i2c0, I2C_SLAVE, 0x52);      write(f_i2c0, buff_out, data_size);      ­­­      read(f_i2c0, buffer,size);Taiksonprojects.blogspot.com
  17. 17. Plataforma router: programa estabilización IMU ➔ Programa crítico que debe ejecutarse en intervalo de tiempo fijo setitimer(ITIMER_REAL,&i_int,NULL); (void)signal(SIGALRM ,timeout_real); ➔ Compite por el tiempo de CPU con el servidor web (telemetría y control) ➔ Cambiar la prioridad del proceso con nice no es suficiente: Real Time scheduling → FIFO, Round Robin #include <sched.h> schedule.sched_priority=sched_get_priority_max(SCHED_FIFO); sched_setscheduler(pthread_self(), SCHED_FIFO,&schedule);Taiksonprojects.blogspot.com
  18. 18. El proceso watchdog informa al kernel de que el sistema no está colgado. ● Consume su parte de CPU ● Si se cuelga el router en pleno vuelo: ➔ ioctl(“/dev/watchdog”, WDIOC_KEEPALIVE, &dummywd); Taiksonprojects.blogspot.com
  19. 19. Plataforma router: placa de control -Mínimos componentes externos: Sólo para generar señales PWM -Válido cualquier microcontrolador con UART y un par de timers Fonera PIC16f876A /dev/ttyS0 ESC MotoresTaiksonprojects.blogspot.com
  20. 20. Control HTTP Las órdenes se transmiten a través de peticiones HTTP GET -Desde eventos keydown keyup de javascript por AJAX -Desde el proceso que lee del mando USB http://atropos/cgi­bin/ajaxinput?QQZ[GAS]Z[ALABEO]Z[CABECEO]Z[GUIÑADA]Z Deben ser muy fluidas y baratas en tiempo de CPU: Httpd tweak: Httpd.c: [...] if (strncmp(tptr, "cgi­bin/ajaxinput", 17) == 0) { [...] strcpy((char *)shmat(shmget(9998, 30, IPC_CREAT | 0666), NULL, 0),g_query); exit(­1); } [...]Taiksonprojects.blogspot.com
  21. 21. Control UDP desde mando USB cat /dev/input/js0 ­­­­ pad=open(“/dev/input/js0”,O_RDONLY); reads=read(pad,msg,MSG);   (msg[7]==2)//gas       gas=((analog+127))*GAS_FACTOR;     [...]     (msg[7]==4)//guiñada       guinnada=­analog*GUINNADA_FACTOR;     [...]     (msg[7]==1)//cabeceo       cabeceo=­analog*CABECEO_FACTOR;     [...]     (msg[7]==0)//alabeo       alabeo=­analog*ALABEO_FACTOR;     [...]Taiksonprojects.blogspot.com
  22. 22. Video:Vuelo Atropos QuadrocopterTaiksonprojects.blogspot.com
  23. 23. Gracias! David Meléndez Cano @TaiksonTexas Taiksonprojects.blogspot.comTaiksonprojects.blogspot.com

×