Joanillo Blog. Maker, Open source and hardware http://www.joanillo.org Programación y proyectos maker con herramientas libres - Programació i projectes maker amb eines lliures Tue, 21 Jan 2020 15:31:57 +0000 es hourly 1 http://wordpress.org/?v=3.2.1 Block (or book) stacking problem http://www.joanillo.org/?p=2130 http://www.joanillo.org/?p=2130#comments Tue, 21 Jan 2020 15:02:30 +0000 joanillo http://www.joanillo.org/?p=2130 ...Read the Rest]]> Esta mañana he resuelto el problema de apilar libros (o bloques). Se trata de estudiar bajo qué condiciones puedo apilar bloques (de longitud L) de manera que los vaya desplazando un respecto al anterior, de manera que no caigan. Cuál es la condición límite para que no caigan? Con bloques de longitud L puedo conseguir un desplazamiento de longitud L?

Este problema recuerdo haberme peleado con él (y creo que en su día no lo llegué a solucionar) el verano de 1989 en Bagà, pues el problema estaba enunciado en el Schaum de Mecánica Teórica (Murray R, Spiegel). He buscado el libro (lo he encontrado en pdf en la red, seguro que lo tengo en una estantería), y en la foto se ve el enunciado del libro en la pág 249. NOTA: La figura que enseña el libro está mal y genera confusión: es al revés, el bloque de arriba es el que sobresale la mitad, y los bloques de abajo son los que están más juntos (la figura del llibre tiene un apilamiento claramente inestable, los bloques segur que caen porque el centro de gravedad está fuera del bloque de más abajo).

En aquella época no existía Internet, o sea que uno se peleaba con el problema solo, sin poder pedir ayuda. Ahora lo he resuelto (solito, hay que decirlo, ver el pdf en los enlaces de abajo), y después de resolverlo he buscado información complementaria que he encontrado de lo más interesante (videos de Youtube incluidos), ver los enlaces.

La solución. Todo el sistema de los blocs 1…N-1 que están sobre el bloque N no caen si su centro de masas cae justo en el extremo del bloque N. Se puede resolver de forma iterativa: el bloque 1 se aguanta sobre el bloque 2 si lo ponemos en la mitad, L/2. El sistema bloques 1+2 se aguanta sobre el bloque 3 si el centro de masas de los bloques 1+2 está justo en el extremo del bloque 3. Vamos poniendo bloques, y vamos calculando los centros de masas, y vamos viendo cuál es la condición de equilibrio. Y al final (ver la solución) se encuentra que el centro de masas es una serie armónica:

Xi+1cm = L/2 * (1 + 1/2 + 1/3 + … + 1/i)

Y ahora un poco de matemáticas: la serie armónica es divergente (aunque diverge muy lentamente). Lo que significa que se puede conseguir un desplazamiento teórico tan grande como se quiera (vere el video del enlace, donde se consigue un desplazamiento bastante grande).

Ahora sólo me falta hacer la experiencia con Maria y Pere, a ver si lo podemos hacer este mes. Si lo conseguimos, colgaremos también el video.

Enlaces:

]]>
http://www.joanillo.org/?feed=rss2&p=2130 0
Visualització de rutes GPX amb Relive. Bagà-Gréixer-Empedrats http://www.joanillo.org/?p=2123 http://www.joanillo.org/?p=2123#comments Sun, 05 Jan 2020 10:19:25 +0000 joanillo http://www.joanillo.org/?p=2123 ...Read the Rest]]> Jordi me ha comentado esta aplicación muy chula para visualizar en 3D las rutas de bici: relive. Quiero mirar en este post si es fácil incrustar el video que se genera de la ruta dentro de una página web como puede ser este bloc. Pues sí, es fácil. El contenedor sencillamente es un iframe como cuando incrusto un video de Youtube. I por otra parte se necesita la URL del video. Esta url se consigue mirando el código fuente de la página de Relive, y buscar por contentURL. Por ejemplo:

itemProp=”contentURL” content=”https://www.relive.cc/view/vXOnEkVyQBv/mp4?x-ref=sc”

y obtengo la url:

https://www.relive.cc/view/vXOnEkVyQBv/mp4?x-ref=sc

