Working version of the scheduler code:
> mkdir ~/rocon > cd ~/rocon > wstool init -j4 src https://raw.github.com/robotics-in-concert/rocon/hydro-devel/rocon.rosinstall > rosdep install --from-paths src /opt/ros/hydro --ignore-src --rosdistro hydro -y > . /opt/ros/hydro/setup.bash > catkin_make
Note that rosinstall file is using the robotics-in-concert fork of rocon_scheduler_requests. Replace that with the original if you need to do so.
The chatter concert example uses a rocon link graph service (similar to roslaunch, but for multiple robots). Link graph services are mostly static in their composition and require a pre-configured list of resources on service startup, e.g. 1 x talker, 3 x listener resources. It does provide some dynamism by allowing the requirements to vary between a minimum and maximum in runtime - e.g. 1 x talker, 2-4 x listener (which is exactly the composition requirements for the chatter concert).
To handle this dynamism, I have a draft resource pool requester and compatibility tree scheduler which are useful for testing various aspects of the scheduler_request module whilst at the same time supporting some of our tutorial rocon demos.
Resource Pool Requester
This requester automatically manages requests given a configuration such as that expressed above (a set of min-max resource requirements).
- Provides an initial minimum level request
- Nothing starts till this gets allocated
- Once the minimum is allocated, it supplies new requests for optional resource requirements
- Monitors changes in the allocations
- If it drops below a minimum, starts up a timer and waits for new allocations
- If timeout is reached, all requests are cancelled and it starts again.
This requester is quite specific to this kind of service configuration.
Compatibility Tree Scheduler
Allocates resource combinations that best fit a request. e.g. don't apply dudette for resource A if it is the only resource that can satisfy resource B and there are others that can satisfy resource A.
This logic only applies to one request at a time though. It always attacks the highest priority request and if the highest priority request isn't satisfied and there are no other equal priority requests, it ignores the lower priority requests.
This could be a much more general component if worked on to apply it's logic over multiple requests at the same time.
Simple tool that continuously scans for any SchedulerRequests feedback topic and pretty prints scheduler replies. You might like to put this in your package Jack.
- Service : chatter (aka talker-listener)
- Resources : 2-4 dudes, 1 dudette
> rocon_launch chatter_concert chatter.concert --screen # Launch more dudes in other shells (girls love talking/nagging to dudes) > roslaunch -p 11315 chatter_concert dude.launch --screen > roslaunch -p 11316 chatter_concert dude.launch --screen
Play around with ctrl-c'ing dudes and roslaunching dudes below and above the minimum. Running the rocon_scheduler_requests script helps keep a live tab on what is happening with the requests.
- Where should we report problems that are not obviously coming from some specific component?
In rocon_tutorials I guess with a note on what test you were trying to run. I can move it from there if needed.
- The 2.1 and 2.3 tests run. How do we know if they are working?
- the turtles are obvious, the dudes and dudettes should show the chatter 'helloworld' spam as soon as they start up.
- might be that the chatter_concert failed to allocate properly and start, see issue link below.
they also appear to work with the current utexas-bwi/rocon_scheduler_requests
- reforked from utexas-bwi for our demo as it all 'works'. Note the rocon one has a hydro-devel branch (for our demo) and master which is where I'll make pull requests for you from.
- Specific issues:
rocon_tutorials#17 - I missed a push the night before, this fixes it so chatter_concert will get spammy with activity now.
The hydro-devel version of rocon_scheduler_requests fails its own unit tests.
Reforked from utexas-bwi
(Jack) Things are working much better today after the last set of updates.
Today, wstool 0.6.30 does not like the rosinstall file syntax, it worked yesterday: rocon#5
- The updated rocon_scheduler_requests package passes its unit tests. Thanks for updating that package, the new version has many bug fixes for sending and receiving messages.
- Some of the other packages still do not. Is that expected, or should I report them as issues?
- Tests? Sure, spot anything odd, shoot me an issue. Had a sprint with a few of us working over so many packages the last three weeks, playing a bit of catchup now to get it stable again.
I did observe one problem with the chatter concert: rocon_tutorials#18
Updated again today: now the turtle_concert runs but the turtlesim window does not appear in the concert_tutorials test. The chatter_concert works fine.