General A hardware prototype of a four-bar linkage was constructed to generate the presented data set. The data consists of desired input currents supplied to a servo motor and the measured resulting velocities. The mechanism is portrayed in the lab_mechanism_x.jpg images. Further details of the mechanism can be found in the section "Mechanism Setup". For each input trajectory in the input/ folder, the experiment was performed three times. The corresponding measurement files are in the output_empty/ and output_honey/ folders identified by the extension output_xx, where xx is either 00, 01, or 02. For the measurements in the output_honey/ folder, a non-symmetrical stirrer was mounted to the mechanism and was moved through regular supermarket forest honey introducing additional viscous damping into the system. This also allows to supply higher currents for relevant amounts of time to the motor because the maximal motor velocity will not be reached as soon. For the files in the output_empty/ folder, no stirrer was mounted on the mechanism.
File Setup The input and output files are comma-separated text files. In the input files, the first line contains a column description (% Time [s], Prescribed Current [mA]) and the following lines indicate the input commands. In the input-command lines, the first value is a time marker in seconds, and the second value is a desired current that should be supplied to the motor from that time on until the time marker in the next line. The output files have a column description in the first line (% Time [s], Goal Current [mA], Present Current [mA], Present Voltage [V], Present Position [rad], Present Velocity [rad/s]) and the following lines are the measurements from the servo motor. It is important to note that the servo motor only has a granularity of 2.69 mA steps for the supplied currents. Hence, the goal current will be the closest multiple of 2.69 below the desired current in the input file. The present position is denoted in rad, where the null position is with the left link in a horizontal position (parallel to the ground link) pointing to the right. The motor then actuates this link in counter-clockwise direction when viewed from the top.
Mechanism Setup The four-bar linkage consists of aluminum blocks connected by revolute joints. The joints of the three moving links are 10 mm apart from the edges of the aluminum blocks. The lengths of the moving links are the following (with joint distances denoted in brackets):
- left link / crank link: 50 mm (30 mm)
- top link / coupler link: 124 mm (104 mm)
- right link / rocker link: 80 mm (60 mm)
The ground link can be freely adjusted between 45 mm and 120 mm, but was fixed to 95 mm in the conducted experiments. A stirrer can be mounted on the mechanism and can be moved through a liquid introducing viscous damping into the system. A Dynamixel XH430-W350-R servo motor actuates the left link. The servo motor has a built-in controller and can be supplied with a desired current signal to enforce a moment on the left link. The motor is controlled via a C++ program running under Ubuntu 20.04. The baud rate is set to the highest admissible value of 4.5 Mb/s and the USB latency is set to 1 ms. An accelerometer (Bosch BMA456) is mounted to the top of the mechanism but has not been used in the experiments.
Python Notebook tutorial.ipynb This Python 3 notebook visualizes the trajectories to get an intuition about the presented data set. It exemplifies how to load and extract values from the input and output files. Afterwards, it plots the input trajectories together with corresponding velocity measurements. (2024-04-11)