This is an old revision of the document!
CRAM v0.1 -> CRAM v0.2
cram_3rdparty
Stayed unchanged. Only got updated (merged PRs from one of the Suturo students).
cram_core
As the refactoring in v0.2 mostly affected higher level packages of CRAM and didn't influence cram_core much, there's really not that much you need to do to migrate.
Step 1: Renaming ASDF systems
Search (grep) for designators and process-modules in all the *.asd files of your packages and change designators (from cram_designators package) to cram-designators and process-modules to cram-process-modules.
Step 2: Renaming CRAM_REASONING to CRAM_PROLOG
Search for cram_reasoning in all the package.xml and CMakeLists.txt files of your packages and change cram_reasoning to cram_prolog.
Then search for cram-reasoning in all the *.asd and *.lisp files of your packages and change cram-reasoning to cram-prolog. Also, search for crs in all the *.lisp files and change it to prolog.
Step 3: designator properties as keywords
Search for all make-designator and with-designators and change the type of the designator from simple symbol to a keyword, e.g.
(make-designator 'location '((on table)))
should turn into
(make-designator :location '((on table)))
Next search for all make-designator, with-designators and (desig-prop ? calls in all your Lisp files and change the designator properties there from simple symbols to keywords, e.g. 'on should become :on. Also, search for all desig-props in all your Lisp files and get rid of them, e.g.
(desig-prop ?designator (desig-props:to desig-props:see))
should turn into
(desig-prop ?designator (:to :see))
Finally, you can search for def-desig-package in all your package.lisp files and get rid of def-desig-package and designator-properties there. This is not obligatory but it will make your code cleaner. E.g.:
(desig-props:def-desig-package :cram-designators (:use #:common-lisp #:cram-reasoning #:cut) (:nicknames :desig) (:desig-properties #:obj #:location #:object #:pose #:of #:at #:type #:trajectory #:action #:constraints))
should turn into
(defpackage :cram-designators (:use #:common-lisp #:cram-reasoning #:cut) (:nicknames :desig))
Step 4: one bracket less in WITH-DESIGNATORS
Finally, search for all with-designators in your *.lisp files and get rid of one extra bracket there, e.g.
(with-designators ((open-loc (:location `((:to :open) (:to :reach) (:obj ,?obj)))) ; <- 4 brackets in the end (open-action (:action `((:type :trajectory) (:to :open) (:obj ,?obj) (:angle ,?angle)))))
should turn into
(with-designators ((open-loc :location `((:to :open) (:to :reach) (:obj ,?obj))) ; <- 3 brackets in the end (open-action :action `((:type :trajectory) (:to :open) (:obj ,?obj) (:angle ,?angle))))
The idea behind this change was that the less brackets you have the better and that this way with-designators will look a lot more like make-designator, e.g.
(with-designators ((some-location :location '((:some :where)))))
(make-designator :location '((:some :where)))
If you don't like this change, please complain.
cram_bridge
The cram_bridge repository / metapackage had enormous dependencies on the other CRAM / IAI packages - you needed the whole CRAM and a bunch of robot drivers and some experimental code just to be able to use a Lisp JSON Prolog implementation or the semantic logging mechanism. To avoid that the three most widely used packages from there got separated into their own repositories: cram_beliefstate, cram_json_prolog, cram_moveit.
Higher level packages
There were really a lot of changes in the higher level packages to write a comprehensive migration guide but here is a general overview.
There used to be two high-level packages

