class Roby::Planning::Planner

Public Class Methods

modality_selection(service, *modalities) click to toggle source

Declares as many planning method as there are modalities available for service.

modalities is a set of names, of modalities defined by Engine#define. Each planning method will generate the ModalitySelectionTask instance that will select the given modality for service

# File lib/orocos/roby/selection_tasks.rb, line 11
def self.modality_selection(service, *modalities)
    # Verify that the requested modalities match the service
    engine = Roby.app.orocos_engine
    modalities.each do |name|
        definition = engine.defines[name]
        if !definition
            raise ArgumentError, "#{name} is not a know definition"
        end
        if !definition.fullfills?(service)
            raise ArgumentError, "the model of #{name} (#{definition.base_models.map(&:short_name).join(", ")}) does not provide the required service, #{service}"
        end
    end

    modalities.each do |name|
        describe "selects #{name} for #{service.name}"
        method(name) do
            Orocos::RobyPlugin::ModalitySelectionTask.subplan(service, name)
        end
    end
end