From: Ge, F. L. <FG...@cs...> - 2011-01-17 22:40:25
|
HI: I have a question about Position2d Proxy. here is part of my source code, where pp is a Postion2d Proxy. My aim is to get current robot position information. when I set(i=1;i<=100;i++) in the "for" loop, it works fine. when I set (i=1;i<=1;i++) or (i=1;i<=1;i++), Nothing was displayed, or packet overflow was displayed sometimes. Is anyone know the reason? Thx a lot. pp.RequestGeom(); double xpos; double ypos; double anglepos; double test; int i; while(!pp.IsValid()) { robot.Read(); } for (i=1;i<=20;i++) { xpos=pp.GetXPos(); ypos=pp.GetYPos(); anglepos=pp.GetYaw(); cout<<" x pos is"<<xpos<<"\n"; cout<<"y pos is "<<ypos<<"\n"; cout<< "angle pos is "<<anglepos<<"\n"; } |
From: Ge, F. L. <FG...@cs...> - 2011-01-17 22:47:09
|
HI: I have a question about Position2d Proxy. My aim is to get current robot position. The following is part of my source code, where pp is a Position2d Proxy. In the "for" loop, "i" <=100, and it works fine. when I set "i"<=1 ,10 or some other small number, the output is nothing or"packet overflowed". Is anyone know the reason? Thx a lot Regards Fenglu Ge pp.RequestGeom(); double xpos; double ypos; double anglepos; double test; int i; while(!pp.IsValid()) { robot.Read(); } for (i=1;i<=100;i++) { xpos=pp.GetXPos(); ypos=pp.GetYPos(); anglepos=pp.GetYaw(); cout<<" x pos is"<<xpos<<"\n"; cout<<"y pos is "<<ypos<<"\n"; cout<< "angle pos is "<<anglepos<<"\n"; } |
From: Rich M. <jp...@gm...> - 2011-01-18 01:44:51
|
On 01/17/2011 05:40 PM, Ge, Feng Lu wrote: > HI: I have a question about Position2d Proxy. > here is part of my source code, where pp is a Postion2d Proxy. My aim is to get current robot position information. when I set(i=1;i<=100;i++) in the "for" loop, it works fine. when I set (i=1;i<=1;i++) or (i=1;i<=1;i++), Nothing was displayed, or packet overflow was displayed sometimes. > Is anyone know the reason? > > Thx a lot. > > pp.RequestGeom(); > double xpos; > double ypos; > double anglepos; > double test; > int i; > > while(!pp.IsValid()) > { > robot.Read(); > } > for (i=1;i<=20;i++) > { > xpos=pp.GetXPos(); > ypos=pp.GetYPos(); > anglepos=pp.GetYaw(); > > > > > > cout<<" x pos is"<<xpos<<"\n"; > cout<<"y pos is"<<ypos<<"\n"; > cout<< "angle pos is"<<anglepos<<"\n"; > > > } > You should be calling robot.Read() inside of your for loop as well. Otherwise, new data won't be copied from the class's input buffer into your position proxy object. When you set the loopcounter really high, the PlayerC++ object's buffer overflows because your driver is dumping new data into it, and your program isn't ever reading the information out of the buffer. Calling Read() faster than you're getting new data will fix the issue. When you do a for loop with (i=1; i<=1; i++) the loop will never execute. Since 1 <=1, your loop exit criteria is already met, so the loop never executes. You should do (i=1; i<1; i++) to execute the loop once. Rich |
From: Ge, F. L. <FG...@cs...> - 2011-01-18 03:53:28
|
Hi Rich: Thx for your response. I followed your idea. when I used the for(;;) to nest commands from robot.Read to the end of the following code, it worked very well. but when I delete the for loop, using the following code, it display nothing. actually I only want to get current position without any repeating. Can u gv me some suggestions? regards pp.RequestGeom(); double xpos; double ypos; double anglepos; double test; int i; robot.Read(); xpos=pp.GetXPos(); ypos=pp.GetYPos(); anglepos=pp.GetYaw(); cout<<" x pos is"<<xpos<<"\n"; cout<<"y pos is"<<ypos<<"\n"; cout<< "angle pos is"<<anglepos<<"\n"; ________________________________________ From: Rich Mattes [jp...@gm...] Sent: Tuesday, 18 January 2011 12:42 PM To: pla...@li... Subject: Re: [Playerstage-users] question about Position2D proxy On 01/17/2011 05:40 PM, Ge, Feng Lu wrote: > HI: I have a question about Position2d Proxy. > here is part of my source code, where pp is a Postion2d Proxy. My aim is to get current robot position information. when I set(i=1;i<=100;i++) in the "for" loop, it works fine. when I set (i=1;i<=1;i++) or (i=1;i<=1;i++), Nothing was displayed, or packet overflow was displayed sometimes. > Is anyone know the reason? > > Thx a lot. > > pp.RequestGeom(); > double xpos; > double ypos; > double anglepos; > double test; > int i; > > while(!pp.IsValid()) > { > robot.Read(); > } > for (i=1;i<=20;i++) > { > xpos=pp.GetXPos(); > ypos=pp.GetYPos(); > anglepos=pp.GetYaw(); > > > > > > cout<<" x pos is"<<xpos<<"\n"; > cout<<"y pos is"<<ypos<<"\n"; > cout<< "angle pos is"<<anglepos<<"\n"; > > > } > You should be calling robot.Read() inside of your for loop as well. Otherwise, new data won't be copied from the class's input buffer into your position proxy object. When you set the loopcounter really high, the PlayerC++ object's buffer overflows because your driver is dumping new data into it, and your program isn't ever reading the information out of the buffer. Calling Read() faster than you're getting new data will fix the issue. When you do a for loop with (i=1; i<=1; i++) the loop will never execute. Since 1 <=1, your loop exit criteria is already met, so the loop never executes. You should do (i=1; i<1; i++) to execute the loop once. Rich ------------------------------------------------------------------------------ Protect Your Site and Customers from Malware Attacks Learn about various malware tactics and how to avoid them. Understand malware threats, the impact they can have on your business, and how you can protect your company and customers by using code signing. http://p.sf.net/sfu/oracle-sfdevnl _______________________________________________ Playerstage-users mailing list Pla...@li... https://lists.sourceforge.net/lists/listinfo/playerstage-users |
From: Geoffrey B. <geo...@ai...> - 2011-01-18 05:14:11
|
Calling read() once does not guarantee that you will receive any data, or any data for the proxy you are interested in. You need to keep on calling it until the proxy reports that it has new data. Geoff On 18/01/11 12:53, Ge, Feng Lu wrote: > > Hi Rich: > > Thx for your response. > I followed your idea. when I used the for(;;) to nest commands from robot.Read to the end of the following code, it worked very well. but when I delete the for loop, using the following code, it display nothing. actually I only want to get current position without any repeating. > Can u gv me some suggestions? > > regards > > > > > pp.RequestGeom(); > double xpos; > double ypos; > double anglepos; > double test; > int i; > > robot.Read(); > > xpos=pp.GetXPos(); > ypos=pp.GetYPos(); > anglepos=pp.GetYaw(); > cout<<" x pos is"<<xpos<<"\n"; > cout<<"y pos is"<<ypos<<"\n"; > cout<< "angle pos is"<<anglepos<<"\n"; |
From: Ge, F. L. <FG...@cs...> - 2011-01-18 09:37:02
|
Thx Geoff. I w have a try. Regards Fenglu ge -----Original Message----- From: Geoffrey Biggs [mailto:geo...@ai...] Sent: Tuesday, 18 January 2011 4:14 PM To: pla...@li... Subject: Re: [Playerstage-users] question about Position2D proxy Calling read() once does not guarantee that you will receive any data, or any data for the proxy you are interested in. You need to keep on calling it until the proxy reports that it has new data. Geoff On 18/01/11 12:53, Ge, Feng Lu wrote: > > Hi Rich: > > Thx for your response. > I followed your idea. when I used the for(;;) to nest commands from robot.Read to the end of the following code, it worked very well. but when I delete the for loop, using the following code, it display nothing. actually I only want to get current position without any repeating. > Can u gv me some suggestions? > > regards > > > > > pp.RequestGeom(); > double xpos; > double ypos; > double anglepos; > double test; > int i; > > robot.Read(); > > xpos=pp.GetXPos(); > ypos=pp.GetYPos(); > anglepos=pp.GetYaw(); > cout<<" x pos is"<<xpos<<"\n"; > cout<<"y pos is"<<ypos<<"\n"; > cout<< "angle pos is"<<anglepos<<"\n"; ------------------------------------------------------------------------------ Protect Your Site and Customers from Malware Attacks Learn about various malware tactics and how to avoid them. Understand malware threats, the impact they can have on your business, and how you can protect your company and customers by using code signing. http://p.sf.net/sfu/oracle-sfdevnl _______________________________________________ Playerstage-users mailing list Pla...@li... https://lists.sourceforge.net/lists/listinfo/playerstage-users |