Differences

This shows you the differences between two versions of the page.

Link to this comparison view

doc:pycram:implemented_desigs [2021/03/12 10:31] – created jdechdoc:pycram:implemented_desigs [2021/06/18 10:53] (current) jdech
Line 1: Line 1:
 ====== Implemented Motion Designator ====== ====== Implemented Motion Designator ======
 At the moment there is no global implementation of specific designator, therefor every demo implements their own. At the moment there is no global implementation of specific designator, therefor every demo implements their own.
-To implement a simple Demo showing the capabilities of the PyCRAM BulletWorld, the motion designator for the PR2 robot had to be implemented. In the following this motion designator will firstly be presented and afterwards every single one will be explained in more detail along with a table of all parameter they take and if the parameter is required or not+To implement a simple Demo showing the capabilities of the PyCRAM BulletWorld, the motion designator for the PR2 robot had to be implemented. In the following table the implemented types of motion designator descriptions will be show along with a short description of what they do
  
-^ Designator Description ^ +^ Designator Description ^ Described behaviour 
-Moving | Moves the robot to a given position and checks if the robot is in collision with other objects. | +MovingMotionDescription | Moves the robot to a given position and checks if the robot is in collision with other objects. | 
-Pick-Up | Picks up an object with the given type and attaches it to the gripper.|  +PickUpMotionDescription | Picks up an object with the given type and attaches it to the gripper.|  
-Place | Places the given object and detaches it from the robot. |  +PlaceMotionDescription | Places the given object and detaches it from the robot. |  
-Accessing | Opens a drawer, to access the objects within. |  +AccessingMotionDescription | Opens a drawer, to access the objects within. |  
-Looking | Moves the head to look at a given position. | +LookingMotionDescription | Moves the head to look at a given position. | 
-Opening-Gripper | Opens the gripper of the given arm. | +MoveGripperMotionDescription| Opens or closes the gripper of the given arm. | 
-Closing-Gripper | Closes the gripper of the given arm. |  +DetectingMotionDescription | Tries to find an object of the given type within the field of view. | 
-| Detecting | Tries to find an object of the given type within the field of view. | +MoveTCPMotionDescription | Moves the tool center point of the given arm to a given position. | 
-Move-TCP | Moves the tool center point of the given arm to a given position. | +MoveArmJointsMotionDescription | Moves the joints of one or both arms to a given or pre-defined position. | 
-Move-Arm-Joints | Moves the joints of one or both arms to a given or pre-defined position. | +WorldStateDetectingMotionDescription | Detects an object with the belief state of the world. The robot does not need to see the object. | 
-World-State-Detecting | Detects an object with the belief state of the world. The robot does not need to see the object. | +
  
  
-===== Moving ===== +===== MovingMotionDescription ===== 
 The moving designator is used to move the robot to the designed position. It is also possible to specify an orientation, but it is not mandatory to do so. The moving designator is used to move the robot to the designed position. It is also possible to specify an orientation, but it is not mandatory to do so.
  
-Slots ^ Description ^ Required ^ +Properties ^ Description ^ Required ^ 
-Type | Defines the type of this designator | Yes| +target | Defines the destination for the robot | Yes | 
-| Target | Defines the destination for the robot | Yes | +orientation | Defines the orientation of the robot |  No| 
-Orientation | Defines the orientation of the robot |  No| +
  
-===== Pick-Up =====+===== PickUpMotionDescription =====
 The pick-up designator is used to pick up an object with the given arm. Although the arm slot is not necessary for the execution of the designator, it is encouraged to use it for better results. The pick-up designator is used to pick up an object with the given arm. Although the arm slot is not necessary for the execution of the designator, it is encouraged to use it for better results.
  
-Slots ^ Description ^ Required ^ +Properties ^ Description ^ Required ^ 
-Type | Defines the type of this designator | Yes| +|object | The object that should be picked up. | Yes | 
-|Object | The object that should be picked up. | Yes | +arm | The arm with which the object should be picked up. If no arm is given, the left is used. | No|  
-Arm | The arm with which the object should be picked up. If no arm is given, the left is used. | No|  +
  
-===== Place ===== +===== PlaceMotionDescription ===== 
 The place designator is used to place an object with the given arm. Even though it is not required to provide an arm parameter, it is still encouraged to do so for better results.  The place designator is used to place an object with the given arm. Even though it is not required to provide an arm parameter, it is still encouraged to do so for better results. 
-Slots ^ Description ^ Required ^ +Properties ^ Description ^ Required ^ 
-Type | Defines the type of this designator | Yes| +|object | The object that should be picked up. | Yes | 
-|Object | The object that should be picked up. | Yes | +arm | The arm with which the object should be picked up. If no arm is given, the left is used. | No|  
-Arm | The arm with which the object should be picked up. If no arm is given, the left is used. | No|  +
  
-===== Accessing =====+===== AccessingMotionDescription =====
 The accessing designator is used to open drawers to access the objects within. The drawer handle and joint need to be specified because no semantic knowledge about the drawer is available. The accessing designator is used to open drawers to access the objects within. The drawer handle and joint need to be specified because no semantic knowledge about the drawer is available.
  
-Slots ^ Description ^ Required ^ +Properties ^ Description ^ Required ^ 
-Type | Defines the type of this designator | Yes| +drawer_Handle | The name of the drawer handle, how it is specified in the URDF. This is the point which the robot grips to open  he drawer. | Yes | 
-| Drawer-Handle | The name of the drawer handle, how it is specified in the URDF. This is the point which the robot grips to open  he drawer. | Yes | +drawer_Joint | The name of the prismatic joint the drawer is connected to.| Yes | 
-Drawer-Joint | The name of the prismatic joint the drawer is connected to.| Yes | +part_Of | The object of which the drawer is a part of. | Yes | 
-Part-Of | The object of which the drawer is a part of. | Yes | +distance | The distance, how wide the drawer should be opened.| No |  
-Distance | The distance, how wide the drawer should be opened.| No |  +arm | The arm with which the robot should open the drawer. | No |
-Arm | The arm with which the robot should open the drawer. | No |+
  
