A software agent controlling 2 robots arms in co-operating concurrent tasks


June 23, 2017 10:23 AM
Keith Leonard Clark (http://www.imperial.ac.uk/people/k.clark) is a Professor of Computer Science at Imperial College London, England. He earned a Ph.D. in 1980 from Queen Mary, University of London and since 1979, Keith Clark has had an academic position in the Department of Computing, Imperial College where he has been Professor of Computational Logic since 1987.

Abstract: The agent concurrently builds several different block towers as separate tasks. Each executes the same TeleoR rule program, and interacts with the same graphical Python simulator. The blocks are distributed over 3 tables, and each arm can only reach two tables, a home table and a shared table. The arms and tables are resources that are fairly shared by the tasks, without interference between tasks, without starvation of any task, and without deadlock. Frequently both arms are used in parallel.

The agent knows what a tower of blocks is, as it can do reasoning from percept facts sent to it from the simulator using relation defining rules in an LP+FP language QuLog. The percepts inform the agent if a block is directly on top of another block, or on a particular table, or held by one of the arms. Percept updates are sent by the simulator whenever blocks are moved, either by a simulated robotic arm controlled by the agent, or by me using the simulator’s GUI. The percepts are stored in the agent’s Belief Store, shared by all the tasks.

TeleoR programs are robust and opportunistic, as will be shown in the demo. If I undo a partially built tower the task T building it will try to reconstruct it as soon as it can acquire the arm and table resources needed. It I help, putting the next needed block B on T's partial tower, T will skip that action. It will instead uncover and place the next block B’ on top of B. Or it will pause if its tower is now complete. It will spring back into life if blocks are moved from that tower.

The tasks also try to help each other, making use of facts in the Belief Store that record the list of blocks of each tower building task. When clearing blocks on top of the next block B needed for its tower, a task T will place a removed block RB that will later be needed by another task OT, including T itself, in order to facilitate OT’s pickup of RB. If possible, T will place RB on a table, which T currently has as an acquired resource, so that OT can move RB to its destination partial tower using just one arm, and without the need to acquire the shared table as a resource. Minimising the number of times tasks need to use the shared table resource, maximises the parallel use of the arms. It therefore reduces the overall time needed to build all the towers.

The tasks also try to help each other, making use of facts in the Belief Store that record the list of blocks of each tower building task. When clearing blocks on top of the next block B needed for its tower, a task T will place a removed block RB that will later be needed by another task OT, including T itself, in order to facilitate OT’s pickup of RB. If possible, T will place RB on a table, which T currently has as an acquired resource, so that OT can move RB to its destination partial tower using just one arm, and without the need to acquire the shared table as a resource. Minimising the number of times tasks need to use the shared table resource, maximises the parallel use of the arms. It therefore reduces the overall time needed to build all the towers.

The demo will finish with a short video of a Baxter two armed robot concurrently building two real block towers with both help and hindrance from a person. The robot’s arms are moved in parallel whenever this can be done without risk of their clashing over a shared table area.


Register at RuleML+RR 2017