Introducción a los Iteradores (Iterators) en C# 2.0
Una característica novedosa del lenguaje C# 2.0 usada por CCR son los Iteradores (Iterators), que permiten que en lugar de usar delegados para conseguir el comportamiento asíncrono, el programador pueda reescribir el código de una manera secuencial, dejando que los Arbiters se centren en otras tareas. Todo esto se puede programar en un único método “iterador”, mejorando la legibilidad del código y manteniendo el comportamiento asíncrono.
Vamos a poner un ejemplo para poder explicar la funcionalidad de los iteradores:
IEnumerator<ITask> IteratorExample() { int totalSum = 0; Port<int> portInt = new PortSet<int>(); for (int i = 0; i < 10; i++) { portInt.Post(i); yield return Arbiter.Receive<int>(false, portInt, delegate(int j){totalSum += j;}); } Console.WriteLine("Total:" + totalSum); }
Para que las clases admitan la iteración es necesario que implementen el "modelo de enumerador", como podemos ver en el ejemplo (interfaz IEnumerator). Cabe destacar el uso de la palabra clave “yield return”, que permite al programa devolver inmediatamente el control a la instrucción que llamó al iterador, en este caso, un “for”. De forma que la suma (es decir el cuerpo del delegado) se ejecuta en paralelo. Esto se puede ver como una manera de conseguir programación asíncrona.
En el ejemplo anterior, cuando se ejecuta la línea que contiene yield return, devuelve una instancia de la interfaz ITask implementada por ReceirverTask, que ha sido creada cuando llamamos a Arbiter.Receive. El CCR activa la devolución de Task y también asocia el iterador con la tarea. Cuando se ha realizado la tarea, el iterador continúa con la ejecución. De hecho, si el primer parámetro en la llamada a Arbiter.Receive (la persistencia), no es “true”, el Arbiter no seguirá escuchando el puerto indicado.
Las ventajas de usar iteradores proviene de dos características del lenguaje C#:
- Métodos anónimos: permite a los programadores crear bloques de código que se pueden encapsular en un delegado para su posterior ejecución.
- El compilador captura todas las variables locales que actúan dentro del cuerpo del método anónimo. Esto permite que el delegado pueda usar las variables definidas en el método padre, y además pueda comunicar los resultados, ya que siempre está procesando otros hilos, de la iteración.
Entorno de Simulación Visual de Microsoft Robotics Studio
Uno de los mayores motivos por el que se creó MSRS era acelerar el desarrollo y adopción de la robótica. Gran parte de este esfuerzo está centrado en la simulación. Se ha diseñado una simulación con una alta fidelidad, escalabilidad y visualización, que permite a cualquier persona usarlo como si fuera un juego (ver Figura).
La simulación permite a los desarrolladores experimentar con robots nuevos incluso antes de construirlos físicamente. También se pueden desarrollar aplicaciones para robots existentes y luego probar los resultados en los robots físicos. Además, permite al programador eliminar fallos básicos que se podrán probar con antelación en el entorno virtual.
Otra característica del simulador de MSRS es que se puede simular exactamente la misma aplicación que se ejecutará en el robot real. Pero la simulación tiene sus límites, ya que el mundo real es complejo y está lleno de imprevistos y de ruido.
El entorno de simulación de MSRS está compuesto de varios módulos:
Simulation Engine Service: responsable del progreso del tiempo en el motor físico de la simulación.
Managed Physics Engine Wrapper: abstrae al programador del nivel bajo del motor físico.
Native Physics Engine Library: permite la aceleración del hardware a través de AGEIA PhysX Technology.
Entities: representa el hardware y los objetos físicos en el mundo simulado. Un gran número de entidades están definidas en MSRS y permiten al usuario crear rápidamente un entorno de simulación.
Cómo autenticarse (usuario y contraseña) en Robotics Studio (interfaz web del nodo DSS)
Si intentas entrar al interfaz web de Robotics Studio (Run DSS Node) y te el navegador de Internet te pide usuario y contraseña, no es un fallo del programa ni un fallo de instalación. Tampoco necesitar pedir el usuario y la contraseña a nadie. En realidad es debido al esquema de seguridad de DSS.
Necesitas autenticarte para acceder a un nodo DSS. ¿Qué navegador estás usando? Puede ser que si tu navegador por defecto es otro, al darle a Run DSS Node te intente abrir otro navegador distinto de MSIE. Si es Internet Explorer, no deberías tener problemas y de hecho no te debería pedir contraseña ya que las credenciales se reenvian automáticamente.
Si estás usando otro navegador tendrás que escribir el usuario y contraseña de un usuario de tu equipo que tenga permisos para ejecutar el nodo DSS (te valdrá el mismo usuario con el que has iniciado sesión, que es el que ha lanzado el nodo DSS). En realidad el usario y contraseña es para acceder a la interfaz Web de MSRS que se sirve a través de IIS (el servidor Web de Windows).
Si estás en un dominio, el nombre de usuario lo tienes que escribir de la siguiente forma: <dominio><usuario>
Si de cualquier forma, usando Internet Explorer sigue sin funcionarte, puedes intentar lo siguiente:
En la configuración del navegador web:
1.- Ve a Herramientas. 2.- Opciones de Internet. 3.- Solapa Seguridad. 4.- Selecciona el icono de Intranet Local. 5.- Dale al botón Nivel Personalizado. 6.- Busca la opción Autenticación de Usuario - Inicio de Sesión. 7.- Selecciona la opción Inicio de Sesión Automático con el nombre de usuario y contraseña actuales. 8.- Acepta para cerrar la ventana. 9.- De nuevo selecciona el icono de Intranet Local en Herramientas - Opciones de Internet - Seguridad. 10.- Pulsa el botón Sitios y asegurate que las tres opciones están seleccionadas. 11.- En ese misma ventana Intranet Local dale al botón Opciones Avanzadas. 12.- Añade la dirección web http://localhost a la zona usando el botón Agregar. 13.- Asegurate que el cuadro de requerir https NO está seleccionado. 14.- Dale a Aceptar tres veces para cerrar todas las ventanas. 15.- Cierra todas las ventanas del navegador que tengas abiertas y vuelve a intentarlo.
Dime si no te funciona nada de lo anterior. Si sigue sin funcionar quizás necesites ejecutar el siguiente comando:
httpreserve /port:50000 /user:msrs_test
O cambiar alguna configuración de seguridad de tu nodo DSS.
Tienes información detallada sobre el modelo de seguridad de DSS en [1] y también un FAQ relacionado en [2].
8 a12 de Abril de 2008. Tucson ARIZONA Tucson Convention Center
La octava conferencia bianual de Tucson continúa su tradición multidisciplinar de intenso y riguroso debate sobre todos los aspectos de la cuestión fundamental sobre cómo el cerebro produce la experiencia consciente.
Microsoft Visual Programming Lenguaje (VPL) es un entorno que ofrece un modelo de programación gráfico y que permite una programación convencional. El objetivo de este lenguaje de programación es facilitar a programadores noveles el entendimiento de conceptos como variables o lógica. Sin embargo, no está limitado a programadores noveles, ya que llama la atención a programadores avanzados por su rápido prototipado o su generación de código.
Mientras que la caja de herramientas se adapta a aplicaciones de robótica, la arquitectura subyacente no está limitada sólo a este tipo de aplicaciones. Como resultado, VPL tiene una audiencia amplia, desde estudiantes a expertos programadores o aficionados.
El flujo de datos de VPL consiste en conectar secuencias de actividades representadas como bloques con entradas y salidas que pueden ser conectados con otros bloques (El pin derecho corresponde con la salida y el izquierdo con la entrada). Las actividades pueden representar tareas preconstruidas, control de flujo de datos, funciones u otros módulos de código. Por tanto, la aplicación final será una orquestación u ordenación de procesos (servicios de MSRS).
Los bloques contienen los nombres de la propia actividad y las fronteras de ella. También pueden contener diferentes atributos o gráficos que definen la finalidad de la actividad. Además, una actividad puede tener múltiples conexiones de entradas y sus correspondientes conexiones de salida. Una conexión de salida puede representar varias cosas: un resultado o una notificación.
Para crear una aplicación con VPL sólo hay que elegir en el menú del programa la opción VPL load. Aparecerá un tapiz donde pondremos los bloques de nuestra aplicación. A la izquierda tenemos la caja de herramientas de actividades básicas, de la que obtendremos las actividades necesarias en cada momento. Debajo de esta, tenemos la caja de herramientas de los servicios compatibles con VPL. Una vez seleccionado un servicio, tenemos dos opciones: crear uno nuevo o crear la referencia al servicio.
Además tenemos la ventana con las propiedades del elemento seleccionado y la ventana que incluye los archivos incluidos en el proyecto.
Un servicio necesita saber su estado inicial y también las relaciones con los llamados Partner Service, citados anteriormente. Debemos configurarlos, con opciones como la velocidad o el tipo de puerto que usa.
Una vez conectados los bloques, el proyecto se puede ejecutar y subsanar los errores que aparezcan. Además, se podrá generar código del proyecto realizado. Este código se genera en C # y puede servir como punto de partida para crear aplicaciones más complejas.
Este víode de la serie 'Conversations with History' titulado 'Consciousness and the Biology of the Brain' es una entrevista con Christof Koch presentado por el Instituto de Estudios Internacionales de la Universidad de California en Berkeley.
El presentador Harry Kreisler recibe al neurobiólogo ChristofKoch para hablar de lo que la biología nos puede decir acerca de la consciencia. Se habla del marco para definir el problema de la consciencia en el que Koch ha trabajado conjuntamente con el premio Nobel Francis Crick. Koch refrexiona sobre la actual revolución en el estudio del cerebro y cómo la tecnología influye en esta transformación de lo que se conoce como las correlatos neuronales de la consciencia. Esto lleva a plantearse el lugar del hombre en el universo.