def init_kb(width, matrix, cellVectorX, cellVectorY): log_to_terminal("Initializing KB...") if global_vars.LOG_KB: log_kb() reset_prolog_files(cellVectorX, cellVectorY) doors = [[]] dyn_nodes = [] room_list = [] print "resetted prolog" for i in xrange(len(matrix)): if (matrix[i] != "0"): room_tag, obj_tag, door_adj, obj_par = matrix[i].split(";") obj_list = obj_tag.split("#") par_list = obj_par.split("#") door_map = {} column = int(i % width) row = int(i / width) if(room_tag != "0"): if not (room_tag in room_list): room_list.append(room_tag) logic_form = "cellCoordIsPartOf(%s,%s,%s)"%(column,row,room_tag) global_vars.prolog_files["cells"].write(logic_form + ".\n") if (obj_tag != "0"): for index in xrange(len(obj_list)): learn(room_tag, obj_list[index], par_list[index], column, row) #if ("room_center" in obj_list[index]): #logic_form = "dyn_node(%s_center,%s,%s)"%(room_tag,column,row) #global_vars.prolog_files["graph"].write(logic_form + ".\n") #dyn_nodes.append(room_tag) #else: if (door_adj != "false#false#false#false"): doors.append(["%s#%s%s"%(room_tag,column,row),column,row]) print "processed all the cells" global_vars.prolog_files["cells"].flush() global_vars.prolog_load_handle("cells.pl") calculate_and_assert_rooms_center_and_type(room_list) global_vars.prolog_load_handle("rooms.pl") write_doors_to_file(doors) create_topological_graph(room_list, doors) flush_prolog_files() global_vars.prolog_load_handle("graph.pl") global_vars.old_matrix = matrix log_to_terminal("Done Initializing KB") if global_vars.DRAW_GRAPH: drawGraph()
def reset_prolog_files(cellVectorX, cellVectorY): for key in global_vars.prolog_files.keys(): if os.path.exists(key + ".pl") and key != "old_objects" and key != "plans": os.remove(key + ".pl") global_vars.prolog_files[key] = open(key + ".pl", "a") if key == "rooms": global_vars.prolog_files[key].write(":- dynamic roomType/2, roomCenter/3.\n") elif key == "objects": global_vars.prolog_files[key].write( ":- dynamic objectPos/4, objectType/2, objectLastSeen/2, objectAngle/2.\n" ) elif key == "graph": global_vars.prolog_files[key].write(":- dynamic edge/2, dyn_node/3, stat_node/3.\n") elif key == "centroids": for i in xrange(len(cellVectorX)): for j in xrange(len(cellVectorY)): global_vars.prolog_files[key].write( "cellCenterInMap(%s,%s,%s,%s).\n" % (i, j, cellVectorX[i], cellVectorY[j]) ) global_vars.prolog_files[key].flush() global_vars.prolog_load_handle("centroids.pl") global_vars.prolog_load_handle("plans.pl") global_vars.prolog_load_handle("searchGraph.pl") global_vars.prolog_load_handle("cone_based_reasoner.pl") global_vars.prolog_load_handle("logicalFormTranslator.pl") global_vars.prolog_load_handle("plan_reasoner.pl")
def reset_prolog_files(cellVectorX, cellVectorY): for key in global_vars.prolog_files.keys(): if (os.path.exists(key + ".pl") and key != "old_objects" and key != "plans"): os.remove(key + ".pl") global_vars.prolog_files[key] = open(key + ".pl", 'a') if key == "rooms": global_vars.prolog_files[key].write( ":- dynamic roomType/2, roomCenter/3.\n") elif key == "objects": global_vars.prolog_files[key].write( ":- dynamic objectPos/4, objectType/2, objectLastSeen/2, objectAngle/2.\n" ) elif key == "graph": global_vars.prolog_files[key].write( ":- dynamic edge/2, dyn_node/3, stat_node/3.\n") elif key == "centroids": for i in xrange(len(cellVectorX)): for j in xrange(len(cellVectorY)): global_vars.prolog_files[key].write( "cellCenterInMap(%s,%s,%s,%s).\n" % (i, j, cellVectorX[i], cellVectorY[j])) global_vars.prolog_files[key].flush() global_vars.prolog_load_handle("centroids.pl") global_vars.prolog_load_handle("plans.pl") global_vars.prolog_load_handle("searchGraph.pl") global_vars.prolog_load_handle("cone_based_reasoner.pl") global_vars.prolog_load_handle("logicalFormTranslator.pl") global_vars.prolog_load_handle("plan_reasoner.pl")