-
Notifications
You must be signed in to change notification settings - Fork 2
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
[iCubGenova04] Force feedback from WholeBodyDynamics starts minutes after running the yarprobotinterface #999
Comments
A first step could be of checking if only the force ports are not published, or if only the force are published with a delay. See https://github.com/robotology/whole-body-estimators/blob/master/devices/wholeBodyDynamics/WholeBodyDynamicsDevice.cpp#L1919 for a list of quantities published by the wbd. In particular, it would be interesting to know if |
Another test is to try to switch the robot to torque control mode or impedance interaction mode. If the robot faults, then the torques are actually not published. |
Hi @S-Dafarra , did you try to look into the log file to check if some problems with the FT sensors arae shown that could affect the time in between whcich your are not getting any data from them? |
The torque is not streamed and the contacts are not streamed too |
Great. Then something is blocked either in https://github.com/robotology/whole-body-estimators/blob/master/devices/wholeBodyDynamics/WholeBodyDynamicsDevice.cpp#L1372 or https://github.com/robotology/whole-body-estimators/blob/master/devices/wholeBodyDynamics/WholeBodyDynamicsDevice.cpp#L2118 . Some good old debug prints may be useful in this case. It would also be useful to have the log related to wholeBodyDynamics (all the relevant log lines should start with |
Hi @GiulioRomualdi , @S-Dafarra , |
Hi @julijenv, unfortunately we did not manage yet to run those tests. |
In the last days I have used extensively the robot and I have never experienced this problem. I don't know if anything changed in the configuration of the robot and the problem is now fixed. I know in those days also @gabrielenava @CarlottaSartore are using the robot, please annotate here if you notice this problem. |
Indeed, there was a CAN problem on the arm (#1008 (comment)). I wonder if this could have caused one of the FTs to slow down the initialization of WBD 🤔 |
I confirm that the problem seems solved. I noted that before (i.e. few weeks ago), the feet forces from wbd were streamed only several minutes after the robotinterface started. Now they are streamed right after the robot startup phase. |
@Nicogene was experiencing a similar behavior due to some corner case interaction of yarpserver port registration, perhaps he can add something himself. |
I usually call it "IP theft", it happens when you are on a setup with more than one node, and after running a module that opens the port What happens is that in the nameserver the This is a known issue about the ports registration in YARP, there is no check if the entry exists already because it is possible that the entry remained after the crash of one module, the only check is on the address conflict triggered by the OS. cc @drdanz |
This has been thoroughly discussed in several occasions in the past:
As result, there is nothing we can do about this, it is just how it was decided that YARP should work. If you want to discuss or to propose some changes to this behaviour (which I would probably agree to) feel free to open an issue or a discussion on the YARP repository. |
I think that writing this down (even just here in this comment) is already quite useful, as I had no idea of this discussion in the past (I guess there was f2f, I don't remember reading about those). |
I was reading again the above comments by @Nicogene and @drdanz. Let me understand if I got it right. Two modules running on different machines are always free to open ports with the same name. This is allowed because the OS is not triggering any address conflict error. At the same time, the name server cannot know if the second module is another instance of the first module that runs because the first instance has crashed. In addition, the name server cannot test this hypothesis because there is no "probe" and we cannot enforce the user to run a So, the "IP theft" can always happen right? |
Yes, both modules will continue to run, and existing connections will not be interrupted, but the server will start responding to queries returning the address of the last one started. Just try running |
Ok. Just for discussing (even if it may not be the best place), could the name server use the address to spot the thieves? I mean, if the module crashed, there is quite a chance that it will restart on the same machine with the same address. Instead, if the same port is requested by two different addresses could be a good indication that something weird is going on. In that case, could the name server return an error, eventually suggesting to run |
The problem is that this kind of checks and the This kind of check is actually done by |
No no, I was not suggesting to run |
Regarding the original delay problem, maybe that could be related to some other device that has some delay in starting, causing in turn the |
If any other feedback from the robot works fine (even just encoders) in theory the attach phase of the robotinteraface should have been reached. |
Apparently the attach all of WBD seems to be called after the calibration of the hands finished. Maybe, if one of the calibrators hangs because of the boards has problems, then WBD will wait as well. I don't know under which condition the |
See https://github.com/robotology/yarp/blob/master/src/yarprobotinterface/Module.cpp#L155 and https://github.com/robotology/yarp/blob/7098ab6219647603f96764cc0a7cd33a950bbfa6/src/libYARP_robotinterface/src/yarp/robotinterface/experimental/Robot.cpp#L624, probably we could double check the level of the attach action of the wholebodydynamics. In the OP, you wrote:
The point is that sensors such as FT get connected to the YARP port streaming their data in the attachAll phase, so if the sensor data was valid, that means that at least partically the attachAll phase is reached, and it was not blocked at an earlier phase. Unless as wrote earlier, there is something going on with levels. |
I think I might have sometimes noticed these behaviors. I remember an instance while we were testing something with @fjandrad we were trying to configure some block of the code in the |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. |
This issue has been automatically closed due to inactivity. Feel free to open it again if needed. |
fyi @HosameldinMohamed @prashanthr05 , this was closed by the stale bot, but keep in my mind that it could be still there. |
We can prevent the bot from handling stale issues by applying the label |
This issue has been automatically marked as stale because it did not have recent activity. It will be closed if no further activity occurs. |
This issue has been automatically closed due to inactivity. Feel free to open it again if needed. |
@S-Dafarra @GiulioRomualdi @mebbaid do you still experienced this? |
Not anymore in ergocub and iCubGenova09 |
Brief description of the request/failure
When launching the
yarprobotinterface
, we noticed that it takes several minutes to WBD to start streaming the external forces.Detailed context
We noticed this by running the iCubGUI immediately after running the robot. The external forces appear after a couple of minutes. We also checked the raw output of the sensors by checking the corresponding
yarp
port. The same for the inertial sensor. They all seem to output some reasonable, non-constant, output.We are not sure at which level the problem is, if it is related to electrical issues, or it is a software problem.
Accompanying material
@traversaro @GiulioRomualdi @prashanthr05
The text was updated successfully, but these errors were encountered: