Skip to content

Latest commit

 

History

History
111 lines (74 loc) · 6.08 KB

DEMO_PUSHBLOCK.md

File metadata and controls

111 lines (74 loc) · 6.08 KB

Design Notes: Push-Block Demo

The push-block application simulates a block being moved between 4 side channels involving the end-effector moving into the cavities. The application operates interactively, receiving the target side channel as the destination of the block. The interactive mode can be replaced with the destination randomly drawn.

The Demo

This demo requires the Panda robot model.

Source Code

Running the Demo Program

Assume that the task trees and the arm commander packages are installed in a catkin_workspace. Refer to the Installation Guide

  • Change directory to the root of the catkin workspace, run source devel/setup.bash.
  • Change directory to this demo folder, run /usr/bin/python3 demo.py.

Application Design based on the Task Trees Architecture

The Design

The Tasks

The application divides the operation into two tasks:

  • The PushBlock task: moving to the exterior side of the block and pushing it to the central zone. Then moving to another pose (both position and orientation) for pushing to the target channel if necessary, and finally pushing it to the target side channel.
  • The MoveNamedPose task: moving to a resting pose (the home pose).

Pre-Defined Behaviours Used

  • DoMoveNamedPose: Moves to a named pose as defined in the task scene
  • DoMoveXYZ: Moves to a target position (xyz)
  • DoMoveXYZRPY: Moves to a target pose (xyzrpy)
  • DoRotate: Rotates to a target orientation (rpy)
  • SimAttachObject: Simulates the attaching of an object to the end-effector.
  • SimAttachObject: Simulates the detaching of an object from the end-effector.

Custom Behaviours Developed

No custom behaviour is needed

The Behaviour Sub-Trees for the Tasks

The PushBlock Task

The PushBlock task has a sequence of behaviours that pushes the block from the current side channel to a target side channel. There are 4 side channels labelled Area 1 to 4 as shown in the following figure.

PushBlock Reference Frames

The behaviour subtree has exploited the symmetry in the problem, which can be summarized to the following:

  • Push the block from the exterior side of the current channel to the interior side and the shared area between the channels.
  • Push the block from the interior side of the target channel to the exterior side.

For example, moving a block from area 1 to area 4 can be achieved by defining reference frames for each area and the following procedure:

  • Push the block from the exterior side of area 1 to the interior side and the shared area between the channels.
  • Push the block from the interior side of area 4 to the exterior side of area 4.

Note the above figure for the positive x direction (red) and the positive y direction (green) for each area reference frame. So the exterior side is positive y direction and the interior side is negative y direction.

The support for multiple reference frames in the SDK has eliminated the need for different behaviour trees for every (current, target) pair.

Behaviour Classes Conditions Parameters Reference Frame Remarks
DoMoveNamedPose is in the inner region the home pose move to home pose first if in inner region
DoMoveXYZ if object not in area 5 the composition of the start and hover position current area move to the transition position
DoRotate if object not in area 5 The right rotation for the current area current area
DoMoveXYZ if object not in area 5 The down position current area move down into the channel
SimAttachObject if object not in area 5 touch and attach the object
DoMoveXYZ if object not in area 5 The centre position current area push the object to the centre area
SimDetachObject detach the object
DoMoveXYZ if wrong pose for the second push The hover position current area move up if the wrong pose for the second push
DoMoveXYZRPY if wrong pose for the second push the composition of the start and hover position and the right rotation for the target area target area align pose for the second push
DoMoveXYZ if at hover position The down position target area move down if at hover pose
SimAttachObject touch and attach the object
DoMoveXYZ The end position target area push the object to the target area
SimDetachObject detach the object
DoMoveXYZ The hover position target area move up

The MoveNamedPose Task

Behaviour Classes Conditions Parameters Remarks
DoMoveNamedPose is not in the inner region the home pose move home first if not in inner region
DoMoveNamedPose the target named pose

The Behaviour Sub-Trees for Initialization

The initialization sub-tree runs only once right at the beginning. It moves the end-effector back to the stow pose after a series of safe intermediate poses.

Behaviour Classes Conditions Parameters Remarks
DoMoveNamedPose the named pose home move home

The Demo Application

The demo application implements a loop with getting the target area from the input and issuing a PushBlock task with the target area as the attribute.

The Program Files

  • task_trees_manager_pushblock.py: defines the custom task trees manager, behaviour sub-trees for every task and the tasks.
  • demo.py: implements the application and the loop with interactive input and random target generation.
  • task_scene.yaml: defines the positions and regions used in the application.

Author

Dr Andrew Lui, Senior Research Engineer
Robotics and Autonomous Systems, Research Engineering Facility
Research Infrastructure
Queensland University of Technology

Latest update: Mar 2024