API architecture

From youBot wiki
Jump to: navigation, search

The KUKA youBot driver stack consists of two parts:

  • EtherCAT driver On the lowest (accessible) level of control all actuators of the KUKA youBot are driven over the EtherCAT protocol. This protocol uses standard network hardware like Ethernet adapters, respective RJ45 connectors and network cables to connect EtherCAT master and slaves and establish the communication between them (see EtherCAT specs for details.The KUKA youBot utilizes an open source driver implementation SOEM for the master.
  • KUKA youBot API On top of the EtherCAT driver stack there is a second software layer {the KUKA youBot API { to command the youBot platform. This layer was developed by the Autonomous Systems Group at Bonn-Rhein-Sieg University of Applied Sciences, Germany. It builds upon SOEM EtherCAT drivers and provides additional functionality relevant to platform kinematics and joint level commanding. Currently, this library provides the basic functionalities to set the Cartesian velocities of the base, to read odometry data from motor encoders etc. It furthermore provides the functionality to command the manipulator on joint level (setting and getting joint confgurations/data, gripper). his part will be expanded very soon by libraries such as OROCOS KDL to also command the youBot arm in Cartesian space.


ArchitectureBIG.png

C++ API documentation

The basic idea of the KUKA youBot API (provided in the youbot driver) is to represent a robot system as a combination of decoupled functional sub-systems. That is, this API represents manipulator arm and base platform as the combination of several joints. At the same time each joint is defined as a combination of a motor and a gearbox.

There are three main classes in the youBot API that a user should be aware of. These are

  • YouBotManipulator class that represents youBot arm as the aggregation of several joints and a gripper
  • YouBotBase class that represents youBot base platform
  • YouBotJoint class that represents joints which make up both the manipulator and the base

Every youBot joint is represented as a youBot::YouBotJoint class in the API. At this stage the API does not make a distinction if it is a base joint which powers a wheel or a manipulator joint. youBot::YouBotBase and youBot::YouBotManipulator are aggregate classes that allow access to a particular joint instance through youBot::YouBotJoint.

ApiState.png

Classes used for get/set joint values

In order to set and get setpoint values or read some sensors from joints, one has to use the youBot::JointData group of classes, e.g. youBot::JointVelocitySetpoint or youBot::JointSensedCurrent. To configure parameters of a joint you have to use the JointParameter group of classes. This could be for instance youBot::MaximumPositioningSpeed.

JointData.png


Go back to Software