Los enjambres de cuadricópteros de la Universidad de Pensilvania en el TED

Buenas y santas,

Una de las últimas charlas en el TED ha sido la efectuada por Vijay Kumar de la Universidad de Pensilvania sobre los enjambres de cuadricópteros. Es una exposición técnica y amena sobre como funciona, sus características y cuales son las capacidades que están demostrando. El profesor Kumar menciona dos conceptos que no son muy conocidos : Jerk (sobreaceleración) como la variación de la aceleración en el tiempo y Snap (también conocida como Jounce) que es la derivada de la sobreaceleración … la cuarta derivada de la posición. El objetivo de estos robots es minimizar el snap produciendo un movimiento fluido y ágil.

No os perdáis sobretodo la “traca final” de la presentación …

El grupo que trabaja sobre estos robots voladores es parte del GRASP Laboratory. Ya hablé de ellos hace casi dos años cuando se publicaron las primeras imágenes de las increíbles maniobras que realizaban sus ingenios.

Un saludo

Curso de “sensores de orientación: Trayectoria precisa y determinación de actitud con INS”

Buenas y santas,

el Institut de Geomàtica de Catalunya ofrece un interesante curso sobre el uso de GPS e INS para la determinación de trayectoria y actitud de forma precisa.

El curso se impartirá en inglés a cargo de Ismael Colomina, Director del Institut, y de Eulàlia Parés, asistente de investigación del citado organismo. Las instalaciones del Institut en Casteldefels acogerán a los participantes entre el 30 de enero y el 3 de febrero.

Un resumen del contenido de las clases:

  • Introducción. Conceptos básicos y definiciones.
  • Navegación inercial y campo gravitatorio de la Tierra.
  • Conceptos de georeferencia.
  • Modelo de actitud
  • Historia
  • Clasificación. Plataforma y sistemas strapdown. Clasificación del redimiento.
  • Aplicaciones. Vista general de las aplicaciones de la tecnología inercial.
  • Interfaces. Interfaces INS. Interfaces IMU.
  • Teoría general.
  • Modelos matemáticos.
  • Rendimiento de los INS. Fuentes de error. Rendimiento horizontal y vertical.
  • Apoyos externos.
  • Rendimiento del sistema INS/GNSS. Precision y exactitud de la determinación posición INS/GPS y de actitud. Maniobras de calibración. Fiabilidad del sistema INS/GPS
  • Tecnología. Principios de los sensores. Tecnología de los acelerómetros. Tecnología de los giroscopios. Ejemplos de acelerómetros, giroscopios, ISA, IMU e INS.

El coste del curso es de 900 euros.

Convertir coordenadas Geograficas a UTM con Tcl

Buenas y santas,

siguiendo los pasos descritos en el excelente trabajo publicado en la página GabrielOrtiz.com, he realizado un script TCL que realiza la conversión de Coordenadas Geométricas a UTM. Para la transformación se ha utilizado el elipsoide internacional o de Hayford, que es el que toma como referencia el DATUM ED50, utilizado en la mayor parte de la cartografía española.


proc GEOtoUTM {lat lon} {

# Elipsoide de Hayford
set Semieje_a 6378388.0
set Semieje_b 6356911.946130

# Constantes
set Pi 3.1415926535897932384626433832795

##########################
# CALCULOS

# Calculo de la excentricidad

set e [expr (sqrt(pow($Semieje_a,2)-pow($Semieje_b,2)))/$Semieje_a]

# Calculo de la segunda excentricidad y su cuadrado
set e_segunda [expr (sqrt(pow($Semieje_a,2)-pow($Semieje_b,2)))/$Semieje_b]
set e_segunda_cuadrado [expr pow($e_segunda,2)]

# Calculo del radio polar de curvatura
set r_pol_curv [expr pow($Semieje_a,2)/$Semieje_b]

# Calculo del aplanamiento
set aplanamiento [expr ($Semieje_a-$Semieje_b)/$Semieje_a]

set lat_rad [expr $lat*$Pi/180]
set lon_rad [expr $lon*$Pi/180]

set huso [expr entier(($lon_rad/6)+31)]

set merid_central [expr ($huso * 6) – 183]
set dist_ang [expr $lon_rad – (-3 * $Pi / 180)]

##########################################

set A [expr cos($lat_rad) * sin($dist_ang)]

set epsilon [expr (1.0/2.0)*(log((1.0+$A)/(1.0-$A)))]
set nu [expr atan(tan($lat_rad)/cos($dist_ang))-$lat_rad]
set v [expr ($r_pol_curv/sqrt(1+$e_segunda_cuadrado*pow(cos($lat_rad),2))*0.9996)]
set tao [expr ($e_segunda_cuadrado/2)*pow($epsilon,2)*pow(cos($lat_rad),2)]

set A1 [expr sin(2*$lat_rad)]
set A2 [expr $A1*pow(cos($lat_rad),2)]

set J2 [expr $lat_rad+($A1/2.0)]
set J4 [expr (3.0*$J2 + $A2)/4.0]
set J6 [expr (5.0*$J4 + $A2 *pow(cos($lat_rad),2))/3.0]

set alfa [expr (3.0/4.0)*$e_segunda_cuadrado]
set beta [expr (5.0/3.0)*pow($alfa,2)]
set gamma [expr (35.0/27.0)*pow($alfa,3)]
set B_phi [expr 0.9996*$r_pol_curv*($lat_rad-$alfa*$J2+$beta*$J4-$gamma*$J6)]

set X [expr $epsilon*$v*(1.0+($tao/3.0))+500000]
set Y [expr $nu*$v*(1.0+$tao)+$B_phi]

#############################################
# Imprimir resultados intermediarios
# para comprobar

# Seleccionar imprimir o no
set print_res FALSE

if {$print_res ==”TRUE”} {

puts $e
puts $e_segunda
puts $e_segunda_cuadrado
puts “$r_pol_curv $r_pol_curv”
puts $aplanamiento
puts “Lat_Rad $lat_rad”
puts $huso
puts $merid_central
puts $dist_ang
puts $A
puts $epsilon
puts $nu
puts $v
puts $tao
puts “$A1 $A2”
puts “$J2 $J4 $J6”
puts “$alfa $beta $gamma”
puts “$B_phi = 0.9996 . $r_pol_curv . ($lat_rad – $alfa . $J2 + $beta . $J4 – $gamma . $J6)”

}

# Imprimir resultado en la consola de salida
puts “X = [format %.3f $X] || Y = [format %.3f $Y]”

}