El resultado es muy espectacular. En este caso se trata de una excursión que hice eb 2013, y la gracia estaba en bajar en bici por los Empedrats. Como era Semana Santa y bajaba mucha agua del fundido de la nieve, fue una aventura divertida. Imposible bajar en bici por los Empedrats, y tuve que hacer muchos equilibrios para no mojarme.

]]>
http://www.joanillo.org/?feed=rss2&p=2123 0
Recopilación de proyectos Aumentame EDU 2018 http://www.joanillo.org/?p=2117 http://www.joanillo.org/?p=2117#comments Mon, 09 Dec 2019 22:36:11 +0000 joanillo http://www.joanillo.org/?p=2117 ...Read the Rest]]>

En el siguiente enlace se recogen una serie de experiencias educativas relacionadas con la RA y RV. Me ha interesado el concepto de Juego Serio, y he hecho la presentación con la herramienta genial.ly sobre esta experiencia educativa.

Cuando acabe el curso, con un poco de calma, quiero leerme todo este pdf, porque creo que me dará una visión más general sobre las posibilidades de la RA y RV en el aula.

]]>
http://www.joanillo.org/?feed=rss2&p=2117 0
Curs Realitat Virtual a l’Aula. Programació d’una unitat didàctica http://www.joanillo.org/?p=2109 http://www.joanillo.org/?p=2109#comments Mon, 09 Dec 2019 20:04:33 +0000 joanillo http://www.joanillo.org/?p=2109 ...Read the Rest]]> Ya estamos acabando el curso de Realidad Virtual en el Aula. He tenido que programar una unidad didáctica para hacerla en clase, y he aprovechado el trabajo que he estado haciendo este trimestre relacionado con la programación con OpenStreetMap.

Mis alumnos de Javascript hacen aplicaciones web. El tema es: se puede considerar una aplicación web como Realitdad Aumentada? Creemos que sí, todo es combinar elementos de realidad virtual con elementos reales, com pueden ser fotos.

He diseñado una programación didáctica que se puede realizar en la UF2 del módulo 06 de DAW (Javascript). Se trata de hacer una aplicación web que, partiendo de la solución del Problema del Viajante de Comercio, sirva para conocer los árboles singulares de Barcelona siguiendo una ruta óptima. Todo esto amenizado con una aplicación web suficientemente atractiva.

]]>
http://www.joanillo.org/?feed=rss2&p=2109 0
50 años http://www.joanillo.org/?p=2105 http://www.joanillo.org/?p=2105#comments Tue, 03 Dec 2019 17:58:22 +0000 joanillo http://www.joanillo.org/?p=2105 Pues aquí estamos, 50 tacos. I además, el pasado septiembre este blog cumplió 10 años, otra cosa a celebrar. A nadie le interesa, pero da igual, yo sigo escribiendo, yo voy a la mía, y siempre aprendiendo.

]]>
http://www.joanillo.org/?feed=rss2&p=2105 0
Ruta por los árboles singulares de Barcelona (minimizando la distancia) http://www.joanillo.org/?p=2099 http://www.joanillo.org/?p=2099#comments Tue, 26 Nov 2019 18:37:26 +0000 joanillo http://www.joanillo.org/?p=2099 ...Read the Rest]]> El problema del viajante de comercio (traveling salesman problem) es un problema clásico de la algorítmica: se trata de pasar por una serie de puntos, sin repetir ninguno, y minimizando la distancia recorrida. Hace unas pocas semanas que importé los árboles singulares de Barcelona a OpenStreetMaps, y creo que es una buena actividad didáctica para conocer los árboles de la ciudad hacer una ruta por unos cuantos de estos árboles.

Para hacerlo más interesante, podemos plantearnos el problema de hacer un recorrido que minimice la distancia, pasando por todos los árboles, y que vuelva al punto de partida. Estuve buscando diferentes implementaciones con Python que resolvieran el problema, hasta que encontré una que satisfacía mi restricción de volver al punto de partida.

Sobre esta solución he hecho alguna modificación para que me genere un fichero JSON con la solución. Finalmente, hemos de pintar sobre un mapa OSM nuestros punts (nodos); trazar una línea recta entre los puntos; y añadir un label-texto informativo sobre estos puntos. El resultado se puede ver en la imagen.

