Introducción a Microsoft Robotics Studio (MRS) El fundamento de la programación en MSR lo constituye la creación de servicios, núcleo de la programación en VPL. Para describir como realizar un programa en VPL, supóngase que se desea controlar un robot NXT de Lego a través de un cuadro de diálogo que posea 5 botones de dirección. Para diseñar lo anterior, en primer lugar se utiliza el servicio "DirectionDialog" y se conecta a la actividad "Calculate", definiendo en esta última "Direction", que es la variable que se pretende aplicar. Posteriormente, se conecta a "Calculate" la actividad "Switch", que es equivalente al "Case" en Matlab. Se definirán tantas salidas como botones existan en "DirectionDialog", para cada una de las cuales se tendrá que definir la potencia de las ruedas izquierda y derecha del robot. Cuando se desea que el robot se mueva hacia atrás (condición "ButtonDirection.Backwards"), deberá darse igual potencia (negativa) a ambas ruedas. Para que se mueva hacia adelante, la potencia de ambas ruedas debe ser positiva. Cuando se desee girar a la izquierda se dará a la rueda izquierda potencia negativa y a la rueda derecha potencia positiva. Para doblar a la derecha es lo contrario. Para detenerse, la potencia será cero para ambas ruedas. La figura que se presenta a continuación muestra el caso de las tres condiciones para las cuales hay que definir igual potencia a ambas ruedas (moverse hacia adelante, hacia atrás y detenerse). Como en primer lugar se comprobará en un entorno de simulación, el servicio "GenericDifferentialDrive" será definido como un manifiesto, en este caso "LEGO.NXT.Tribot.Simulation.Manifest.xml" (por supuesto, puede utilizarse cualquier otro manifiesto compatible con la aplicación). Cada uno de los datos definidos, que establecen una conducta, se unen a través de la actividad "Merge". Dado que se han definido las potencias de las ruedas en "Data", entonces "value" será el valor a seleccionar en el cuadro de diálogo de definición de la variable "SetDrivePower". Otra opción hubiera sido definir la potencia de las ruedas de forma directa, para lo cual se tendría que marcar "Edit values directly" y definir la potencia para cada rueda. En el caso de los giros, será necesario definir una potencia para cada rueda, lo cual se realiza como se muestra en el siguiente diagrama Nótese como para definir las variables de potencia de cada rueda se ha utilizado una actividad "Join". Para definir la potencia de cada rueda será necesario seleccionar "Izquierda" y "Derecha en el cuadro de diálogo. La figura que se muestra a continuación representa el diálogo de dirección y el entorno de simulación, después de ejecutar el Programa en VPL. Una vez comprobado el sistema en simulación, se procede a comprobar con la plataforma hardware del Lego NXT. Para ello se incorpora el bloque "LegoNXTBrickv2" y se define en él el puerto de comunicaciones Bluetooth (en nuestro caso, 41) y se sustituyen los servicios "GenericDifferentialDrive" por "LegoNXTDrivev2", donde se define que motor (A, B ó C) están conectados a la rueda derecha e izquierda. Finalmente se procede a ejecutar el Programa. Otros ejemplos de programas en VPL para NXT de Lego son: Referencias: |