Thanks a lot for providing this software. I'm feeling much more comfortable with the Python code than with the Lisp code.
The last days I worked myself through the docs and I've got a couple of open questions, fundamental and concrete ones:
-
What is the goal/roadmap for PyCRAM? Is it intended as a replacement for CRAM?
How feature-complete is it compared to CRAM?
Particularly, I was missing the connection to RoboKudo (How is the BulletWorld populated from perception?) and KnowRob's logical reasoning. Other KnowRob features, like the inner world model and OWL, are directly implemented in PyCRAM.
-
I'm missing the internal simulation of a whole plan. All given examples directly perform a plan's individual actions. Is there a way to simulate a plan before execution? Should one perform the plan first in a prospection world and then on the real robot?
-
CRAM seems to operate on a symbolic level only: plans just consider key frames and existing motion designators just teleport the robot to the desired configuration. Do you also consider trajectory planning, i.e. generating a collision-free trajectory? IMO, this should be part of a planning framework.
-
The difference between Motion and Action Designators became not very clear.
Sure, motion designators shall represent atomic low-level motions, while the latter are more abstract.
Considering navigation for example, there exist NavigateAction and MoveMotion, which seem to perform exactly the same task: navigating the robot to a target location. The only difference is that MoveMotion takes a single target, while NavigateAction takes a list, but only the first element is used:
|
return NavigateActionPerformable(self.target_locations[0]) |
So, seemingly both designators serve exactly the same purpose.
More generally, all action designators seem to return just the first element of their targets list.
Is this intended? If so, what is the purpose of having a list?
-
Other designators also just resolve to the first item:
How/Is it possible to iterate through all possible plan resolutions (and verify them via internal simulation) instead of greedily choosing the first parameter always?
-
The difference between Reachable and Accessing Location designators didn't become clear as well.
What is their semantic difference? Both seem to evaluate the reachability of an object.
-
What is meant by ExecutionType SEMI_REAL?
-
I noticed regular crashes of the python kernel when running a jupyter notebook with a world running in GUI mode.
These crashes didn't occur on particular actions, but during idle time. Hence, I assume that this is related to the visualization. Is that a known problem? Do you suggest using rviz visualization via VizMarkerPublisher instead?
Thanks a lot for providing this software. I'm feeling much more comfortable with the Python code than with the Lisp code.
The last days I worked myself through the docs and I've got a couple of open questions, fundamental and concrete ones:
What is the goal/roadmap for PyCRAM? Is it intended as a replacement for CRAM?
How feature-complete is it compared to CRAM?
Particularly, I was missing the connection to RoboKudo (How is the BulletWorld populated from perception?) and KnowRob's logical reasoning. Other KnowRob features, like the inner world model and OWL, are directly implemented in PyCRAM.
I'm missing the internal simulation of a whole plan. All given examples directly
performa plan's individual actions. Is there a way to simulate a plan before execution? Should oneperformthe plan first in a prospection world and then on the real robot?CRAM seems to operate on a symbolic level only: plans just consider key frames and existing motion designators just teleport the robot to the desired configuration. Do you also consider trajectory planning, i.e. generating a collision-free trajectory? IMO, this should be part of a planning framework.
The difference between Motion and Action Designators became not very clear.
Sure, motion designators shall represent atomic low-level motions, while the latter are more abstract.
Considering navigation for example, there exist
NavigateActionandMoveMotion, which seem to perform exactly the same task: navigating the robot to a target location. The only difference is thatMoveMotiontakes a single target, whileNavigateActiontakes a list, but only the first element is used:pycram/src/pycram/designators/action_designator.py
Line 305 in f73867a
So, seemingly both designators serve exactly the same purpose.
More generally, all action designators seem to return just the first element of their targets list.
Is this intended? If so, what is the purpose of having a list?
Other designators also just resolve to the first item:
pycram/src/pycram/designator.py
Line 679 in f73867a
How/Is it possible to iterate through all possible plan resolutions (and verify them via internal simulation) instead of greedily choosing the first parameter always?
The difference between
ReachableandAccessing Locationdesignators didn't become clear as well.What is their semantic difference? Both seem to evaluate the reachability of an object.
What is meant by ExecutionType
SEMI_REAL?I noticed regular crashes of the python kernel when running a jupyter notebook with a world running in
GUImode.These crashes didn't occur on particular actions, but during idle time. Hence, I assume that this is related to the visualization. Is that a known problem? Do you suggest using rviz visualization via
VizMarkerPublisherinstead?