Buscar este blog

Mostrando entradas con la etiqueta SCARA. Mostrar todas las entradas
Mostrando entradas con la etiqueta SCARA. Mostrar todas las entradas

junio 20, 2010

Quinto Juego!


Este va a ser el ultimo juego, ya que con lo explicado puede no ser mucho, pero ya van a poder entender un poco de lo relacionado con el tema, como no se explico mucho de las senales busquen informacion de:

glade http://live.gnome.org/Glade/Tutorials
GTK http://www.pygtk.org/docs/pygtk/
Python http://python.org/doc/

Para el caso de las senales como van a poder ver en el programa inicio.py son llamadas atraves de metodos y este metodo trae al objeto widget de esta senal y a este podemos aplicar todas las funciones que este tenga:

def entry1_changed_cb(self, widget, data=None):
self.q1 = widget.get_text()
if float(self.q1) > 110:
widget.set_text("110")
if float(self.q1) < -110:
widget.set_text("-110")
self.q1 = widget.get_text()

este es un gtk entry en la pagina de gtk que se les da arriba pueden encontrar las funciones que este tiene; en la parte de glade es mas simple ya que cada señal desempeña un evento diferente en el widget de la interface.

Para ejecutar el programa deben tener conectado un cable serial-USB o modem-gsm para activar los movimientos si no les va a dar error al mandar a realizar los movimientos o deben comentar todas las funciones que digan "serial_robo()" claro menos la de la función, el programa esta estructurado en tre partes la de notificaciones, movimiento y inicio.
Notificación:
Es la misma que se les mostro en juego anterior.
Movimiento:
Este aplica listas, para hacer una supuesta matriz no tiene ninguna función real es solo para practicar, esta dentro de la función homogenea(alfa1,alfa2,z), graficar(a,b,c,fig,espacial) nos permite como su nombre nos indica graficar como va a quedar el SCARA desde una vista superior, esta les puede servir si necesitan graficar señales (seno, cosenos, tangentes, sonidos), si conocen matlab en este no se van a perder.

if __name__ == '__main__':
arg=int(sys.argv[1]),int(sys.argv[2]),float(sys.argv[3])
main(arg[0],arg[1],arg[2])

Este nos permite aparte de ejecutarlo como modulo, puede ser ejecutado como aplicación como se realizar en ciertas partes del programa inicio.py
Inicio:
Como ya se menciono tiene serial_robo() que nos permite comunicarnos con un puerto serial,  pero lo principal en este es esta parte de codigo que es la que se encarga de levantar el entorno gráfico hecho con glade.

def __init__(self):
builder = gtk.Builder() #El archivo de glade debe estar en gtkbuilder
builder.add_from_file("gui/scara_gui.glade") #Carga el archivo glade
builder.connect_signals(self) #Toma todas las senales de glade
self.window = builder.get_object("inicio") #Ventana principal
self.window.show()
self.arti1izq=1
self.arti1der=0
self.arti2izq=1
self.arti2der=0
self.arti3up=1
self.arti3down=0
if __name__ == "__main__":
app = TutorialApp()
gtk.main()

TutorialApp() es la clase del programa, no olvidar de  importar pygtk y gtk ya que son necesarias para que funcione todo.

Disculpen la demora de estos dos últimos juegos (recién salgo de las semanas de pruebas y proyectos a ya presente este proyecto y no salio también tuvimos problemas con un puente H) y lo cortos que son pero creo que con estas pequeñas bases ya pueden comenzar a descubrir por su cuenta el gran mundo de Python que les espera, gracias por seguir esta simple y triste guía.
Si quieren ayuda pueden escribirnos a meliespe@softwarelibrespe.org o en los comentarios.

junio 01, 2010

Tercer juego!

Que tenemos que instalar?
Python GTK
Es una librería que nos permite manejar la librería GTK+ (es multiplataforma es para GNU-Linux y Windows) este es muy importante para poder comenzar a trabajar  ya que va a hacer de enlace entre nuestro código y GTK+.

GTK


