Ask Your Question
0

ROSLisp/ROSProlog/Knowrob-- Need CRAM for OWL? JSON? [closed]

asked 2016-01-20 11:59:37 -0600

toddcpierce gravatar image

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

edit retag flag offensive reopen merge delete

Closed for the following reason the question is answered, right answer was accepted by toddcpierce
close date 2016-02-16 12:08:35.176365

1 Answer

Sort by ยป oldest newest most voted
0

answered 2016-01-20 12:43:32 -0600

gaya gravatar image

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.

edit flag offensive delete link more

Comments

@toddcpierce, if you find this answer satisfactory, please mark it so (to keep the number of unanswered questions on answers.ros.org low).

gaya gravatar imagegaya ( 2016-01-20 12:47:29 -0600 )edit

Question Tools

2 followers

Stats

Asked: 2016-01-20 11:59:37 -0600

Seen: 146 times

Last updated: Jan 20 '16