Robot control applications using OSCAR are divided into three layers of abstraction.
The upper layer is the Human Machine Interface (HMI) Layer, the middle layer
is the Control Components (CC) Layer, and the bottom most layer is the Device
Interface (DI) layer. These layers contain software for communication and
interfaces with human operators, control code and intelligence for the robot,
and an abstract robot hardware interface, respectively. The division is
based roughly upon timing requirements, with the lowest DI layer being the most strict.
Current work is proceeding on applying FOP theories to each of these three
layers, as well as to the workcell architecture.
Initial efforts focus on the upper most HMI layer and the lower most DI layer.
Future work will develop FOP model for the middle CC layer and the workcell
software architecture. Each is discussed separately.
Human-Machine Interface Layer
Inital research
applies a feature oriented approach to the HMI layer. This work constructs
a theoretical feature model for decompsing Human Machine interface software in
terms of properties, actions, and state machines. Other relevant work on HMI
software is available at [6].
Control Components Layer
The Computational Components layer is where the majority of OSCAR code lies.
This layer contains the code for kinematics, dynamics, motion planning, obstacle
avoidance, performance criteria, decision making, and control.
This layer is the subject of future work. However, an initial model identifies
the features in Table 1.
| DH Parameters |
parameters describing robot geometry |
| Forward Kinematics |
one or more fk algorithms (e.g., generalized, closed form) |
| Inverse Kinematics |
one or more ik algorithms (e.g., resolved rate, direct search, etc.) |
| Kinematic Redundancy |
code for resolving and controlling redunant robots |
| Kinematics Performance Criteria |
various algorithms for kinematics criteria (e.g., MOT) |
| Perturbation Strategy |
strategy for joint perturbations used during criteria solution optimization |
| Options Generator |
calculates several solutions for a redundant robot |
| Solution Filter |
filters out invalid solutions based on user specified parameters |
| Obstacle Avoidance |
Algorithms and code for obstacle avoidance
|
Table 1. CC Features
Device Integration
Inital research on the DI layer has implemented a prototype feature model for integrating
different models of robot hardware into a controller. The design is based on the existing
models of robots used by RRG. These are the KB2017 17 Dof Dual Arm Robot, the PowerCube
1-7 Dof Modular Robot, and the Roboworks
simulation environment, as summarized in Table 2.
| Robot |
Dof |
Bus |
Features |
| KB2017 |
17 |
-Multi-bus Shared Memory
-Single embedded controller
|
-Position, Velocity, Torque Contol
-Position Range Limits
-Position Excess Limits
|
| PowerCube |
1-7 |
-CAN Bus
-Distributed, embedded controllers in each joint
|
-Position, Velocity, Current Control
-Position, Velocity, Current Range Limits
-Position Excess Limits
|
| Roboworks Simulation |
n |
-TCP/IP connection |
-Position Control
|
Table 2. Robot Hardware
Each robot has a number of different capabilities and communications interfaces.
However, there is a common set of functionality which may be provided by more
than one robot. For example, all the robots mentioned provide Postion Control. However,
only the KB2017 and PowerCube provide Velocity Control.
The prototype feature model consists of 41 such features divided among two sub-domains--
Real Time features and Actuator Hardware features. There are a total of 7 different Real
Time features, and 34 Actuator Hardware features. The Real Time features are summarized in
Table 3 and the Actuator Hardware features are summarized as in Table 4.
| Feature Name |
Description |
| Locking | Nonlocking | Code thread-safe/not thread safe |
| Active | Passive | Code multi or single-threaded |
| AvgTuning | NonTuning | Different policies for adjusting execution rate |
| MotionTime | Time step for servo commands |
| "a | b" means "choose one of a or b" |
Table 3. Real Time Features
| P Control |
P Range Limits |
P Excess Limits |
| V Control |
V Range Limits |
V Excess Limits |
| C Control |
C Range Limits |
C Excess Limits |
| T Control |
T Range Limits |
T Excess Limits |
| P = Position, V = Velocity, C = Current, T = Torque |
Table 4. Actuator Hardware Features
Also, each of the features in Table 4. may be emulated in software or directly supported by hardware.
For example, the Position Control Feature actually has three different variants, a Position Control Hardware
feature, a Position Control Emulation feature, and a Position Control Interface feature, which provides
a common interface to any implementation of Position Control.
As there are 12 different features in Table 4., and each feature additionally has 3 variants, there
are 3*12 = 36 theoretically possible features. In practice, there are only 34, as the Current Control Emulation
and Torque Control Emulation features would require full inverse dynamics models of the robot, and negatively
affect timing properties of the DI layer.
Using the above features, it is possible to construct equations for various programs
and have them automatically generated. Preliminary work
shows that 200 such combinations are possible.
Workcell Architecture
Workcell consists of hardware like robots, conveyors, tools,
vision hardware, sensors etc. which must be integrated for performing a task.
This integration can be best achieved with a software architecture that is
reconfigurable and extendable.
Essentially, workcell software should be able to handle
- Layout design.
- Control
and communication.
Layout design focuses on generating a suitable layout for
the workcell given its components and the task to be performed. The layout may
optimize speed, throughput etc.
Control of the workcell can be broken in two broad layers
- Device control: Control of the individual devices in the workcell. One way of achieving this is to have a
separate controller for each device (for example, robot
controllers for each robot, PLCs for conveyors etc.). This ensures
modularity since each device can work independently and new
devices can be added without affecting the others.
- Device
co-ordination: This is a complex task and various architectures are
possible to achieve this goal. The most common architecture which is being
used in industry is supervisory control. A supervisory program takes care
of the overall task coordination of the cell. It receives data from all
the device controllers and gives instructions to them. This architecture can
become huge and difficult to manage as more and more devices are added,
and the tasks are varied.
Another architecture is agent-based
architecture in which each device controller has an independent agent attached
to it. These agents are capable of taking action on their own without asking a
supervisor. Other agents can be used for ensuring that the system stays in a
consistent state (that is, the state of the system specified by the data
variables is the same for each device), for task generation for optimization
etc. This architecture appears scalable to larger systems. However, it is much
more difficult to achieve co-ordination between independently acting agents
than that in supervisory control, and it is possible that the agent responsible
for maintaining consistency in a huge system would itself become too complex to
develop, maintain and repair.
A
hybrid architecture with the fusion of the above two is also
possible.
The key requirements of manufacturing industry today are
flexibility and reconfigurability: the ability to perform different kinds of
tasks and the ability to quickly change over from one task to another. In this
scenario it is important that the software for workcell operation be generated
and deployed quickly.
One tool for achieving this is Feature Oriented Programming
(FOP). The software components for the workcell domain are modeled as features,
and control software for any given workcell can be obtained from these
features. The operator specifies the features, and software tools called
generators automatically generate the software from the components. So in
essence, the user should be able to say “I want to perform a drilling operation
on this metal piece using a 5 DOF robot, and a conveyor of these specifications
to transport the parts. The layout of the workcell is this and the throughput
needed is this”, and software for the workcell should be generated from the
components.
|