controller based on skills
Wolf is s simple controller based on skills. A skill is a simple behavior, that
can be easily debugged. The original intention was to have a
three-level-architecture, but currently it seems that two levels will be
sufficient. The source code is available for download. Author Martin Dlouhý.
A skill is a simple behavior. In Java it is anything inherited from class Skill.
A simple example is to rotate 360° until you see a green feeder. Each skill has
member function run() that accepts current status of all sensors and returns
commands for motors. Function run() can also throw exception
CannotHandleSituationException, which means what it says. In our example
the failure is if there is no green feeder during whole rotation.
Currently there is a simple sequencer rather than a manager. Scheduled skills are:
Whenever one is successfully finished next one is executed. Finally there is
"an exception handler", which is a skill FollowWall. LocateFeeder is exactly
our example – turn 360° and when you find a green feeder, you are
successfully finished. TrackFeeder starts with feeder in camera view,
which is Wolf tracking until the robot is very close to the feeder.
Finally TouchFeeder gets even closer until the robot start rechargning.
And FollowWall is just wall following until robot sees some feeder.
I you have any questions regarding the controller or this site in general
we would be more than happy to answer them. Please feel free to use our
(you can use either czech or english).