{
  "title": "KUKA Motor-Current Payload Dataset: 128 Files, 685,400 Rows, One Timing Conflict",
  "rciNumber": "RCI 026",
  "version": "0.1.0",
  "schemaVersion": 1,
  "released": "2026-08-10",
  "canonical": "https://robotcomponentindex.com/research/kuka-motor-current-payload-dataset-audit/",
  "source": {
    "paper": {
      "title": "Sensorless Payload Estimation in an Industrial Robot Using Internal Motor-Current Signals",
      "authors": [
        "Adam Bátrla",
        "Ojan Majidzadeh Gorjani",
        "Radek Byrtus",
        "Radim Hercík"
      ],
      "journal": "Sensors 2026, 26, 4867",
      "doi": "10.3390/s26154867",
      "landingUrl": "https://www.mdpi.com/1424-8220/26/15/4867",
      "publisherPdfUrl": "https://mdpi-res.com/d_attachment/sensors/sensors-26-04867/article_deploy/sensors-26-04867.pdf",
      "publisherPdfBytes": 4873751,
      "publisherPdfSha256": "c94242e26968eaffd684ef321346f8e979c438f8bc87003b37235bfdb2652b7a",
      "published": "2026-08-02",
      "license": "CC BY 4.0",
      "licenseUrl": "https://creativecommons.org/licenses/by/4.0/",
      "locationsUsed": [
        "Sections 3.1-3.4",
        "Tables 2, 4 and 5",
        "Figures 4 and 7",
        "Sections 5-6",
        "Data Availability Statement"
      ]
    },
    "dataset": {
      "title": "Motor-Current Dataset for Cycle-Level Payload Estimation on Two KUKA KR3 Robots",
      "creators": [
        "Adam Bátrla",
        "Radim Hercík",
        "Radek Byrtus",
        "Ojan Majidzadeh Gorjani"
      ],
      "conceptDoi": "10.5281/zenodo.21456276",
      "versionDoi": "10.5281/zenodo.21456277",
      "recordUrl": "https://zenodo.org/records/21456277",
      "publicationDate": "2026-07-20",
      "license": "CC BY 4.0",
      "licenseUrl": "https://creativecommons.org/licenses/by/4.0/",
      "archiveFilename": "KUKA_payload_dataset.zip",
      "archiveBytes": 25857481,
      "archiveMd5": "efe9394bf2579f380832eed6d501c614",
      "archiveSha256": "51f93e8c453dd857170698627dc1d64ef14839e5c6efdb68148d01e0100c1253"
    },
    "verifiedDate": "2026-08-10"
  },
  "experimentBoundary": {
    "robotModel": "KUKA KR3 R540",
    "robotUnitCount": 2,
    "controller": "KUKA KRC4 Compact",
    "controllerSoftware": "KSS 8.5.8",
    "traceSource": "KUKA Trace / NextGenDrive / Actual Current",
    "currentChannels": 6,
    "automation": "Python 3.11 application using C3 Bridge Interface, py_openshowvar and SFTP after each completed trace",
    "commandedMotion": "Axis A2 from -75 degrees to -120 degrees and back, repeated five times",
    "initialJointConfigurationDegrees": [
      90,
      -75,
      105,
      0,
      30,
      0
    ],
    "commandedSpeedSettingPercent": 15,
    "reportedMaximumA2SpeedDegreesPerSecond": 80,
    "payloadFixture": "Pneumatic gripper with a stackable-disc fixture; geometry, gripping position, center of gravity and inertia distribution were held approximately controlled",
    "payloadConfigurationCountPerRobot": 16,
    "observedPayloadRangeG": {
      "minimum": 434,
      "maximum": 2609
    },
    "applicationBoundary": "Repeated, motion-specific, cycle-level payload verification; not real-time in-motion feedback and not validated for other trajectories, speeds, payload geometries, centers of mass, inertia distributions, controllers or robot models."
  },
  "independentAudit": {
    "method": "RCI downloaded the versioned Zenodo archive, matched its published MD5, computed a local SHA-256, parsed every CSV, checked filenames and the seven-column contract, counted rows by physical robot and dataset, checked every numeric cell, and examined every adjacent Sample interval. Paper-reported model metrics were not used as inputs to these structural results.",
    "csvFileCount": 128,
    "readmeFileCount": 1,
    "csvByteCount": 89405509,
    "rowCount": 685400,
    "datasetCount": 8,
    "robotUnitCount": 2,
    "columnCount": 7,
    "currentChannelCount": 6,
    "payloadConfigurationCountPerRobot": 16,
    "missingCellCount": 0,
    "nonFiniteCellCount": 0,
    "malformedRowCount": 0,
    "filesStartingAtZero": 128,
    "adjacentSampleIntervalCount": 685272,
    "observedSampleStepUnits": 4,
    "adjacentIntervalsAtObservedStep": 685272,
    "paperTable2DatasetTotalsMatched": 8,
    "paperTable2DatasetTotalCount": 8,
    "paperTable2CombinedRowsMatched": true,
    "sourceArchiveMd5Matched": true,
    "sourceRowsRedistributedByRci": false,
    "paperModelMetricsIndependentlyReproduced": false,
    "sampleEndUnits": {
      "minimum": 21312,
      "median": 21400,
      "maximum": 21880
    },
    "durationSecondsIfReadmeMillisecondsDefinitionIsApplied": {
      "minimum": 21.312,
      "median": 21.4,
      "maximum": 21.88
    }
  },
  "robots": [
    {
      "robotUnit": "R1",
      "datasetIds": [
        "D1",
        "D2",
        "D3",
        "D4"
      ],
      "fileCount": 64,
      "rowCount": 342721,
      "payloadCount": 16,
      "payloadMassesG": [
        437,
        582,
        727,
        872,
        1017,
        1163,
        1307,
        1451,
        1597,
        1739,
        1884,
        2029,
        2174,
        2317,
        2463,
        2609
      ],
      "aggregateMeanCurrentAByAxis": [
        0.000556327,
        -0.511530739,
        -0.450851877,
        -0.035393368,
        0.101321395,
        -0.019394694
      ]
    },
    {
      "robotUnit": "R2",
      "datasetIds": [
        "D5",
        "D6",
        "D7",
        "D8"
      ],
      "fileCount": 64,
      "rowCount": 342679,
      "payloadCount": 16,
      "payloadMassesG": [
        434,
        579,
        724,
        869,
        1014,
        1160,
        1305,
        1450,
        1594,
        1739,
        1884,
        2030,
        2175,
        2319,
        2464,
        2609
      ],
      "aggregateMeanCurrentAByAxis": [
        -0.002927628,
        -0.470626956,
        -0.510897066,
        0.093395433,
        0.060895873,
        -0.006258878
      ]
    }
  ],
  "aggregateMeanCurrentDifferenceR2MinusR1AByAxis": [
    -0.003483955,
    0.040903783,
    -0.060045189,
    0.128788801,
    -0.040425522,
    0.013135816
  ],
  "datasets": [
    {
      "datasetId": "D1",
      "robotUnit": "R1",
      "fileCount": 16,
      "rowCount": 85935,
      "paperTable2RowCount": 85935,
      "rowCountMatchesPaper": true,
      "payloadCount": 16,
      "payloadMinimumG": 437,
      "payloadMaximumG": 2609
    },
    {
      "datasetId": "D2",
      "robotUnit": "R1",
      "fileCount": 16,
      "rowCount": 85606,
      "paperTable2RowCount": 85606,
      "rowCountMatchesPaper": true,
      "payloadCount": 16,
      "payloadMinimumG": 437,
      "payloadMaximumG": 2609
    },
    {
      "datasetId": "D3",
      "robotUnit": "R1",
      "fileCount": 16,
      "rowCount": 85572,
      "paperTable2RowCount": 85572,
      "rowCountMatchesPaper": true,
      "payloadCount": 16,
      "payloadMinimumG": 437,
      "payloadMaximumG": 2609
    },
    {
      "datasetId": "D4",
      "robotUnit": "R1",
      "fileCount": 16,
      "rowCount": 85608,
      "paperTable2RowCount": 85608,
      "rowCountMatchesPaper": true,
      "payloadCount": 16,
      "payloadMinimumG": 437,
      "payloadMaximumG": 2609
    },
    {
      "datasetId": "D5",
      "robotUnit": "R2",
      "fileCount": 16,
      "rowCount": 85829,
      "paperTable2RowCount": 85829,
      "rowCountMatchesPaper": true,
      "payloadCount": 16,
      "payloadMinimumG": 434,
      "payloadMaximumG": 2609
    },
    {
      "datasetId": "D6",
      "robotUnit": "R2",
      "fileCount": 16,
      "rowCount": 85621,
      "paperTable2RowCount": 85621,
      "rowCountMatchesPaper": true,
      "payloadCount": 16,
      "payloadMinimumG": 434,
      "payloadMaximumG": 2609
    },
    {
      "datasetId": "D7",
      "robotUnit": "R2",
      "fileCount": 16,
      "rowCount": 85611,
      "paperTable2RowCount": 85611,
      "rowCountMatchesPaper": true,
      "payloadCount": 16,
      "payloadMinimumG": 434,
      "payloadMaximumG": 2609
    },
    {
      "datasetId": "D8",
      "robotUnit": "R2",
      "fileCount": 16,
      "rowCount": 85618,
      "paperTable2RowCount": 85618,
      "rowCountMatchesPaper": true,
      "payloadCount": 16,
      "payloadMinimumG": 434,
      "payloadMaximumG": 2609
    }
  ],
  "paperReportedModel": {
    "evidenceRole": "Peer-reviewed source result; not independently reproduced by RCI",
    "inputFeatures": "Mean, minimum, maximum, median, standard deviation and signal energy extracted from each of six motor-current channels, then standardized from training data",
    "model": "Two-hidden-layer multilayer perceptron with 512 neurons per hidden layer and ReLU activation",
    "optimizer": "Adam",
    "learningRate": 0.001,
    "fixedTrainingEpochs": 150,
    "results": [
      {
        "scenario": "same-robot-R1",
        "trainDatasets": [
          "D1",
          "D2",
          "D3"
        ],
        "testDatasets": [
          "D4"
        ],
        "testMaeG": 13.37,
        "testRmseG": 16.19,
        "testMseG2": 262.06,
        "accuracyWithin15GPercent": 62.5
      },
      {
        "scenario": "same-robot-R2",
        "trainDatasets": [
          "D5",
          "D6",
          "D7"
        ],
        "testDatasets": [
          "D8"
        ],
        "testMaeG": 2.6,
        "testRmseG": 3.39,
        "testMseG2": 11.48,
        "accuracyWithin15GPercent": 100
      },
      {
        "scenario": "mixed-source",
        "trainDatasets": [
          "D1",
          "D2",
          "D3",
          "D5",
          "D6",
          "D7"
        ],
        "testDatasets": [
          "D4",
          "D8"
        ],
        "testMaeG": 5.37,
        "testRmseG": 6.78,
        "testMseG2": 45.93,
        "accuracyWithin15GPercent": 96.88
      },
      {
        "scenario": "direct-R1-to-R2",
        "trainDatasets": [
          "D1",
          "D2",
          "D3",
          "D4"
        ],
        "testDatasets": [
          "D5",
          "D6",
          "D7",
          "D8"
        ],
        "testMaeG": 80.54,
        "testRmseG": 93.87,
        "testMseG2": 8810.67,
        "accuracyWithin15GPercent": 14.6
      }
    ],
    "strongestSupportedInterpretation": "Within the paper's single controlled A2 motion and two-unit sample, direct transfer between nominally identical robots degraded materially; mixed-unit training recovered the reported test accuracy. This does not establish a fleet-wide calibration interval or performance on another motion, payload geometry, controller or robot model."
  },
  "timingConflict": {
    "status": "unresolved-source-conflict",
    "paperStatement": "Sections 3.1 and 5 state a 12 ms sampling period, approximately 83.3 Hz.",
    "datasetReadmeStatements": [
      "The Sample column is described as a controller timestamp in milliseconds.",
      "The sampling period is described as 12 ms, approximately 83.3 Hz."
    ],
    "rciObservation": "All 128 files start at Sample 0, and all 685,272 adjacent intervals increase by exactly 4 Sample units. The median final Sample value is 21,400.",
    "conditionalCalculation": "If the README's millisecond definition is applied literally, the observed interval is 4 ms and the median file span is 21.4 s. RCI does not promote that conditional calculation to a corrected acquisition rate without author or controller-configuration evidence.",
    "editorialConsequence": "Do not describe the deposited files as verified 83.3 Hz or 250 Hz data. Do not convert row counts into duration-dependent performance until the unit or export/downsampling behavior is clarified.",
    "requiredResolution": "Obtain the KUKA Trace configuration/export rule or an author correction explaining why the deposited Sample increments are 4 while the paper and README state 12 ms."
  },
  "reproductionBoundary": {
    "structuralAuditReproducible": true,
    "analysisScript": "https://robotcomponentindex.com/research/kuka-motor-current-payload-dataset-audit/#method",
    "sourcePackageIncludesRawCsv": true,
    "sourcePackageIncludesReadme": true,
    "sourcePackageIncludesTrainingCode": false,
    "sourcePackageIncludesSavedModel": false,
    "paperReportsRandomSeed": false,
    "paperReportsSoftwareFrameworkAndVersion": false,
    "paperReportsBatchSize": false,
    "paperModelMetricsIndependentlyReproducedByRci": false,
    "interpretation": "The open rows support independent structural checks and alternative analyses. They do not, by themselves, make the exact MLP metrics turnkey reproducible."
  },
  "limitations": [
    "RCI did not operate either physical robot, inspect the controllers or measure the payloads on an independent scale.",
    "The two unit labels and exact robot/controller/software identities are author-reported; the public archive contains CSVs and a README, not unit serial numbers or controller configuration exports.",
    "The timing conflict remains unresolved; duration-dependent metrics are conditional rather than verified.",
    "RCI did not reproduce the MLP results because the source package does not include training code, saved weights, a locked environment or all stochastic training settings.",
    "Aggregate signed currents are motion- and coordinate-specific and must not be used as cross-model performance rankings or motor-efficiency measurements.",
    "The paper's two-unit result does not estimate the distribution of unit-to-unit variability across a production fleet.",
    "RCI publishes only independently computed aggregates and source links; it does not mirror the third-party ZIP, raw CSV rows, paper figures or article text."
  ],
  "suggestedCitation": "Robot Component Index. KUKA Motor-Current Payload Dataset: 128 Files, 685,400 Rows, One Timing Conflict. RCI 026, research dataset v0.1.0, 2026-08-10. https://robotcomponentindex.com/research/kuka-motor-current-payload-dataset-audit/"
}