From: Paul O. <new...@ki...> - 2008-10-04 22:06:08
|
Hi Geoff, The reason why the problem occurs is already known and I wrote about it few days ago. Something is wrong with sourceforge mailing lists as messages are delivered here with void order and things I've sent few days ago are coming here today. On Mon, 29 Sep 2008, gbiggs wrote: > Paul Osmialowski wrote: >> I didn't have much time for further investigation today, however I was >> able to figure out some new facts: >> - I've reinstalled Player-2.2.SVN snapshot taken 2008.09.24 again to look >> closer at linuxjoystick driver; I've put lot of additional PLAYER_WARN >> messages into the code and found that it blocks Player before driver >> thread is actually created. It freeze at the Request() call in Setup() >> method: >> if(!(msg = this->position->Request(this->InQueue, >> PLAYER_MSGTYPE_REQ, >> PLAYER_POSITION2D_REQ_MOTOR_POWER, >> (void*)&motorconfig, >> sizeof(motorconfig),NULL,false))) >> { >> PLAYER_WARN("failed to enable motors"); >> } >> else >> delete msg; >> Request() call never returns. So I remarked this part of code and to my >> surprise, it started to work fine with remote Roomba robot on EVERY >> computer I tried to run Player! Of course, that's not the solution, it's >> just hiding the head deep in the sand hoping the problem is gone when we >> don't see it. Something must be fixed in the core. >> - So i did another test: I've run playerv in order to send Enable motors >> request to the Roomba robot. It worked and didn't block the playerv >> process. So basically, request are working, however not while sending >> them from another Player server. It's not a surprise, as so far playerv >> was able to query for geometries and so far it was working right. > > If there is a problem in the server-server comms regarding requests or > request acks, the first place to start looking is to install wireshark > on one of the computers and see what gets sent between the two. > Particularly, check if the request makes it to the destination computer > (need wireshark on the destination computer) and, if it does, if the ack > makes it back to the calling computer (which likewise will need > wireshark installed). If you're testing with a roomba as one of these, > then obviously wireshark won't be useful for that end of the link. > > Another thing to try is see if it happens between two desktop computers. > Write a driver that takes a request and sends back an ack without doing > anything (like the roomba driver does), then see if it receives the > request and sends the ack. If this works correctly, check if the same > driver works correctly on the roomba. If it works on the desktop but not > the roomba, try loading down the destination computer's processor and/or > network, and see what effect this has. Use wireshark to check what is > being sent between the two servers in each case. > > > Geoff > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's challenge > Build the coolest Linux based applications with Moblin SDK & win great prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Playerstage-developers mailing list > Pla...@li... > https://lists.sourceforge.net/lists/listinfo/playerstage-developers > |