TU ANUNCIO / YOUR PUBLICITY

AQUÍ PODRÍA ESTAR TU ANUNCIO: / HERE COULD BE YOUR AD E-mail

domingo, 23 de febrero de 2014

Walking a road with LIDAR / Recorriendo una carretera con LIDAR

Dada una sucesión de dibujos de planta, alzado y perfiles de una carretera. ¿cómo hacer un vídeo transitando por ella?

Given a sequence of drawings of plan, elevation and sections of a road. How to make a video passing by it?
Fuente Bounded-Roads
En un principio empezamos a pensar en un crear un gif animado apoyándonos en el programa convert de Image Imagick
At first we started thinking about a create an animated gif relying on the convert program Image Imagick.

convert -delay 500 *.png animación.gif

De esta manera está hecho el ejemplo siguiente:
In this way is made the following example:


Claro está que en nuestro caso tenemos:
In our case we have:



Como se puede ver son tremendamente pesadas (para la poca calidad a que hemos tenido que degradarlas). Además hay otro problema y es que este programa no puede respetar el orden que hubiéramos querido. Una aplicación que nos permite controlar el orden es giftedmotion-1.23.jar  (se puede descargar desde su página http://www.onyxbits.de/giftedmotion)

Una solución mejor es utilizar GIMP (se encuentran varios tutoriales fácilmente). Como resumen diremos que se abre GIMP, abrir como capas y guardar como gif.  Ya está así de fácil.

As you can see they are extremely heavy (for the poor quality that we had to degrade). Also another problem is that this program can not respect the order we would have liked. An application that allows us to control the order is GiftedMotion-1.23.jar (you can download from their page http://www.onyxbits.de/giftedmotion

A better solution is to use GIMP (there are several tutorials easily). In summary we can say that GIMP opens, open as layers and save as jpg. Whether it is that easy.

¿Y si queremos un .avi para subir a youTube?
If we want up a avi file to youTube:


Una buena ayuda sería partir de http://www.mikekohn.net/stuff/mandel.php y bajar su programa gif2avi.tar.gz. (seguidos de los típicos paso de descomprimir y make) u optar por la solución de windows. Con la sintaxis:

Una buena ayuda sería partir de http://www.mikekohn.net/stuff/mandel.php y bajar su programa gif2avi.tar.gz. (seguidos de los típicos paso de descomprimir y make) u optar por la solución de windows. Con la sintaxis:

It would be a good help to use the program gif2avi gif2avi.tar.gz http://www.mikekohn.net/stuff/mandel.php and download your program. (followed by the typical steps to unpack and make) or opt for the solution of windows. With the syntax:

        gif2avi <outfile.avi> <directory with gif's> <frames per second>. 

En nuestro ejemplo
In our example:

        convert origen.gif -resize 544x240! destino.gif
        convert destino.gif frames/frame%05d.gif
        gif2avi pelicula.avi /frames 30 


Y se sube a youTube:


FIN. The end

domingo, 16 de febrero de 2014

Changing processor speed automatically if temperature increase ! / ¡ Cómo cambiar la velocidad del procesador automáticamente si aumenta peligrósamente la temperatura

Con este tipo de programas y un portátil Dell que tengo. Éste tiene la mala costumbre de recalentarse si funciona a 1600 MHz y se le hace trabajar duro. Sube hasta los 83ºC y se apaga sólo. Si le modifico la velocidad del procesador a 800 MHz la temperatura baja a los 50ºC.

El problema es que si, por ejemplo, estoy ejecutando un programa pesado de edición de vídeo a baja velocidad el proceso se eterniza y a alta velocidad el ordenador se apaga. 

To do hard woks, I have a Dell laptop that has a bad habit of overheating if it works at 1600 MHz and makes you work hard. Up to 83 ° C and off alone. If I modify the processor speed to 800 MHz low temperature 50 ° C.

The problem is that if I'm running a heavy video editing program on low speed high speed process and eternizes, the computer shuts down.

¿Como mejorar la velocidad sin recaletamientos extremos?.

 How to improve speed without extreme overheating?

Como no he encontrado una buena solución, he mezclado todas y, he creado un script que varía la velocidad del procesador según vaya yendo la temperatura.
Para entenderlo voy a explicar algunos pasos:

Since I have not found a good solution, and I mixed all, I created a script that varies the processor speed as the temperature get going.
To understand I will explain some steps:

El programa "sensors". 

The "sensors" program

Si tecleamos sensors en la consola nos aparecerá algo así:
If you type "sensors" in the console we see something like this:

~$ sensors
Adapter: Virtual device
temp1:       +63.0°C  (crit = +110.0°C)                  

k8temp-pci-00c3
Adapter: PCI adapter
Core0 Temp:  +59.0°C                                    
Core1 Temp:  +62.0°C    

La temperatura de ambos procesadores es algo similar. Nos interesa obtener el valor de la temperatura del 2º:
The temperature of both processors is similar. We are interested in the value of the temperature of 2nd:


~$ sensors | tail -c 45
62.0°C 


~$ sensors | tail -c 45 | head -c 2
62

Traduciendo: Al chorreo de texto después de sensors tomamos sólo los 45 últimos caracteres (tail -c 45) y de éstos los dos primeros (head -c 2)
Puede que en otros ordenadores no valgan los valores de 45 y 2. Probad hasta atinar.



Translating: The text after sensors take only the last 45 characters (tail-c 45) and of these the first two (head-c 2)
On other computers may not be worth the values ​​of 45 and 2. Taste to hit.

El programa "cpufreq". 

"cpufred" program

Si tecleamos cpufreq-set -g ondemand el procesador pasará a usar al máximo el procesador si se le exige caña.
Si tecleamos cpufreq-set -g powersave el procesador pasará a usar la mínima velocidad posible.
NOTA: puede necesitar poner delante sudo.

If you type cpufreq-set-g ondemand the processor will use to the maximum the processor if you are required cane.
If you type cpufreq-set-g powersave the processor will use the lowest speed possible.
NOTE: You may need to put ahead "sudo".

El script. 

The script.

#!/bin/bash
demanda=true
power=true
while true
  do
  clear
  echo "------------------INI--------------------"
  a=`sensors | tail -c 45 | head -c 2`
# Colocamos en la variable a el valor de la temperatura

  echo "Temperatura actual: $aºC"
El primer valor del argumento estará en $1
  if [ $a -lt $1 ]; then
    if $demanda; then
       echo "Cambia a ONDEMAND por ser $aºC menor de $1ºC"
       cpufreq-set -g ondemand
       demanda=false
       power=true
# Estas dos últimas es para no repertir constantemente la orden cpufrec

    fi
#   sleep 10
  fi

El segundo argumento estará en $2
  if [ $a -gt $2 ];  then
    if $power; then
       echo "Cambia a POWERSAVE por ser $aºC ser mayor de $2ºC"
       cpufreq-set -g powersave
       demanda=true
       power=false
    fi
  sleep 10
  fi

  echo "------------------fin--------------------"
  sleep 30
done

Como funciona. 

How it works

Si tecleamos sudo ./tempo.sh 60 70 saltará a powersave si se superan los 70ºC y saltará a ondemand si no llegan a los 60ºC

If you type sudo. / tempo.sh 60 70 jump to powersave if over 70 º C and jump to ondemand if you do not reach 60 ° C

~$ sudo ./tempo.sh 60 70

--------------------INI--------------------------
Temperatura actual: 59ºC
Cambia a ONDEMAND por ser 59ºC menor de 60ºC
--------------------fin--------------------------
.
.
.
--------------------INI--------------------------
Temperatura actual: 67ºC
--------------------fin--------------------------
.
.
.
--------------------INI--------------------------
Temperatura actual: 71ºC
Cambia a POWERSAVE por ser 71ºC ser mayor de 70ºC
--------------------fin--------------------------
.
.
.

Y ya está. Cuando nos cansemos, tecleamos en la consola ctrl+C y se para el programa por las bravas.


That's it. When we get tired, we type Ctrl + C in the console and the program will be over.






domingo, 2 de febrero de 2014

Taylor n-dimensional nets / Redes de Taylor multidimensionales

Sea un grupo de variables {x, a, b, g}  de las que se sabe (o se supone) que existe una función tal que x=f( a, b, g). El objetivo es encontrar tal función o al menos la que más se aproxime. 
We take a group of variables {x, a, b, g} of which is known (or assumed) that there is a function such that x=f( a, b, g). The goal is to find which function or the closest.

El punto de partida es un conjunto de valores {xn, an, bn, gn}. 
The starting point is a set of values {xn, an, bn, gn}.
El proceso es el siguiente, se elige la primera opción, la más sencilla que es:
The process is as follows, we choose the first option, which is the simplest:

X = f1( a, b, g) = A · an + B · bn,+ C ·  g+ D.  
(Máximo polinomio de primer grado)
        (Maximum linear polynomial)

Para determinar {A, B, C, D} será necesario tener al menos 4 grupos de valores de {x, a, b, g}, en el caso de tener más grupos de valores. Se realizarán tanteos hasta conseguir el error mínimo. El error definido puede ser simple, E=S(xn-Xn o cuadrático E²=S(xn-Xn. Cuando se consigan los valores {A, B, C, D} que hagan mínimo el error, no sólo tendremos una función que ligue {x, a, b, g} sino también la bondad de ésta.
To determine {A, B, C, D} need 4 sets of values ​​of {x, a, b, g}. In case you have more sets of values​​, we will achieve gropings for minimum error. The defined error can be simply, E=S(xn-Xn) or quadratic E²=S(xn-Xn. When we have {A, B, C, D} values ​​that minimize the error, not only we will have a function that links {x, a, b, g} but also the goodness of it.

Continuando con el proceso, este puede complicarse un grado más con la hipotética función:
Continuing the process, this can complicate a degree with the hypothetical function:

X = f2( a, b, g) = Aan² + Banbn  + Cang+ Dbn²  + Ebngn  + Fgn² + Gan + Hbn,+ Ig+ J
(Máximo polinomio de segundo grado)
        (Maximum quadratic polynomial)

El proceso es el mismo. El número mínimo de datos sería de 10 para resolver los valores {A..J} como si se tratara de un sistema de ecuaciones. De igual manera podrían hallarse tales valores con un grupo de datos mayor y encontrar los errores de primer y segundo grado. 
The process is the same. The minimum number of data would be 10 to solve the values ​​{A..J}. As if it were a system of equations. Similarly, these values ​​could be found with a larger group of data and find errors in first and second grade.

De esta forma podríamos con la progresión de polinomios de grado k evaluar los errores de primer y segundo grado 
This could form, with the progression of polynomials of degree k, estimate linear an quadratic errors.


X = fk( a, b, g)  Þ Ek  y Ek²
Si se realizara una gráfica con los valores de E y k estos serían los resultados posibles:
If we perform a graph with the values ​​of E and K, these are the possible results:

Si se ha elegido bien el grupo de variables, es decir que el suceso “x” está reglado con las variables { a, b, g  el resultado se muestra en la figura siguiente:
If you have chosen either the set of variables, ie, that the event "x" is regulated with the variables { a, b, g  the result is shown in next figure:

Gráfico de error asintótico → 0
Asymptotic Graphic Error → 0

Si no se ha elegido bien el grupo de variables por escasez de estas, es decir que el suceso “x” está reglado con las variables { a, b, g  y otras más que no se han tenido en cuenta { d .. w }, el resultado sería el siguiente:
If you have not chosen well the group of variables by shortage of these, ie, that the event "x" is regulated with the variables { a, b, g  and others that have not been taken into account {d .. w}, the result would be:

Gráfico de error asintótico → 0
Asymptotic Graphic Error → 0
Y si no se ha elegido bien la cantidad de datos y estos no fueran suficientes para poder determinar la función buscada, A partir de una determinada interacción los errores serán erráticos. No se podrán establecer conclusiones más allá del ultimo error sin altibajo. El resultado sería:
And if you have not chosen well the amount of data and these are not sufficient to determine the desired function, Starting from a given interaction errors will be erratic. No conclusions may be beyond the last error without bumpiness. The result could be




Gráfico de error asintótico → Valor ≠ 0 y k justificable máximo = 3
 Error Chart asymptotic value → Value ≠ 0 and k = 3 maximum justified
¿Que conclusiones se podrían extrapolar de las gráficas anteriores?
What conclusions we could extrapolate from the above graphs?

En el primer caso se tendría una función determinista que podría deducir sucesos dependientes de las variables estudiadas.
In the first case, we would have a deterministic function and we could deduce dependent events of the studied variables.

En el segundo caso se sabría cual es en nivel al que se puede llegar con el número de variables determinado inicialmente. Es decir, en el ejemplo anteriormente expuesto, que con las variables { a, b, g } el error mínimo el resultado sería creíble el 70% de las ocasiones.
En el segundo caso nosotros sabríamos cual es en nivel al que se puede llegar con el número de variables determinado inicialmente. Es decir, en el ejemplo anteriormente expuesto, que con las variables { a, b, g  el error mínimo el resultado sería creíble el 70% de las ocasiones.

En el tercer caso, no se puede saber si no se añaden más datos al sistema si se llegaría al primer o segundo caso. Aún así sí se puede llegar a una función deductiva y conocer su error. Es decir, en el ejemplo anteriormente expuesto, que con las variables { a, b, g  el error mínimo el resultado sería creíble el 60% de las ocasiones.
In the third case, you can not know if more details are not added to the system if you come to the first or second case. Yet, it is possible to obtain a deductive function and know their error. That is, in the example above, with variables { a, b, g  the minimum error would result credible 60% ​​of cases.

En todos los casos el sistema podría retroalimentarse con nuevos datos y continuar así con la actividad deductiva. Este sistema no soro deduce la formulación a aplicar sino que también el grado de fiabilidad de ésta.
In all cases, the system could be fed back with new data and continue with the deductive activity. This system not only follows the formulation to be applied but also the reliability of it.

La formulación general sería:
The general formulation would be:

1º Dado un sistema {x, an el objetivo será:  x=f(an).
2º Se irá construyendo la pirámide del error: E1, E2, E3,...
donde fk = C0 + S(Cpap) + S S(Cpqapaq)  + S SS (Cpqrapaqar) +  …

3º Se irán obteniendo las parejas [Ek, fk(an)]
4º Se determinará en que caso se está  y se deducirá x conociendo su error

          1 With a system {x, an}, the solution will be: x=f(an). 
          2 The progression of error: E1, E2, E3, ... 
                    where fk = C0 + S(Cpap) + S S(Cpqapaq)  + S SS (Cpqrapaqar) +  …
          3 Couples [Ek, fk(an)] will be obtained 
          4 It will be determined which case is deducted and knowing his error x

Este esquema lo bauticé como de Taylor multidimensional ya que para el caso particular y simple de un sistema {x, an donde n=1, fk resultaría ser un serie polinómica de Taylor.
This scheme I named it like multidimensional Taylor because in the case of a {x, an where n = 1, it would be a polynomial fk Taylor series.

La primera vez que lo utilizara fue en el año 2004 para la evaluación de la accidentalidad de las carreteras gallegas dentro del proyecto X-Enma. Un tipo de SIG que admitía datos de cualquier tipo de las carreteras, geométricos (orientación, peraltes, curvaturas, pendientes...) superficiales (IRD), meteorológicos …
The first time I used it was in 2004 for the assessment of Galician road accidents within the X-Enma project. One type of GIS data admitting any kind of road, geometric (orientation, cambers, bends, earrings ...) surface (IRD), meteorological ...

El resultado final al que llegara fue parecido al segundo caso (con un 60% de fiabilidad). Aún así tal formulación no debería utilizarse como deductiva pero si comparativa, como por ejemplo, la comparación entre variantes soluciones a una carretera determinada, index.html.
The end result we got was similar to the second case (with 60% confidence). The formulation should not be used as a deductive, but comparative, for example, comparing a particular variant solutions road . See; index.html.

No siempre es fácil utiliza esta herramienta en un sólo tramo de obra ya que el número de ensayos no siempre es tan numeroso como para permitir su deducción, o tan completo como para pesar que se tienen todas las variables en juego. Aún así tal herramienta fue programada en C y se puede acceder a ella como un comando.
It is not always easy to use this tool in a single tranche of work as the number of trials is not always so large as to allow deduction, or as complete as you have to weigh all the variables involved. Yet such a tool was programmed in C and can access it as a command.

La elección de C, no es banal, el código fuente es sencillo ya que como se ha comprobado tan sólo es un secuencia de anidación de bucles. Este reiterado proceso iterativo debe ser lo más cercano al código máquina para optimizar la velocidad del proceso. Y, en tercer lugar al disponer del código fuente puede compilarse tanto en Linux como en Windows y por tanto el archivo compilado es accesible dependiendo sólo de su entorno de compilación.
The choice of C, is not trivial, the source code is simple because as has been shown is just a sequence of nesting of loops. This iterative process should be repeated as close to machine code to optimize the speed of the process. And thirdly by providing source code can be compiled on both Linux and Windows and therefore the compiled file is accessible depending only on your build environment.