docs: update AGENTS.md and README for the current codebase - #13
Conversation
Refresh the agent-facing and user-facing docs against the latest main: AGENTS.md - Replace the stale "venv bin not on PATH" build note with the real prerequisites: cmake/ninja/g++, Eigen3, and initialised git submodules (pybind11 + dqrobotics/cpp), plus git-tag-based versioning and the aarch64 -ffp-contract=off flag. - Document the new _debug module and the single `verbose` kwarg (bool | dict) with per-category control. - Note that saul/ holds live simulator-driven scripts (not tests). - Add the "run the smoke test outside the repo root" caveat (source tree shadows the installed package and lacks _core). - Correct the pyright section: the invariant is 0 errors; dqrobotics is untyped so the repo keeps its own stubs. README.md - Expand the one-line example into a short overview of the package, the three installed example commands, and a pointer to saul/. needle_controller.py - Add an `assert W is not None and w is not None` so pyright narrows the Optional-typed W/w before the .dtype checks (fixes a reportOptionalMemberAccess error; behaviour unchanged). Co-authored-by: openhands <openhands@all-hands.dev>
The license metadata was inconsistent: pyproject.toml and setup.py said
MIT, the C++ header said MIT, but the LICENSE file contained the full
LGPL 2.1 text and the seven Python file headers said "LGPLv3 License".
The project is MIT. This makes everything agree:
- Replace the LICENSE file (LGPL 2.1) with the standard MIT license.
- Change the "LGPLv3 License" line to "MIT License" in the seven Python
source file docstrings.
pyproject.toml (license = {text = "MIT"}), setup.py (license="MIT") and
include/M3_SerialManipulatorSimulatorFriendly.h (MIT License) were already
correct and are left unchanged.
Co-authored-by: openhands <openhands@all-hands.dev>
License fix: standardise everything to MITNew commit What was inconsistent
What changed
Net diff: 8 files, +28 / −511 (the deletions are the LGPL license text). With this, the entire repository is consistently MIT: the A comment posted by an AI agent (OpenHands) on behalf of the user. |
Delete marinholab/working/needlemanipulation/scenes/UR3_410rev0.ttt — a CoppeliaSim/V-REP scene file (VREP magic bytes; added in "Added the coppeliasim evaluation") that was not referenced by any code or build configuration. The `saul/` folder is Saul's own bespoke simulator and is unrelated to CoppeliaSim, so it is left untouched. `git grep -iE "coppelia|vrep"` over the tracked tree returns nothing after this change. Co-authored-by: openhands <openhands@all-hands.dev>
Remove CoppeliaSim/VREP from the repoNew commit What I found The only tracked CoppeliaSim/V-REP item was:
What changed
What I did not touch
Verification
A comment posted by an AI agent (OpenHands) on behalf of the user. |
The velocity QP is now solved with the marinholab.solvers.qpoases.Solver from the marinholab-solvers-qpoases PyPI package (a qpOASES wrapper with prebuilt binaries) instead of dqrobotics.solvers.DQ_QuadprogSolver, which is a thin Python wrapper around the quadprog package. Changes: - icra2019_controller.py: import Solver from marinholab.solvers.qpoases and use it as self.qp_solver. The solve_quadratic_program(H, f, A, b, Aeq, beq) signature is identical and accepts A=None/Aeq=None, so the controller call sites (ICRA19 and NeedleController) are unchanged. - pyproject.toml: drop the "quadprog" runtime dependency and declare "marinholab-solvers-qpoases" instead. - stubs/dqrobotics/solvers/__init__.pyi: remove the DQ_QuadprogSolver stub (no longer imported); keep the abstract DQ_QuadraticProgrammingSolver. - AGENTS.md: rewrite the solver section for the qpOASES-backed Solver and drop the quadprog troubleshooting note. quadprog is no longer referenced anywhere in the repo. Verified: pyright reports 0 errors; the rebuilt controller constructs with the qpOASES Solver and solves the 9-DoF controller QP. Co-authored-by: openhands <openhands@all-hands.dev>
Replace
|
The README's opening line said only "UoM-UTokyo collaboration". Expand the acronym to "University of Manchester (UoM) and University of Tokyo (UTokyo)" so readers don't have to guess at the collaboration partners. Co-authored-by: openhands <openhands@all-hands.dev>
Refreshes the agent-facing (
AGENTS.md) and user-facing (README.md) docs against the latestmain, and includes a one-line type-narrowing fix that keeps the pyright check at 0 errors.Changes
AGENTS.mdPATH” note with the real prerequisites:cmake/ninja/g++, Eigen3 (find_package(Eigen3 REQUIRED)), and initialised git submodules (pybind11+dqrobotics/cpp). Also notes git-tag-based versioning and the aarch64-ffp-contract=offflag._debugmodule and the singleverbosekwarg (bool | dict) with per-category control (radius/plane/orientation/insertion/rcm).saul/— clarifies these are live, simulator-driven scripts (need a runningPedriatricSimulatorover TCP), not a test suite._core).dqroboticsships no type info so the repo keeps its ownstubs/(viastubPath). The 12reportMissingModuleSourcewarnings only appear when the deps aren’t installed — an environment artifact, not a regression.README.mdsaul/. Kept brief.needle_controller.pyassert W is not None and w is not Nonebefore the.dtypechecks._get_optimization_parametersalways returns non-NoneW/w(at least the joint-limit rows) but types them asOptional; the assert narrows the type so pyright resolves thereportOptionalMemberAccesserror at the.dtypeaccess. No runtime behaviour change.Verification
pyright→ 0 errors (was 1 error before the fix)._coreextension and ran the documented smoke test from a neutral dir — it constructs aNeedleControllerand returnsW.shape == (19, 9).Pre-existing issues spotted (not changed here)
Two things surfaced while verifying the docs; flagging for a follow-up PR rather than mixing into this docs change:
example_load_from_file.pypasses 2-tuplercm_constraints, butICRA19TaskSpaceController._get_optimization_parametersunpacks each as a 3-tuple(p, r, idx)→ValueError: not enough values to unpack (expected 3, got 2)on first run. The sibling example uses index6.LICENSEis LGPL-2.1, Python file headers say “LGPLv3”, the C++ header says MIT, andpyproject.tomlsays MIT. The README links toLICENSEwithout asserting a specific license.This PR was created by an AI agent (OpenHands) on behalf of the user.