WorldPosition

This page contains a short and a more detailed description of the global variable: WorldPosition, that is reachable from the Pally URCap:

In Short: WorldPosition

WorldPosition

A pose variable that contains the current shift in position of the robot’s base frame with regard to the lifting column’s current elevated position.

Possible values

  • Initialized to: p[0, 0, 0, 0, 0, 0]

    • If no lifting column is used, the WorldPosition variable will always be p[0, 0, 0, 0, 0, 0]

  • Can take any other pose variable: p[0, 0, -lifting_column_pos, 0, 0, 0] where lifting_column_pos is updated based on the current elevation of the lifting column.

    • Review the more detailed explanation to see why the z-direction is negative.

Example

If a lifting column is used in Pally, then the WorldPosition variable will be updated each time the lifting column is moved. If the lifting column is set to a position of 0.25 meters, then the WorldPosition will be set to:

  • WorldPosition = p[0, 0, -0.25, 0, 0, 0]

In Detail: WorldPosition

The WorldPosition variable is a pose variable that contains the offset in the z-direction of the robot’s base frame that is caused by an extended lifting column.

The WorldPosition variable is only relevant when a lifting column is in use.

The robot’s base frame is a coordinate frame that has its origo in the center of the base joint on the UR, where the z-axis is positive in the upwards direction.

The blue line represents the z-axis in the robot’s base frame, where a movement upwards from the base joint represents a positive movement in the z-direction

Since the robot’s base frame is centered in the base joint, then any object that is below the base joint will have a negative z-value. Therefore, as the lifting column is extended, and the robot consequently moves upwards in the positive z-direction, then all the objects surrounding the robot will be pushed in a more negative z-direction.

With the logic above in mind, an extension of the lifting column of, for instance, 0.5 meters; will give the WorldPosition variable a value of p[0, 0, -0.5, 0, 0, 0]. Thus, if an object is located in the robot’s base frame at a pose: p[0.1, 0.2, -0.25, 1.23, 1.57, 0], when the lifting column is not extended; then if the lifting column is extended to 0.5 meters, this object will now be in the robot’s base fram at a pose: p[0.1, 0.2, -0.75, 1.23, 1.57, 0]. As you can see, the object has been pushed by -0.5 meters in the z-direction of the robot’s base frame due to the movement of the lifting column.

The WorldPosition can therefore be used to modify any pose that you may wish the robot to take in any of the Pally callbacks. An example is as follows:

By adding the pose p_2 to the WorldPosition (recall that the z-direction becomes more negative as the lifting column is extended) using the URScript command pose_add, it is possible to obtain a pose p_1 where the pose p_2 is shifted to match the current extension of the lifting column. Thereby, a call to movel(p_1) will move the robot to the same position that p_2 represents when the lifting column is not extended.

The example above is not a motion we recommend, it is simply an example on how one may use the WorldPosition variable.