knowrob: bosch_semantic_map | comp_cop | comp_germandeli | comp_orgprinciples | comp_spatial | comp_temporal | ias_knowledge_base | ias_prolog_addons | ias_semantic_map | jpl | json_prolog | knowrob_actions | knowrob_cad_models | knowrob_common | knowrob_objects | mod_probcog | mod_srdl | mod_vis | rosprolog | semweb | srldb | tf_prolog | thea
Package Summary
Implementation of the Semantic Robot Description Language (SRDL) that provides model and reasoning tools to match prerequisites of actions to the capabilities of a robot.
- Author: Moritz Tenorth, Tobias Roehm
- License: GPL
- Repository: tum-ros-pkg
- Source: svn http://code.in.tum.de/pubsvn/knowrob/tags/latest/mod_srdl
Contents
New version available
A complete re-implementation of SRDL, srdl2, is available and contained in the same ROS package mod_srdl. Please have a look at the tutorial and documentation here: http://ias.in.tum.de/kb/wiki/index.php/SRDL2_Tutorial
Old version
Getting Started
The SRDL functionality is packaged in the ROS package mod_srdl. In order to use it follow these steps:
- Make sure to have a working copy of package mod_srdl on your computer and run
rosmake mod_srdl
- Start srdl with the command
rosrun rosprolog rosprolog mod_srdl
Some basic queries
Here are examples for some basic queries to get started:
All subactions of an action:
subActions(srdl_action:'TableSetting', L).
All components of a robot:
hasComponent(rosie:'TUM_Rosie_RobotInstance1', C).
Match based on robot components
matchRobotAndAction(rosie:'TUM_Rosie_RobotInstance1', srdl_action:'TableSetting'). matchRobotAndAction(rosie:'TUM_Rosie_RobotInstance1', srdl_action:'ChocolateCakeBaking').
All missing capabilities for an unfeasible action:
returnMissingCapsForAction(srdl_action:'ChocolateCakeBaking', rosie:'TUM_Rosie_RobotInstance1', Caps).
Print all components that are missing for an unfeasible action (order via capability and capability provision alternative):
printMissingComponents(srdl_action:'ChocolateCakeBaking', rosie:'TUM_Rosie_RobotInstance1').
Compute success probability (based on experience) for an action:
computeSuccessProbability(srdl_action:'TableSetting', P).
Show technical specification/ attributes of components (as far as specified/ contained in KB):
printAttributesOfComponent(pr2:'PR2_l_ArmComposition').
Check if a capability can be learned:
verifyCapAvailability(srdl_cap:'RedCupRecognitionCapability', rosie:'TUM_Rosie_RobotInstance1'). isLearnableCapability(srdl_cap:'RedCupRecognitionCapability', rosie:'TUM_Rosie_RobotInstance1').
Actions in which TUM Rosie and PR2 differ
Example 1 - Driving backwards (possible for Rosie but not for PR2):
matchRobotAndAction(rosie:'TUM_Rosie_RobotInstance1', srdl_action:'DriveBackwards'). matchRobotAndAction(pr2:'PR2_Instance1', srdl_action:'DriveBackwards'). returnMissingCapsForAction(srdl_action:'DriveBackwards', pr2:'PR2_Instance1', Caps). printMissingComponents(srdl_action:'DriveBackwards', pr2:'PR2_Instance1').
Example 2 - Crushing a can of coke using strong grip (possible for PR2 but not for Rosie):
matchRobotAndAction(rosie:'TUM_Rosie_RobotInstance1', srdl_action:'CrushCokeCan'). returnMissingCapsForAction(srdl_action:'CrushCokeCan', rosie:'TUM_Rosie_RobotInstance1', Caps). printMissingComponents(srdl_action:'CrushCokeCan', rosie:'TUM_Rosie_RobotInstance1'). matchRobotAndAction(pr2:'PR2_Instance1', srdl_action:'CrushCokeCan').