Evidentmente hemos hecho unas simplificaciones: la distancia mínima entre dos puntos es la línea recta, pero por la ciudad no podemos ir en línea recta, y además pueden haber subidas y bajadas. Pero como ejercicio didáctico creo que es interesante.

Aquí en Catalunya son populares las Carreras de Orientación. Creo que se podría aprovechar estas actividades en el tiempo de ocio y añadir una capa de conocimiento, como puede ser conocer los árboles, conocer monumentos, etc. Creo que para los niños y jóvenes puede ser una actividad divertida.

Referencias:

]]>
http://www.joanillo.org/?feed=rss2&p=2099 0
Libro: Elementary Mechanics Using Python http://www.joanillo.org/?p=2091 http://www.joanillo.org/?p=2091#comments Tue, 26 Nov 2019 16:14:23 +0000 joanillo http://www.joanillo.org/?p=2091 ...Read the Rest]]> Tengo un nuevo reto para lo que queda de 2019 y para el primer semestre del 2020. He empezado a leer el libro Elementary Mechanics Using Python: A Modern Course Combining Analytical and Numerical Techniques, de Anders Malthe-Sørenssen. Es todo un curso de física, y combina de manera comprensible los ejemplos clásicos de movimiento, fuerzas, energía,… con sus soluciones numéricas, utilizando las libreriías matemáticas y de gráficos de Python.

Se trata de implementar todos los ejemplos del libro a código Python. No he visto ningún enlace para descargar todo el código, en cualquier caso, los ejemplos quiero adaptarlos y hacérmelos míos. He empezado por el ejemplo del peso suspendido de un muelle, que como todo el mundo sabe la solución del movimiento es sinusoidal entorno al punto de equilibrio, la velocidad es cero en los puntos máximo y mínimo, y la velocidad es máxima en el punto de equilibrio. Este ejemplo se explica en el apartado 5.7, que habla de fuerzas, y no basta con copiar y pegar el código, sino que lo he tenido que adaptar. Esta es mi solución:

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np

# Initialize
m = 1.0
# kg
k = 100.0 # N/m
v0 = 1.0
# in m/s
time = 2.0 # s
g = 9.8 # m/s^2

# Numerical setup
dt = 0.0001 # s
n = int(round(time/dt))
t = np.zeros(n,float)
y = np.zeros(n,float)
v = np.zeros(n,float)
# Initial values
y[0] = 0.0
v[0] = v0
# Simulation loop
for i in range(n-1):
F = -k*y[i] – m*g
a = F/m
v[i+1] = v[i] + a*dt
y[i+1] = y[i] + v[i+1]*dt
t[i+1] = t[i] + dt

fig = plt.figure()
fig.suptitle(u”Objecte suspès d’una molla”)
plot1 = fig.add_subplot(211)
#plot1.set_xlabel(‘t [s]‘)
plot1.set_ylabel(‘y [m]‘)
plot1.xaxis.grid()
plot1.plot(t,y)
plot2 = fig.add_subplot(212)
plot2.set_xlabel(‘t [s]‘)
plot2.set_ylabel(‘v [m/s]‘)
#plot1.grid(axis=’y')
#plt.grid(b=True, which=’minor’, color=’#666666′, linestyle=’-')
plot2.xaxis.grid()
plot2.plot(t,v)

for i in range(10, n-1, 400):
plot1.plot(t[i],y[i],’ob’)
plot2.plot(t[i],v[i],’ob’)

plt.show()

Estos son los capítulos y temas que se tratan en el libro:

4. Motion in One Dimension .
5. Forces in One Dimension .
6. Motion in Two and Three Dimensions
7. Forces in Two and Three Dimensions
8. Constrained Motion
9. Forces and Constrained Motion
10. Work
11. Energy
12. Momentum, Impulse, and Collisions
13. Multiparticle Systems
14. Rotational Motion
15. Rotation of Rigid Bodies
16. Dynamics of Rigid Bodies

]]>
http://www.joanillo.org/?feed=rss2&p=2091 0
Importaciones del Catastro en OSM http://www.joanillo.org/?p=2083 http://www.joanillo.org/?p=2083#comments Tue, 05 Nov 2019 16:19:29 +0000 joanillo http://www.joanillo.org/?p=2083 ...Read the Rest]]> Yo soy nuevo en esto de OpenStreetMaps. Pero por la gente que lleva tiempo, veo que en las listas de correo se habla bastante de importaciones del Catastro. Importar el Catastro es importante porque se trata de unir la información geométrica de los edificios con otras capas de información, concretamente la dirección postal de un edificio. Si se consigue esto a nivel general, servicios como Nominatim, que proporcionan geocoding (resolver una dirección postal a coordenadas geográficas; o al revés), será muy útil (como lo es el mismo servicio que proporciona Google Maps).

