Trash Robotic Router Platform (TRRP)[RootedCON 2013]

download Trash Robotic Router Platform (TRRP)[RootedCON 2013]

If you can't read please download the document

description

TRRP Presentauna plataforma robótica integral, basada en la mayor medida posible, en elementos que tengamos por casa, y de fácil y barata adquisición. Ya sean maderas, tablas, plásticos para la parte mecánica, como routers para la electrónica.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.Al mismo tiempo, se persigue la máxima compatibilidad con cualquier sistema de control remoto de los mismos, con lo que su manejo y representación de información está basada en HTML5, usando el propio servidor web del router.

Transcript of Trash Robotic Router Platform (TRRP)[RootedCON 2013]

David Melndez Cano @taiksontexasTaiksonprojects.blogspot.com

Taiksonprojects.blogspot.com

Qu es TRRP?

Plataforma de desarrollo de bajo o ningn coste Internet de las cosas Usa lo que tengas por casa Los trastos pueden ser tiles No tirar, no reciclar: Reutilizar

Taiksonprojects.blogspot.com

2

Usa tu viejo router como plataforma domtica / robtica

Inversin inicial cero. Ya dispones de l Cambia el firmware: Ej: Linux OpenWRT

Pruebas de concepto:

ROVER Texas Ranger: Linksys WRT54GLTaiksonprojects.blogspot.com

Cuadricptero ATROPOS: La Fonera 2201

Primer contacto: ROV Texas Ranger

Taiksonprojects.blogspot.com

ROV Texas Ranger - SoftwareInterfaz WEB ajax /dev/ttyS0 Cgi/Iframe_comet.bin comet Libjpeg.h Target.c

Placa

camara

i2cTaiksonprojects.blogspot.com

Wii nunchuck

Afinando: Cuadricptero Atropos

Fonera 2201 OpenWRT Programa de estabilizacin Telemetra y control HTML5

Taiksonprojects.blogspot.com

Taiksonprojects.blogspot.com

Plataforma router: Puertos I2C Buscar pines GPIO de la CPU

Taiksonprojects.blogspot.com

Plataforma router: Puertos I2C y serie GPIO---> I2C / RS232

Puerto serie

Pines GPIOTaiksonprojects.blogspot.com

Plataforma router: Carga de mdulos

rm/etc/modules.d/59i2cgpio echo"i2cgpiocustombus0=0,4,7bus1=1,3,1">/etc/modules.d/59i2cgpiocustom echo"i2cgpio">/etc/modules.d/60i2cgpio [reboot] i2cdetect/dev/i2c0Taiksonprojects.blogspot.com

Plataforma router: Puerto serie

stty -F /dev/ttyS0 raw stty -F /dev/ttyS0 speed 115200

Taiksonprojects.blogspot.com

Plataforma router: Sensores - Giroscopio Wii Motion Plus Giroscopio triaxial Puerto I2C

Nos dice a qu velocidad estamos girando en cada plano No tan sencillo: Deriva

Taiksonprojects.blogspot.com

Plataforma router: Sensores - Acelermetro Wii Nunchuck Acelermetro triaxial Puerto I2C

Mide la aceleracin (g) en cada plano.

Taiksonprojects.blogspot.com

Plataforma router: Sensores - Magnetmetro

-Magnetmetro triaxial HMC5881L -Gauss en cada plano

-El acelermetro slo anula la deriva en los planos de cabeceo y alabeo. -El plano de guiada (rumbo) se corrige obteniendo el rumbo actual en grados, con respecto al norte.

Taiksonprojects.blogspot.com

acelermetro

giroscopioImagen: The Balance Filter MIT

Pro: Filtro de Kalman; Matriz de Cosenos DirectoresTaiksonprojects.blogspot.com

Plataforma router: Leyendo los sensores ID nico para cada sensor. Ej Wii Motion+: 0x52 Peticin de datos escribiendo al dispositivo Lectura de datos en buffer

#include 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

Plataforma router: programa estabilizacin IMU

Programa crtico que debe ejecutarse en intervalo de tiempo fijosetitimer(ITIMER_REAL,&i_int,NULL); (void)signal(SIGALRM,timeout_real);

Compite por el tiempo de CPU con el servidor web (telemetra y control)

Cambiar la prioridad del proceso con nice no es suficiente: Real Time scheduling FIFO, Round Robin

#include schedule.sched_priority=sched_get_priority_max(SCHED_FIFO); sched_setscheduler(pthread_self(), SCHED_FIFO,&schedule);

Taiksonprojects.blogspot.com

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

Plataforma router: placa de control -Mnimos componentes externos: Slo para generar seales PWM -Vlido cualquier microcontrolador con UART y un par de timers Fonera /dev/ttyS0

PIC16f876A

ESC Motores

Taiksonprojects.blogspot.com

Control HTTP Las rdenes se transmiten a travs de peticiones HTTP GET -Desde eventos keydown keyup de javascript por AJAX -Desde el proceso que lee del mando USBhttp://atropos/cgibin/ajaxinput?QQZ[GAS]Z[ALABEO]Z[CABECEO]Z[GUIADA]Z

Deben ser muy fluidas y baratas en tiempo de CPU: Httpd tweak:

Httpd.c: [...] if(strncmp(tptr,"cgibin/ajaxinput",17)==0){ [...] strcpy((char*)shmat(shmget(9998,30,IPC_CREAT|0666),NULL,0),g_query); exit(1); } [...]

Taiksonprojects.blogspot.com

Control UDP desde mando USB cat/dev/input/js0 pad=open(/dev/input/js0,O_RDONLY); reads=read(pad,msg,MSG); (msg[7]==2)//gasgas=((analog+127))*GAS_FACTOR; [...] (msg[7]==4)//guiada guinnada=analog*GUINNADA_FACTOR; [...] (msg[7]==1)//cabeceo cabeceo=analog*CABECEO_FACTOR; [...] (msg[7]==0)//alabeo alabeo=analog*ALABEO_FACTOR; [...]

Taiksonprojects.blogspot.com

Video: Vuelo Atropos Quadrocopter

Taiksonprojects.blogspot.com

Gracias!

David Melndez Cano @TaiksonTexas

Taiksonprojects.blogspot.com

Taiksonprojects.blogspot.com