Glade
Para este caso podemos instalarlo de diferentes maneras bajarlo de su pagina o repositorio de nuestra distribución; para este caso vamos a instalarlo por "Centro de Software de Ubuntu"  la aplicación glade :
glade
Como utilizar Glade?1
Al abrir este programa vamos a ver una pantalla como la que se va a mostrar a continuación
Glade inicio
En las opciones del proyecto debemos escoger la opción GtkBuilder y cargar las imagen desde el directorio del proyecto. La paleta en la izquierda permite añadir widgets a la aplicación, mientras que el panel de propiedades, abajo a la derecha, permite seleccionar las propiedades del widget seleccionado para ser modificado y las señales (de lo que se nombro en el primer juego) que serán definidas para poder utilizarlas en el programa.
Iconos nivel superior
niveles superiores
El que vamos a utilizar es el primer icono el de ventana ya que este es la base para todo el resto de opciones del nivel superior
Icono de ventana
Aparece en el espacio de trabajo que se encuentra el la parte superior derecha del programa en la opción de widget, después de abrirla nos dirigimos a las propiedades que se encuentra en la parte inferior derecha del programa a la pestaña General, nombre es el nombre de la ventana este es muy importante ya que en el programa es este como lo llama al widget, y comenzamos a configurar los diferentes parametros de general y empaquetado.
Propiedades
Ya listo esto debemos proceder a añadir los contenedores que es donde se van a poner los elementos de nuestro entorno gráfico y en estos tenemos a HBOX y VBOX que son como el esqueleto de la ventana y en las áreas donde nos de libre se ingresan los cuadros de texto, caja de texto, arboles, etc.. haciendo que todo sea ajustable en su área.
vboxVBOX Y HBOXHBOX
Nos pone áreas de trabajo en forma vertical o horizontal según la escogida solo se le da clic y se va a la ventana a darle clic donde queramos ponerlo. Listo esto se puede proceder a ingresar los elementos que se necesitan a continuación como cuadros de texto y esas cosas.
Poner señales a los elementos
El asunto de senales es muy simple ya que solo toca escoger la senal adecuada para lo que deseamos hacer como por ejemplo un boton:
gtk_boton_senal
Como se puede ver la señal pressed tiene un manipulador de nombre "on_Enviar_pressed" este es lo mas importante ya que nos va a permitir en el programa utilizarlo casi como un método ya que cuando se active la señal este método del programa se activara llevando con sigo algunos parámetros que se explicaran en el próximo juego. En la ventana en cambio necesitamos activar necesariamente la siguiente señal.


1 Se tomo de este tutorial el orden de las cosas explicadas http://www.muitovar.com/glade/es-index.html

mayo 31, 2010

Segundo juego!-B

Sentencia FOR
Un bucle for es un bucle que repite el bloque de instrucciones un número prederminado de veces y bloque de instrucciones que se repite se suele llamar cuerpo del bucle y cada repetición se suele llamar iteración.

for variable in lista o cadena o rango:
cuerpo del bucle

Que es una lista?
Es un arreglo donde se puede almacenar informacion, se se puede anadir las valores haciendo una simple suma tambien se los puede modificar.
lista=['e','i','o']
lista_matriz=[['e','i','o'],['a','u','x']]
print lista
lista=['a']+lista
print lista
lista=lista+['u']
print lista
print lista[0]
print lista_matriz[0][1]
print lista_matriz[1][2]

Y nos va a dar como resultado:
['e','i','o']
['a','e','i','o']
['a','e','i','o','u']
['a']
i
x
El único inconveniente en lista_matriz es que solo es un arreglo en dos dimensiones, no es una matriz en los siguientes juegos se va explicar como realizar operaciones matriciales.
Que es un rango?
Es una sentencia que nos genera una lista de una dimensión como la de los ejemplos de arriba (lista) y su forma es range(argumento) el argumento es un numero por ejemlo:
print range(3)
y nos da como resultado:
[0,1,2]
Que es una cadena?
Es un string normal como por ejemplo mensaje="Hola"

Ejemplo for:
for i in "hola":
print i
for i in ['a',"hola",'c',"qwerty"]:
print i
for i in range(3):
print i
y nos da un resultado igual para todos los casos:
0
1
2
3
Sentencia While
Es otro tipo de bucle que se repite siempre que se cumpla la condición que este tiene.
i = 1
while i <= 11:
print i," ",
i = i + 1
Nos da como resultado:
1 2 3 4 5 6 7 8 9 10 11

Ya esto seria lo ultimo de esta pequeña introducción a Python el siguiente juego comenzamos con el entorno gráfico. Si desean mas informacion pueden visitar las siguientes paginas:
http://docs.python.org/tutorial/
http://es.diveintopython.org/index.html

mayo 29, 2010

Segundo juego!

Primer código


def mensaje(a):
 if a==1:
  print "chao mundo"
 elif a==2:
  print "odnum oahc"
def main():
 mensaje(1)
 mensaje(2)
 return 0

if __name__ == '__main__':
 main()
