If you can't read please download the document
Upload
davidmelendezcano
View
71
Download
0
Embed Size (px)
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.
Citation preview
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