SlideShare una empresa de Scribd logo
David Meléndez Cano
@taiksontexas
Taiksonprojects.blogspot.com

Taiksonprojects.blogspot.com
¿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: Reutilizar

Taiksonprojects.blogspot.com

2
Usa tu viejo router como plataforma domótica / robótica

Inversión inicial cero. Ya dispones de él
➔
Cambia el firmware: Ej: Linux OpenWRT
➔

Robots creados:

ROVER Texas Ranger: Linksys
WRT54GL
Taiksonprojects.blogspot.com

Cuadricóptero ATROPOS:
La Fonera 2201
Primer contacto: ROV Texas Ranger

Taiksonprojects.blogspot.com
Afinando: Cuadricóptero Atropos

➔

Fonera 2201

➔

OpenWRT

➔

Programa de estabilización

➔

Telemetría y control HTML5

Taiksonprojects.blogspot.com
Lo básico de un cuadricóptero

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 GPIO
Taiksonprojects.blogspot.com
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
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 - Acelerómetro
Wii Nunchuck
Acelerómetro triaxial
Puerto I2C

Mide la aceleración (g) en cada plano.

Taiksonprojects.blogspot.com
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
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
Obteniendo ángulos absolutos con respecto a la Tierra

acelerómetro

giroscopio
Imagen: “The Balance Filter” MIT

Taiksonprojects.blogspot.com
Mejor: Matriz de Cosenos Directores (DCM)

Taiksonprojects.blogspot.com
Con qué datos vamos a trabajar:

Velocidad angular : Directo de los giroscopios
➔
Aceleración angular: Derivada de la Velocidad angular.
➔
Ángulo absoluto: Resultado del filtro aplicado
➔

Taiksonprojects.blogspot.com
Controlador Proporcional Integral Derivativo

Taiksonprojects.blogspot.com
Worst bedtime story EVER!

Taiksonprojects.blogspot.com
Proporcional
error=valor_actual-valor_anterior
Salida_proporcional=Ganancia_proporcional*error

Taiksonprojects.blogspot.com
Integral
error_acumulado=error_acumulado+
(error*tiempo_entre_muestras)
Salida_integral=Ganancia_integral
*error_acumulado

Taiksonprojects.blogspot.com
Derivativo
velocidad_error=(errorvelocidad_error)/Tiempo_entre_muestras
• Salida_derivada=Ganancia_derivada*velo
cidad_error

Taiksonprojects.blogspot.com
PID anidado
Ángulo

Controlador P

Velocidad
angular

Controlador PID

Salida al puerto
serie
Taiksonprojects.blogspot.com
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
/dev/ttyS0

PIC16f876A

ESC
Motores

Taiksonprojects.blogspot.com
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
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
Hardware de actuación
Controladora electrónica de velocidad (ESC)

Motores sin escobillas. “Outrunner”.

Taiksonprojects.blogspot.com
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
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
DEMO
Taiksonprojects.blogspot.com
Gracias!

David Meléndez Cano
@TaiksonTexas

Taiksonprojects.blogspot.com

Taiksonprojects.blogspot.com

Más contenido relacionado

Similar a Trash Robotic Router Platform (TRRP)

Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandbox
Tensor
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandbox
Tensor
 
Cuckoosandbox
CuckoosandboxCuckoosandbox
Cuckoosandbox
Tensor
 
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+DinLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
inLabFIB
 
Usando Django con Docker
Usando Django con DockerUsando Django con Docker
Usando Django con Docker
Ernesto Crespo
 
7 curso
7 curso7 curso
7 curso
ERWIN AGUILAR
 
Taller: Exploración de redes con Nmap
Taller: Exploración de redes con NmapTaller: Exploración de redes con Nmap
Taller: Exploración de redes con Nmap
Websec México, S.C.
 
Migrando CI a Docker
Migrando CI a DockerMigrando CI a Docker
Migrando CI a Docker
Patxi Gortázar
 
