Arxiu de l'autor: joanillo

web de Rutes BTT, nova versió (v4)

Fa anys que publico les excursions amb BTT al subdomini rutesgps.joanillo.org.

Tot va començar amb la programació de la API de Google Maps. Més endavant vaig migrar a OpenStreetMap. I durant aquest temps he anat afegint funcionalitats. També, durant aquests anys sempre he fet amb els alumnes pràctiques de geolocalització, en el marc de l’assignatura de Javascript de DAW.

Així que ara he afegit unes quantes funcionalitats més: els videos de Relive; els punts d’interès; icones d’inici i final de ruta; 3 capes de visualització del terreny; aspectes de disseny; etc. Ara, cada cop que afegeixi una ruta, tinc un protocol consistent per tal de no cometre errors.

La passada tardor em vaig comprar un GPS de ciclisme, el Bryton 450E (que està basat en mapes de OpenStreetMaps), i tot i les seves limitacions, li estic treient el màxim profit. I tot plegat no tindria cap sentit si això no es traduís en kilòmetres de bicicleta i disfrutar de la natura.

OpenCV: detectar cercles

Un cop ja sabem detectar les rectes, ara fem la part de detectar els cercles. El OpenCV ens dóna el cercle de millor ajustament, amb el seu centre i radi. Per tant només ens cal aplicar l’algorisme de calcular l’error d’ajustament, com s’explica en l’anterior post.

Com a fitxer d’entrada tenim un CSV amb el nom dels participants, el nom del fitxer de les rectes, i el nom del fitxer dels cercles. Com a sortida tenim el fitxer resultats.txt amb les puntuacions obtingudes per cadascun dels participants.

Així doncs, ara només cal portar-ho a la pràctica. Espero que sigui aviat.

Mesurar la rodonesa d’un cercle

Després de resoldre el problema de mesurar la linialitat d’una recta, ara toca mesurar la rodonesa d’un cercle. En la imatge hi ha una captura de la solució que hem implementat.

Hi ha bastanta literatura sobre el tema, però he preferit cercar la solució pel meu compte. Donat un cercle, openCV ens dóna ja el cercle de millor ajustament, amb el centre i el radi. La primera idea és recórrer tots els punts del cercle i fer el sumatori de totes les diferències entre el punt i el radi. El valor dóna una bona idea de com de bo és el cercle, en termes absoluts. Però si ara escalem x2 o per x0.5 el nostre cercle, els resultats seran diferents. Per tant, no he de cercar un error absolut, sinó un error relatiu.

La segona idea és mesurar àrees. Concretament, el quocient entre la diferència d’àrees entre el cercle dibuixat i el cercle aproximat, dividit per l’àrea del cercle. Com es veu en el paper, ara sí que obtenim un valor relatiu de la rodonesa del cercle. Una cosa que hem de tenir en compte és que quan sumem àrees, hem d’agafar el valor absolut de la diferència, per tal de què no hi hagi cancel·lacions.

Com més s’aproxima a 0 el valor, més bo és el cercle. Si el valor el resto de 1, aleshores el cercle perfecte val R=1, i R=0.98 no seria tan bo. Ara falta implementar-ho en el meu programa.

Tornem amb el OpenCV: detectar rectes

Després d’un temps sense fer res amb OpenCV, reprenc el projecte antic de l’aplicació de les rectes i cercles. M’explico, es tracta de fer un concurs per a nens per avaluar si són capaços de fer rectes i cercles perfectes. El problema és que ara la Maria i el Pere ja tenen 14 i 10 anys, potser ja són una mica ganàpies per això. Però cap problema, ho farem igualment amb d’altres nens més petits que tenim pel voltant.

Continuaré programant amb C++, per allò de programar més ràpid, però sóc conscient de què la mateixa aplicació la podríem fer amb Python, llenguatge amb què he programat bastant últimament.

Mostrem una captura on es veu clarament com detectem les rectes, dibuixem la recta de millor ajustament, i mostrem el valor de la correlació que ens dóna el valor de com és de bona la recta dibuixada. El següent pas serà fer el mateix amb cercles.

Block (or book) stacking problem

Aquest matí he fet el problema d’apilar llibres (o blocs). Es tracta d’estudiar sota quines condicions puc apilar blocs (de longitud L) de manera que els vagi desplaçant un respecte l’anterior, de manera que no caiguin. Quina és la condició límit per tal de què no caiguin? Amb blocs de longitud L puc aconseguir un desplaçament de longitud L?

Aquest problema recordo haver-m’hi barallat (i crec que en el seu dia no el vaig solucionar) l’estiu de 1989 a Bagà, doncs el problema estava enunciat en el Schaum de Mecànica Teòrica (Murray R, Spiegel). He cercat el llibre (l’he trobat en pdf a la xarxa, segur que el tinc en una estanteria), i a la foto es veu l’enunciat del llibre en la pàg 249. NOTA: Val a dir que la figura que ensenya el llibre està malament i que genera confusió: és al revés, el bloc de dalt és el que sobresurt la meitat, i els blocs de baix són els que estan més junts (la figura del llibre té un apilament clarament inestable, els blocs segur que cauen perquè el centre de gravetat està fora del bloc de més a sota).

En aquella època no existia Internet, o sigui que m’hi vaig barallar sense poder demanar ajuda. Ara l’he resolt (tot sol, va a dir, veure el pdf en els enllaços de sota), i després de resoldre’l he cercat informació complementària que he trobat d’allò més interessant (videos de Youtube inclosos), veure els enllaços.