Vamos a hacer un caso concreto: Bagà, donde no tenemos la información del catastro. Haré la prueba de un edificio de Bagà, por ejemplo Carrer del Raval 13 Bagà. A partir de la información del edificio donde vivo (en Barcelona, donde sí que hay incorporada la información del catastro), veo cómo es el formato de la información que hay que incorporar:

addr:housenumber=13
addr:postcode=08695
addr:street=Carrer del Raval
type=multipolygon

Por tanto, modifico en OSM el builiding en cuestión y añado esta referencia.

Ahora ya podemos ir a Nominatim, y buscar por

Carrer del Raval 13 Bagà

Y lo encuentra! Aquí se ve la importancia de añadir la información del Catastro en OSM.

También podemos hacer la consulta inversa, a partir de las coordenadas encontrar la dirección postal:

https://nominatim.openstreetmap.org/reverse?format=xml&lat=42.25255&lon=1.86283&zoom=18&addressdetails=1

Y el resultado (en formato XML):



13, Carrer del Raval, Bagà, Berguedà, Barcelona, Catalunya, 08695, Espanya

13

Carrer del Raval Bagà
Berguedà
Catalunya

08695 Espanya
es

]]>
http://www.joanillo.org/?feed=rss2&p=2083 0
Vista desde el Refugio de Rebost (realidad virtual) http://www.joanillo.org/?p=2076 http://www.joanillo.org/?p=2076#comments Sun, 03 Nov 2019 22:46:15 +0000 joanillo http://www.joanillo.org/?p=2076 ...Read the Rest]]>

En el curso de Realidad Virtual nos han hecho hacer una pequeña aplicación de realidad virtual. Entre las diferentes propuestas, RoundMe parece ser una opción fácil y rápida.

Ante todo hemos de descargar de Google Maps una fotografía panorámica, y hay que convertirla como está explicado en el tutorial en un panorama apto para ser importado a RoundMe.

RoundMe me ha parecido bastante inestable. De hecho, no podía colgar mi panorama a Public, me daba un error de upload. De hecho, hice hasta 4 pruebas diferentes el viernes pasado, hasta que lo dejé para después del fin de setmana. Y la sorpresa de hoy domingo noche ha sido que estos 4 panoramas ya están como Publics. Bueno, en fin…

Como ejemplo he encontrado una foto del refugio de Rebost (la foto no es mía, la he cogido de alguien que la ha colgado en Google Maps), y desde el refugio puedo identificar fácilmente unas montañas y pasisajes que me son muy familiares.

]]>
http://www.joanillo.org/?feed=rss2&p=2076 0
Parkings de bicicletas en Barcelona (openstreetmap) http://www.joanillo.org/?p=2055 http://www.joanillo.org/?p=2055#comments Thu, 31 Oct 2019 16:40:01 +0000 joanillo http://www.joanillo.org/?p=2055 ...Read the Rest]]> En este caso estamos hablando de 3000 puntos. Ha sido un poco complicado hacer la importación, porque había unos 400 puntos que ya estaban introducidos. Pero de estos, unos 150 no existen en la base de datos del ayuntamiento, que se supone que está actualizada. Somos conscientes de que podría haber parkings de uso privado.

En cualquier caso, como se trata de una importación de 3000 puntos, no se puede ir uno por uno. Realmente, no me había dado cuenta de que habían tantos puntos de parking de bicis. Yo, como voy con la Brompton, no los necesito, la bici siempre va conmigo.

{{geocodeArea:”Barcelona”}}->.boundaryarea;
(
node["amenity"="bicycle_parking"](area.boundaryarea);
);
out meta;

{{style:
node[amenity=bicycle_parking] {
icon-image: url(‘http://free-icon-rainbow.com/i/icon_01944/icon_019440_256.png’);
icon-width: 20;
icon-height: 20;
}
}}

]]>
http://www.joanillo.org/?feed=rss2&p=2055 0