Winpic800tutorial_manual de usuarioa.pdf
Winpic800tutorial_manual de usuarioa.pdfWinpic800tutorial_manual de usuarioa.pdf
Winpic800tutorial_manual de usuarioa.pdf
luissaravia846
 
Cobertura de código con test funcionales para superhéroes
Cobertura de código con test funcionales para superhéroesCobertura de código con test funcionales para superhéroes
Cobertura de código con test funcionales para superhéroes
atSistemas
 
Winpic800 v12-1224805612350398-8
Winpic800 v12-1224805612350398-8Winpic800 v12-1224805612350398-8
Winpic800 v12-1224805612350398-8
Ery Kñz
 
Actividadno1seguridadperimetral -conversion-gate01
Actividadno1seguridadperimetral -conversion-gate01Actividadno1seguridadperimetral -conversion-gate01
Actividadno1seguridadperimetral -conversion-gate01
pattala01
 
Seguridad perimetral - Mikrotik Firewall
Seguridad perimetral - Mikrotik FirewallSeguridad perimetral - Mikrotik Firewall
Seguridad perimetral - Mikrotik Firewall
Vanesa Rodríguez Percy
 
Manual Mikrotik
Manual Mikrotik Manual Mikrotik
Manual Mikrotik Marco Arias
 
#opendatasev Un caso practico de extraccion y exposición de datos
#opendatasev Un caso practico de extraccion y exposición de datos#opendatasev Un caso practico de extraccion y exposición de datos
#opendatasev Un caso practico de extraccion y exposición de datos
Ildefonso Montero Pérez
 
Comandos de red
Comandos de redComandos de red
Comandos de red
Benjamín Zepeda
 
Automatizando el aprendizaje basado en datos
Automatizando el aprendizaje basado en datosAutomatizando el aprendizaje basado en datos
Automatizando el aprendizaje basado en datos
Manuel Martín
 
Introducción a Vagrant
Introducción a VagrantIntroducción a Vagrant
Introducción a Vagrant
Raúl Uranga
 
Practicas Laboratorio
Practicas LaboratorioPracticas Laboratorio
Practicas Laboratorio
juan jose oviedo torres
 

Similar a Trash Robotic Router Platform (TRRP) (20)

Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandbox
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandbox
 
Cuckoosandbox
CuckoosandboxCuckoosandbox
Cuckoosandbox
 
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+DinLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
 
Usando Django con Docker
Usando Django con DockerUsando Django con Docker
Usando Django con Docker
 
MANUAL POO
MANUAL POOMANUAL POO
MANUAL POO
 
7 curso
7 curso7 curso
7 curso
 
Taller: Exploración de redes con Nmap
Taller: Exploración de redes con NmapTaller: Exploración de redes con Nmap
Taller: Exploración de redes con Nmap
 
Migrando CI a Docker
Migrando CI a DockerMigrando CI a Docker
Migrando CI a Docker
 
Winpic800tutorial_manual de usuarioa.pdf
Winpic800tutorial_manual de usuarioa.pdfWinpic800tutorial_manual de usuarioa.pdf
Winpic800tutorial_manual de usuarioa.pdf
 
Cobertura de código con test funcionales para superhéroes
Cobertura de código con test funcionales para superhéroesCobertura de código con test funcionales para superhéroes
Cobertura de código con test funcionales para superhéroes
 
Winpic800 v12-1224805612350398-8
Winpic800 v12-1224805612350398-8Winpic800 v12-1224805612350398-8
Winpic800 v12-1224805612350398-8
 
Actividadno1seguridadperimetral -conversion-gate01
Actividadno1seguridadperimetral -conversion-gate01Actividadno1seguridadperimetral -conversion-gate01
Actividadno1seguridadperimetral -conversion-gate01
 
Seguridad perimetral - Mikrotik Firewall
Seguridad perimetral - Mikrotik FirewallSeguridad perimetral - Mikrotik Firewall
Seguridad perimetral - Mikrotik Firewall
 
