From: Paul O. <new...@ki...> - 2004-10-04 20:58:26
|
On some server I have PTZ camera available 24h/day. It can be operated remotely by player waiting on port 6665, and all potential clients expect it waiting on that port (so it can't be changed). One of the users of that server wants to run stage on their account. Unfortunately stage wants to run another instance of player. It can't run since it can't bind to port 6665 used by player started by root. How the user can run stage (and player) so player would use another port to wait for client connections? Is it possible to pass -p parameter to player through stage? Greetings, Paul |
From: Brian G. <ge...@ai...> - 2004-10-05 20:42:00
|
On Mon, 4 Oct 2004, Paul Osmialowski wrote: > On some server I have PTZ camera available 24h/day. It can be operated > remotely by player waiting on port 6665, and all potential clients expect it > waiting on that port (so it can't be changed). One of the users of that > server wants to run stage on their account. Unfortunately stage wants to run > another instance of player. It can't run since it can't bind to port 6665 > used by player started by root. How the user can run stage (and player) so > player would use another port to wait for client connections? Is it possible > to pass -p parameter to player through stage? You can set the port of each Player-mediated Stage device in the .world file. Just use the "port" keyword, e.g.: position ( port 7000 pose [1.0 1.0 20] laser() ) Attached devices (in this case, the laser) inherit their parent's port, unless otherwise specified. There are lots of examples of this in the .world files included with the Stage distribution. brian. -- Brian P. Gerkey ge...@ai... Stanford AI Lab http://ai.stanford.edu/~gerkey |
From: Paul O. <new...@ki...> - 2004-10-06 07:26:19
|
Brian Gerkey wrote: > On Mon, 4 Oct 2004, Paul Osmialowski wrote: > >> On some server I have PTZ camera available 24h/day. It can be operated >> remotely by player waiting on port 6665, and all potential clients >> expect it waiting on that port (so it can't be changed). One of the >> users of that server wants to run stage on their account. >> Unfortunately stage wants to run another instance of player. It can't >> run since it can't bind to port 6665 used by player started by root. >> How the user can run stage (and player) so player would use another >> port to wait for client connections? Is it possible to pass -p >> parameter to player through stage? > > > You can set the port of each Player-mediated Stage device in the .world > file. Just use the "port" keyword, e.g.: > > position > ( > port 7000 > pose [1.0 1.0 20] > laser() > ) > > Attached devices (in this case, the laser) inherit their parent's port, > unless otherwise specified. > > There are lots of examples of this in the .world files included with the > Stage distribution. > > brian. > I've prepared .world file that contains also: define robot position ( name "robot" port 7000 size [1 1] shape "circle" lightsensor(pose [0 0 45] index 0) lightsensor(pose [0 0 -45] index 1) interval 0.001 ) Now stage (and player) start properly, but after I've finished I can see: ** Player [port 6665] quitting ** I've noticed, that it actually works on port 7000 as I wanted so: ** Player [port 7000] client accepted from 127.0.0.1 on socket 9 ** ** Player [port 7000] killing client on socket 9 ** I've checked server/main.cc file: printf("** Player [port %d] quitting **\n", global_playerport ); The problem is that global_playerport variable is changed only if -p is passed as an arg to player: else if(!strcmp(argv[i], "-p")) { if(++i<argc) { global_playerport = atoi(argv[i]); printf("[Port %d]", global_playerport); } else { Usage(); exit(-1); } } ...and that's the only place where this variable with default value 6665 is changed. Greetings, Paul |
From: Brian G. <ge...@ai...> - 2004-10-06 15:57:27
|
On Wed, 6 Oct 2004, Paul Osmialowski wrote: > I've prepared .world file that contains also: > define robot position > ( > name "robot" port 7000 size [1 1] shape "circle" > > lightsensor(pose [0 0 45] index 0) > lightsensor(pose [0 0 -45] index 1) > > interval 0.001 > ) > Now stage (and player) start properly, but after I've finished I can see: > ** Player [port 6665] quitting ** > I've noticed, that it actually works on port 7000 as I wanted so: > ** Player [port 7000] client accepted from 127.0.0.1 on socket 9 ** > ** Player [port 7000] killing client on socket 9 ** So Player's listening on the right ports, which is good. The console message when it quits is a cosmetic bug; thanks for pointing that out. brian. -- Brian P. Gerkey ge...@ai... Stanford AI Lab http://ai.stanford.edu/~gerkey |
From: Alvaro C. <o__...@ho...> - 2004-10-07 15:25:20
|
Hello, I am using Player v1.5 to control a Pioneer PeopleBot. 1)- I would like to know if there is a way to limit the maximum acceleration in the p2os driver, just in a similar way as you can do with the maximum speed and maximum yaw speed. 2)- As an alternative to this, is it posible to configure the PID controller parameters of the position interface in the p2os? I just need to be able to control the time it takes to the robot to reach the newspeed I tell him in : PositionProxy :: SetSpeed (newspeed, newturnrate). I can design a PD or PID controller to control the response of the system to a given speed reference, but I would like to know if there is an easier way. Here I enclose the config file I am using for the player: position:0 (driver "p2os_position" max_xspeed 2000.0 max_yawspeed 270) bumper () laser:0 (driver "sicklms200" port "/dev/ttyS2") Thanks //Alvaro |
From: Brian G. <ge...@ai...> - 2004-10-07 17:29:06
|
On Thu, 7 Oct 2004, Alvaro Canivell wrote: > I am using Player v1.5 to control a Pioneer PeopleBot. > > 1)- I would like to know if there is a way to limit the maximum acceleration > in the p2os driver, just in a similar way as you can do with the maximum > speed and maximum yaw speed. > 2)- As an alternative to this, is it posible to configure the PID controller > parameters of the position interface in the p2os? There is a way to change the PID parameters used in the P2OS controller, but Player's p2os driver doesn't support it. If those parameters are stored in non-volatile flash, then you could set them manually, for example using ActivMedia's p2oscf tool. Note that you may also have to tell Player to use separate translational velocity and rotational control, instead of the default direct wheel velocity control (the latter is more responsive, but ignores the PID parameters). You can do this from your client with the PLAYER_POSITION_VELOCITY_MODE_REQ configuration request. > position:0 (driver "p2os_position" max_xspeed 2000.0 max_yawspeed 270) Can that robot really move at 2mps? brian. -- Brian P. Gerkey ge...@ai... Stanford AI Lab http://ai.stanford.edu/~gerkey |
From: Alvaro C. <o__...@ho...> - 2004-10-07 18:03:19
|
Brian Gerkey wrote: > There is a way to change the PID parameters used in the P2OS controller, > but Player's p2os driver doesn't support it. If those parameters are > stored in non-volatile flash, then you could set them manually, for > example using ActivMedia's p2oscf tool. > > Note that you may also have to tell Player to use separate translational > velocity and rotational control, instead of the default direct > wheel velocity control (the latter is more responsive, but ignores > the PID parameters). You can do this from your client with the > PLAYER_POSITION_VELOCITY_MODE_REQ configuration request. Aha, sounds interesting... but I think it will be easier then for me to implement my own PID controller over the speed (translational). In that way, I could use different sets of values for my controller while the robot is running my program, in order to have faster or slower behaviours. I already had to implement a PID for the turnrate in order to have heading control, so it shoud not be a big deal. Anyway, I will try the "separate translational velovity and rotational control" mode, maybe the default configuration for the p2os-PID is slower than the "direct wheel velocity control", and it fits better to my needs. I had not thought of this before, I was using all the time the "direct wheel velocity control", I mean, the default mode for p2os. By the way... nothing about maximum acceleration settings in the p2os driver options, isn't it? > Can that robot really move at 2mps? He, he, he should go to the olimpics....not really, not so fast, I just prefer to limit the speed of my robot in my code, not in the driver definition. Thanks again!! I really love this list! //Alvaro |
From: Reed H. <re...@ac...> - 2004-10-08 18:31:26
|
Alvaro Canivell wrote: > Hello, > > I am using Player v1.5 to control a Pioneer PeopleBot. > > 1)- I would like to know if there is a way to limit the maximum > acceleration in the p2os driver, just in a similar way as you can do > with the maximum speed and maximum yaw speed. > 2)- As an alternative to this, is it posible to configure the PID > controller parameters of the position interface in the p2os? Well, you can set the acceleration value in the PeopleBot microcontroller by sending it command 5 ("SETA") (send it a negative integer to set the deceleration value). Not sure how to do this in Player, I guess it uses the default... it would be easy for you to add this parameter though, I think. The PeopleBot microcontroller has no "maximum" acceleration, as far as I know, just a single acceleration value, by the way. Reed (Disclaimer, I'm no expert on Pioneers by the way, I could be misinformed or just wrong :) |
From: Brian G. <ge...@ai...> - 2004-10-10 18:53:05
|
On Fri, 8 Oct 2004, Reed Hedges wrote: > Alvaro Canivell wrote: >> Hello, >> >> I am using Player v1.5 to control a Pioneer PeopleBot. >> >> 1)- I would like to know if there is a way to limit the maximum >> acceleration in the p2os driver, just in a similar way as you can do with >> the maximum speed and maximum yaw speed. >> 2)- As an alternative to this, is it posible to configure the PID >> controller parameters of the position interface in the p2os? > > Well, you can set the acceleration value in the PeopleBot microcontroller by > sending it command 5 ("SETA") (send it a negative integer to set the > deceleration value). Not sure how to do this in Player, I guess it uses the > default... it would be easy for you to add this parameter though, I think. If you just want one (non-default) setting for max acceleration, then we could easily add it as an config-file option to the p2os driver. If you want to change it on the fly, then we'll need a config request, which is more work, but doable. As an alternative to providing a way to limit the acceleration, we could instead provide a way to set the PID values directly. There is already a position config request to do this, and P2OS supports it. Would one of these be more useful than the other? brian. -- Brian P. Gerkey ge...@ai... Stanford AI Lab http://ai.stanford.edu/~gerkey |
From: Alvaro C. <o__...@ho...> - 2004-10-08 20:31:01
|
Hi, finally I decided to simply put a First order LP filter in direct chain, open loop, just before inputing the newspeed to the SetSpeed method. In that way, I can make the speed behavior as slow as I want, by just simply configuring the time constant of the filter. By the way, after reading the Pioneer PeopleBot manual, I find that the maximum velocity is 9mm/s, and the maximum yawspeed 150 degrees/s. But my Pioneer does not run faster than 500mm/s. I already set in my usc_pioneer.cfg the max_xspeed to 0.9: position:0 (driver "p2os_position" max_xspeed 900.0 max_yawspeed 150) bumper:0 (driver "p2os_bumper") power:0 (driver "p2os_power") laser:0 (driver "sicklms200" port "/dev/ttyS2") I simply do PositionProxy::SetSpeed (0.7, 0), and check the velocity values in Position::speed, and I get values no higher than 0.5m/s. I really don't know if there is something that I am missing. I already tried both Velocity modes (direct-wheel & translational-rotational) and they both make the robot run NO faster than 0.5m/s Any idea? //Alvaro Reed Hedges wrote: > Alvaro Canivell wrote: > >> Hello, >> >> I am using Player v1.5 to control a Pioneer PeopleBot. >> >> 1)- I would like to know if there is a way to limit the maximum >> acceleration in the p2os driver, just in a similar way as you can do >> with the maximum speed and maximum yaw speed. >> 2)- As an alternative to this, is it posible to configure the PID >> controller parameters of the position interface in the p2os? > > > Well, you can set the acceleration value in the PeopleBot > microcontroller by sending it command 5 ("SETA") (send it a negative > integer to set the deceleration value). Not sure how to do this in > Player, I guess it uses the default... it would be easy for you to add > this parameter though, I think. > > The PeopleBot microcontroller has no "maximum" acceleration, as far as > I know, just a single acceleration value, by the way. > > Reed > > > > > > > (Disclaimer, I'm no expert on Pioneers by the way, I could be > misinformed or just wrong :) > > > > > > > > > > ------------------------------------------------------- > This SF.net email is sponsored by: IT Product Guide on ITManagersJournal > Use IT products in your business? Tell us what you think of them. Give us > Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out > more > http://productguide.itmanagersjournal.com/guidepromo.tmpl > _______________________________________________ > Playerstage-users mailing list > Pla...@li... > https://lists.sourceforge.net/lists/listinfo/playerstage-users > > . > |
From: Brian G. <ge...@ai...> - 2004-10-08 21:00:50
|
On Fri, 8 Oct 2004, Alvaro Canivell wrote: > finally I decided to simply put a First order LP filter in direct chain, open > loop, just before inputing the newspeed to the SetSpeed method. In that way, > I can make the speed behavior as slow as I want, by just simply configuring > the time constant of the filter. Good to you know you found a solution. Player doesn't necessarily provide all the bells and whistles you might want (like a smart velocity controller), but it shouldn't get in the way of your implementing them yourself. > By the way, after reading the Pioneer PeopleBot manual, I find that the > maximum velocity is 9mm/s, and the maximum yawspeed 150 degrees/s. But my > Pioneer does not run faster than 500mm/s. I already set in my usc_pioneer.cfg > the max_xspeed to 0.9: > > position:0 (driver "p2os_position" max_xspeed 900.0 max_yawspeed 150) > bumper:0 (driver "p2os_bumper") > power:0 (driver "p2os_power") > laser:0 (driver "sicklms200" port "/dev/ttyS2") > > I simply do PositionProxy::SetSpeed (0.7, 0), and check the velocity values > in Position::speed, and I get values no higher than 0.5m/s. I really don't > know if there is something that I am missing. I already tried both Velocity > modes (direct-wheel & translational-rotational) and they both make the robot > run NO faster than 0.5m/s I've never played with a PeopleBot, but in my experience the Pioneer 2 can't physically move faster than about 500mm/s, regardless of what the manual says (to be fair, 900mm/s is a valid upper bound, it's just not very tight). Can you make your robot move faster using ActivMedia's software (ARIA, Saphira, etc.)? If so let me know, because maybe there's something to be fixed or tweaked in our p2os driver. brian. -- Brian P. Gerkey ge...@ai... Stanford AI Lab http://ai.stanford.edu/~gerkey |
From: Alvaro C. <o__...@ho...> - 2004-10-10 20:20:14
|
Hi! In my opinion, as the max acceleration, just like the max speed and turnrate, seems to be intended to "limit" the dynamics of the robot for security issues, it would feel a little bit unsafe to touch it while the robot is running. Anyway, if it is so easy to implement, maybe it is not a bad idea to have this available... Indeed, if one wants to modify the dynamic behaviour of a robot (rise time, overshot, for a given speed/turnrate command) WHILE it is running, it would be more intuitive to change the values of the PID. I think the possibility to change the PID values of the robot while it is running would be the best alternative, and the most useful. Many industrial controllers apply different PID constants to control the same system depending on the working point of it, so why not having this capability in our case? Definitelly, useful! //alvaro Brian Gerkey wrote: > On Fri, 8 Oct 2004, Reed Hedges wrote: > >> Alvaro Canivell wrote: >> >>> Hello, >>> >>> I am using Player v1.5 to control a Pioneer PeopleBot. >>> >>> 1)- I would like to know if there is a way to limit the maximum >>> acceleration in the p2os driver, just in a similar way as you can do >>> with the maximum speed and maximum yaw speed. >>> 2)- As an alternative to this, is it posible to configure the PID >>> controller parameters of the position interface in the p2os? >> >> >> Well, you can set the acceleration value in the PeopleBot >> microcontroller by sending it command 5 ("SETA") (send it a negative >> integer to set the deceleration value). Not sure how to do this in >> Player, I guess it uses the default... it would be easy for you to >> add this parameter though, I think. > > > If you just want one (non-default) setting for max acceleration, then > we could easily add it as an config-file option to the p2os driver. > > If you want to change it on the fly, then we'll need a config request, > which is more work, but doable. As an alternative to providing a way > to limit the acceleration, we could instead provide a way to set the PID > values directly. There is already a position config request to do this, > and P2OS supports it. Would one of these be more useful than the other? > > brian. > |
From: Brian G. <ge...@ai...> - 2004-10-12 21:39:27
|
On Sun, 10 Oct 2004, Alvaro Canivell wrote: > In my opinion, as the max acceleration, just like the max speed and turnrate, > seems to be intended to "limit" the dynamics of the robot for security > issues, it would feel a little bit unsafe to touch it while the robot is > running. Anyway, if it is so easy to implement, maybe it is not a bad idea to > have this available... I've just added four config file options to the p2os driver: * max_xaccel 0 o Maximum translational acceleration, in mm/sec/sec; nonnegative. Zero means use the robot's default value. * max_xdecel 0 o Maximum translational deceleration, in mm/sec/sec; nonpositive. Zero means use the robot's default value. * max_yawaccel 0 o Maximum rotational acceleration, in deg/sec/sec; nonnegative. Zero means use the robot's default value. * max_yawdecel 0 o Maximum rotational deceleration, in deg/sec/sec; nonpositive. Zero means use the robot's default value. If you set these in your .cfg file, then the driver will use the appropriate P2OS calls (SETA and SETRA) to change the accel/decel limits on startup. I don't have a Pioneer handy so I haven't tested this code; take care. > I think the possibility to change the PID values of the robot while it is > running would be the best alternative, and the most useful. Many industrial > controllers apply different PID constants to control the same system > depending on the working point of it, so why not having this capability in > our case? Definitelly, useful! This is definitely doable, but I'm unlikely to get to it. I'd happily merge a patch adding support for this, if someone were to submit it. brian. -- Brian P. Gerkey ge...@ai... Stanford AI Lab http://ai.stanford.edu/~gerkey |