martes, 16 de octubre de 2012
El nuevo iPod touch para el 23 de Octubre
domingo, 14 de octubre de 2012
Elección de un RSF (Middleware para robots) adecuado.
- PabloIñigo-Blasco, Fernando Diaz-del-Rio, Mª Carmen Romero-Ternero, Daniel Cagigas-Muñiz, Saturnino Vicente-Diaz, "Robotics software frameworks for multi-agent robotic systems development", Robotics and Autonomous Systems 60(2012).
- Ayssam Elkady y Tarek Sobh, "Robotics Middleware: A Comprehensive Literature Survey and Attribute-Based Bibliography", Journal of Robotics Volume 2012, Article ID 959013, Enero 2012.
- Nader Mohamed, Jameela Al-Jaroodi y Imad Jawhar, "Middleware for Robotics: A Survey", (RAM 2008), Septiembre 2008.
Recopilamos el porque he dedidido usar Player/Stage:
-Muy extendido, por lo que tiene una comunidad de usuarios amplia que puede ayudar.
-Ocupa poco en disco.
-Programación en varios lenguajes.
-Portado a distintos SO.
-Simulador integrado de serie.
-Soporte para Kinect, y para el Roomba de iRobot.
-Facil configuración.
En contra se puede decir que la instalación no es muy simple, ya que ofrece problemas de compatibilidad con librerías, y el tipo de comunicaciones.
Turtlebot, o robots basados en Roomba
miércoles, 10 de octubre de 2012
LG, los moviles y Optimus 2x P990
Bien, quería hacer una pequeña visión sobre el mundo de los móviles y el problema de la marca LG. Esta empresa, lleva mucho tiempo haciendo móviles con poco éxito a excepción del "LG chocolate" mítico. El problema que tienen los coreanos es poco comprensible, ya que desde siempre han sido punteros en tecnología y van por delante de todos sus competidores.
-Duración de la batería es vital.
-La calidad de los materiales y acabados es algo primordial.
Partiendo de esto, tras un tiempo usando el movil he comprobado que tiene una de las mejores cámaras de móvil que conozco, la batería no dura como una blackberry o un nokia symbian, pero frente a otros Androids es aceptable teniendo el 3G activo (osea 32 horas no más, sin uso intensivo evidentemente). El GPS es MAGNIFICO, no había usado un móvil cuyo GPS cogiera antes señal de satélites que este. Las pegas, el software como ya he mencionado (aunque la ROM de serie esta super preparada y equipada con software útil, con una capa de personalización que me encanta bien organizada, donde las aplicaciones instaladas se distinguen de las que vienen de serie y las nunca abiertas se marcan con una N sobre el icono), la pantalla es pequeña aunque ya os imaginareis que esta próximo a los iphone por las 4".
¿Porque hablar de todo esto ahora?
Parece ser, que por una vez no soy el único que piensa en contra corriente de la amplia comunidad de usuarios de tecnología. Google también ha creido en LG, y se ha dado cuenta de los equipazos que preparan lo Koreanos, por lo que se esta especulando que el próximo "teléfono google" oficial, osea el nuevo NEXUS será un LG basado en el nuevo Optimus G. Esto quiere decir que el problema de software se desvanecerá, y se convertirá en el móvil de referencia SIN DUDA ALGUNA.
Recomendación, ponga un móvil LG en su vida, uno de segunda mano de algún usuario de algún foro que este cansado de tantos fallos, y metale una ROM cocinada. El acierto esta garantizado, precio regalado y hardware perfecto. (Antes de la compra, comprobar las ROMs cocinadas disponibles, para evitar sorpresas)
domingo, 30 de septiembre de 2012
RSF o Middleware para Robots
Para que se entienda mejor el funcionamiento, pongo una imagen de un middleware comercial.
Una pequeña recopilación de los RSF:
-ROS
-Player/Stage
-Miro
-UPnP
-ORCA
-Urbi
-OpenRDK
-OROCOS
domingo, 23 de septiembre de 2012
Retro review SONY VAIO P11Z
Hace poco que me he hecho con este subnotebook y a petición de un compañero de foro voy a hacer esta pequeña review.
En cuanto a Windows 8, lo he usado con bastante satisfacción (en la entrada que hago la comparativa con Windows XP podreis leer mas al respecto). Me ha asombrado ver como se mueve mejor con la nueva versión del SO de Microsoft que con las anteriores, pero he recibido quejas sobre el mal funcionamiento del GPS. Dudo mucho que sea tan malo como lo era el del Toshiba Libretto W105 (que carecía de antena conectada al modulo). Lo recomiendo totalmente, si tienes la intención de usar uno de estos para trabajo. Piensa que cuesta cerca de 300 euros (completo y perfectas condiciones) de segunda mano un equipo que es del 2009 y con hardware que podemos asumir que esta desfasado en comparación con otros equipos del mismo precio. Osea, es un equipo muy valorado.
miércoles, 8 de agosto de 2012
Los PowerPC vuelven a estar de moda
martes, 7 de agosto de 2012
Review de Windows 8 Consumer Review
¿Por qué hago la review ahora? El motivo es porque se acaba de saber que ha habido una filtración y la versión definitiva de Windows 8 ya corre por ahi.
lunes, 6 de agosto de 2012
Vuelven los colonos!!
¿ Windows 8 por fin desbancará a Windows XP ?
viernes, 3 de agosto de 2012
Taller C/C++. CMake (Olvidando el Makefile manual) Parte 2
En el terminal, dentro de la carpeta del proyecto, en el caso de un CMakeLists.txt que contenga instrucciones de instalación, habría que hacer:
~$ mkdir build
~$ cd build
~$ cmake ..
~$ make
~$ make install
Hay que considerar que a cmake se le puede llamar con opciones, así que la sintaxis exacta sería:
cmake [opciones] ruta
En el caso de que nuestro CMakeLists.txt sea simple, podemos hacer directamente una llamada de la siguiente forma:
~$ cmake .Yo suelo hacer uso de esta última, ya que no es habitual que en un proyecto personal se quiera hacer una instalación. Espero que os sirva de ayuda.
~$ make all
jueves, 2 de agosto de 2012
Taller C/C++. CMake (Olvidando el Makefile manual)
Existen varías opciones para llevar a cabo estas tareas, me centraré en Autotools (automake), Cmake, y qmake (para proyectos que usen QT). Los IDE de desarrollo más avanzados ya integran estas herramientas, e incluso existen algunas interfaces gráficas que ayudan a la generación del Makefile como son la GUI de Cmake o el imake, pero que no trataré en el taller pero es bueno que sepais de su existencia.
CMake
Lo primero de todo instalar CMake: ~$ sudo apt-get install cmake
Al igual que el fichero Makefile que generamos a mano anteriormente (y del cual ahora hay que olvidarse), debemos crear un fichero llamado CMakeLists.txt dentro del directorio donde se encuentra nuestro software.
El CMakeLists.txt no sirve para generar únicamente un Makefile, así que me ceñire a una sintaxis simple y más que suficiente:
#Nombra al proyecto con el nombre bloguero, gracias a esto se definen 2 variables que pueden usarse dentro del CMakeList.txt mas adelante, ${BLOGUERO_SOURCE_DIR} directorio del codigo fuente, y ${BLOGUERO_BINARY_DIR} directorio donde se encuentran los compilados.
PROJECT(bloguero)
#Indica que vesión mínima de cmake se necesita. Si no se indica puede dar warnings.
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
#Añade el directorio ./src a la lista de directorios que compone el proyecto. Se pueden añadir tantos directorios como se necesiten, repitiendo esta línea y poniendo el nombre. Dentro del directorio, en este caso src debe existir otro fichero CMakeLists.txt
ADD_SUBDIRECTORY(src)
#Define una variable NOMBRE_EJECUTABLE dentro de la cuál se almacena el nombre de nuestro programa, bloguero
SET(NOMBRE_EJECUTABLE bloguero)
#Define para el compilador, en este caso opciones de compilación
ADD_DEFINITIONS( "-Wall -O2 -ansi -pedantic" )
#Para buscar una librería que pueda necesitarse en la compilación o en el CMakeLists.txt . En NAMES se indica el nombre la librería,y en PATHS las rutas donde debe buscar. LIB_SERIAL será una variable que se creará con el resultado de la búsqueda.Al igual que existe un FIND_LIBRARY también existe un FIND_PROGRAM para buscar librerías, que sigue la misma sintaxis
FIND_LIBRARY(LIB_SERIAL
NAMES libserial
PATHS /usr/lib
/usr/local/lib)
#Si no se encontró la librería se muestra un mensaje de error. Hay varios tipos de mensajes, como STATUS y varios tipos de condiciones para el IF, NO
IF(LIB_SERIAL)
#Añade la librería para el enlazado
TARGET_LINK_LIBRARIES(bloguero LIB_SERIAL)
ELSE(LIB_SERIAL)
MESSAGE("imposible encontrar la libreria libserial")
ENDIF(LIB_SERIAL)
#Incluye directorios para los ficheros de cabecera en el proyecto
INCLUDE_DIRECTORIES(./cabeceras)
#Incluye directorios para buscar librerías en el proyecto
LINK_DIRECTORIES(./librerias)
#Indica el nombre del ejecutable contenido en NOMBRE_EJECUTABLE y los ficheros fuente que se usaran (fichero1.cpp,fichero2.cpp...) para la compilación. Si quisiéramos que en lugar de un ejecutable, compilará en forma de librería, se haría con la siguiente instrucción ADD_LIBRARY(bloguerolib SHARED fichero1.cpp fichero2.cpp) donde SHARED se puede sustituir por STATIC en función de si queremos una librería dinámica .a o estática .so
ADD_EXECUTABLE(${NOMBRE_EJECUTABLE} fichero1.cpp fichero2.cpp fichero3.cpp)
#Indica que el ejecutable cuyo nombre esta almacenado en la variable NOMBRE_EJECUTABLE requiere para enlazar la librería pthread (lpthread)
TARGET_LINK_LIBRARIES(${NOMBRE_EJECUTABLE} pthread)
#Instala el ejecutable bloguero que se encuentra en la carpeta raíz del proyecto en el directorio /usr/local/bin si quisieramos instalar una libreria, en destination sustituiríamos bin por lib y se instalaría en /usr/local/lib Como se puede observar, se indican también los permisos que tendra trás la instalación
INSTALL(FILES ./bloguero
DESTINATION bin
PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
En este CMakeLists.txt me he explayado un poco, y he puesto cosas que no son necesarias en absoluto. He faltado un poco a la palabra de simple, pero ha sido para moestrar un poco la potencia. Un ejemplo super simple sería:
PROJECT( bloguero )
ADD_EXECUTABLE( bloguero main.cpp)
Un Ejemplo intermedio en complejidad:
PROJECT( bloguero )En este se genera una librería dinámica .so y después se incluye para el enlazado para la generación del ejecutable.
SET(LIBSRC bloguerolib )
SET(SRC bloguero )
ADD_LIBRARY( bloguerolib SHARED ${LIBSRC} )
ADD_EXECUTABLE( bloguero ${SRC} )
TARGET_LINK_LIBRARIES( bloguero bloguerolib )
lunes, 30 de julio de 2012
Taller C/C++. Makefile
Ahora vamos a pasar a algo más complejo que puede llegar a ser un infierno si no se hace uso de un IDE de desarrollo.
Los ficheros Makefile:
Los ficheros Makefile son ficheros de texto que funcionan como scripts, a los que se llama cuando queremos compilar una aplicación sin tener que escribir toda la linea de texto que llama al compilador con todas sus opciones. Son muy útiles cuando nuestros programas van cogiendo cierta envergadura. Es facil olvidar la opción que mejor nos iba con gcc, o uno de los muchisimos ficheros que componen el proyecto.
Un ejemplo sencillo de Makefile puede ser simplemente escribir dentro de un fichero la linea con la que compilamos un proyecto. gcc -o ejecutable main.cpp
pero se puede llegar a compliar la cosa hasta puntos insospechados, con Makefiles que comprueban la existencia de las librerías que se usan dentro de nuestro código, la ruta de acceso, borrar el compilado anterior de tu programa, instalar el programa...
Para ayudar en la realización de un Makefile, explicaré uno creado por mí, y que cubre bastante bien las necesidades de un desarrollador medio:
# @author Gabriel
#Definicion de constantes
NOMBRE = bloguero
VERSION = 0.1.5
AUTOR = Gabriel
FECHA = 10/11/2011
COMPILADOR = g++
OPCIONES = -g -Wall -O2
LIBRERIAS = -lm -lpthread
OBJETOS = utm.o poli.o bloguer.o
MAIN = main.cpp
#Genera todo el programa
all: escribe principal
escribe:
@echo ;
@echo VERSION: $(VERSION);
@echo AUTHOR: $(AUTOR);
@echo NAME: $(NOMBRE);
@echo ;
#Enlazado con las clases y generacion del ejecutable
principal: $(OBJETOS)
$(COMPILADOR) -o $(NOMBRE) $(OPCIONES) $(MAIN) $(OBJETOS) $(LIBRERIAS)
#Realiza el compilado de las clases
$(OBJETOS) : %.o : %.cpp %.h
$(COMPILADOR) -c $(BANDERAS) $< -o $@
Aquí se imprimen los datos del programador y del programa, además de realizar la compilación en 2 partes. Dado que esta escrito en castellano, creo que no será dificil de entender que es lo que hace, pero explicaré una parte concreta que puede ser la más liosa.
Al final del fichero se observa como se hace referencia a unos %.o %.cpp %.h En realidad, esto hace que se compilen los ficheros cuyos nombres correspondan a los que están en la lista OBJETOS, y cuyas extensiones sean .cpp .h
Este Makefile es para un proyecto de C++. La sección LIBRERIAS se indica para especificar que librerías se usan dentro de nuestro código fuente, en este caso las de matemáticas -lmath y las de posix -lpthread (necesarias para programar con hilos y que espero poder explicar en un futuro). Pero si en tu proyecto no se hace uso de ninguna librería, no es necesario indicar nada.
Si tu proyecto tiene algunos ficheros que solo tienen .cpp y no su correspondiente .h, tendría que añadirse a mano en la seccion principal, escrito trás $(MAIN). Si se observa detenidamente, con unas simples sustituciones se obtienen sentencias similares a:
g++ -o -O2 bloguero main.cpp utm.o poli.o bloguer.o -lm -lpthread
Es posible insertar otras opciones, que hacen referencia a la localización de ficheros de cabecera .h que no se encuentran en el habitual /usr/local/include ¿Cómo lo hacemos? indicando lo siguiente: -I ruta_include Ejem. -I /opt/include
Por último mencionar la opción que ayuda al compilador (si somos estrictos al enlazador) a encontrar librerías que no se encuentran instaladas en el lugar por defecto: -L ruta_librería Ejem. -L /opt/lib
Para finalizar, decir que el fichro Makefile debe encontrarse en el mismo directorio donde están los fuentes de tu programa, y para ejecutarlo solo hay que escribir en el terminal: ~$ make ó ~$make all
Taller C/C++. Compilación
~$ gcc -o nombre_ejecutable fichero_main.c fichero1.c fichero2.c ...
Taller C/C++ GNU/Linux. Preparación del entorno.
~$ sudo -s apt-get update~$ apt-get install build-essential~$ apt-get install g++
viernes, 20 de julio de 2012
Decepción con DELL y Gorilla Glass
¿Debo indignarme o están en posesión de la razón?
Para quien quiera saber con que móvil sobrevivo, es con un Nokia C6-00. He de decir que ningún nokia me ha llegado a decepcionar, salvo alguno no symbian y que evidentemente asumía que sería de dudosa calidad.
miércoles, 11 de julio de 2012
Hoy he recibido mi placa Raspberry Pi. Intuyo que me encuentro entre los primeros poseedores de PC con procesador ARM11 en España. Tras muchos problemas con el conector hembra de RJ-45, la certificación de CE, y otros retrasos por diseño, fabricación y distribución por el abrumador éxito de este pequeño hardware que limitaron el número de unidades a una por comprador, parecía imposible que este momento llegara.
El precio final de la Raspberry comprada en RS Amidata y con los portes 24Horas por DHL finalmente ha sido de unos 40 euros. Esta claro que esta lejos de lo que se prometio para el precio del modelo más económico, pero otro de los problemas que se encontró esta maravilla de la tecnología obligo a la subida de precios y a comercializar el modelo B como modelo único pese que al principio este sería el hermano mayor de la gama.
A medida que avance en mis proyectos con este micro PC, iré añadiendo entradas a este por lo general abandonado blog.
Un saludo.
jueves, 2 de febrero de 2012
RIM y Android
Aunque tras el pasado CES se presento la actualización del SO de RIM para su tablet Playbook, poco o nada se dijo sobre el soporte para aplicaciones Android.
Es por todos sabido que RIM saco en su App World, una aplicación beta que hacía el software de Android compatible con su SO, pero al poco tiempo lo retiro. De todas formas, cualquier usuario de PayBook tiene posibilidad de hacer uso de dicho software desde hace tiempo instalando la versión beta 2.0 del nuevo SO. Entonces, ¿por qué esa duda sobre Android a estas alturas si parece claro que en la versión definitiva del 2.0 se soportará el software?
Pues bien, la duda se debe a que el nuevo CEO de RIM, soltó alguna perlita hace muy poco, refiriendose a su falta de necesidad de software (cosa que es falsa) y no querer saber nada de Android. Diciendo que sus productos se venderían cargados con todo el software que fuera necesario para ser independientes. Este testimonio, al menos a mi, me hizo pensar en que se eliminaría dicha compatibilidad.
Por supuesto el factor androide no faltó en la entrevista, y Heins subrayó que RIM no iba a solucionar sus necesidades de software con Android, ya que tal y como asegura, esa será su propio sello. Para ello hizo alusión al mercado de OEM de Android, describiéndolo como un sector en el que no hay cambios y donde todos los productos lanzamos son iguales. El directivo reconoció que el camino elegido no es el más fácil, pero también explicó que están preparados para superar semejante reto. ¿Veremos finalmente rejuvenecer a la mora o acabará madurando más de la cuenta?
"Estas palabras son de engadget España tras una entrevista concedida por Thorsten (CEO de RIM) a crackberry"
Gracias a los dioses, puedo decir que la compatibilidad no se ha eliminado, y que en breve, en el transcurso de este mes, con la actualización del playbook, tendremos soporte Android. Lo cierto es que el soporte Android es algo especial, porque ya no parece que será un software a parte que arrancará cualquier aplicación, sino que se trata de software de Android que irá incluido directamente en el App world previa modificación. Literalmente, esto es lo que he podido saber al respecto:
Por lo que se vé, solo los programas Android desarrollados hasta el 6 de Febrero y que tengan eliminadas las referencias al SO de google. Aunque es un gran avance, tampoco veo que sea lo más apropiado. La intención que veo en RIM es la de usar el knowhow de los programadores de Android, para facilitarles el desarrollo en BlackBerry.The BlackBerry Runtime for Android Apps is perhaps the most anticipated feature of the update other than native email, contacts, and calendar support. To ensure that the update launches with PlayBook-ready Android apps in the BlackBerry App World storefront, RIM is setting a deadline of February 6 for developers to submit their Android apps.
RIM has posted a set of guidelines for submitting apps, which include removing the word “Android” from all parts of the app, removing all links to Android Market, selecting BlackBerry PlayBook OS 2.0 as the minimum platform requirement, and ensuring that the app is code signed.
The BlackBerry Plug-in for ADT, BlackBerry Packager for Android apps, and the BlackBerry SDK for Android apps can be used to port apps, which RIM promises is an easy process. Developers are welcome to submit apps after the update launch, but to ensure its presence on launch day, the deadline is February 6.
http://www.slashgear.com/blackberry-playbook-os-2-0-launch-next-month-android-apps-due-february-6-31211447/