Changes between Version 4 and Version 5 of Projects/LabRoCoCo2013

09/01/13 15:31:44 (8 years ago)

Clarified Next Milestones


  • Projects/LabRoCoCo2013

    v4 v5  
    51 == Robotino Slave Agent: Test Routine == 
    52 Task: Primary Robotino wants to produce S2 at a T2. For this he assigns a sub-task to a secondary robotino. The subtask is to get an S0 to the T2. The primary robotino gets the S1 by getting an S0 -> T1 which produces an S1.  
     51== A Particular Scenario involving two Robotinos == 
     52Situation: two Robotinos on the field, known to the robots are two machines of types T1 and T2, both are currently empty. 
     53Task: One Robotino is the primary Robotino that guides the task. Based on the decision to produce an S2 at the T2 machine, the sub-task to deliver an S0 to the T2 is assigned to the other, secondary, Robotino. In the meantime the primary robotino produces the S1 at the T1 machine. 
     54Pitfalls: Resource locking will be required for the input storage and machines, in particular T2. Otherwise the robots could disturb each other. 
    54 1. Implement Slave Agent 
    55 * Integrate communication Commandline-Tool -> Slave 
    56 * Slave gets start fact 
    57 * Slave picks up S0 and brings it to T2 
    58 * Leave T2 again 
     561. Slave Agent 
     57 1. Write simple agent which gets an S0 and takes it to the only known T2 on assertion of {{{(start)}}}. Modify initial situation (facts.clp) so it knows a T2. This involves executing get_s0 and take_puck_to (like in the existing agent, but with fixed target). 
     58 2. Command line tool to send a simple message, e.g. "get S0 and take to machine X". 
     59 3. Add support for receiving such a message to the agent (C++) and assert fact like {{{(bring-s0-to "M1")}}} (to name a specific machine, make sure your initial situation has this machine as T2). 
     60 4. Add another skill call to move away from the T2 machine after delivery (this requires additions from the clips-agent plugin in the base repository, which will be merged soonish) 
     612. Master Agent 
     62 - Message reception has already been implemented in 1. 
     63 1. Add rule(s) to the existing LLSF agent to specifically handle the described situation. 
     64 2. Add support for message sending to the agent 
     65 3. In the specific situation, order the secondary Robotino to bring an S0 to the T2 machine 
     66 4. Make sure primary will go on with producing a T1 and does not bring an S0 to the T2 itself (should already work, enable clips debugging and check the rule activation sequence). 
     673. Locking 
     68 - Consider Input Storage and machines to be shared resources 
     69 - These must be reserved for a particular robot at a time 
     70 - Extend to paths? 
     71 - Add waiting queues to allow even more robots, or to drive a robot to a better position closer to the target already, even though it cannot yet enter the critical region? 
    60 2. Network communication Master -> Slave 
    61 * read out messages of master 
    63 3. Master-clips-rules 
    64 * add clips rules to: 
    65 - assign subtask to robotino 
    66 - perform own tasks 
    68 4. Complete communication Master -> Slave 
    70 5. Locking 
     73Testing should happen after each stage, e.g. after each sub-part has been developed. This should be possible from how the tasks have been defined. Use the simulation mode of the agent. Real-world experiments will be done in February.