GEOtoUTM 43.4884075 -3.801873306

Para probarlo podéis consultar la guía para utilizar Textpad para programar en Tcl.

Un saludo

Utilizando el editor Textpad para programar en TCL

Buenas y santas,

conocer un lenguaje de programación no le hace daño a nadie. Cuando se trabaja con datos de medidas, muchas veces nos surge la necesidad extraer o modificar esos datos. Otras veces nuestro objetivo puede ser calcular determinados datos y generar un archivo con ellos. En general siempre que necesitamos implementar un algoritmo acudiremos a un lenguaje de programación.

Tcl, es un lenguaje de script comúnmente utilizado para crear prototipo, realizar scripts o crear interfaces gráficas.

A mí me ha resultado muy útil en el trabajo y aunque tan solo soy un usuario quiero compartir aquí como yo utilizo en Windows, el editor de texto Textpad para programar en Tcl y para lanzar rápidamente los scripts que voy desarrollando.

Instalación de Tcl

Para instalar Tcl, basta con descargar el instalador de la página de ActiveTcl.

Una vez descargado el archivo, procederemos instalar el programa identificando y anotando el directorio de instalación <Tcl_PATH>.

Instalación de TextPad

Podéis descargar gratuitamente el programa en español de su web. Tras la instalación, configuramos el programa para poder escribir nuestros programas en Tcl y poder ejecutarlos de forma rápida y sencilla.

Configuración de TextPad

Para poder manejar los archivos tcl vamos a crear de una nueva clase de documento, que permitirá, entre otras muchas opciones,  identificar la sintaxis de este lenguaje, coloreando las instrucciones, los comentarios, … con lo que la presentacion en pantalla es más “limpia” y facil de comprender. Para crear un tipo de documento TCL (figura siguiente), iremos a Configure –> New Document Class (o su traducción al español).

Figura 1

En la primera ventana introducimos el nombre de la Clase, TCL (Figura 2). Este es el nombre que aparecerá en la lista de tipos de archivo en la ventana “Abrir Archivo”.

Figura 2

En la ventana siguiente (figura 3) introduciremos las extensiones de los archivos asociados a este tipo de clase de documento. Se trata de las extensiones utilizadas en tcl, en concreto *.tcl y *.tk. Este último tipo corresponde a TK la extensión de la parte gráfica.

Figura 3

Para finalizar elegimos el archivo de la sintaxis de tcl (figura 4). Es muy importante a la hora de programar poder tener una identificacion visual clara de los comandos,  los comentarios, los corchetes y paréntesis, el texto, ….

Figura 4

Tras confirmar la información ya hemos terminado de crear la nueva clase. Si queremos modificar las preferencias de esta clase, incluidas fuente de letra para pantalla y/o impresora, tabulaciones, colores de visualización, etc … podéis hacerlo en el menú Configuración –> Preferencias.

Configuración para ejecutar Tcl

Una de las principales funciones de TextPad es que nos permite ejecutar un script tcl  desde el editor con tan solo pulsar una tecla, por supuesto la que nosotros elijamos.

Para poder configurar esta función debemos ir en el menú Configuración –> Preferencias al apartado Herramientas. En esta ventana (figura 5) podemos añadir la llamada a los programas ejecutables de tcl, tclsh y wish (las diferencias entre ambos las podéis encontrar aquí Tcl vs Wish). Ambos están alojados en el directorio <Tcl_PATH>/bin/ . Podemos añadir además el fichero de ayuda ActiveTclHelpX.Y.chm que se encuentra en el <Tcl_PATH>/doc/.

Figura 5

Figura 5

