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