Ago
31
2008
0

confianza mutua en el comercio electrónico

Una de las características más interesantes de e-bay es la capacidad de generar confianza mutua entre el comprador y el vendedor. Tanto el comprador como el vendedor al finalizar una transacción comercial, pueden evaluarse mutuamente. Esto genera un historial de compras y ventas que es muy útil a la hora de elegir un producto (o aceptar la oferta de un comprador): un vendedor con un 99% de valoraciones positivas da más confianza que uno con un 10%. Incluso la evaluación forma parte del proceso de compra y está mal visto no hacer la evaluación. Este proceso es beneficioso tanto para el comprador como para el ya que genera prestigio para el vendedor y confianza para el comprador y ayuda a eliminar las dudas que surgen en una transacción: ¿me llegará el producto si compro a esta persona? ¿me pagará este cliente?

La ventaja de ebay respecto a otras plataformas es que está integrado en el proceso de compra. Existen portales de evaluaciones como ciao, kelkoo ó wikio, pero al no estar integrados en el proceso de compra, lo normal es que los compradores opinen más frecuentemente cuando la transacción ha ido mal y no cuando ha ido bien.

Ahora que estamos en el momento de la integración por medio de mashups, sería buena idea que los propietarios de tiendas electrónicas integraran algún mecanismo de evaluación en el proceso de compra. Pero para poder hacerlo necesitarían un api de evaluación (y si es común a todos los sitios y abierto al estilo open social, mejor). Así se instauraría un sistema de confianza mutua similar al que genera ebay, pero multivendedor.

Escrito por nunes | Etiquetas:, ,
Ago
13
2008
0

falta de tiempo

Hace tiempo que no he podido escribir nada por falta de tiempo. A partir de ahora voy a escribir de forma más esporádica, pero escribiré artículos con más contenido propio y ya no publicaré noticias. No sabría decir la periodicidad, simplemente según tenga tiempo, pero intentaré que no pase más de un mes entre cada entrada.
En los enlaces podéis leer otros blogs que publican noticias de robótica de forma más constante y expuestas de forma muy interesante.

Escrito por nunes |
Ago
13
2008
2

jugando con player/stage

En la asignatura de robótica del posgrado de inteligencia artificial de la Uned me he puesto a trastear con Player/Stage, uno de los entornos de robótica propuestos para hacer las prácticas. De entre los entornos que nos han sugerido, este era el que me parecía más interesante: open source, basado en linux, con entorno de simulación y ejecución y muy usado en diferentes robots y concursos.

En un primer momento, player/stage resulta un poco frustrante: la interfaz de usuario no es muy usable y la documentación no es demasiado completa. La curva de aprendizaje es un poco alta, pero con ponerse manos a la obra y hacer muchas pruebas se consegue que funcione.

El sistema se compone de 3 partes:

  • player: es el controlador del robot, se trata de un servidor tcp que ejecuta sobre el robot y sirve interfaces para controlarlo. La tarea del desarrollador es hacer un cliente que interactúe con player.
  • stage: se trata de un simulador de robots en 2D. No es demasiado detallado, pero al ser simple puede incluir un número alto de robots simultáneamente.
  • gazebo: es un simulador en 3D más realista, lo que hace que sea más lento y no apto para un número alto de robots.

Sólamente he tratado con el entorno player/stage para simulaciones en 2D, así que sólo comento estos módulos, nada sobre gazebo por ahora.

En cuanto a player, es el módulo que define la arquitectura del sistema. Cómo arquitectura de desarrollo es muy interesante: por un lado hay un entorno servidor que se ejecuta sobre el robot (real o simulado) que recibe peticiones tcp. Por otro hay un cliente que accede a ese robot, para lo que nos dan unas librerías cliente que nos evitan trabajar a bajo nivel. Para controlar un robot a través del servidor player existen una serie de interfaces (por ejemplo position2d para mover un robot en 2 dimensiones) que son implementadas por unos drivers (por ejemplo, un driver para el robot pioneer que implemente la interfaz position2d).

El desarrollador sólo necesita escribir un programa cliente que haga uso de los interfaces, normalmente a través de librerías cliente implementadas en diversos lenguajes de programación (C, C++, python, java). Las librerías se encargan del trabajo sucio de contactar con el servidor y enviar mensajes, y sólo necesitamos usar los interfaces para controlar nuestro robot. Con esta arquitectura, un mismo cliente que use unos interfaces, puede controlar diferentes robots que tengan los drivers apropiados para implementar los interfaces (incluso aunque el hardware sea muy diferente).

