-
Notifications
You must be signed in to change notification settings - Fork 14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make apps launch cartesian controller locally? #123
Comments
Some (somewhat historically, hopefully helpful) comments on this:
Not sure if I understand this question, but taking advantage of this place to add a comment: AFAIK, both TCP and UDP comms on the same machine should go through the local loop-back (
Originally, on ASIBOT, we used to launch the full stack all with local devices: application-load_local->cartesianbot-load_local->ravebot/canbot. The reason we stopped doing this was with TEO, where we had multiple limbs and thus several instances of The
My experience with
An original intention of yarpmanager was to have some cluster load management. The idea was to have a map of resources, and have the machine reason "okay, I have enough resources on the robot CPU, I can launch the kinematics there", or the opposite case "let's send these computations to that machine with a good GPU". Not very sure if that aspect ever matured, but I do believe it would be a good idea to put that logic on the PS: BTW, I cannot find the issue, but you asked the purpose/extent of |
PS: I updated my comment slightly just to put answers in line with questions. |
Thanks for your valuable answers, @jgvictores! The first one relieves many of my concerns around performance - it confirms my suspicions that network comms are somewhat smart enough to optimize local connections (i.e. same machine, as opposed to two machines speaking to eachother). Such benefits may ultimately outweigh any reason to ever use Ad Q2: I was thinking about ASIBOT, too. Wondering how could we measure send/receive rates or rate the overall performance. Maybe the iCub team has already stumbled upon this matter? Ad Q4: note to myself to investigate yarpmanager's handling of resource availability: http://www.yarp.it/yarpmanager.html#resource.
Sent link through Google Drive, you may use them freely. |
Let's discuss this at #124. |
YARP 3.4 will feature new carriers for efficiently communicating with a process on the same machine using a unix socket: robotology/yarp#2329. |
The best performance will be achieved with direct device instantiation, i.e. not involving YARP network wrappers (and hence ports). If not possible (but that's a design issue), use the |
I've recently committed a few control apps that launch an instance of
CartesianControlClient
and expect to find aCartesianControlServer
wrapping a specific implementation somewhere in the YARP network. That is, communication between the app and the controller is held through YARP ports, regardless of whether both are executing on the same machine.Question 1: could this impose a delay depending on network latency?
Question 2: if so, could it be minimized by making the app open an instance of the controller (e.g.
BasicCartesianControl
) and access it directly instead of proxying through the client device? Check whether thelocal
carrier would fit this particular use case.Question 3: assuming that we decide to launch both the app and the controller bundle on the same machine separately (that is, involving the CCC/CCS pair), could we benefit from switching to the
shmem
carrier?Question 4: is it possible for the
CartesianControlClient
to automate some of these choices?Attaching diagrams for two apps, bigger rectangles are associated to YARP devices.
keyboardController
streamingDeviceController
The text was updated successfully, but these errors were encountered: