|
From: Radu B. R. <ru...@cs...> - 2006-03-28 14:58:17
|
No problem Hugo... :)
Hmm, it is directly related to your Player version. Let me try with
2.0.1 (stock) now and get back to you.
Radu.
Marques, Hugo G wrote:
>Hi Radu...
>
>I downloaded the changes you made to the CVS but now I have a javaclient2.xdr.OncRpcException (see bellow). I tried the new code in my yesterday's example (lineSize = 32, if you remember) and I also made a simpler example (see code bellow) but I keep having the exception. The example you sent me in the weekend works fine, but that is because the number of points you used is >= 64. I tried to see what was the problem in the Graphics2DInterface but the manipulation of the bytes you used for encoding the information is a bit confusing for me as I'm not familiar with the neither the xdr encoding nor the format of the messages exchanged with player/stage.
>
>sorry about the insistence man... :(
>
>cheers,
>hugo
>
>
>******************************************** BEGINNING OF CODE *********************************
>
>robot = new PlayerClient (host,port);
>graphicsInterface = robot.requestInterfaceGraphics2D(0, 1);
>robot.runThreaded(-1, -1);
>
>graphicsInterface.clearScreen ();
>PlayerGraphics2dCmdPolyline p = new PlayerGraphics2dCmdPolyline ();
>PlayerColor color = new PlayerColor ();
>color.setAlpha (0);
>color.setRed (0); color.setGreen (0); color.setBlue (0xff);
>
>p.setCount (2);
>
>PlayerPoint2d[] points = new PlayerPoint2d[2];
>points[0] = new PlayerPoint2d ();
>points[0].setPx (-1.0f);
>points[0].setPy (-1.0f);
>
>points[1] = new PlayerPoint2d ();
>points[1].setPx (1.0f);
>points[1].setPy (1.0f);
>
>p.setPoints (points);
>p.setColor (color);
>graphicsInterface.drawPolyline (p);
>
>try { Thread.sleep (100); } catch (Exception e) {
>e.printStackTrace(); }
>
>
>******************************************** END CODE ***** BEGINNING OF EXCEPTION *********************************
>
>
>Exception in thread "main" javaclient2.PlayerException: [Graphics2D] : Error while XDR-encoding draw command: javaclient2.xdr.OncRpcException: ONC/RPC buffer overflow
> at javaclient2.Graphics2DInterface.drawPolyline(Graphics2DInterface.java:181)
> at Agent.testGraphics(Agent.java:368)
> at Agent.initRobot(Agent.java:305)
> at Agent.initialize(Agent.java:136)
> at Agent.main(Agent.java:441)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
>Caused by: javaclient2.xdr.OncRpcException: ONC/RPC buffer overflow
> at javaclient2.xdr.XdrBufferEncodingStream.xdrEncodeInt(XdrBufferEncodingStream.java:181)
> at javaclient2.xdr.XdrEncodingStream.xdrEncodeFloat(XdrEncodingStream.java:334)
> at javaclient2.Graphics2DInterface.drawPolyline(Graphics2DInterface.java:156)
> ... 9 more
>
>
>******************************************** END OF EXCEPTION *********************************
>
>
>
>
>
>----------------------------------------------------
>Hugo Gravato Marques, University of Essex, PhD Student
>PHONE: +44 (0)7854917241, England or +351 962482416, Portugal
>ADDRESS: University of Essex, Department of Computer Science,
>Wivenhoe Park, Colchester Essex, CO4 3SQ, UK
>WEB: http://privatewww.essex.ac.uk/~hgmarq/
>
>
>
>
>
>
>
>-----Original Message-----
>From: jav...@li... on behalf of Radu Bogdan Rusu
>Sent: Mon 27/03/2006 23:12
>To: jav...@li...
>Subject: Re: [Java-player-users] Graphics2D interface
>
>Ok, since the fix seems to affect more than one file (Player-wise),
>ignore changing your player distribution for now, and use the latest
>Javaclient2 CVS version. I just commited the latest changes which should
>work with the *current* Player version (CVS). Once Player 2.1 is out, I
>will change it.
>
>Best,
>Radu.
>
>Radu Bogdan Rusu wrote:
>
>
>
>>Aham!!! Evrika! ;)
>>
>>We just found another Player bug. The fix for this one is trivial
>>though. I envision Player in a few months being 99.99% bug free at
>>this rate! :)
>>
>>Unfortunately I don't have commit rights to that part of the
>>repository (libplayercore)... so I'll ask Brian to do it for us now.
>>
>>If you don't want to "cvs" Player... go into player.h yourself, search
>>for the player_graphics2d_cmd_points_t,
>>player_graphics2d_cmd_polyline_t and player_graphics2d_cmd_polygon_t
>>structures, and modify the first member from "uint16_t count;" to
>>"uint16_t points_count;". Then recompile Player, and that should be it.
>>
>>There is one small fix for Javaclient2 as well... I am committing it
>>now, and then waiting for Brian to patch Player, and probably test
>>again in the morning.
>>
>>Cheers,
>>Radu.
>>
>>Marques, Hugo G wrote:
>>
>>
>>
>>>Hi Radu...
>>>
>>>first of all thank's for the quick implementation of the interface...
>>>I really needed it in order to continue my experiments...
>>>
>>>I tryed to run your code and it works perfectly... but if I try to
>>>use an PlayerGraphics2dCmdPolyline object with the number of lines
>>>smaller than 64 it simply does not show anything... I tryed to show a
>>>simple line on Stage with only 2 points using the same idea you used
>>>in the example and it did not work... Then I hacked slightly your
>>>code (see bellow) in order to print only part of the circles and it
>>>did not worked as well...
>>>
>>>I then tried to solve the issue with the class
>>>PlayerGraphics2dCmdPolygon but I had the same problem. I tried to
>>>went through the source code of playerclient and the
>>>graphics2DInterface and it seemed fine to me...
>>>Another thing that you might want to have a look in the class
>>>PlayerGraphics2dCmdPolygon is that if you do not setFill_color it
>>>gives an exception, when it could probably use a default
>>>(transparent?) value...
>>>
>>>Thank you very much Regards...
>>>Hugo
>>>
>>>************************************* CODE *******************
>>>
>>>PlayerClient robot;
>>>Graphics2DInterface graphicsInterface;
>>>
>>>robot = new PlayerClient ("localhost", 6665);
>>>graphicsInterface = robot.requestInterfaceGraphics2D(0, 1);
>>>robot.runThreaded(-1, -1);
>>>
>>>graphicsInterface.clearScreen ();
>>>
>>>PlayerGraphics2dCmdPolyline p = new PlayerGraphics2dCmdPolyline ();
>>>
>>>PlayerColor color = new PlayerColor ();
>>>color.setAlpha (0);
>>>color.setRed (0); color.setGreen (0); color.setBlue (0xff);
>>>int lineSize = 32;
>>>p.setCount (lineSize);
>>>
>>>for (double r = 0; r < 1.0; r += 0.05) {
>>> PlayerPoint2d[] points = new PlayerPoint2d[lineSize];
>>> for (int j = 0; j < lineSize; j++) {
>>> points[j] = new PlayerPoint2d ();
>>> points[j].setPx ((float)(r * Math.cos (j * Math.PI / 32)));
>>> points[j].setPy ((float)(r * Math.sin (j * Math.PI / 32)));
>>> System.out.println(" Point: "+points[j].getPx()+",
>>>"+points[j].getPy());
>>> }
>>>
>>>p.setPoints (points);
>>>p.setColor (color);
>>>
>>>graphicsInterface.drawPolyline (p);
>>>
>>>try { Thread.sleep (100); } catch (Exception e) {
>>> e.printStackTrace(); }
>>>
>>>************************************* END CODE *******************
>>>
>>>
>>>
>>>----------------------------------------------------
>>>Hugo Gravato Marques, University of Essex, PhD Student
>>>PHONE: +44 (0)7854917241, England or +351 962482416, Portugal
>>>ADDRESS: University of Essex, Department of Computer Science,
>>>Wivenhoe Park, Colchester Essex, CO4 3SQ, UK
>>>WEB: http://privatewww.essex.ac.uk/~hgmarq/
>>>
>>>
>>>
>>>
>
>
>
--
| Radu Bogdan Rusu | http://rbrusu.com/
| http://www9.cs.tum.edu/people/rusu/
| Intelligent Autonomous Systems
| Technische Universitaet Muenchen
|