Manual Mikrotik
Manual Mikrotik Manual Mikrotik
Manual Mikrotik
 
#opendatasev Un caso practico de extraccion y exposición de datos
#opendatasev Un caso practico de extraccion y exposición de datos#opendatasev Un caso practico de extraccion y exposición de datos
#opendatasev Un caso practico de extraccion y exposición de datos
 
Comandos de red
Comandos de redComandos de red
Comandos de red
 
Automatizando el aprendizaje basado en datos
Automatizando el aprendizaje basado en datosAutomatizando el aprendizaje basado en datos
Automatizando el aprendizaje basado en datos
 
Introducción a Vagrant
Introducción a VagrantIntroducción a Vagrant
Introducción a Vagrant
 
Practicas Laboratorio
Practicas LaboratorioPracticas Laboratorio
Practicas Laboratorio
 

Más de navajanegra

Cryptography: The mathematics of secret codes is a game
Cryptography: The mathematics of secret codes is a gameCryptography: The mathematics of secret codes is a game
Cryptography: The mathematics of secret codes is a gamenavajanegra
 
Automated and unified opensource web application testing
Automated and unified opensource web application testingAutomated and unified opensource web application testing
Automated and unified opensource web application testingnavajanegra
 
Cool Boot: It's cool!
Cool Boot: It's cool!Cool Boot: It's cool!
Cool Boot: It's cool!navajanegra
 
El lado oscuro de TOR: La Deep Web
El lado oscuro de TOR: La Deep WebEl lado oscuro de TOR: La Deep Web
El lado oscuro de TOR: La Deep Webnavajanegra
 
Telephaty: Harness the code
Telephaty: Harness the codeTelephaty: Harness the code
Telephaty: Harness the codenavajanegra
 
Economías criptográficas
Economías criptográficasEconomías criptográficas
Economías criptográficasnavajanegra
 
Where is my money? The evolution of Internet fraud
Where is my money? The evolution of Internet fraudWhere is my money? The evolution of Internet fraud
Where is my money? The evolution of Internet fraudnavajanegra
 
Divulgación del trabajo de la Brigada de Investigación Tecnológica
Divulgación del trabajo de la Brigada de Investigación TecnológicaDivulgación del trabajo de la Brigada de Investigación Tecnológica
Divulgación del trabajo de la Brigada de Investigación Tecnológicanavajanegra
 
Adivina quién viene a CDNear esta noche
Adivina quién viene a CDNear esta nocheAdivina quién viene a CDNear esta noche
Adivina quién viene a CDNear esta nochenavajanegra
 
1100101001001110
11001010010011101100101001001110
1100101001001110navajanegra
 
Anteproyecto del código procesal penal: Análisis Técnico
Anteproyecto del código procesal penal: Análisis TécnicoAnteproyecto del código procesal penal: Análisis Técnico
Anteproyecto del código procesal penal: Análisis Técniconavajanegra
 
Fuzzing browsers by generating malformed HTML/HTML5
Fuzzing browsers by generating malformed HTML/HTML5Fuzzing browsers by generating malformed HTML/HTML5
Fuzzing browsers by generating malformed HTML/HTML5navajanegra
 
¿Nadie piensa en las DLLs?
¿Nadie piensa en las DLLs?¿Nadie piensa en las DLLs?
¿Nadie piensa en las DLLs?navajanegra
 
SDR: Lowcost receiving in radio communications
SDR: Lowcost receiving in radio communicationsSDR: Lowcost receiving in radio communications
SDR: Lowcost receiving in radio communicationsnavajanegra
 
LIOS: a tool for IOS Forensic
LIOS: a tool for IOS ForensicLIOS: a tool for IOS Forensic
LIOS: a tool for IOS Forensicnavajanegra
 
A brief introduction to reversing code with OllyDbg and other tools
A brief introduction to reversing code with OllyDbg and other toolsA brief introduction to reversing code with OllyDbg and other tools
A brief introduction to reversing code with OllyDbg and other tools
navajanegra
 
HASH COLLISIONS: Welcome to the (un)real World!
HASH COLLISIONS: Welcome to the (un)real World!HASH COLLISIONS: Welcome to the (un)real World!
HASH COLLISIONS: Welcome to the (un)real World!
navajanegra
 
Show me your intents
Show me your intentsShow me your intents
Show me your intents
navajanegra
 

Más de navajanegra (20)

Cryptography: The mathematics of secret codes is a game
Cryptography: The mathematics of secret codes is a gameCryptography: The mathematics of secret codes is a game
Cryptography: The mathematics of secret codes is a game
 
Automated and unified opensource web application testing
Automated and unified opensource web application testingAutomated and unified opensource web application testing
Automated and unified opensource web application testing
 
Offensive MitM
Offensive MitMOffensive MitM
Offensive MitM
 
Cool Boot: It's cool!
Cool Boot: It's cool!Cool Boot: It's cool!
Cool Boot: It's cool!
 
El lado oscuro de TOR: La Deep Web
El lado oscuro de TOR: La Deep WebEl lado oscuro de TOR: La Deep Web
El lado oscuro de TOR: La Deep Web
 
Telephaty: Harness the code
Telephaty: Harness the codeTelephaty: Harness the code
Telephaty: Harness the code
 
Economías criptográficas
Economías criptográficasEconomías criptográficas
Economías criptográficas
 
Where is my money? The evolution of Internet fraud
Where is my money? The evolution of Internet fraudWhere is my money? The evolution of Internet fraud
Where is my money? The evolution of Internet fraud
 
Divulgación del trabajo de la Brigada de Investigación Tecnológica
Divulgación del trabajo de la Brigada de Investigación TecnológicaDivulgación del trabajo de la Brigada de Investigación Tecnológica
Divulgación del trabajo de la Brigada de Investigación Tecnológica
 
Adivina quién viene a CDNear esta noche
Adivina quién viene a CDNear esta nocheAdivina quién viene a CDNear esta noche
Adivina quién viene a CDNear esta noche
 
1100101001001110
11001010010011101100101001001110
1100101001001110
 
Anteproyecto del código procesal penal: Análisis Técnico
Anteproyecto del código procesal penal: Análisis TécnicoAnteproyecto del código procesal penal: Análisis Técnico
Anteproyecto del código procesal penal: Análisis Técnico
 
Zeus-R-Us
Zeus-R-UsZeus-R-Us
Zeus-R-Us
 
Fuzzing browsers by generating malformed HTML/HTML5
Fuzzing browsers by generating malformed HTML/HTML5Fuzzing browsers by generating malformed HTML/HTML5
Fuzzing browsers by generating malformed HTML/HTML5
 
¿Nadie piensa en las DLLs?
¿Nadie piensa en las DLLs?¿Nadie piensa en las DLLs?
¿Nadie piensa en las DLLs?
 
SDR: Lowcost receiving in radio communications
SDR: Lowcost receiving in radio communicationsSDR: Lowcost receiving in radio communications
SDR: Lowcost receiving in radio communications
 
LIOS: a tool for IOS Forensic
LIOS: a tool for IOS ForensicLIOS: a tool for IOS Forensic
LIOS: a tool for IOS Forensic
 
A brief introduction to reversing code with OllyDbg and other tools
A brief introduction to reversing code with OllyDbg and other toolsA brief introduction to reversing code with OllyDbg and other tools
A brief introduction to reversing code with OllyDbg and other tools
 
HASH COLLISIONS: Welcome to the (un)real World!
HASH COLLISIONS: Welcome to the (un)real World!HASH COLLISIONS: Welcome to the (un)real World!
HASH COLLISIONS: Welcome to the (un)real World!
 
Show me your intents
Show me your intentsShow me your intents
Show me your intents
 

Trash Robotic Router Platform (TRRP)