====== Implemented Motion Designator ====== 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 table the implemented types of motion designator descriptions will be show along with a short description of what they do. ^ Designator Description ^ Described behaviour ^ | MovingMotionDescription | Moves the robot to a given position and checks if the robot is in collision with other objects. | | PickUpMotionDescription | Picks up an object with the given type and attaches it to the gripper.| | PlaceMotionDescription | Places the given object and detaches it from the robot. | | AccessingMotionDescription | Opens a drawer, to access the objects within. | | LookingMotionDescription | Moves the head to look at a given position. | | MoveGripperMotionDescription| Opens or closes the gripper of the given arm. | | DetectingMotionDescription | 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. | | MoveArmJointsMotionDescription | 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. | ===== 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. ^ Properties ^ Description ^ Required ^ | target | Defines the destination for the robot | Yes | | orientation | Defines the orientation of the robot | No| ===== 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. ^ Properties ^ Description ^ Required ^ |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| ===== 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. ^ Properties ^ Description ^ Required ^ |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| ===== 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. ^ Properties ^ Description ^ Required ^ | 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 | | part_Of | The object of which the drawer is a part of. | Yes | | distance | The distance, how wide the drawer should be opened.| No | | arm | The arm with which the robot should open the drawer. | No | ===== 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. Even thought neither target, nor object are mandatory, one of them has to be provided. ^ Properties ^ Description ^ Required ^ | target | The position for the robot to look at. | No | | object | The object for the robot to look at. | No | ===== MoveGripperMotionDescription ===== This designator is used to control the grippers of the robot. It can either open the left or the right gripper. ^ Properties ^ Description ^ Required ^ | motion | Defines if the gripper should be opened or closed. | Yes | | gripper | Specifies the gripper which should be opened, either left or right. | Yes | ===== DetectingMotionDescription ===== This designator is used to detect an object that is in front of the robot and returns it to the user. ^ Properties ^ Description ^ Required ^ | object_Type | The type of the object that should be detected. | Yes | ===== 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. ^ Properties ^ Description ^ Required ^ | target | The target to which the tcp should be moved. | Yes | | arm | The arm of which the tcp is a part of. | No | ===== MoveArmJointsMotionDescription ===== 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. 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. ^ Properties ^ Description ^ Required ^ | left_arm_config | Defines the configuration for the left arm. | No| | right_arm_config| 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 | ===== 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. ^ Properties ^ Description ^ Required ^ | object_type | The type of the object that should be detected. | Yes |