<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Need4Buti%C3%A1</id>
		<title>Need4Butiá - Historial de revisiones</title>
		<link rel="self" type="application/atom+xml" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Need4Buti%C3%A1"/>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Need4Buti%C3%A1&amp;action=history"/>
		<updated>2026-04-06T00:26:44Z</updated>
		<subtitle>Historial de revisiones para esta página en el wiki</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Need4Buti%C3%A1&amp;diff=2854&amp;oldid=prev</id>
		<title>Lmichele: Página creada con '#butiaRemoto import butiaAPI import time import struct import math from numpy import linalg from numpy import matlib  #def getXY(in_file_f): #    x = 0		 #    y = 0 #    z = 0 #...'</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Need4Buti%C3%A1&amp;diff=2854&amp;oldid=prev"/>
				<updated>2012-08-09T14:58:18Z</updated>
		
		<summary type="html">&lt;p&gt;Página creada con &amp;#039;#butiaRemoto import butiaAPI import time import struct import math from numpy import linalg from numpy import matlib  #def getXY(in_file_f): #    x = 0		 #    y = 0 #    z = 0 #...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;#butiaRemoto&lt;br /&gt;
import butiaAPI&lt;br /&gt;
import time&lt;br /&gt;
import struct&lt;br /&gt;
import math&lt;br /&gt;
from numpy import linalg&lt;br /&gt;
from numpy import matlib&lt;br /&gt;
&lt;br /&gt;
#def getXY(in_file_f):&lt;br /&gt;
#    x = 0		&lt;br /&gt;
#    y = 0&lt;br /&gt;
#    z = 0&lt;br /&gt;
#    event = in_file_f.read(16)&lt;br /&gt;
#    (time1,time2, type, code, value) = \&lt;br /&gt;
#    	struct.unpack(fmt,event)&lt;br /&gt;
#    time = time2 / 1000.0&lt;br /&gt;
#    if type == 2 or type == 3:&lt;br /&gt;
#	    if code == 0:&lt;br /&gt;
#		    x = value&lt;br /&gt;
#	    if code == 1:&lt;br /&gt;
#		    y = value&lt;br /&gt;
#	    if code == 2:&lt;br /&gt;
#		    z = value&lt;br /&gt;
#   if type == 0 and code == 0:&lt;br /&gt;
#	    sum = 0&lt;br /&gt;
#    return x,y&lt;br /&gt;
mor = (0,1,0)&lt;br /&gt;
xbase = (1,0,0)&lt;br /&gt;
ybase = (0,0,1)&lt;br /&gt;
def normal():&lt;br /&gt;
	xyz = getXYZ()&lt;br /&gt;
	tam = linalg.norm(xyz)&lt;br /&gt;
	mor = matlib.matrix(xyz)/tam&lt;br /&gt;
	print xyz,tam,mor&lt;br /&gt;
	ybase = matlib.cross(mor,(1,0,0))&lt;br /&gt;
	ybase /= linalg.norm(ybase)&lt;br /&gt;
	xbase = matlib.cross(ybase,mor)&lt;br /&gt;
	xbase /= linalg.norm(xbase)&lt;br /&gt;
	print mor,linalg.norm(mor)&lt;br /&gt;
	print xbase,linalg.norm(xbase)&lt;br /&gt;
	print ybase,linalg.norm(ybase)&lt;br /&gt;
	print matlib.inner(xbase,ybase),matlib.inner(xbase,mor)&lt;br /&gt;
	print matlib.inner((1,0,0),ybase),matlib.inner(ybase,mor)&lt;br /&gt;
	print matlib.inner(mor,xyz),&lt;br /&gt;
	print matlib.inner(xbase,xyz),&lt;br /&gt;
	print matlib.inner(ybase,xyz),&lt;br /&gt;
	print (matlib.inner(mor,xyz)**2 +&lt;br /&gt;
	 matlib.inner(mor,xyz)**2 +&lt;br /&gt;
	 matlib.inner(mor,xyz))**0.5&lt;br /&gt;
	return (xbase,mor,ybase)&lt;br /&gt;
	&lt;br /&gt;
