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. 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:

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.

# 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)
]