El servidor se configura de forma bastante sencilla con unos ficheros que definen dispositivos (devices): son asociaciones entre interfaces y drivers. Por ejemplo, el interfaz laser define el api para interactuar con un medidor de distancia láser (laser ranger). Un programa cliente sólo usa ese interfaz. Sin embargo tenemos un robot equipado con un sensor SICK LMS 200 que implementa el interfaz laser a través del driver sicklms200. En nuestro fichero de configuración, debemos definir un dispositivo que asocie el interfaz laser y el driver sicklms200:

driver(name "sicklms200" # The driver's nameprovides ["laser:0"] # The device address)

Si tenemos un programa cliente, este accedería al dispositivo “laser:0″ que implementa el interfaz “laser”, usando el driver “sicklms200″.

Siguiendo esta sencilla arquitectura de drivers/interfaces/dispositivos podemos controlar nuestro robot. En mi caso, he hecho pruebas con python que, aunque no está totalmente documentado, se puede usar intuitivamente con la documentación de la librería cliente de C. Player se trata de una especie de sistema operativo para la robótica, definiendo los interfaces básicos para controlar un robot, pero que se ejecuta sobre tcp, lo que lo hace bastante flexible.

Ahora vamos con stage. Se implementa cómo un driver para player, así que necesitamos configurar un servidor player con un driver stage que se encarga de simular el robot ó robots. Esto difiere de la arquitectura player para un robot físico: para cada robot, deberíamos tener un servidor player diferente. Sin embargo en un entorno simulado con stage, tenemos varios robots simulados en un sólo servidor player. Además el servidor ejecuta una interfaz gráfica para mostrar los resultados de la simulación. El modelo del mundo se define en un fichero de configuración del mundo, donde definimos los objetos y robots que hay en el mundo y el plano del mundo se define en un fichero de imagen (jpg por ejemplo). Al ejecutar la simulación, vemos el plano del mundo con los objetos definidos incluyendo los robots. Si ejecutamos nuestro cliente, se actualiza la posición del robot el plano del mundo. El mismo cliente nos sirve para interactuar con un entorno simulado o real, sin ningún cambio: siempre interactúa con un servidor player.

El problema de esta arquitectura de simulación es que algunos drivers no están implementados en stage, como por ejemplo el driver amcl para localización (que devuelve una estimación de la posición en un mapa). Para usarlo es necesario definir un segundo servidor que utilice los interfaces del robot simulado. Hay ejemplos y es sencillo de realizar (aunque el algoritmo de localización no me terminó de funcionar) pero es enrevesado de configurar.

El conjunto player/stage como entorno de simulación funciona bastante bien, es bastante rápido y creo que lo suficientemente detallado. Podemos acceder a casi todos los interfaces de los robots simulados y he trasteado con sensores láser y sónar para generar mapas a partir de ellos. Me ha faltado probarlo con un robot real, para comparar la calidad de la simulación, pero no tengo acceso a ninguno de los robots reales.

En definitiva, se trata de un entorno bastante completo, con mucho código ya desarrollado y además open source. La parte negativa es que player ejecuta sobre linux, así que necesitaremos un hardware que ejecute el kernel y algunas dependencias, lo que nos limita a efectos prácticos a arquitecturas pc (esto significa robots caros). También hay que tener en cuenta que al ejecutar sobre tcp, la latencia puede darnos problemas.

Por el tipo de módulos existentes (mapas, localización, etc) parece más indicado para sistemas deliberativos o híbridos, pero el el sistema es completamente agnóstico en este aspecto, sólo define interfaces que podemos usar cómo queramos. En este sentido sería interesante desarrollar las librerías cliente, que actualmente se limitan a ofrecer los interfaces sin profundizar en las estructuras de control reactivo o deliberativo.

Por cierto, por falta de tiempo no podré terminar la asignatura a tiempo y probablemente repita el año que viene :-( lo bueno es que podré profundizar un poco más en ella.

Escrito por nunes | Etiquetas:, , ,
Hecho con WordPress | Basado en Aeros Theme | TheBuckmaker.com WordPress Themes | Creative Commons License
Creative Commons Reconocimiento 2.5 España License. | contacto: info@es-robot.com | Información legal.
Wikipedia Affiliate Button
468x60-2   stopsoftwarepatents.eu petition banner