La solució. Tot el sistema dels blocs 1…N-1 que estan sobre el bloc N no cauen si el seu centre de masses cau just en l’extrem del bloc N. Es pot resoldre de forma iterativa: el bloc 1 s’aguanta sobre el bloc 2 si el posem a la meitat, L/2. El sistema blocs 1+2 s’aguanta sobre el bloc 3 si el centre de masses dels blocs 1+2 està just en l’extrem del bloc 3. Anem posant blocs, i anem calculant els centres de masses, i anem veient quina és la condició d’equilibri. I al final (veure la solució) es troba que el centre de masses és una sèrie harmònica:

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

I ara una mica de matemàtiques: la sèrie harmònica és divergent (encara que divergeix molt lentament). La qual cosa significa que es pot aconseguir un desplaçament teòric tan gran com es vulgui (veure el video de l’enllaç, on s’aconsegueix un desplaçament bastant gran).

Ara només em falta fer l’experiència amb la Maria i el Pere, a veure si ho podem fer aquest mes. Si ho aconseguim, penjarem també el video.

Enllaços:

Visualización de rutas GPX con Relive. Bagà-Gréixer-Empedrats

El Jordi m’ha comentat aquesta aplicació molt xul·la per visualitzar amb 3D les rutes de bici: relive. Vull mirar en aquest post si és fàcil incrustar el video que es genera de la ruta dins d’una pàgina web com ara és aquest bloc. Doncs sí, és fàcil. El contenidor senzillament és un iframe com quan incrusto un video de Youtube. I d’altra banda es necessita la URL del video. Aquesta url s’aconsegueix mirant el codi font de la pàgina de Relive, i cercar per contentURL. Per exemple:

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

i obtinc la url:

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

El resultat és molt espectacular. En aquest cas es tracta d’una excursió que vaig fer el 2013, i la gràcia estava en baixar en bici pels Empedrats. Com que era Setmana Santa i baixava molta aigua de la fosa de neu, va ser una bona aventura. No cal dir que baixar en bici pels Empedrats era impracticable i vaig haver de fer molts equilibris per no mullar-me.

Recull de projectes Aumentame EDU 2018

En el següent enllaç es recullen un seguit d’experiències educatives relacionades amb la RA i RV. M’ha interessat el concepte de Joc Seriós, i he fet la presentació amb l’eina genial.ly sobre aquesta experiència educativa.

Quan acabi el curs, amb una mica de calma, vull llegir-me tot aquest pdf, perquè crec que em donarà una visió més general sobre les possibilitats de la RA i RV a l’aula.

Curs Realitat Virtual a l’Aula. Programació d’una unitat didàctica

Ja estem acabant el curs de Realitat Virtual a l’Aula. He hagut de programar una unitat didàctica per fer-la a classe, i he aprofitat la feina que he estat fent aquest trimestre sobre la programació amb OpenStreetMap.

Els meus alumnes de Javascript fan aplicacions web. El tema és: es pot considerar una aplicació web com a Realitat Augmentada? Creiem que sí, tot és combinar elements de realitat virtual amb elements reals, com ara fotos.

He dissenyat una programació didàctica que es pot realitzar a la UF2 del mòdul 06 de DAW (Javascript). Es tracta de fer una aplicació web que, partint de la solució del Problema del Viatjant de Comerç, serveix per conèixer els arbres singulars de Barcelona seguint una ruta òptima. Tot això amenitzat amb una aplicació web suficientment atractiva.

50 anys

Doncs aquí estem, 50 tacos. I a més al setembre aquest bloc va complir 10 anys, un altre aniversari. A ningú li interessa, però tant se val, jo vaig escrivint, jo vaig a la meva i sempre aprenent.

Ruta pels arbres singulars de Barcelona (minimitzant la distància)

El problema del viatjant de comerç (traveling salesman problem) és un problema clàssic de l’algorísmica: es tracta de passar per una sèrie de punts, sense repetir-ne cap, i minimitzant la distància recorreguda. Fa unes poques setmanes vaig importar els arbres singulars de Barcelona a OpenStreetMaps, i crec que és una bona activitat didàctica per conèixer els arbres de la ciutat fer una ruta per uns quants d’aquests arbres.

Per fer-ho més interessant, podem plantejar-nos el problema de fer un recorregut que minimitzi la distància, passant per tots els arbres, i que retorni al punt de partida. Vaig estar cercant diferents implementacions amb Python que resolguin el problema, fins que en vaig trobar una que satisfeia la meva restricció de tornar al punt de partida.

Sobre aquesta solució he fet alguna modificació per tal de generar un fitxer JSON amb la solució. Finalment, hem de pintar sobre un mapa OSM els nostres punts (nodes); traçar una línia recta entre els punts; i afegir un label-text informatiu sobre aquests punts. El resultat es pot veure en la imatge.

Evidentment hem fet unes simplificacions: la distància mínima entre dos punts és la línia recta, però per la ciutat no podem anar en línia recta, i a més poden haver-hi pujades i baixades. Però com a exercici didàctic crec que és interessant.

Aquí Catalunya són populars les Curses d’Orientació. Crec que es podria aprofitar aquestes activitats en el lleure i afegir-hi una capa de coneixement, com ara conèixer els arbres, conèixer monuments, etc. Crec que per als joves i infants pot ser una activitat engrescadora.

Referències: