Usuario discusión:Obijuan

De WikiRobotics
Revisión del 02:30 8 may 2009 de Obijuan (Discusión | contribuciones) (Mis páginas en construcción)

Saltar a: navegación, buscar

Lista de cosas por hacer:

Mis páginas en construcción

Robots modulares autónomos

Fases:

  • Software de oscilación de servos en la skypic. Hecho! Micro-osciladores
    • Documentar y probar que funciona hasta 8 servos
  • Integracion de la electrónica:
    • Hacer un prototipo manual, que tenga sólo un pic
    • Grabar ledp con la Skyprog
    • Probar los microosciladores
    • Integrar en los modulos
    • Hacer PCB
    • Tarjeta verde?
  • Autonomía de Alimentación
    • Elegir baterías
    • Integrar las baterías

Compilador SDCC:

  • Se ha encontrado un bug en el SDCC que no permite trabajar con números flotantes negativos. El bug se encuentra en las versiones sdcc 2.8.0 (la oficial de lenny) y también en la 2.9.0.
  • Se ha enviado un informe de error a la lista sdcc-users
  • Raphael Neider me ha respondido confirmando el bug y me ha dicho que en la versión del svn r5431 se han solucionado algunos errores
  • He probado los ejemplos de error "hola mundo" (float-errorx.c) que antes fallaban con las versiones 2.8.0 y 2.9.0 y ahora funcionan!!!!! Increible!!!!

Y1 modules, v1.2

  • This version is developed to be printed in a reprap machine
  • Steps:
    • Head. A new design
      • Import the DXF into Blender: OK!. It important to eliminate the duplicated vertex!
      • Check the scale: OK!
      • Extrude the piece (without the hole): OK!
      • Add the base:OK!
      • Create the piece: OK!
    • Body: OK!
    • Imprimir cabeza. Hacer módulo híbrico. Cabeza 1.2, cuerpo 1.1
      • Al generar el fichero gcode con el software de reprap, se obtienen los siguientes mensajes de error, pero el fichero lo genera.
RrHalfPlane.find(): plane not found!
RrHalfPlane.find(): plane not found!
RrHalfPlane.find(): plane not found!
RrHalfPlane.find(): plane not found!
RrHalfPlane.find(): plane not found!
RrHalfPlane.find(): plane not found!
RrHalfPlane.find(): plane not found!
RrHalfPlane.find(): plane not found!
RrHalfPlane.find(): plane not found!
RrHalfPlane.solidSet(): odd number of crossings: 1
RrHalfPlane.solidSet(): odd number of crossings: 1
RrHalfPlane.solidSet(): odd number of crossings: 1
RrHalfPlane.solidSet(): odd number of crossings: 1
RrHalfPlane.solidSet(): odd number of crossings: 1
RrHalfPlane.solidSet(): odd number of crossings: 1
RrHalfPlane.solidSet(): odd number of crossings: 1
RrHalfPlane.solidSet(): odd number of crossings: 1

Cuando lo pruebo con skeinforge me da el siguiente error (y peta:)

$ python skeinforge.py head4.stl 
File head4.stl is being chain exported.
This should never happen, there is a hole in the triangle mesh, each edge should have two faces.
2754 [1197] [1448, 1486]
Something will still be printed, but there is no guarantee that it will be the correct shape.
Once the gcode is saved, you should check over the layer with a z of:
9.9999961853
Traceback (most recent call last):

...


    • Imprimir cuerpo. Módulo 1.2:
      • Se obtienen los siguientes errores:
RrHalfPlane.find(): plane not found!
RrHalfPlane.find(): plane not found!
RrHalfPlane.find(): plane not found!
RrHalfPlane.find(): plane not found!
RrHalfPlane.find(): plane not found!
RrHalfPlane.find(): plane not found!
RrHalfPlane.find(): plane not found!
RrHalfPlane.find(): plane not found!
RrHalfPlane.find(): plane not found!
RrHalfPlane.find(): plane not found!
RrHalfPlane.find(): plane not found!

RepRap-cupcake

Instalación del software (linux)

  • Instalar el software de Sanguino: Enlace

Grabador

Para grabar los micros atmel:

  • USBtinyISP. Es hardware libre y muy fácil de construir.

Estoy probando ese grababor con mi arduino nano. Con el IDE de arduino obtengo un error. Estoy probando directamente con avrdude. Para probar ejecuto:

$ avrdude -v -c usbtiny -p m168
[...]
avrdude: Using SCK period of 10 usec
avrdude: error: usbtiny_transmit: error sending control message: Operation not permitted

Pero si lo ejecuto como root no hay problemas. Parece ser que hay un problema con los permisos, de forma que avrdude no puede acceder directamente al usb

$ sudo avrdude -v -c usbtiny -p m168
[...]
avrdude done.  Thank you.

RepRap

  • Página del proyecto.
  • Instrucciones de montaje de la parte mecánica Darwin
  • Etapa 1:
    • Instalar Art of Ilusion: OK! Es necesario tener instala la máquina java de sun (paquete sun-java6-bin). Comprobar que es esa la máquina instalada haciendo:
java -version
java version "1.6.0_07"
Java(TM) SE Runtime Environment (build 1.6.0_07-b06)
Java HotSpot(TM) Client VM (build 10.0-b23, mixed mode, sharing)
Instalar el plug-in STLTranslator
  • Etapa 2:
    • Comprar todos los materiales necesarios para el montaje de la máquina (donde comprarlos?)
    • Realizar el montaje!!
    • Calibración
    • Impresión!!!

Tesis

  • Curva serpentinoide
    • Continua
    • Discreta
    • Scripts octave
      • Información en apartado 3.6 del fichero tesis_1.lyx
      • scripts en directorio local: /home/juan/desarrollo/tesis/tesis/tesis/fig/experimentos-parte2/orden/Loc1D/serp-continua
  • Traducción al inglés:
    • Traductor: Walter Routley
    • Capítulo traducidos:
    • Pendiente de traducir:
      • Modelos: 9400
      • Loc1D: 12412
      • Loc2D: 16985
      • C.Min: 11944
      • Experiments: 9545
      • Resto: 7899
      • Total: 87759
  • Edición libro (Inglés)
    • Crear contenidos en inglés y enviárselo a Houxiang
    • Preparar los contenidos del libro o libros
    • Enviárselo a la editora de Springer

Gazebo 0.7

  • El paquete para debian está en el repositorio de JDERobot: gazebo_0.7.0-2_i386.deb
    • Mini-bug: Este paquete instala el servidor gazebo, pero no el cliente wxgazebo, por lo que no se pueden visualizar las simulaciones
  • Para la instalación de wxgazebo en Lenny hay que seguir las instrucciones de compilación de gazebo que están en esta receta
  • Al ejecutar un ejemplo, puede aparecer este mensaje de error:
$ gazebo /usr/share/gazebo/worlds/pioneer2dx.world
** Gazebo 0.6.1 **
* Part of the Player/Stage Project [1].
* Copyright 2000-2005 Brian Gerkey, Richard Vaughan, Andrew Howard,
* Nate Koenig and contributors.
* Released under the GNU General Public License.
using display [:0.0]
X Error of failed request:  GLXUnsupportedPrivateRequest
  Major opcode of failed request:  143 (GLX)
  Minor opcode of failed request:  16 (X_GLXVendorPrivate)
  Serial number of failed request:  21
  Current serial number in output stream:  22
  • Lo he solucionado aplicando lo que se dice en este foro
  • La renderización tiene que ser de tipo glx. He creado este fichero de prueba: P-2.world.
  • Para probarlo ejecutar:
$ wxgazebo P-2.world 
starting server
** Gazebo 0debian1.9.0 **
* Part of the Player/Stage Project [2].
* Copyright 2000-2005 Brian Gerkey, Richard Vaughan, Andrew Howard,
* Nate Koenig and contributors.
* Released under the GNU General Public License.
using display [:0.0]
waiting for server
rendering: [GLX offscreen] direct [no] RGBA [8 8 8 8] depth [24]
loading texture file [/usr/local/share/gazebo/worlds/ground.ppm]
rendering: [GLX offscreen] direct [no] RGBA [8 8 8 8] depth [24]
server id [0]
connecting to server
opening simulator interface
waiting for data
running

Y aparecerá algo como esto:

Gazebo 0.7 corriendo en una Debian/Lenny

JDERobot

Poniendo en marcha JDE

gazebo_0.7.0-1_i386.deb	
jderobot-doc_4.3.0-rc1_i386.deb	
jderobot-drivers_4.3.0-rc1_i386.deb	
jderobot-libs_4.3.0-rc1_i386.deb	
jderobot-schemas_4.3.0-rc1_i386.deb	
jderobot-services_4.3.0-rc1_i386.deb	
jderobot_4.3.0-rc1_i386.deb	
ode_0.7.0-1_i386.deb	
player_2.0.5-1_i386.deb
stage_2.0.4-1_i386.deb
Al instalar player, sale el mensaje de error:
 intentando sobreescribir `/usr/lib/libpmap.so.0.0.0', que está también en el paquete libpmap0
Si se usa la opción --force-all se instala bien:
sudo dpkg -i --force-all player_2.0.5-1_i386.deb
Stage se instala sin errores.
paquetes de jde
jderobot-doc: OK
jderobot-libs:
jderobot-squemas:
jderobot-services:
jderobot-drivers: Error de dependencias con el ODE. Sugerencia: Modificar la dependecia de este paquete por libode0debian1
  • Primeras pruebas
jde está instalado y se ejecuta. Cuando se pone el comando jde, aparece lo siguiente:
$ jde
jdec 4.3-svn
Configuration from /usr/share/jde-robot/conf/jde.conf
Reading configuration...
graphics_gtk driver loaded (driver 0)
Loading GTK support...
GTK support loaded.
graphics_xforms driver loaded (driver 1)
Loading Xform support...
Xforms support loaded.
imagefile driver loaded (driver 2)
imagefile driver started up
I can't open the image file /usr/local/share/jde-robot/casaleft.pnm
colorA:/usr/local/share/jde-robot/casaleft.pnm 320*240
colorA schema loaded (id 0)
mastergui schema loaded (id 1)
mastergui schema started up
opengldemo schema loaded (id 2)
opengldemo schema started up
Starting cronos...
Starting shell...
jdec$
y se lanza el esquema mastergui.
Problema encontrado: Los esquemas se cargan correctamente si se incluyen en el fichero de configuración, pero no se pueden cargar desde la consola de jde. Ejemplo:
jdec$ ls
colorA
mastergui
opengldemo
jdec$ myschema
jdec$ ls
colorA
mastergui
opengldemo
jdec$
Se ha intentado cargar el esquema "myschema". No se ha cargado, pero tampoco ha dado ningún mensaje de error... Pero si se incluyen en el fichero de configuración entonces no hay problema.
Problema solucionado! Jose María me ha indicado que es necesario que los esquemas exporten las funciones de suspend y resume (igual que como se hace en los drivers). Así todo funciona correctamente. Los esquemas se invocan bien desde la líniea de comandos.
  • Probar esquema "Hola-mundo"
    • He probado el myschema y funciona. Lo he modificado y he creado el mio propio: obijuan. A continuación pongo las instrucciones para usarlo:
      • Descargar el esquema obijuan
      • Descomprimirlo, entrar en el directorio obijuan y ejecutar make para compilarlo:
$ make
gcc -g -O -pedantic -Wall -I. -I/usr/include/jde-robot   -fPIC   -c -o obijuan.o obijuan.c
gcc -shared -Wl,-soname,obijuan.so -L.  -o obijuan.so obijuan.o -lm
      • Ejecutarlo:
$ jde obijuan.conf
jdec 4.3-svn
Configuration from obijuan.conf
Reading configuration...
graphics_gtk driver loaded (driver 0)
Loading GTK support...
GTK support loaded.
mastergui schema loaded (id 0)
mastergui schema started up
obijuan schema loaded (id 1)
obijuan schema started up
Starting cronos...
Starting shell...
jdec$
      • En principio, se debería poder lanzar el esquema ejecutando obijuan, pero no funciona. Hay que activar primero el mastergui y ejecutarlo desde ahí. ¿Es un bug?:
jdec$ mastergui
Al lanzarlo y ejecutarlo unos pocos ciclos, aparecerá lo siguiente:
jdec$ obijuan: on
Obijuan: May the source be with you...
Obijuan: May the source be with you...
Obijuan: May the source be with you...
Obijuan: May the source be with you...
Obijuan: May the source be with you...
Obijuan: May the source be with you...
Obijuan: May the source be with you...
Obijuan: May the source be with you...
obijuan: off
¡¡Está funcionando mi esquema!!
  • Driver "Nulo"
    • Descargar jde desde el SVN:
 svn co http://svn.jde.gsyc.es/jde/jdec/trunk
    • Coger los ficheros pantilt (driver) y followball.c (esquema)
    • Que el esquema hola mundo acceda al driver: OK
    • Ya lo tengo hecho!: null-driver.tar.gz. Implementa un esquema para acceder a un actuador nulo de una variable de entrada. Se ha hecho un esquema de pruebas (test) que envia un valor al driver nulo al arrancar y otro al finalizar. El driver nulo imprime en la consola los cambios en su variable de entrada. Aquí hay un pantallazo del driver en acción: Pantallazo
  • Driver "Led8"
JDE ya se comunica con la tarjeta skypic :-) He desargado el firmware del servidor eco, que muestra en los leds lo que ha recibido. Uno de los esquemas es el clásico del "coche fantástico" el otro es un contador binario. Las fuentes están disponibles aquí: led8-driver.tar.gz
  • Driver Servos8
  • Driver Oscillator8
    • 8 generadores sinusoidales. OK. Ya tengo disponible la primera versión: oscillator8-driver.tar.gz
    • Driver de teclado (en Gtk).
      • Compilado esquema image_viewer con mi propio makefile. Proba y funciona! OK!
      • Convertir image_viewer en un gtk-hola-mundo. OK!
      • Convertirlo en un pixbuff que reciba eventos de teclado: OK!
      • Convertir esquema en un driver. ¿Qué diferencia hay a nivel JDE entre un esquema y un driver.
      • Hacer esquema de pruebas: que imprima en la consola todo lo recibido por teclado: OK!. El programa está aquí: keyboard.tar.gz. Y aquí un pantallazo

JDE+ ODE

  • Comienzo hito 1. Partir de esquema Obijuan y linkar con drawstuff.a. Eliminar mensajes de error. Generar makefile: OK!
    • Linkar con Ejemplo 3 tutorial: caja caida libre+drawstuff. El programa principal de box3 hay que convertirlo en una funcion: OK!
    • Lanzar un threada desde Obijuan (guiresume) que simplemente imprima algo en consola: OK!
    • Llamar a box3 desde ese thread.... ¿Qué hace? ¿Funciona?. Con este se completaria un hito muy importante: OK!. Funciona a la perfección!!!!!
  • Comienzo hito 2.
    • Ejemplo hola mundo de gtk + opengl (independiente de JDE)
    • Integrarlo en JDE. Aquí hay un ejemplo que hay que probar: http://svn.jde.gsyc.es/users/eperdes/headtracking/trunk/headtracking/
    • Integrar la drawstuff. Lograr que se dibuje un frame (cielo+suelo+grid), con o sin texturas, ya veremos.
    • Integrar el ode. Crear la caja en su posicion inicial y que se dibuje
    • Integrar el paso de simulacion para que la caja caiga. Anadir las colisiones
    • Integrar el teclado. Tener ejemplo box3 funcionando al 100%, igual que la version sin jde.
    • Anadir los callbacks para mover la camara
    • Anadir botones en gtk para hacer pausa, quitar sombras, quitar texturas...
    • Ejemplo del servo: Mover un servo virtual desde el teclado usando JDE
    • Locomocion de minicube: Que las posiciones del servo virtual vengan de un esquema que lo haga moverse

JDE: otros

  • Esquemas para la locomoción de Hypercube, cube revolutions y minicubes
  • Hacer Interfaz gráfica en ODE+OpenGL+GTK
  • Unificar driver oscillator8 y Servos8 en uno solo (servos8) y ofrecer dos drivers virtuales: position8 y generator8
  • Driver "log", que permita imprimir cosas en una ventana GTK, para hacer depuración

Gazebo 0.8

  • Instalar Gazebo en Lenny
    • Gazebo usa scons. Para compilar teclear:
      • Para compilar: scons
      • Para limpiar: scons -s
      • para instalar: sudo scons install
    • Error 1: Sale el siguiente error: "error: 'strcmp' was not declared in this scope".
    • Error 2: "error: 'QueuePointer' has not been declared".
      • Explicación: Según leo aquí, se soluciona instalando player 2.1, pero en lenny viene player 2.0.4, por lo que hay que instalarlo "a pelo"
      • Solución: De momento he desintalado player. Al compilar gazebo aparecerá el siguiente mensaje, pero gazebo se compilará correctamente:
================================================================
Player not found, bindings will not be built.
To install player visit(http://playerstage.sourceforge.net)
================================================================
  • Ponerlo en marcha: probar un ejemplo
    • Me salen violaciones de segmento al ejecutar gazebo. Puede ser porque no tenga player instalado... pero con algunos mundos sí ha funcionado:
./gazebo worlds/factory.world
  • Crear un modelo sencillo, en XML. Por ejemplo un cubo situado a una altura. Tutorial de creación de modelos
  • Crear los objetos compuestos del tutorial de ODE: compound1 y compound2
  • Crear un modelo de módulo
  • Crear un controlador para los servos
  • Crear configuración PP. Necesario un controlador superior que genere las oscilaciones... ¿Cómo incluirlo en gazebo?
  • Crear robot ápodo del grupo cabeceo-viraje

Skycable-paralell

Grabación de la Skypic con el cable que va por puerto paralelo Hitos por hacer:

  1. Instalar Debian/Lenny en Melchor
  2. Instalar Piklab
  3. Comprobar el cable
  4. Ver cómo realizar la grabación
  5. Documentarlo en el wiki

Tarjeta Skywars

  1. Ejemplo hola mundo "ledp" para Arduino nano. Comprobar que todo OK.
  2. Ledon.c para AVR (sin entorno arduino). Cómo compilar. Cómo descargarlo.
  3. Ejemplos de comunicaciones serie
    1. Eco
    2. Menu
    3. Librerías
  4. Temporizadores y Delays
  5. Mover un servo
  6. Servidor Servos8
  7. Servidor genérico
  8. Skywars-test--> Acceso a los pines de la Skywars para pruebas
  9. Localizar Bootloader y grabarlo en AVR
  10. Poner AVR destino y grabar un ledp. ¿Qué software del pc se usa?
  11. Prototipo Casero de la Skywars
  12. Grabar AVR con Bootloader y comprobar que todo ok
  13. Probar prog. de ejemplo ledp, servos, serie, etc...
  14. Usar Skywars como grabador
  15. Esquemático con Kicad
  16. PCB con Kicad
  17. Gerbers, verificacion
  18. Prototipo catacumbero
  19. Verificación y Corrección
  20. Primera tirada verde

Software para Skypic

  • Pyservos: Movimiento de servos (8) desde una Skypic.
    • Pyservos
    • Descarga automatica del firmware servos8
    • Control mediante deslizadores
    • Control por canvas
    • Gestión secuencias de movimiento
  • Pydownloader-wx, 1.2:
    • Usar la Clase iris_gui()
    • Implementar botón abrir/cerrar puerto serie
    • Implementar un mini-terminal de comunicaciones
    • Probar en MAC. Documentar
    • Probar en FreeBSD. Documentar
  • Libiris:
    • Añadir firmware: bootloader
    • Añadir ultima version del PICP

Mis recetas

Concatenar varios PDFs en uno

pdftk *.pdf cat output all.pdf

Grabar una imagen en un Pen drive

  • Obtener o crear la imagen (.img). Para grabar:
 dd if=binary.img of=${USBSTICK}

donde ${USBSTICK} es la unidad del pen drive (ej. /dev/sdb, ¡pero no una partición! NO /dev/sdb1)

Fuentes en Debian

Micros ATmel AVR

  • Arduino
    • Arduino en Wikipedia
    • El Arduino NG permite reset software. La idea es muy buena, usan DTR y RTS a la vez. Sólo cuando ambos están activados se hace el reset. Me parece simplemente genial.
  • Programacion in-circuit del ATmega8
    • Se usan 4 pines: Reset, MISO, MOSI y SCLK
    • No hay que aplicar ninguna tensión superior a 5v (a diferencia de los 12v del pic)
    • El protocolo es serie síncrono de 8 bits
    • Programador ISP (In-system programmer). En este enlace hay un PDF en el que se indica cómo hacerse tu propio programador con tu Atmel, que es lo que quiero hacer yo :-) Vienen las fuentes. Pero lo mejor es que han creado un protocolo estándar por el puerto serie. Ese programador se llama Atmel Low Cost Serial Programmer y está soportado por la herramienta libre avrdude
  • Tarjeta Skywalker (Spartan 3)
    • Conseguir una placa entrenadora FPGA + cable JTAG USB. ¿Cual? Preguntar a Ivan
    • Poner en marcha unas herramientas Linux que permitan usar ese cable
    • Instalar ISE en linux y hacer un "hola mundo"
    • Hacer ciclo completo de desarrollo
    • Empezar a sustituir las partes por componentes libres.