1º Test de navegacion con la interfaz – IUCTC
Este vídeo es el primer test que he hecho con casi todo ya montado y totalmente funcional, en resumen estoy usando el robot de telepresencia, las gafas de vision HMD 5DT 800 con el sensor InertiaCube2 para el movimiento de la cabeza, para el control de la cámara estoy usando lo que fué el cañon gauss, que ha pasado a mejor vida y se ha convertido en la cabeza de Willy.
Para ser el primer test ha ido mejor de lo que me esperaba, he arreglado varios fallos que tenían las librerias, sobre todo fallos de liberación de memoria que anda que no dan problemas esas cosas y también punteros que no controlaba del todo bien. Una vez arreglado todo eso, la aplicación se ha vuelto mucho más estable y fiable.
Lo proximo que voy a hacer es escribir un nuevo driver para Player para poder usar las cámaras Logitech Sphere, que resulta que la versión nueva de la cámara trae nuevo hardware y el driver que actualmente tiene el player 2.1.1 no la soporta.
Saludos..
Probando la futura cabeza de Willy — HMD 800 & InertiaCube2 & Cañon Gauss
Vídeo de la prueba que he realizado con la futura cabeza para Willy ( Pioneer3AT ).
La base en cuestión es de un proyecto que tenía en casa arrimado que hice para la universidad, concretamente para la asignatura de Control de Procesos por Computador ( CPC ). Es un cañon gauss con punteros laser, su función era la de localizar un objetivo con los láseres y triangular su posición, de ahí que tenga 2 láseres, y con el cañón se disparaba un proyectil de acero que acertaba en el objetivo, la verdad que funcionó a medias ya que la placa de adquisición de datos que estabamos usando, no soportaba los altos voltajes que eran alrededor de unos 300 voltios en continua.
Bueno al caso, he reciclado la estructura para añadirla a mi proyecto de fin de carrera para hacer una especie de cabeza, el cañón será remplazado por una webcam con una lente gran angular.
La placa de control que uso para mover la estructura es una scc-32, que es una controladora que permite 32 servos, la estoy programando en C++ y además he escrito un pequeño driver para PLayer&Stage para poder usarla con la interfaz PTZ que viene en Player, de momento todo tiene muy buena pinta.
Otro día pongo un vídeo del cañon gauss en funcionamiento.
Saludos.
Mostrar el resaltado de sintaxis con el vim – GNU Linux – Ubuntu
Para los que programamos directamente desde el terminal, es indispensable el resaltado de sintaxis para poder ver el código de forma adecuada y poder comprender mejor como esta estructurado el codigo. Si has llegado hasta aquí es que necesitas activar esta función en el editor vim, vamos a ello.
Antes que nada asegúrate de que tienes el vim instalado, parece una tontería pero cosas peores se han visto
.
$ sudo apt-get install vim
Una vez instalado si no lo tenías vamos a abrir un fichero para editarlo a ver que tal se vé sin resaltado de sintaxis, en mi caso sería de esta forma.

Aunque aparezca una ventana de Mac, es linux ya que estoy conectandome por ssh a otro equipo que tiene Ubuntu Server.
Ahora vamos a ver que tal queda con el resaltado de sintaxis el mismo archivo, para ello primero tenemos que activar esta funcionalidad en el vim, hacemos el siguiente cambio:
$ sudo vim /etc/vim/vimrc
Localizamos la línea que contiene syntax on:
" Vim5 and later versions support syntax highlighting. Uncommenting the next
" line enables syntax highlighting by default.
" syntax on
y descomentamos
" Vim5 and later versions support syntax highlighting. Uncommenting the next
" line enables syntax highlighting by default.
syntax on
Además quiero que el fondo de la pantalla de edición salga oscura, con lo que localizamos:
" If using a dark background within the editing area and syntax highlighting
" turn on this option as well
" set background=dark
y lo descomentamos:
" If using a dark background within the editing area and syntax highlighting
" turn on this option as well
set background=dark
salimos de la edicion del archivo con " :wq ". Haciendo todo esto veríamos el mismo archivo de la siguiente forma:

Mucho mejor y más bonito y claro....
Saludos.
Como arreglar el autocompletado del terminal… Ubuntu 9.10
Hoy me he encontrado con una cosa curiosa, resulta que el autocompletado del terminal no funcionaba, algo indispensable para mi a estas alturas de la vida. Ha dejado de funcionar de buenas a primeras y no tengo ni idea de por que, pero la forma para volverlo a poner en funcionamiento es asi:
Abres en un editor de texto el /etc/bash.bashrc
$ sudo vim /etc/bash.bashrc
y buscas las siguientes líneas:
# enable bash completion in interactive shells
#if [ -f /etc/bash_completion ]; then
# . /etc/bash_completion
#fi
Para volver a poner a funcionar el autocompletado descomentamos esas líneas dejandolas asi:
# enable bash completion in interactive shells
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
cerramos el terminal y lo volvemos a abrir, de esta forma ya carga el nuevo terminal con esta nueva configuración, ya podemos seguir con nuestra vida normal gracias al autocompletado.
Saludos.
Una mala idea… sudo apt-get remove libjpeg62,
He estado estos dias jugando un poco con la libreria libjpeg intentando aprender como comprime imagenes y como las descomprime, podeis ver el post aqui. Pues bien me he visto en la necesidad de que al comprimir una imagen no la quiero en archivo sino en memoria para poder hacer cosas con esos datos, ya sea alguna edición en la imagen o mandarla a otro ordenador por medio de sockets, investigando un poco resulta que la version que viene instalada por defecto en el ubuntu la version libjpeg62, no permite hacer esto ya que cuando configuras la salida del proceso de compresión, solo te deja pasarle un fichero, se podria pasar a memoria haciendo inventos raros pero bueno, hay que intentar usar las nuevas funcionalidades de las librerias. En las versiones nuevas de esta librería parece que han hecho caso a las sugerencias y ya existe la posibilidad de almacenar el resultado de la compresión en memoria algo que me sería de gran utilidad.
Me descargue el código fuente de http://www.ijg.org/ y antes de compilarlos, se me ocurrió la brillante idea de desinstalar antes la otra versión de la librería, no me pregunteis por que pero lo hice, fui a la consola e introduje valientemente el comando:
$ sudo apt-get remove libjpeg62
pues bien a partir de ese momento empezaron a pasar cosas raras, tan raras que pense que quizas reiniciando iria mejor el linux, pero mi sorpresa fue que no me arrancó la interfaz grafica, en este caso el xfce, y cual fue mi otra sorpresa cuando entre a mi sesión y estuve viendo que paso y resulta que no habia casi nada instalado, que pasada.....
La historia completa despues del salto -->
Compresion de imagenes con libjpeg.
Trabajando en el proyecto me he visto en la necesidad de realizar compresión a imagenes que capturo con una webcam desde el robot, para mandarlas a la aplicación cliente para poder visualizar lo que ve el robot para poder controlarlo a distancia. Actualmente lo estaba haciendo sin compresión alguna ya que todas las aplicaciones se ejecutaban en la misma máquina y no tenia problemas con la transmisión de datos e imagenes.
Investigando un poco por internet sobre la libreria de imagenes libjpeg he encontrado algunos ejemplos y los he modificado un poco para mis necesidades pero a continuación paso a explicar un pequeño ejemplo que te permite abrir un archivo .jpg, y comprimirla en otro archivo .jpg. Recordar que un archivo jpg es una imagen comprimida, si la abrimos en nuestro programa debemos de tener en cuenta que para poder usarla para otros programas e incluso para comprimirla de nuevo, primero debemos de descomprimirla.
Código y ejemplo después del salto -->
Listado de todos los archivos del PC -> a un archivo….. En Mac y Linux
Ya comente en el anterior post el por qué necesitaba hacer esto, la cuestion es que lo hice en Windows porque es lo que usan aquí. En este post vamos a ver como hacer lo mismo pero en linux y Mac que es lo que yo más suelo utilizar.
He estado investigando y resulta que el comando tree no esta para estos Sistemas Operativos, o por lo menos no lo he encontrado así que vamos a conseguir lo mismo que con el tree pero usando una combinación de comandos y parametros.
Código y ejemplo después del salto -->
Listado de todos los archivos del PC -> a un fichero… En Windows
Hoy en el trabajo me han estado preguntando si conocia algún programa para generar un listado completo de carpetas y archivos que tiene un CD, ya que les interesa almacenar este listado en una base de datos para saber donde está X archivo o saber que contiene un CD determinado.
Pensando un poco y conociendo algun que otro comando de consola pues me pregunte si no seria posible generar tal listado sin necesidad de instalar un programa de terceros. La respuesta es que sí, si se puede y ahora vamos a ver cómo:
Código y ejemplo después del salto -->
Instalacion Code::Blocks por SVN
Instalación de code::blocks y WxWidgets en Ubuntu 9.10.
Antes un poquito de historia, que nunca viene mal.
Code::Blocks es un entorno de desarrollo integrado libre y multiplataforma para el desarrollo de programas en lenguaje C++. Está basado en la plataforma de interfaces gráficas WxWidgets, lo cual quiere decir que puede usarse libremente en diversos sistemas operativos, y está licenciado bajo la GPL.
Debido a que Dev-C++ es un IDE para programar en C y C++ y está creado en Delphi, surgió la idea y necesidad de crear un IDE hecho en los lenguajes adecuados: C y C++. Con esta motivación se creó el IDE Code::Blocks. (wikipedia)
Las wxWidgets son unas bibliotecas multiplataforma y libres, para el desarrollo de interfaces gráficas programadas en lenguaje C++. Están publicadas bajo una licencia LGPL, similar a la GPL con la excepción de que el código binario producido por el usuario a partir de ellas, puede ser propietario, permitiendo desarrollar aplicaciones empresariales sin coste.
Las wxWidgets proporcionan una interfaz gráfica basada en las bibliotecas ya existentes en el sistema (nativas), con lo que se integran de forma óptima y resultan muy portables entre distintos sistemas operativos. Están disponibles para Windows, MacOS, GTK+, Motif, OpenVMS y OS/2.
También pueden ser utilizadas desde otros lenguajes de programación, aparte del C++: Java, Javascript, Perl, Python, Smalltalk, Ruby . (wikipedia)
Después de tanta teoría, manos a la obra. Para la instalacion y compilacion del codeblocks, nos basta con introducir las siguientes líneas:
$ sudo apt-get install libgtk2.0-dev libwxgtk2.8-0 libwxgtk2.8-dev wx-common subversion autoconf automake libtool gobjc++
$ mkdir codeblocks
$ cd codeblocks
$ svn checkout svn://svn.berlios.de/codeblocks/trunk
$ cd trunk
$ export ACLOCAL_FLAGS="-I `wx-config --prefix`/share/aclocal"
$ ./bootstrap
$ ./configure --with-contrib-plugins=all
$ make
$ sudo make install
$ echo /usr/local/lib | sudo tee -a /etc/ld.so.conf
$ sudo ldconfig
Ya tenemos todo lo necesario para poder desarrollar nuestros programas con interfaz gráfica. Para lanzar el programa y empezar a divertirnos vamos a:
Aplicaciones -> Programacion -> Code::Blocks IDE
Gracias por la atencion.
Saludos
Montando el Simulador
Hace tiempo que ando con mi padre trasteando en el garaje intentando montar un simulador, a base de hierros, motores, controladoras y software libre.
El software que vamos a usar es el X-sim, un software libre que nos va a permitir sacar datos de los juegos y poder sacarlos por el puerto serie del ordenador, o por el puerto USB, y de esta forma enviar los datos a una controladora de motores que se encargue de mover el simulador.
De momento sólo tenemos un chasis hecha con hierros y un par de motores de limpia cristales de un coche, los cuales hemos modificado para que trabajen como un servo, de momento parece que funcionan.
Ahora estamos trasteando con el software a ver si conseguimos capturar los datos de los juegos y podemos sacarlos por el puerto serie..
Saludos..