Primero se tiene que guardar este codigo en un archivo de texto y guardarlo con cualquier nombre, pero con la extension py, por ejemplo "mensaje.py" entonces procedemos a ejecutarlo, entonces ponemos en el terminal el siguiente codigo para correrlo. Dandomos el siguiente resultado:
$python mensaje.py
chao mundo
odnum oahc
Como se pudo apreciar en el codigo de arriba se tiene dos funciones def mensaje(a) y def main(), siempre que se encuentre def nos indica que es una función y los argumento solo se ingresan las variables sin importar el tipo de variable(gran ventaja con respecto a otros lenguajes), todo es un objeto para Python, despues de escribir esto en el codigo al comenzar la siguiente linea debemos precionar la tecla TAB (es una recomendacion ya que con espacio es mas que suficiente pero se les va a facilitar bastante), ya que python se puede decir que el codigo maneja jerarquia al hacer esto le estamos diciendo que lo que se esta escribiendo a continuacion le pertenece a la funcion de arriba, y lo mismo se aplica para los if, for,while, etc. para todo lo que te encuentres en python debes recordar esta unica regla que tiene en la escritura.
Mientras que el if __name__ == '__main__': esta parte es una de las mas complicadas de entender de python ya que como todo es un objeto, estos módulos tienen el parámetro __name__ entonces este nos puede servir para probar el programa dentro de si mismo si se importa el mismo como se muestra a continuacion.
import "El nombre del archivo sin .py y sin comillas"
"El monbre del archivo sin .py y sin comillas".__name__
y este nos debera devolver el nombre del modulo, pero no me a salido.
Sentencia IF
Como se puede ver en el código la sentencia IF no lleva paréntesis y lo mas importante es que lleva dos puntos ":" al final de la operación, no se tiene un endif o algo parecido como otros lenguajes, y si se necesitara anidar los if se utiliza elif o else dependiendo el caso.
else para cuando no se cumpla la condicion y elif para cuando no se cumpla y se tenga que verificar otra conticion
if alfa2==0:
print "es cero"
elif alfa2>0:
print "mayor a cero"

entonces si alfa2 fuera 0 se va a imprimir "es cero" mientas que si fuera mayor a cero se imprimiria ese mensaje.
Operadores:


igual ==
mayor >
mayor igual >=
menor <
menor igual <=
diferente !=
y logico and,&
o logico or,|
IDE para Python
Se pueden encontrar algunos, pero para comenzar es bueno el geany es super simple y sensillo para utilizar sin contar que nos ayuda ya que posee templates de archivos de python para comenzar a escribirlo y nos permite ejecutarlo desde el mismo para probarlo.

Y para probar el codigo ingresado presionamos F5 para ejecutarlo

Primer juego!

Hasta donde vamos a llegar por el momento, a realizar una interfaz grafica, para controlar un robot SCARA(ya que eso estoy haciendo en la universidad), utilizando las herramientas GLADE y Python, entonces un poquito de historia de estas.

Glade "es una herramienta de desarrollo visual de interfaces gráficas mediante GTK/GNOME. Es independiente del lenguaje de programación y predeterminadamente no genera código fuente sino un archivo XML"1

Python "Python permite dividir el programa en módulos reutilizables desde otros programas Python. Viene con una gran colección de módulos estándar que se pueden utilizar como base de los programas (o como ejemplos para empezar a aprender Python). También hay módulos incluidos que proporcionan E/S de ficheros, llamadas al sistema, sockets y hasta interfaces a GUI (interfaz gráfica con el usuario) como Tk, GTK, Qt entre otros."2

Espero que esto sea toda la lata que tenga que poner en estas pequeñas ayudas

Porque Glade?

Bueno porque es una herramienta que nos va a servir bastante al momento de hacer el programa ya que nos da la libertad de olvidarnos de la interfaz gráfica mientras hacemos el programa ya que esta va a ser completamente independiente de este, ya que solo tenemos que cargarla al programa y leer las señales que esta nos de.

Si señales, al realizar la interfaz se manejan señales, esto se a explicar mas adelante en el juego(a por cierto asi voy a llamar a cada entrada de esta pequeña ayuda)

Porque Python?

Bueno este puede ser lo mas difícil de explicar ya lo escogí por puro capricho mio, ya que no me gusto para nada al principio por la manera que se debe escribir y ordenar el código de este, ya que no soy muy ordenado, al programar. Y no me iba a ganar un lenguaje.

Espero poder darles una idea confusa de lo que se va a hacer (ja ja)

En el siguiente juego se va a comenzar a explicar poco a poco el manejo de Python desde un simple y típico "chao mundo!!" hasta el control del robot SCARA; claro no todo en el mismo juego.

1 http://es.wikipedia.org/wiki/Glade

2 http://es.wikipedia.org/wiki/Python