ROSLisp/ROSProlog/Knowrob-- Need CRAM for OWL? JSON?
Hello,
I'm trying to use ROSLisp and ROSProlog in the most minimal fashion as possible, so I am doing as much research in advance before I install anything. Here's my question:
My goal is to read OWL files into Prolog and then proceed happily using Lisp and Prolog together for my projects. The key thing here is that I probably won't be using any of the 'cognitive' robot-related capabilities of CRAM (yet). All of the OWL files I'll be using will have to do with chemistry, biology and physics. Do I need to install CRAM at all? After installing ROSLisp, ROSProlog and Knowrob, will I even have to bother installing the JSON_prolog to talk to Prolog from Lisp?
On a much more fundamental level, should I install SBCL and SWI Prolog in advance before even installing ROS? If I install Knowrob, will ROSLisp, ROSProlog and JSON_prolog be installed as dependencies anyway? Will it install CRAM too?
Happy for any advice,
Sincerely,
-Todd
Asked by toddcpierce on 2016-01-20 12:59:37 UTC
Answers
should I install SBCL and SWI Prolog in advance before even installing ROS?
SBCL is a system dependency of ROS, so you get it when you install ROS. SWI Prolog is installed when you rosdep install
KnowRob.
If I install Knowrob, will ROSLisp, ROSProlog and JSON_prolog be installed as dependencies anyway?
roslisp comes with ROS, rosprolog and rosprolog side of json_prolog come with KnowRob.
Will it install CRAM too?
No.
Do I need to install CRAM at all?
json_prolog provides a JSON interface for rosprolog that works over ROS services. Once you roslaunch
your json_prolog, you will see four new services in your ROS ecosystem:
$ rosservice list
/json_prolog/finish
/json_prolog/next_solution
/json_prolog/query
/json_prolog/simple_query
You can query these services using plain roslisp.
cram_json_prolog
adds syntactic sugar to these raw service calls, e.g., by maintaining a persistent service client, having a lazy list representation of possibly infinite solutions of the Prolog query etc. To use cram_json_prolog
you need to git clone
another two repos: cram_core
and cram_3rdparty
, as they are dependencies of cram_json_prolog
. So you have a choice: have 3 extra repos in your workspace and use the presumably simpler interface vs. get by without syntactic sugar.
I'd suggest you first fiddle around with raw service calls and use the code in cram_json_prolog only as reference / examples.
Asked by gaya on 2016-01-20 13:43:32 UTC
Comments
@toddcpierce, if you find this answer satisfactory, please mark it so (to keep the number of unanswered questions on answers.ros.org low).
Asked by gaya on 2016-01-20 13:47:29 UTC
Comments