ACCELEROMETER_DEVICE='/sys/devices/platform/lis3lv02d/position'&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def getXYZ():&lt;br /&gt;
        ''' return accelerometer xyz as a tuple '''&lt;br /&gt;
        try:&lt;br /&gt;
            fh.seek(0)&lt;br /&gt;
            string = fh.read()&lt;br /&gt;
            xyz = eval(string)&lt;br /&gt;
            xyz =tuple(map(lambda nuevo: int(nuevo),xyz))&lt;br /&gt;
            return xyz&lt;br /&gt;
        except IOError as ioerror:&lt;br /&gt;
                print ioerror&lt;br /&gt;
                return (0,0,0)&lt;br /&gt;
def getY():&lt;br /&gt;
	xyz=getXYZ()&lt;br /&gt;
	return matlib.inner(xyz,ybase)&lt;br /&gt;
&lt;br /&gt;
def getX():&lt;br /&gt;
	xyz=getXYZ()&lt;br /&gt;
	return matlib.inner(xyz,xbase)&lt;br /&gt;
&lt;br /&gt;
def dir(n):&lt;br /&gt;
	if (n&amp;gt;0):&lt;br /&gt;
		return ('1',str(n))&lt;br /&gt;
	else:&lt;br /&gt;
		return ('0',str(-n))&lt;br /&gt;
def dir2(iz,de):&lt;br /&gt;
	(sentIz,magIz)=dir(iz)&lt;br /&gt;
	(sentDe,magDe)=dir(de)&lt;br /&gt;
	return (str(sentIz),str(magIz),str(sentDe),str(magDe))&lt;br /&gt;
&lt;br /&gt;
butiabot = butiaAPI.robot('169.254.11.29')&lt;br /&gt;
modulos = butiabot.get_modules_list()&lt;br /&gt;
print modulos&lt;br /&gt;
&lt;br /&gt;
#butiabot.abrirSensor()&lt;br /&gt;
#butiabot.abrirMotores()&lt;br /&gt;
a = 'q' #no hace nada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
fh = open(ACCELEROMETER_DEVICE,'r')&lt;br /&gt;
# Inicializo base en equilibrio&lt;br /&gt;
(xbase,mor,ybase)=normal()&lt;br /&gt;
time.sleep(1)&lt;br /&gt;
ANGULO_MAX = 500&lt;br /&gt;
MOTOR_MAX  = 1000&lt;br /&gt;
#try:&lt;br /&gt;
#while True:&lt;br /&gt;
#	print matlib.inner(mor,getXYZ()),&lt;br /&gt;
#	print matlib.inner(xbase,getXYZ()),&lt;br /&gt;
#	print matlib.inner(ybase,getXYZ())&lt;br /&gt;
#except:&lt;br /&gt;
#	pass&lt;br /&gt;
&lt;br /&gt;
while True:&lt;br /&gt;
	x1 = getX()[0]&lt;br /&gt;
	y1 = getY()[0]&lt;br /&gt;
	print(&amp;quot;x&amp;quot; + str(x1) + &amp;quot;y&amp;quot; + str(y1))&lt;br /&gt;
	#topeo a la mitad del recorrido&lt;br /&gt;
	iz = x1+y1&lt;br /&gt;
	de = -(x1-y1)&lt;br /&gt;
	if(max(abs(iz),abs(de))&amp;gt;1000):&lt;br /&gt;
		iz=iz*1000/max(abs(iz),abs(de))&lt;br /&gt;
		de=de*1000/max(abs(iz),abs(de))&lt;br /&gt;
	dires=dir2(iz,de)&lt;br /&gt;
	print dires			&lt;br /&gt;
	butiabot.set2MotorSpeed(*dires)			&lt;br /&gt;
print v		&lt;br /&gt;
&lt;br /&gt;
fh.close()&lt;br /&gt;
&lt;br /&gt;
#in_file.close()		&lt;br /&gt;
print &amp;quot;fin&amp;quot;&lt;/div&gt;</summary>
		<author><name>Lmichele</name></author>	</entry>

	</feed>