This is an old revision of the document!
Commonsense knowledge about object locations
Commonsense knowledge about typical object locations was acquired by the Open Mind Indoor Common Sense (OMICS http://openmind.hri-us.com/) project. We processed the natural language database entries and translated them to well-defined concepts within the KnowRob ontology as described in Putting People's Common Sense into Knowledge Bases of Household Robots. In Searching Objects in Large-scale Indoor Environments: A Decision-thereotic Approach we applied this knowledge in object search tasks.
Getting Started
First you have to build the rospackage knowrob_omics and then run it using rosprolog.
rosmake knowrob_omics rosrun rosprolog rosprolog knowrob_omics
Queries about object locations
To query the probability of finding an object in a given room type you can use the following query:
?- probability_given(knowrob:'OmicsLocations', Obj, knowrob:'Kitchen', Pr). Obj = 'http://ias.cs.tum.edu/kb/knowrob.owl#CitrusFruit', Pr = 0.003865979381443299 ; Obj = 'http://ias.cs.tum.edu/kb/knowrob.owl#Bowl-Eating', Pr = 0.006443298969072165
If you are interested in what type of room you could find a given object use the following query:
?- bayes_probability_given(knowrob:'OmicsLocations', Room, knowrob:'Sandwich',Pr). Room = 'http://ias.cs.tum.edu/kb/knowrob.owl#Kitchen', Pr = 0.21657432923639094 ; Room = 'http://ias.cs.tum.edu/kb/knowrob.owl#OfficeRoom', Pr = 0.05065150074968034 ; Room = 'http://ias.cs.tum.edu/kb/knowrob.owl#Hallway', Pr = 0.07410126961527308 ; Room = 'http://ias.cs.tum.edu/kb/knowrob.owl#Classroom', Pr = 0.08278900467361545 ; Room = 'http://ias.cs.tum.edu/kb/knowrob.owl#ConferenceRoom', Pr = 0.08394689285086883 ; Room = 'http://ias.cs.tum.edu/kb/knowrob.owl#RestaurantSpace', Pr = 0.24008811355348483
You can see the processed database table entries with:
?- rdf_has(Entry, rdf:type, knowrob:'OmicsLocations'), rdf_has(Entry,knowrob:subject,Obj), rdf_has(Entry,knowrob:object,Room). Entry = 'http://ias.cs.tum.edu/kb/knowrob.owl#OmicsLocations-0', Obj = 'http://ias.cs.tum.edu/kb/knowrob.owl#CitrusFruit', Room = 'http://ias.cs.tum.edu/kb/knowrob.owl#Kitchen' ; Entry = 'http://ias.cs.tum.edu/kb/knowrob.owl#OmicsLocations-1', Obj = 'http://ias.cs.tum.edu/kb/knowrob.owl#Bowl-Eating', Room = 'http://ias.cs.tum.edu/kb/knowrob.owl#Kitchen' ;
Get the list of Room types:
?- findall(Room, (rdf_has(Entry, rdf:type, knowrob:'OmicsLocations'), rdf_has(Entry,knowrob:object,Room)), Rooms), list_to_set(Rooms,RoomSet).