Finalmente, configuraremos el teclado para ejecutar esa “herramienta” con la tecla deseada. Para ello iremos a la opción teclado de la ventana de preferencias y buscaremos en la categoría de herramientas las que hemos añadido Figura 6.

Figura 6

Un ejemplo de como podéis configurar el teclado lo podéis ver en la Figura 7.

Tclsh85 –> F4, Wish85 –> F3, ActiveTclHelp8.5 –> F2.

Figura 7

Figura 7

Espero que este breve manual de configuración de TextPad os permita comenzar a programar vuestros propios scripts.

En la última entrada yo he dejado un ejemplo de script que calcula la declinación solar y envia el resultado a un archivo. Tan solo tenéis que copiarlo en vuestro TextPad configurado y pulsar la tecla para ejecutar tclsh. Voila !!!!

Un saludo

Cálculo de la declinación solar en TCL

Buenas y santas,

la declinación solar es el angulo formado por el vector tierra-sol y el plano del ecuador. Este ángulo varía a lo largo del año debido al movimiento de traslación de la tierra alrededor del sol.

Con ayuda de las ecuaciones descritas en el documento:
“Estimación horaria de la irradiancia solar total extraterrestre”
Edson Plasencia , Lidio Matos , Adolfo Posadas, Carlos Cabrera

he creado una pequeña herramienta tcl que permite calcular la declinación por los cuatro métodos descritos en el trabajo mencionado.


######################################
# Herramienta de calculo de la declinacion solar
#
# Entradas:
# * Punto de estudio. Coordenadas de Entrada
# Estacion de medida de radiacion
# que el EREN tiene en La Robla
# Salidas:
# * Resultado del análisis
# Declinacion Solar - Declinacion.txt
#
#
# Edición: 1 Revision: 0
# Fecha: 29/01/2010
# Autor: Mario CASTRO DE LERA
#
#

###########################
# Declaracion de constantes
global Pi degtorad radtodeg factor
set Pi 3.14159264
set degtorad [expr (1 / 57.295779513082320876798154814105)]
set radtodeg 57.295779513082320876798154814105
set factor [expr 2 * $Pi / 365]

##########################
# Argumentos de entrada

# Ejemplo : Latitud de la estacion de medida
# de radiacion que el EREN tiene en La Robla
set Latitud 42.812

#########################################
# CALCULO DE LA DECLINACION POR DIFERENTES METODOS
#########################################
#
# Calculo de la declinacion por el metodo de Spencer (1971)
#

proc declinacion_spencer {d} {
global Pi degtorad radtodeg factor

set Beta [expr $d * $factor]

set declinacion_spencer($d) [expr $radtodeg * (0.0006918 - (0.399912 * cos($Beta))+ (0.070257 * sin($Beta)) - (0.006758 * cos(2*$Beta)) + (0.000907 * sin(2*$Beta)) - (0.002697 * cos(3*$Beta)) + (0.00148 * sin(3*$Beta)))]
return $declinacion_spencer($d)

}

#########################################
#
# Calculo de la declinacion por el metodo de Perrin de Brichanbaut (1975)
#

proc declinacion_brichanbaut {d} {
global Pi degtorad radtodeg factor

set angulo_brichanbaut($d) [expr $factor * ($d - 82)]
set declinacion_brichanbaut($d) [expr $radtodeg * asin(0.4 * sin($angulo_brichanbaut($d)))]
return $declinacion_brichanbaut($d)

}

#########################################
#
# Calculo de la declinacion por el metodo de Cooper (1969)
#

proc declinacion_cooper {d} {
global Pi degtorad radtodeg factor

set angulo_cooper($d) [expr $factor * (285 + $d)]
set declinacion_cooper($d) [expr 23.45 * sin($angulo_cooper($d))]

return $declinacion_cooper($d)

}

#########################################
#
# Calculo de la declinacion por el metodo de Garcia (1994)
#

proc declinacion_garcia {d} {
global Pi degtorad radtodeg factor

set angulo_garcia($d) [expr $factor * (9 + $d)]
set declinacion_garcia($d) [expr -23.45 * cos($angulo_garcia($d))]

return $declinacion_garcia($d)

}

#########################################
#
# Calculo de la declinacion para todas los dias del año
# por los 4 diferentes metodos
#

set Out_declinacion [open ./Declinacion.txt w]

puts $Out_declinacion "Spencer\tBrichanbaut\tCooper\tGarcia"

for {set d 1} {$d < 365} {incr d} {

set declinacion1($d) [declinacion_spencer $d]

set declinacion2($d) [declinacion_brichanbaut $d]

set declinacion3($d) [declinacion_cooper $d]

set declinacion4($d) [declinacion_garcia $d]

puts $Out_declinacion "$declinacion1($d)\t$declinacion2($d)\t$declinacion3($d)\t$declinacion4($d)"

}

close $Out_declinacion

El resultado, registrado en el archivo Declinacion.txt que se crea en el mismo directorio, presenta en cuatro columnas los valores de la declinación solar para cada día del año, empezando por el 1 de enero y terminando 365 días más tarde.

Un saludo.