Raúl
Moderator
 Moderator
| Posts: 362 |  | Karma: 6
|
Re:dos robots con dos comportamientos distintos - 2008/05/07 19:23
Hola Nerea,
Lo que planteas es algo que se puede hacer en Robotics Studio, pero la forma de hacerlo no es evidente y la gente suele tener problemas con esto.
En efecto, parte de la configuración que necesitas hay que hacerla en el fichero manifest. No hace falta programarlo todo, lo que necesitas es distinguir las entidades correspondientes a los robots en el simulador (poniéndoles nombres distintos).
A continuación copio un ejemplo de fichero manifest para tener dos robots Pioneer en la misma simulación y controlados de forma independiente:
| Code: | <ServiceRecordType>
<Contract xmlns="http://schemas.microsoft.com/xw/2004/10/dssp.html">http://schemas.microsoft.com/robotics/simulation/services/2006/05/simulateddifferentialdrive.html</
Contract>
<PartnerList xmlns="http://schemas.microsoft.com/xw/2004/10/dssp.html">
'>http://schemas.microsoft.com/xw/2004/10/dssp.html">http://schemas.microsoft.com/xw/2004/10/
dssp.html">
; <Partner>
<Service>http://localhost/P3DXMotorBase</Service>
<PartnerList />
<Name xmlns:q1="http://schemas.microsoft.com/robotics/2006/04/simulation.html">q1:Entity</
Name>
</Partner>
</PartnerList>
</ServiceRecordType>
<ServiceRecordType>
<Contract xmlns="http://schemas.microsoft.com/xw/2004/10/dssp.html">http://
schemas.microsoft.com/robotics/simulation/services/2006/05/simulateddifferentialdrive.html</
Contract>
<PartnerList xmlns="http://schemas.microsoft.com/xw/2004/10/dssp.html">
'>http://schemas.microsoft.com/xw/2004/10/dssp.html">http://schemas.microsoft.com/xw/2004/10/dssp.html">
; <Partner>
<Service>http://localhost/P3DXMotorBase2</Service>
<PartnerList />
<Name xmlns:q7="http://schemas.microsoft.com/robotics/2006/04/simulation.html">q7:Entity</Name>
</Partner>
</PartnerList>
</ServiceRecordType>
|
Como ves, puedes tener múltiples robots, donde cada robot tiene asignado un servicio Differential Drive separado. Puedes ejecutar múltiples copias del mismo servicio (en este caso el differential drive) simplemente añadiendo varios service records (ServiceRecordType).
En el ejemplo hay dos ServiceRecordType, ambos tienen el mismo contrato, el del Differential Drive, pero como partner tienen cada uno una entidad diferente: el primero P3DXMotorBase y el segundo P3DXMotorBase2.
Este manifest hace que se inicien dos instancias del servicio Differential Drive y cada una de ellas está asociada a una entidad diferente. Los nombres de las entidades que pongas en el manifest deben coincidir exactamente con las entidades que hayas definido en tu entorno de simulación para que todo funcione como esperas.
Creo que no trabajabas con VPL, pero por si acaso, quizás te sirva de ayuda este ejemplo de diagrama VPL que hizo Kyle Johns y tiene un controlador que maneja dos robots:
http://research.microsoft.com/users/kylej/TwoSimDrives.zip
Tienes que compilar el proyecto para que funcione bien, porque hay un bug en el VPL que hace que funcione mal cuando lo interpretas directamente desde VPL..
Sobre lo del adaptador WiFi he leído en los foros de Microsoft que para poder controlar el robot desde un nodo DSS remoto es necesario que también tengas un nodo DSS corriendo en el ordenador del robot, así que si no podéis hacer eso (instalar MSRS en el PC de abordo), creo que la única alternativa que os queda es la del adaptador WiFi-Serie.. Si me entero de alguien que lo haya probado ya os lo cuento...
Saludos,
Raúl.
Raúl Arrabales Moreno. conscious-robots.com |