User Tools

Site Tools


control_system

Control System

The figure below shows the complete control system for our delta roboter. Control System of the Delta Roboter

Inputs

Lets start with the blue box at the bottom center of the diagram. This box represent the motors including the gears and the encoders. The encoders are defined as Peripheral Input. This Peripheral Inputs are described in the HAL configuration file, see Hardware Abstraction Layer. To initialize the encoder inputs, you have to call the constructor of the Peripheral Input and add the respective signalId from the HAL configuration file as parameter, e.g.

eeros::control::PeripheralInput<double> enc1("enc1");

If the HAL is configured correctly, we get the current position in radian of each encoder. Next, the Mux collects the three encoder values and puts them into an AxisVector. AxisVector is defined as

using AxisVector = eeros::math::Matrix<3, 1>;

Kinematic

The Direct Kinematic converts the position of the motors into cartesian coordinates of the TCP (target center point). The output now contains the x, y, z value of the TCP.

Setpoint

Now we switch to the left of the diagram. We have three possible sources for the setpoint.

  • The PathPlanner, as the name says, plans the path to the next point. This is used for moving the robot from point A to point B.
  • The CirclePlanner moves the robot in a circle with a given radius and speed.
  • The Mouse Input gets the movement of the mouse. We use this block to manually control the Delta robot. The output of the Mouse Input is an vector with 4 entries. We must reduce it to 3 containing x, y, z.

Controller

The “Motor Model” gets the actual speed and the calculated torque as input, and outputs the desired voltage for each motor.
The “voltageSetPoint” serves for the initializing of the encoder. This block is no longer used after reaching Safety Level “systemReady”.

Outputs

The drive signals to the motor are of type PeripheralOutput. They are described in the HAL as well.

eeros::control::PeripheralInput<double> mot1("motor1");
control_system.txt · Last modified: 2019/12/01 07:49 by graf