# Datasets ## Long Term Experiment ### Overview This dataset offers a compilation of long-term dynamic motion data gathered over approximately 3.5 weeks from a newly designed 4-DoF tendon-driven robotic arm powered by pneumatic artificial muscles (PAMs). The data encompasses movements generated by random multisine signals of target pressures, as well as repeated fixed target pressure movements, facilitating the evaluation of system repeatability and performance. ### Robot The dataset was taken on Pamy2 ### Files The files can be downloaded on [Edmond](https://edmond.mpdl.mpg.de/dataset.xhtml?persistentId=doi:10.17617/3.OMM0JP). There are 6 zip files. Each file contains several "df" files (around 40), each file containing a pandas dataframe. ### How to read the data #### pandas dataframes Each dataframe can be read using pandas: ``` python import pandas dataframe = pandas.read_pickle("/path/to/file.df") ``` To each line of the dataframe correspond an observation of the state of the robot. Dataframe's columns have explicit names. #### robot behavioral segments The movement of the robot is annotated. The behavioral segments are provided by intervals of iteration number ('iteration' is one of the dataframe column). The intervals are provided as attributes of the dataframe. There are 5 annotation categories: - random movement: Open loop motion generated by a random multisine signals of target pressures with different frequencies. - fixed movement fast: Open loop motion with a list of fixed target pressures, with 0.7 seconds time interval between two target pressures. - fixed movement slow: Open loop motion with a list of fixed target pressures, with 2 seconds time interval between two target pressures. - move to random pressure: Motion generate by applying a random target pressure. - reset: Reset motion by moving to medium pressures, then to min pressures, and back to medium pressures again; the final position might be suitable for assessing the system's repeatability. ```python # see the categories dataframe.attrs.keys() # getting the intervals corresponding to "fixed movement fast" # 'fast_intervals' is a list of tuple (iteration start, iteration end) fast_intervals = dataframe.attrs['fixed_movement_fast'] # getting the dataframe corresponding to the first # interval iter_start, iter_end = fast_intervals[0] dataframe_fixed_movement_fast = dataframe[ (dataframe['iteration']>=iter_start) & (dataframe['iteration']<=iter_end) ] ```