From: Shane H. <sr...@ny...> - 2005-11-24 03:34:16
|
Hi Radu - Thanks for the quick and thorough response. > The configuration request/reply mechanism in the Player server works > like this: > - first you send a configuration request of type PLAYER_MSGTYPE_REQ > (PLAYER_FIDUCIAL_GET_FOV in our case) to Player > - then Player will reply back with a message of type > PLAYER_MSGTYPE_RESP_ACK (if everything went ok) or > PLAYER_MSGTYPE_RESP_NACK otherwise It looks like the second case is what's happening - after I send the PLAYER_FIDUCIAL_GET_FOV via getFOV() something apparently goes awry; PlayerDevice .handleNARMessage() gets called. So something is apparently going wrong, but no real error msg gets printed, just "Need to handle a NAR message." Output in my stage simulator gave me an error message, so I dug through the stage source code and found that requests are processed in fiducialfinderdevice.cc, in the UpdateConfig function. It appears that Stage 1.3.5 only handles the PLAYER_FIDUCIAL_GET_GEOM msg, not the GET_FOV msg getFOV() is sending. I assume from this that the getFOV() sort of functionality is only supported in editions of Stage later than 1.3.5? Shane I started digging through the player/stage code and found that it Do you know where I might be able to trace gets some sort of > > FiducialInterface.getFOV () sends a configuration request with > PLAYER_FIDUCIAL_GET_FOV. The reply of the Player server is caught by > PlayerClient.read (), which in turn will call > FiducialInterface.handleResponse () if the type of the messaged that > returned is ACK. FiducialInterface.handleResponse () checks to see if > the reply came back for the configuration request > PLAYER_FIDUCIAL_GET_FOV, and then it fills in those attributes with > their appropriate values. > > The order of operations for your program should be: > - getFOV (); > - check if isFOVReady () is true > - if fovReady is true, then get the values you need using getMinRage > (), getMaxRange () and getViewAngle (). > > In case you send the request but you do not get any reply back, it > could be an internal Player problem. But it's okay, we can have a look > there as well, to see what the problem is. > > I hope this helps, > Radu. > > Shane Hoversten wrote: > >> Hi everyone - >> >> Back to fiducials. When I call FiducialInterface.getViewAngle() and >> getMax() and getMin() I'm always getting zeroes. Looking at the code >> I see that all of these things start off as zero and are updated when >> handleResponse() gets the PLAYER_FIDUCIAL_GET_FOV msg. This msg is >> presumably received in reponse to the PLAYER_FIDUCIAL_GET_FOV msg >> which is generated by the call to getFOV(). Right? Or is this >> another cut and paste error? Should these both be the same msg? >> >> To put it another way: I call getFOV() but the P_F_G_F msg is never >> received in response, and so javaclient never updates the values. Am >> I doing something wrong, or is this a bug? >> >> Thanks for any help, >> >> Shane > > > |