|
From: Marques, H. G <hg...@es...> - 2006-03-28 14:37:54
|
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 =3D 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 >=3D 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. =20
sorry about the insistence man... :(
cheers,
hugo
******************************************** BEGINNING OF CODE =
*********************************
robot =3D new PlayerClient (host,port);
graphicsInterface =3D robot.requestInterfaceGraphics2D(0, 1);
robot.runThreaded(-1, -1);
=20
graphicsInterface.clearScreen ();
PlayerGraphics2dCmdPolyline p =3D new PlayerGraphics2dCmdPolyline ();
PlayerColor color =3D new PlayerColor ();
color.setAlpha (0);
color.setRed (0); color.setGreen (0); color.setBlue (0xff);
p.setCount (2);
PlayerPoint2d[] points =3D new PlayerPoint2d[2];
points[0] =3D new PlayerPoint2d ();
points[0].setPx (-1.0f);
points[0].setPy (-1.0f);
points[1] =3D 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(DelegatingMethodAccessorI=
mpl.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(XdrBufferEncodingStr=
eam.java:181)
at =
javaclient2.xdr.XdrEncodingStream.xdrEncodeFloat(XdrEncodingStream.java:3=
34)
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/
=20
-----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
=20
Ok, since the fix seems to affect more than one file (Player-wise),=20
ignore changing your player distribution for now, and use the latest=20
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=20
will change it.
Best,
Radu.
Radu Bogdan Rusu wrote:
> Aham!!! Evrika! ;)
>
> We just found another Player bug. The fix for this one is trivial=20
> though. I envision Player in a few months being 99.99% bug free at=20
> this rate! :)
>
> Unfortunately I don't have commit rights to that part of the=20
> 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,=20
> player_graphics2d_cmd_polyline_t and player_graphics2d_cmd_polygon_t=20
> structures, and modify the first member from "uint16_t count;" to=20
> "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=20
> now, and then waiting for Brian to patch Player, and probably test=20
> 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=20
>> use an PlayerGraphics2dCmdPolyline object with the number of lines=20
>> 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=20
>> in the example and it did not work... Then I hacked slightly your=20
>> code (see bellow) in order to print only part of the circles and it=20
>> did not worked as well...
>>
>> I then tried to solve the issue with the class=20
>> PlayerGraphics2dCmdPolygon but I had the same problem. I tried to=20
>> went through the source code of playerclient and the=20
>> graphics2DInterface and it seemed fine to me...
>> Another thing that you might want to have a look in the class=20
>> PlayerGraphics2dCmdPolygon is that if you do not setFill_color it=20
>> gives an exception, when it could probably use a default=20
>> (transparent?) value...
>>
>> Thank you very much Regards...
>> Hugo
>>
>> ************************************* CODE *******************
>>
>> PlayerClient robot;
>> Graphics2DInterface graphicsInterface;
>>
>> robot =3D new PlayerClient ("localhost", 6665);
>> graphicsInterface =3D robot.requestInterfaceGraphics2D(0, 1);
>> robot.runThreaded(-1, -1);
>>
>> graphicsInterface.clearScreen ();
>>
>> PlayerGraphics2dCmdPolyline p =3D new PlayerGraphics2dCmdPolyline ();
>>
>> PlayerColor color =3D new PlayerColor ();
>> color.setAlpha (0);
>> color.setRed (0); color.setGreen (0); color.setBlue (0xff);
>> int lineSize =3D 32;
>> p.setCount (lineSize);
>>
>> for (double r =3D 0; r < 1.0; r +=3D 0.05) {
>> PlayerPoint2d[] points =3D new PlayerPoint2d[lineSize];
>> for (int j =3D 0; j < lineSize; j++) {
>> points[j] =3D 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()+",=20
>> "+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/
>> =20
>>
>
--=20
| Radu Bogdan Rusu | http://rbrusu.com/
| http://www9.cs.tum.edu/people/rusu/
| Intelligent Autonomous Systems
| Technische Universitaet Muenchen
|