From: Lovekesh V. <lov...@gm...> - 2006-04-06 06:15:21
|
Hi!, I ran into a problem when trying to use the amcl driver for localization and wavefront driver for path planning in stage. While the drivers work nicely with playernav (robots can localize and do path planning), when I attempt to use the amcl driver through a playerclient's localizeproxy, it does not connect (I get 'e' access ) and I get an unread write to client (551 bytes). I use the same config file for both playernav and stage and the client code is fairly simple (below). I've been on this problem for 3 days now and would be grateful for any assistance. Below is the client code and world file i am using. \\CLient Code #include <iostream> #include <playerclient.h> double pose[3] =3D {2,-1,0}; double cov[3][3] =3D {{0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0}}; int main(int argc, char *argv[]) { PlayerClient robot("localhost",6665); LaserProxy lp(&robot2,0,'r'); PositionProxy pp(&robot2,0,'a'); LocalizeProxy locp(&robot2,0,'c'); PlannerProxy plp(&robot2,0,'a'); robot.Read(); locp.Print(); locp.SetPose(pose,cov); //this returns -1 currently (I get 'e' acess o= n the player server) for(;;) { printf("no of particles =3D %d",locp.GetNumParticles()); plp.Print(); locp.Print(); //this prints 0 hypothesis robot.Read(); } } ///CONFIG FILE driver ( name "stage" provides ["simulation:0"] plugin "libstage" # load the named file into the simulator worldfile "fake.world" ) driver ( name "stage" provides ["6665:position:1" "6665:laser:0"] model "robot" ) # Load the map for localization and planning from the same image file, # and specify the correct resolution (a 500x500 pixel map at 15m x 15m # is 0.03 m / pixel resolution). driver ( name "mapfile" provides ["6665:map:0"] filename "bitmaps/mine.pnm" resolution 0.03 negate 1 ) driver ( name "amcl" provides ["6665:localize:0" ] requires ["6665:odometry::position:1" "6665:laser:0" "laser::map:0"] init_pose [-10.0 1.0 0.0] init_pose_var [1.5 1.5 50] alwayson 1 ) driver ( name "vfh" provides ["6665:position:0"] requires ["6665:position:1" "6665:laser:0"] safety_dist_0ms 0.1 safety_dist_1ms 0.2 distance_epsilon 0.3 max_speed 1.0 max_turnrate_0ms 50 max_turnrate_1ms 50 angle_epsilon 5 ) driver ( name "wavefront" provides ["6665:planner:0"] requires ["6665:position:0" "6665:localize:0" "6665:map:0"] safety_dist 0.15 distance_epsilon 0.5 angle_epsilon 10 ) |
From: Brian G. <br...@ge...> - 2006-04-06 18:11:17
|
On Apr 5, 2006, at 11:15 PM, Lovekesh Vig wrote: > I ran into a problem when trying to use the amcl driver for > localization and wavefront driver for path planning in stage. > While the drivers work nicely with playernav (robots can localize > and do path planning), when I attempt to use the amcl driver > through a playerclient's localizeproxy, it does not connect (I get > 'e' access ) and I get an unread write to client (551 bytes). I > use the same config file for both playernav and stage and the > client code is fairly simple (below). I've been on this problem > for 3 days now and would be grateful for any assistance. Below is > the client code and world file i am using. > > \\CLient Code > PlayerClient robot("localhost",6665); > LaserProxy lp(&robot2,0,'r'); > PositionProxy pp(&robot2,0,'a'); > LocalizeProxy locp(&robot2,0,'c'); > PlannerProxy plp(&robot2,0,'a'); You're requesting "closed" access ('c') to the localize device. Try creating your LocalizeProxy with 'r' access. brian. |