Spine single-process control library
SoftwareSpine is a Python interface for single-process, non-distributed robot control experiments. [1] [2] [3] [4]
Installation & first result →Official websiteGetting started
- Source rights
- Named licenses are documented by part. Review licenses
- Unknowns
- operating system, compute requirements not fully established. Review gaps
Source researched · Not tested by us
Sources checked · Research details
Licenses & related hardware
- License
- GPL-3.0-or-later · Details by part
Overview
Spine is a Python interface for single-process, non-distributed robot control experiments. It separates controller logic from supported physical and simulator backends. That scope differs from distributed robotics middleware or a guarantee that one controller transfers unchanged to every device. [1]
Is this for you?
- Known limitations
- Singleprocess experimentinterface isnot distributedROS replacement or verifiedsim-realparity.
- Examplecontrolfrequency/outputarrays do notestablish timing, safezeroing orphysicalexecution.
Editorial assessment of cited source; no runtime or hardware test.
What you need
Installation & first result
Open the upstream getting-started guide [1] [2] [3] [4]
- Inspect the named configuration, source interfaces and required external components.
- Attempt only the matched documented workflow after resolving environment and rights gaps; no operation reproduced here.
Editorial assessment of cited source; no runtime or hardware test.
Project notes
Keep the historical Python range visible
The inspected metadata declares Python >=3.8,<3.11 and GPL-3.0-or-later, with numpy/pandas/scipy, TOML and plotting dependencies. Its installation route is a source checkout and editable install. The README explicitly says simulator and motor-driver libraries are not installed automatically; moteus, the selected T-Motor driver or PyBullet must be supplied separately. No backend environment was installed here. [1] [3]
A source workflow creates motors from a TOML robot description, creates a controller and passes both to the selected motor_control_loop. The controller derives from AbstractController. The mjbots loop is asynchronous, invoked as asyncio.run(motor_control_loop(...)); its TOML specifies model and motor_id. T-Motor adds bus_id alongside model/motor_id and requires the documented mini-cheetah-motor-driver-socketcan dependency. PyBullet instead needs a URDF path and joint indices. Sample values are examples, not validated settings. Preserve those backend-specific configurations rather than treating the shared call shape as verified device compatibility. [1]
An example output array is not a tested motor action
The documented controller returns a 3-by-m array of position, velocity and force/torque commands. Its minimal example returns recorded position and velocity with zero requested force/torque. That interface illustration is not verified inert behavior for every powered mechanism. The inspected mjbots loop contains actual command/recording logic to study alongside the selected actuator configuration. No motor, simulator, data recording or nominal control frequency was exercised. [1] [4]
The GPL project notice does not open bought-in actuators or replace dependencies' terms. Timing, torque limits, interruption handling and record correctness need tests in the selected environment; no real-time, persistence or safe-recovery claim was verified here. [2]
What we checked
Pinned source/document inspection only; no installation, compile, credentials/API use, simulator, lab experiment or physical hardware test.
Not yet established
- Requirements: operating system, host computer
- Version-specific hardware compatibility (ecosystem tags alone do not establish it)
Updates
- Upstream last updated
- Not established
- Latest release
- Not established
- Profile updated
- Nov 1, 2026
- Sources last checked
- Nov 1, 2026
- Next review
- Dec 1, 2026
- Reviewed revision
adad350
Source files and licenses
Concrete scoped robot-facing software/research workflow, not complete manufacturing or verified operational behavior.
| Layer | Availability / license |
|---|---|
| software | available · GPL-3.0-or-later Selected source availability/notice only; external hardware, models, data and dependencies have separate rights. No blanket redistribution or operational clearance. [1] [2] [3] [4] |
| documentation | available · GPL-3.0-or-later Selected source availability/notice only; external hardware, models, data and dependencies have separate rights. No blanket redistribution or operational clearance. [1] [2] [3] [4] |
No separate physical design, pretrained distribution or dataset is selected as the released contribution in this scoped software review.
References
Each source links to the exact revision we read. “Used for” shows where this page relies on it.
- S001 README.md
Revision, date & where cited
dfki-ric-underactuated-lab/spine contributors · github.com · revision
adad350· README.md at · Accessed Nov 1, 2026
Used for: Overview, Is this for you?, What you need, Installation & first result and 3 more - S002 LICENSE
Revision, date & where cited
dfki-ric-underactuated-lab/spine contributors · github.com · revision
adad350· LICENSE at · Accessed Nov 1, 2026
Used for: Is this for you?, What you need, Installation & first result, An example output array is not a tested motor action and 1 more - S003 pyproject.toml
Revision, date & where cited
dfki-ric-underactuated-lab/spine contributors · github.com · revision
adad350· pyproject.toml at · Accessed Nov 1, 2026
Used for: Is this for you?, What you need, Installation & first result, Keep the historical Python range visible and 1 more - S004 spine/mjbots.py
Revision, date & where cited
dfki-ric-underactuated-lab/spine contributors · github.com · revision
adad350· spine/mjbots.py at · Accessed Nov 1, 2026
Used for: Is this for you?, What you need, Installation & first result, An example output array is not a tested motor action and 1 more
Correction guidance · Discussion is not enabled · Profile format 0.7.0-draft.5