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:
YuRobotArmfor the Yu_5FanucRobotArmfor a FANUC six axis robot controlled by the voraus.coreK4PRobotArmfor 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:
MoveLinearTraitwith its methodmove_linear()PauseContinueTraitwith its methodspause_motion()andcontinue_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:
MoveLinearVictorTraitwith its methodmove_linear_v()MoveLinearFoxtrottTraitwith its methodmove_linear_f()
As a result, the YuRobotArm would provide the general purpose move_linear() and the parameter specific
move_linear_v() method.