-===== Looking ====+===== LookingMotionDescription ====
 The looking designator is used to move the head of the robot, to look at a given position. The position has to be in world coordinate frame. Alternatively, it is possible to specify an object for the robot to look at. The looking designator is used to move the head of the robot, to look at a given position. The position has to be in world coordinate frame. Alternatively, it is possible to specify an object for the robot to look at.
  
 Even thought neither target, nor object are mandatory, one of them has to be provided. Even thought neither target, nor object are mandatory, one of them has to be provided.
  
-Slots ^ Description ^ Required ^ +Properties ^ Description ^ Required ^ 
-Type | Defines the type of this designator | Yes| +target | The position for the robot to look at. | No | 
-| Target | The position for the robot to look at. | No | +object | The object for the robot to look at. | No | 
-Object | The object for the robot to look at. | No | +
  
-===== Opening-Gripper ===== +===== MoveGripperMotionDescription ===== 
 This designator is used to control the grippers of the robot. It can either open the left or the right gripper. This designator is used to control the grippers of the robot. It can either open the left or the right gripper.
  
  
-Slots ^ Description ^ Required ^ +Properties ^ Description ^ Required ^ 
-Type | Defines the type of this designator | Yes| +motion | Defines if the gripper should be opened or closed. | Yes | 
-|Gripper | Specifies the gripper which should be opened, either left or right. | Yes |+gripper | Specifies the gripper which should be opened, either left or right. | Yes |
  
-===== Closing-Gripper ====== 
-This designator is used to control the gripper of the robot. It can either close the left or right gripper of the robot. 
  
- +===== DetectingMotionDescription =====
-^ Slots ^ Description ^ Required ^ +
-| Type | Defines the type of this designator | Yes| +
-|Gripper | Specifies the gripper which should be opened, either left or right. | Yes | +
- +
-===== Detecting =====+
 This designator is used to detect an object that is in front of the robot and returns it to the user. This designator is used to detect an object that is in front of the robot and returns it to the user.
  
  
-Slots ^ Description ^ Required ^ +Properties ^ Description ^ Required ^ 
-Type | Defines the type of this designator | Yes| +object_Type | The type of the object that should be detected. | Yes |
-| Object-Type | The type of the object that should be detected. | Yes |+
  
-===== Move-TCP ===== +===== MoveTCPMotionDescription ===== 
 This designator is used to move the Tool Center Point of one of the arms of the robot. The arm does not have to be given. If no arm is given, the left is used. This designator is used to move the Tool Center Point of one of the arms of the robot. The arm does not have to be given. If no arm is given, the left is used.
  
  
-Slots ^ Description ^ Required ^ +Properties ^ Description ^ Required ^ 
-Type | Defines the type of this designator | Yes| +target | The target to which the tcp should be moved. | Yes | 
-| Target | The target to which the tcp should be moved. | Yes | +arm | The arm of which the tcp is a part of. | No | 
-Arm | The arm of which the tcp is a part of. | No | +
  
-===== Move-Arm-Joints ===== +===== MoveArmJointsMotionDescription ===== 
-This designator is used to manipulate the joints of the robot arms. The user can either do this by giving a list of joint values, that will then be applied to the joints or to use the predefined joint states. This can be used by giving, instead of a list, the string "park".+This designator is used to manipulate the joints of the robot arms. The user can either do this by giving a dictionary of joint names as keys and the corresponing joint pose as value, that will then be applied to the joints. This referes to the 'left_arm_poses' and 'right_arm_poses' properties.
  
-Even though neither the leftnor right arm is mandatory to be specified, one of them +Another possible way is to use the 'left_arm_config' and 'right_arm_config' to use a predefined pose. For example'park' is predefined and moves the respective arm to the parking pose.
-has to be provided.+
  
-Slots ^ Description ^ Required ^ +Properties ^ Description ^ Required ^ 
-Type | Defines the type of this designator Yes+left_arm_config | Defines the configuration for the left arm. No|  
-Left-Arm | Defines the configuration for the left arm. | No|  +right_arm_config| Defines the configuration for the right arm. | No |  
-Right-Arm| Defines the configuration for the right arm. | No | +left_arm_poses | Defines a list of joint poses the left arm should be in. | No|  
 +| right_arm_poses| Defines a list of joint poses the right arm should be in. | No | 
  
  
-===== World-State-Detecting ===== +===== WorldStateDetectingMotionDescription ===== 
 This designator is used to detect an object within the state of the world. Thus, the robot does not need to see the object to detect it. This can be useful as, in some cases, the robot is not able to see an object but will still able to grasp it. For example, this is the case if the robot wants to grasp object from the lowest level of a shelf. This designator is used to detect an object within the state of the world. Thus, the robot does not need to see the object to detect it. This can be useful as, in some cases, the robot is not able to see an object but will still able to grasp it. For example, this is the case if the robot wants to grasp object from the lowest level of a shelf.
  
-Slots ^ Description ^ Required ^ +Properties ^ Description ^ Required ^ 
-Type | Defines the type of this designator | Yes| +object_type | The type of the object that should be detected. | Yes |
-| Object-Type | The type of the object that should be detected. | Yes |+