Raúl I think I'd read about this someday before but I can't find it, hope you can help with my problem.
I have 3 Pioneers, I want to coordinate behaviors between them, I have one laptop for each and also an extra laptop for user interface, 4 in total. My idea is to load in each robot-piggybacked-laptop a service with the main behaviors for commanding the robots' navigational actions, and to have in the User Interface what is happening with each robot.
I think I need to have the services distributed over different IPs (one each laptop) and do the messaging through ports corresponding to each thing I want to communicate (active behavior and sensor readings for: pose, heading, camera and lrf scans).
Do you know how can I do this ? I mean where do I say which service is which IP, in real-time execution; and how to do the corresponding messaging, for example for knowing in the user interface the pose of each robot.
Hope you can help about it !
The administrator has disabled public write access. Please, register to participate in the
forum.
Raúl
Moderator Moderator
Posts: 590
Karma: 10
Re:Distributing Services over PCs - 2010/05/05 17:52Of course you should be able to do that. Actually, RDS should make things quite easy in this regard. After all, software services distribution is one of the main strengths of Robotics Developer Studio.
Having said that, I must admit that I’ve never tested it And I am afraid that I can be of little help here given my nonexistent experience… Anyhow, have you seen this tutorial:
The administrator has disabled public write access. Please, register to participate in the
forum.
chuycepeda
User Senior Boarder
Posts: 14
Karma: 4
Re:Distributing Services over PCs - 2010/05/12 04:06Raúl thanks a lot for your response, I took an in-depth look into the service tutorials, I actually understood how 4 5 7 and 11 work, I can correctly run them as they are, also I am able to create deploy packages and deploy and run the services in another PC without the MSRDS installed. I've learned a lot more about MSRDS, so, again thanks for your recommendation I just had worked with Simulation Tutorials, never with Service Tutorials.
Nevertheless when trying to get the nodes in different IPs, meaning different PCs, everything goes wrong. I changed firewall settings, established both PCs in the same network (10.0.0.100 and 10.0.0.101), start the node just as service tutorial 7 requires and then in the other PC run the service tutorial 7 with the change from specifying "localhost" to the IP, also ran the rundeployer.cmd for working through Manifest Editor as in service tutorial 11 , and anything gets better. Just keep on saying " Failure sending outbound message..."
I read you have not experience on it, nevertheless something is telling me this is not merely an MSRDS issue, but a problem of permissions or something like that.
Hope you can help, in MS Forums just anyone answer and I've seen the same question lots of times, and the best answer just refer to work with the Manifest Editor...already tried and got the same failure message.
Promise that just after solving I'll post here the answer, think of it as an important thing...
Best regards
The administrator has disabled public write access. Please, register to participate in the
forum.
chuycepeda
User Senior Boarder
Posts: 14
Karma: 4
Re:Distributing Services over PCs - 2010/05/15 03:21After a couple of distractions redacting experimentation stuff, I got a minute of inspiration and suddenly it worked. This motivated me to test everything told in documentation, PROMRDS book, and forums, and the concrete answer was fulfilled.
Actually you don't need to disable the security settings for all nodes, just the remote, in which you're trying to run the service.
Another important thing is that when I was trying to open the remote node, in order for the local to found where to run the remote service, I was writing the tcpport also (/t:40001). This was making kind of a collision with a 'busy' or non-idle port.
The final thing that no one tells and it was crucial to get it to work, was to add both computers in the same network type, this referring also the same workgroup. I was thinking that just because both computers were connected to the same router and the same internet connection, they were in the same network. But I realized that for MSRDS to work, a same network also refers same workgroup and network type, which I used HOME NETWORK parameters.
So, just for answering your guess on IP or Name, yes you are right. I tested with name and with IP and worked the same once the computers were in the same network as previous paragraph referred. With or without definition in the HOST file, I just saw it was irrelevant for this approach of remote service running.
-What I'm trying is to do is to replicate ServiceTutorial7 but the remote service, instead of being simple ServiceTutorial4, is a service that has partners, so you have not just to run the main service in the remote node, you are in need also all of its partners with the same remote call... the thing is how to do it ?...I'm sure it is possible, but don't get it yet...Trevor tells me that VPL code works with a thing like that, but I haven't reached a good clue
Take for sure I will post this when I get it, besides, if you know something lets keep on contributing !
The administrator has disabled public write access. Please, register to participate in the
forum.
Raúl
Moderator Moderator
Posts: 590
Karma: 10
Re:Distributing Services over PCs - 2010/06/01 18:44Thanks for the feedback! No idea what is causing the partner enumeration error in your distributed configuration.... The only think that comes to my mind is that you'd probably need the proxies of all involved services in all DSS nodes? Not sure about this anyway, as I've never tried before.. Do you have the same code compiled (dll proxies) in all the nodes?Raúl Arrabales Moreno. conscious-robots.com/raul
The administrator has disabled public write access. Please, register to participate in the
forum.
Answering your question: yes I did. I tried several approaches but the issue is that you need to deploy the service partners in the correct order just before deploying the main remote service. For doing these, Trevor explained that VPL does something in a temporary folder when you run a service through VPL. I took a look and tried to understand, invested a couple of days and never got the result.
So, I think that the efforts for achieving this solution in one step (deploying a service with all its partners with one clic in a main service) simply doesn't worth enough compared with the high complications. So, I decided to do that in two steps:
1. Run the remote node that wants to be listened from the main. 2. Run the main service specifying where to look for the remote and subscribe to its existent instance.
This works perfectly well, nevertheless I wanted to jump over the need of running services in each remote PC before running the main. I think it is nicer to just run the main and deploy desired services in every remote node...but too much time without results made me go through the "easy" path.
Cheers !
The administrator has disabled public write access. Please, register to participate in the
forum.
chuycepeda
User Senior Boarder
Posts: 14
Karma: 4
Re:Distributing Services over PCs - 2010/06/26 19:35Just wanted to enhance these posts by referring that if communication is going to be in the two-ways (full-duplex) between services, then authentication must be disabled in both nodes when distributed over different IPs.
=D
The administrator has disabled public write access. Please, register to participate in the
forum.