Naming

The trait concept allows to specify non generic robot behavior in special traits, that can be defined alongside generic traits. These traits can only be used for a subset of robot types. However, using the robot manufacturer directly as a name identifier may lead to portability conflicts.

As such, we have to define how we want to name specific behavior.

RobotArm Classes

The RobotArm classes are the main interaction points of a user in this library. They should be specific to the robot used and are allowed to contain robot manufacturer names if applicable. It is also allowed to create arbitrary special robot names for prototypes. Possible examples include:

  • YuRobotArm for the Yu_5

  • FanucRobotArm for a FANUC six axis robot controlled by the voraus.core

  • K4PRobotArm for a special prototype

Traits and Methods

General purpose traits and methods should have default names with no special identifiers since they are designed to be used by multiple robots.

Possible examples include:

  • MoveLinearTrait with its method move_linear()

  • PauseContinueTrait with its methods pause_motion() and continue_motion()

Robot specific traits and methods need a special codeword to distinguish them from their general counterparts. However, the codewords can not be robot manufacturer or type specific, since multiple manufacturers and types may still share the same custom behavior. As such, we decided to opt for abstract identifiers from the NATO alphabet to describe specific robot behavior. Most suitable are Bravo, Echo, Kilo, Golf and Victor since they do not have conflicts with robot vocabulary and are short.

Traits shall be named like DesciptionIdentifierTrait while methods will only append the actual identifier letter e.g. b for Bravo.

For starters we decided to use Victor as the identifier for the Yu like behavior and Foxtrott for the FANUC like behavior.

This then would result in:

  • MoveLinearVictorTrait with its method move_linear_v()

  • MoveLinearFoxtrottTrait with its method move_linear_f()

As a result, the YuRobotArm would provide the general purpose move_linear() and the parameter specific move_linear_v() method.