From 33449ce2119822ea735b70f65c0dee96c46df429 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20Sandstr=C3=B6m?= Date: Fri, 23 Oct 2026 15:22:13 +0200 Subject: [PATCH] First commit --- .gitignore | 5 + MTEST04-MTN-ARM_parameters.yaml | 7 ++ MTEST04-MTN-ARM_startup.script | 8 ++ Makefile | 36 ++++++ README.md | 199 ++++++++++++++++++++++++++++++++ cfg/axes.cmd | 13 +++ cfg/axis_coordinate.yaml | 62 ++++++++++ cfg/axis_joint1.yaml | 66 +++++++++++ cfg/axis_joint2.yaml | 66 +++++++++++ cfg/axis_joint3.yaml | 66 +++++++++++ cfg/axis_joint4.yaml | 66 +++++++++++ cfg/axis_joint5.yaml | 66 +++++++++++ cfg/axis_joint6.yaml | 66 +++++++++++ cfg/geometry.json | 1 + cfg/libmain.so_cpp_logic.subs | 22 ++++ cfg/load.cmd | 5 + docs/arm.png | Bin 0 -> 274388 bytes python/epics_source.py | 79 +++++++++++++ python/requirements-ioc.txt | 2 + python/requirements.txt | 1 + python/viewer.py | 176 ++++++++++++++++++++++++++++ src/Makefile | 11 ++ src/c_api.cpp | 20 ++++ src/kinematics.hpp | 120 +++++++++++++++++++ src/logic.cpp | 60 ++++++++++ tests/test_epics_source.py | 53 +++++++++ tests/test_kinematics.cpp | 33 ++++++ tests/test_logic.cpp | 34 ++++++ 28 files changed, 1343 insertions(+) create mode 100644 .gitignore create mode 100644 MTEST04-MTN-ARM_parameters.yaml create mode 100644 MTEST04-MTN-ARM_startup.script create mode 100644 Makefile create mode 100644 README.md create mode 100644 cfg/axes.cmd create mode 100644 cfg/axis_coordinate.yaml create mode 100644 cfg/axis_joint1.yaml create mode 100644 cfg/axis_joint2.yaml create mode 100644 cfg/axis_joint3.yaml create mode 100644 cfg/axis_joint4.yaml create mode 100644 cfg/axis_joint5.yaml create mode 100644 cfg/axis_joint6.yaml create mode 100644 cfg/geometry.json create mode 100644 cfg/libmain.so_cpp_logic.subs create mode 100644 cfg/load.cmd create mode 100644 docs/arm.png create mode 100644 python/epics_source.py create mode 100644 python/requirements-ioc.txt create mode 100644 python/requirements.txt create mode 100644 python/viewer.py create mode 100644 src/Makefile create mode 100644 src/c_api.cpp create mode 100644 src/kinematics.hpp create mode 100644 src/logic.cpp create mode 100644 tests/test_epics_source.py create mode 100644 tests/test_kinematics.cpp create mode 100644 tests/test_logic.cpp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1541833 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +build/ +bin/ +.venv/ +__pycache__/ +*.pyc diff --git a/MTEST04-MTN-ARM_parameters.yaml b/MTEST04-MTN-ARM_parameters.yaml new file mode 100644 index 0000000..a6e25fb --- /dev/null +++ b/MTEST04-MTN-ARM_parameters.yaml @@ -0,0 +1,7 @@ +ioc_name: MTEST04-MTN-ARM +ioc_host: c6025a-08 +ioc_port: 50001 +ioc_user: root +epics_version: 7.0.10 +os: deb12 +cpu_architecture: x86_64 diff --git a/MTEST04-MTN-ARM_startup.script b/MTEST04-MTN-ARM_startup.script new file mode 100644 index 0000000..8fe685b --- /dev/null +++ b/MTEST04-MTN-ARM_startup.script @@ -0,0 +1,8 @@ +# Simulation only: no EtherCAT master. Run from this project directory. +# Build with make logic ECMC_ROOT=. +# PSI launcher provides iocInit and ecmccfg finalization. +epicsEnvSet("IOC", "${IOC=MTEST04-MTN-ARM}") +require ecmccfg v11.2.0_RC1 "ECMC_VER=v11.2.0_RC1,MASTER_ID=-1,EC_RATE=1000" +${SCRIPTEXEC} ./cfg/load.cmd +# caqtdm -macro "IOC=MTEST04-MTN-ARM" ecmcCppLogicOverview.ui +# caqtdm -macro "IOC=MTEST04-MTN-ARM,CPP_ID=0" ecmcCppLogic.ui diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..110a049 --- /dev/null +++ b/Makefile @@ -0,0 +1,36 @@ +CXX ?= c++ +CXXFLAGS ?= -O2 -std=c++17 -Wall -Wextra -pedantic +PYTHON ?= python3 +ECMC_ROOT ?= ../ecmc +ifeq ($(shell uname -s),Darwin) +EXT := dylib +SHARED := -dynamiclib +else +EXT := so +SHARED := -shared +endif +.DEFAULT_GOAL := all +.PHONY: all viewer-lib test test-logic logic clean +all: viewer-lib build/test_kinematics +viewer-lib: build/libarm.$(EXT) +build/libarm.$(EXT): src/c_api.cpp src/kinematics.hpp + mkdir -p $(@D) + $(CXX) $(CXXFLAGS) -fPIC $(SHARED) -o $@ src/c_api.cpp +build/test_kinematics: tests/test_kinematics.cpp src/kinematics.hpp + mkdir -p $(@D) + $(CXX) $(CXXFLAGS) -Isrc -o $@ $< +test: all + ./build/test_kinematics + $(PYTHON) python/viewer.py --self-test + $(PYTHON) tests/test_epics_source.py +logic: bin/libmain.$(EXT) +bin/libmain.$(EXT): src/logic.cpp src/kinematics.hpp + mkdir -p $(@D) + $(CXX) $(CXXFLAGS) -fPIC $(SHARED) -I$(ECMC_ROOT)/devEcmcSup/logic -o $@ $< +build/test_logic: tests/test_logic.cpp src/logic.cpp src/kinematics.hpp + mkdir -p $(@D) + $(CXX) $(CXXFLAGS) -I$(ECMC_ROOT)/devEcmcSup/logic -o $@ $< +test-logic: build/test_logic + ./build/test_logic +clean: + rm -rf build bin diff --git a/README.md b/README.md new file mode 100644 index 0000000..b1de966 --- /dev/null +++ b/README.md @@ -0,0 +1,199 @@ +# ecmc six-DOF robot arm — simulation prototype + +![Six-joint arm simulation](docs/arm.png) + +A generic six-revolute-joint industrial-style arm with C++ forward and inverse +kinematics, twelve ecmc axes, and an offline/read-only EPICS 3D viewer. +This is an example geometry, not a calibrated model of a commercial robot. + +**All twelve axes are virtual in this simulation.** `virt` and `phys` are group +names: `virt` contains the six Cartesian tool coordinates; `phys` contains the +six simulated rotary joints. No physical drives or EtherCAT hardware are used. + +| Axis IDs | Group | Meaning | Trajectory | Encoder feedback | +|---|---|---|---|---| +| 1–6 | `virt` | X, Y, Z, Rx, Ry, Rz offsets from home tool pose | Internal | FK from joint encoders | +| 7–12 | `phys` | J1–J6 angular offsets from home joints | External IK, or internal for direct joint moves | Ideal copy of selected joint trajectory | + +## Run the offline demo + +```sh +make test +python3 -m venv .venv +.venv/bin/pip install -r python/requirements.txt +.venv/bin/python python/viewer.py +# Direct joint controls instead of Cartesian controls: +.venv/bin/python python/viewer.py --joints +# Headless screenshot: +.venv/bin/python python/viewer.py --snapshot build/arm.png +``` + +The six sliders set Cartesian home offsets, then **Move (3 seconds)** starts a +shared quintic interpolation. Blue shows joint feedback and orange the IK +command. An unsuccessful IK solve retains the last valid joints and displays an +error. Retargeting starts a new profile without velocity continuity. Joint mode +interpolates joint offsets instead. The offline plant is ideal; it has no lag, +load, drive dynamics, collision checks or physical safety system. + +Both Python and the IOC share `src/kinematics.hpp`. The viewer calls a small +C ABI in `src/c_api.cpp`; `make viewer-lib` rebuilds `build/libarm.so` (`.dylib` +on macOS). No EPICS or Python GUI dependencies are needed by `make test`. + +## Arm geometry and conventions + +Lengths are in mm; joint and Cartesian Euler angles are in degrees. The base +frame is right handed, with +Z upward. Revolute axes act in each successive +local frame. With transforms multiplied in the order written: + +```text +T = Rz(q1) Tz(H) Ry(q2) Tx(A) Ry(q3) Tx(B) + Rx(q4) Ry(q5) Rx(q6) Tx(Tool) +``` + +The last three axes intersect at the wrist centre. The eight plotted points +include coincident wrist joints; the drawing is a link skeleton, not solid CAD. + +`cfg/geometry.json` contains `[H, A, B, Tool]`, default `[300, 300, 250, 80]`. +The IOC uses macros `BASE_HEIGHT`, `UPPER_ARM`, `FOREARM`, `TOOL` in the +`MACROS` argument in `cfg/load.cmd`. They have the same defaults. Keep JSON and +IOC macros identical; neither side automatically reads the other's geometry. + +| Joint | Local rotation | Home angle | Absolute model limits | Axis offset limits | +|---|---|---:|---|---| +| J1 | Z | 0° | −170…170° | −170…170° | +| J2 | Y | −35° | −120…120° | −85…155° | +| J3 | Y | 70° | −140…140° | −210…70° | +| J4 | X | 0° | −180…180° | −180…180° | +| J5 | Y | 35° | −120…120° | −155…85° | +| J6 | X | 0° | −180…180° | −180…180° | + +The chosen home avoids a straight elbow/wrist and gives a useful local workspace. +All IOC axes start at **zero offsets**, representing these nominal joint angles. +This is mathematical initialization, not a homing or calibration procedure. + +Cartesian XYZ are base-frame displacements from the home tool position. For +orientation, `R = Rz(Rz) Ry(Ry) Rx(Rx) R_home`. Thus zero Cartesian angles mean +the home tool orientation, not alignment of the tool with the base. The Euler +representation has a singularity at Ry = ±90°. FK computes absolute tool +transforms directly, then converts them into these Cartesian offsets for EPICS. + +To model a particular robot, replace the transform chain, joint limits and home +configuration consistently in C++, YAML and viewer. Arbitrary URDF loading, +manufacturer-specific wrist offsets and calibration are not implemented. + +## Inverse kinematics + +IK is a bounded, local damped least-squares solve, seeded from the previous +accepted joint command (nominal home initially). It minimizes a six-component +residual: three translation errors and the rotation logarithm of +`R_target R_actual^T`, weighted by 200 mm/radian. Orientation residuals use +rotation matrices rather than subtracting Euler angles. + +A central-difference Jacobian uses 1e-5-radian perturbations. Each solve allows +at most 100 iterations, clamps trial angles to joint limits, limits steps to +0.2 radians, and adapts damping according to whether the error decreases. +Convergence requires weighted residual norm below 1e-5. All cyclic arrays have +fixed size; the solver performs no file I/O or heap allocation. + +The seed encourages a nearby continuous solution. It does not enumerate all +elbow/wrist configurations or guarantee the nearest branch. Unreachable targets, +joint limits, singularities and poor seeds can prevent convergence. No explicit +Jacobian-condition monitor or global path planner is provided. A reachable +endpoint alone does not validate the path to it. + +## ecmc IOC + +Build on the Linux IOC development host with the source headers matching the +installed ecmc version: + +```sh +make logic ECMC_ROOT=/path/to/ecmc +make test-logic ECMC_ROOT=/path/to/ecmc +``` + +`make logic` produces `bin/libmain.so`; deploy it with `cfg/` and the startup +script. Custom PV substitutions are checked in as +`cfg/libmain.so_cpp_logic.subs`, matching `loadCppLogic.cmd` defaults. +`src/Makefile` also provides the PSI `driver.makefile` build option for Debian +IOC architectures; it builds only `logic.cpp`. The top-level Makefile is a +portable local build and does not install or launch an IOC. + +`MTEST04-MTN-ARM_startup.script` follows the ecmccfg `cpp_logic` examples and +requires `ecmccfg v11.2.0_RC1` / `ecmc v11.2.0_RC1`, no EtherCAT master, +and `EC_RATE=1000`. Start with your normal PSI IOC launcher from this project +directory; the launcher supplies `iocInit`, and ecmccfg finalizes at that point. +The parameters YAML is a deployment example: adjust host, port and version for +your installation. Axis IDs 1–12 and the default state-machine ID 0 must be free. + +The startup loads the shared Cartesian YAML six times and the six numbered +joint YAML files (each with its own numeric limits), then C++ logic, then +`Arm_SM` (`virt` master group, `phys` slave group). Each axis has motor records, +source changes allowed while enabled, 1 s auto-enable timeout, 2 s auto-disable +delay, and at-target monitoring with a 0.01-unit band for 100 cycles (100 ms +at 1 kHz). Default velocity is 1 mm/s for XYZ and 1°/s for rotation/joints. +Joint soft limits are configured in home-relative degrees. Cartesian soft limits +are disabled; IK checks joint limits on each accepted command. + +C++ binds to asyn `axN.setpos` and `axN.actpos`, not PLC object paths. +IK feeds external joint setpoints. The ideal joint plant copies the selected +joint trajectory into the external encoder, so direct joint trajectories also +produce FK feedback. Axis/C++ ordering introduces cyclic pipeline latency. +A disabled simulated joint still follows this mathematical ideal plant. + +**Use Cartesian `virt` axes for normal tool motion.** Independent `phys` joint +moves can cross singularities, change assembly branches or cause collisions. +Direct joint moves are for controlled simulation/commissioning checks, with the +state machine selecting internal joint trajectories. Before returning to +Cartesian motion, synchronize Cartesian commands to actual pose and verify the +IK seed/branch; automatic bumpless mode transfer is not implemented. + +Fault codes are latched: 0 OK; 1 invalid input or joint bounds; 2 IK failure; +3 host output write failure; 4 axis error. Fix the cause and restart/reload. +A fault retains outputs; it is not a coherent group stop, and a failed write can +leave partial updates. C++ faults are not wired into a safety-rated stop system. +The built-in master/slave state machine does not replace that integration. + +Independent Cartesian motor moves are not a coordinated six-axis Cartesian path. +No joint-space speed/acceleration limiting of IK output, collision avoidance, +singularity avoidance, torque control, real drives or physical safety integration +is implemented. This is simulation software, not a hardware motion controller +ready for commissioning. Hexapod timing measurements do not apply to this arm. +Measure the complete IOC cycle and overruns before assuming 1 kHz operation. + +## Read-only EPICS viewer and caQtDM + +```sh +.venv/bin/pip install -r python/requirements-ioc.txt +make viewer-lib +.venv/bin/python python/viewer.py --prefix MTEST04-MTN-ARM: +caqtdm -macro "IOC=MTEST04-MTN-ARM" ecmcCppLogicOverview.ui +caqtdm -macro "IOC=MTEST04-MTN-ARM,CPP_ID=0" ecmcCppLogic.ui +``` + +The standard caQtDM panels come from ecmccfg. There is no custom arm panel yet. +Live Python mode disables motion controls and subscribes to: + +| PV suffix | Value | +|---|---| +| `arm-pose-set` / `arm-pose-actual` | Six home-relative tool coordinates, mm/degrees | +| `arm-joint-set` / `arm-joint-actual` | Six home-relative joint offsets, degrees | +| `arm-fault` | Latched adapter fault | +| `arm-ik-residual` | Weighted IK residual norm | +| `arm-ik-iterations` | IK correction attempts | +| `arm-simulation` | Always 1 | + +The viewer accepts a prefix with or without the trailing colon. Its geometry +must match the IOC. pyepics requires libca and CA connectivity. Callbacks update +a locked cache; GUI refresh does not issue blocking PV reads. Disconnected, +invalid and pending samples are reported. Separate PV records are not an atomic +IOC snapshot, and unchanged values do not constitute a heartbeat check. + +## Validation + +`make test` covers independent straight-arm/base-rotation checks, rotation error +at 180°, 500 near-home IK/FK round trips, 1,000 continuous joint-path samples, +invalid/unreachable inputs, singular pose holding, Python/C ABI round trips, +and mocked CA cache connection/value checks. `make test-logic` checks bindings, +IK/plant/FK timing, direct joint feedback, joint limits and latched faults. +A headless viewer snapshot checks rendering separately. A live robot-arm IOC and +physical robot have not been tested; the full workspace is not validated. diff --git a/cfg/axes.cmd b/cfg/axes.cmd new file mode 100644 index 0000000..b6c2ee8 --- /dev/null +++ b/cfg/axes.cmd @@ -0,0 +1,13 @@ +# Coordinates: base-frame offsets from nominal home. Joint axes: home-relative degrees. +${SCRIPTEXEC} ${ecmccfg_DIR}loadYamlAxis.cmd, "FILE=./cfg/axis_coordinate.yaml,AX_ID=1,AX_NAME=X,AX_UNIT=mm" +${SCRIPTEXEC} ${ecmccfg_DIR}loadYamlAxis.cmd, "FILE=./cfg/axis_coordinate.yaml,AX_ID=2,AX_NAME=Y,AX_UNIT=mm" +${SCRIPTEXEC} ${ecmccfg_DIR}loadYamlAxis.cmd, "FILE=./cfg/axis_coordinate.yaml,AX_ID=3,AX_NAME=Z,AX_UNIT=mm" +${SCRIPTEXEC} ${ecmccfg_DIR}loadYamlAxis.cmd, "FILE=./cfg/axis_coordinate.yaml,AX_ID=4,AX_NAME=Rx,AX_UNIT=deg" +${SCRIPTEXEC} ${ecmccfg_DIR}loadYamlAxis.cmd, "FILE=./cfg/axis_coordinate.yaml,AX_ID=5,AX_NAME=Ry,AX_UNIT=deg" +${SCRIPTEXEC} ${ecmccfg_DIR}loadYamlAxis.cmd, "FILE=./cfg/axis_coordinate.yaml,AX_ID=6,AX_NAME=Rz,AX_UNIT=deg" +${SCRIPTEXEC} ${ecmccfg_DIR}loadYamlAxis.cmd, "FILE=./cfg/axis_joint1.yaml,AX_ID=7,AX_NAME=J1,AX_UNIT=deg" +${SCRIPTEXEC} ${ecmccfg_DIR}loadYamlAxis.cmd, "FILE=./cfg/axis_joint2.yaml,AX_ID=8,AX_NAME=J2,AX_UNIT=deg" +${SCRIPTEXEC} ${ecmccfg_DIR}loadYamlAxis.cmd, "FILE=./cfg/axis_joint3.yaml,AX_ID=9,AX_NAME=J3,AX_UNIT=deg" +${SCRIPTEXEC} ${ecmccfg_DIR}loadYamlAxis.cmd, "FILE=./cfg/axis_joint4.yaml,AX_ID=10,AX_NAME=J4,AX_UNIT=deg" +${SCRIPTEXEC} ${ecmccfg_DIR}loadYamlAxis.cmd, "FILE=./cfg/axis_joint5.yaml,AX_ID=11,AX_NAME=J5,AX_UNIT=deg" +${SCRIPTEXEC} ${ecmccfg_DIR}loadYamlAxis.cmd, "FILE=./cfg/axis_joint6.yaml,AX_ID=12,AX_NAME=J6,AX_UNIT=deg" diff --git a/cfg/axis_coordinate.yaml b/cfg/axis_coordinate.yaml new file mode 100644 index 0000000..4c7a0be --- /dev/null +++ b/cfg/axis_coordinate.yaml @@ -0,0 +1,62 @@ +# Macros: AX_ID, AX_NAME, AX_UNIT (default mm). +# Coordinate axis: external encoder from forward kinematics. +axis: + id: ${AX_ID} + group: virt + type: virtual + features: + allowSrcChangeWhenEnabled: true + autoEnable: + atStartup: false + enableTimeout: 1.0 + disableTimeout: 2.0 + +epics: + name: ${AX_NAME} + precision: 4 + unit: ${AX_UNIT=mm} + motorRecord: + enable: true + description: "Arm ${AX_NAME}" + +encoder: + type: 0 + source: 1 + numerator: 1 + denominator: 1 + bits: 32 + # External feedback is supplied by C++ arm FK; no EtherCAT position link. + +trajectory: + source: 0 + axis: + velocity: 1 + acceleration: 10 + deceleration: 10 + +input: + limit: + forward: ec0.s-1.ONE.0 + backward: ec0.s-1.ONE.0 + home: ec0.s-1.ZERO.0 + +softlimits: + enable: false + +monitoring: + target: + enable: true + # Axis units: 0.01 mm for X/Y/Z, 0.01 deg for Rx/Ry/Rz. + tolerance: 0.01 + # Consecutive cycles within tolerance: 100 ms at 1 kHz. + time: 100 + lag: + enable: false + tolerance: 0.1 + time: 100 + velocity: + enable: false + max: 0 + time: + trajectory: 100 + drive: 100 diff --git a/cfg/axis_joint1.yaml b/cfg/axis_joint1.yaml new file mode 100644 index 0000000..b54f010 --- /dev/null +++ b/cfg/axis_joint1.yaml @@ -0,0 +1,66 @@ +# Simulated rotary joints, home-relative degrees. +# WARNING: independent joint moves can leave the Cartesian workspace or cross +# singularities; use virt axes for normal tool moves. No collision checking. +axis: + id: ${AX_ID} + group: phys + type: virtual + features: + allowSrcChangeWhenEnabled: true + autoEnable: + atStartup: false + enableTimeout: 1.0 + disableTimeout: 2.0 + +epics: + name: ${AX_NAME} + precision: 4 + unit: ${AX_UNIT=deg} + motorRecord: + enable: true + description: "Arm ${AX_NAME}" + +encoder: + type: 0 + source: 1 + numerator: 1 + denominator: 1 + bits: 32 + # External feedback is supplied by the C++ ideal plant; no EtherCAT position link. + +trajectory: + source: 1 + axis: + velocity: 1 + acceleration: 10 + deceleration: 10 + +input: + limit: + forward: ec0.s-1.ONE.0 + backward: ec0.s-1.ONE.0 + home: ec0.s-1.ZERO.0 + +softlimits: + enable: true + forwardEnable: true + backwardEnable: true + backward: -170 + forward: 170 + +monitoring: + target: + enable: true + tolerance: 0.01 # deg + # Consecutive cycles within tolerance: 100 ms at 1 kHz. + time: 100 + lag: + enable: false + tolerance: 0.1 + time: 100 + velocity: + enable: false + max: 0 + time: + trajectory: 100 + drive: 100 diff --git a/cfg/axis_joint2.yaml b/cfg/axis_joint2.yaml new file mode 100644 index 0000000..eb98130 --- /dev/null +++ b/cfg/axis_joint2.yaml @@ -0,0 +1,66 @@ +# Simulated rotary joints, home-relative degrees. +# WARNING: independent joint moves can leave the Cartesian workspace or cross +# singularities; use virt axes for normal tool moves. No collision checking. +axis: + id: ${AX_ID} + group: phys + type: virtual + features: + allowSrcChangeWhenEnabled: true + autoEnable: + atStartup: false + enableTimeout: 1.0 + disableTimeout: 2.0 + +epics: + name: ${AX_NAME} + precision: 4 + unit: ${AX_UNIT=deg} + motorRecord: + enable: true + description: "Arm ${AX_NAME}" + +encoder: + type: 0 + source: 1 + numerator: 1 + denominator: 1 + bits: 32 + # External feedback is supplied by the C++ ideal plant; no EtherCAT position link. + +trajectory: + source: 1 + axis: + velocity: 1 + acceleration: 10 + deceleration: 10 + +input: + limit: + forward: ec0.s-1.ONE.0 + backward: ec0.s-1.ONE.0 + home: ec0.s-1.ZERO.0 + +softlimits: + enable: true + forwardEnable: true + backwardEnable: true + backward: -85 + forward: 155 + +monitoring: + target: + enable: true + tolerance: 0.01 # deg + # Consecutive cycles within tolerance: 100 ms at 1 kHz. + time: 100 + lag: + enable: false + tolerance: 0.1 + time: 100 + velocity: + enable: false + max: 0 + time: + trajectory: 100 + drive: 100 diff --git a/cfg/axis_joint3.yaml b/cfg/axis_joint3.yaml new file mode 100644 index 0000000..1daa3d9 --- /dev/null +++ b/cfg/axis_joint3.yaml @@ -0,0 +1,66 @@ +# Simulated rotary joints, home-relative degrees. +# WARNING: independent joint moves can leave the Cartesian workspace or cross +# singularities; use virt axes for normal tool moves. No collision checking. +axis: + id: ${AX_ID} + group: phys + type: virtual + features: + allowSrcChangeWhenEnabled: true + autoEnable: + atStartup: false + enableTimeout: 1.0 + disableTimeout: 2.0 + +epics: + name: ${AX_NAME} + precision: 4 + unit: ${AX_UNIT=deg} + motorRecord: + enable: true + description: "Arm ${AX_NAME}" + +encoder: + type: 0 + source: 1 + numerator: 1 + denominator: 1 + bits: 32 + # External feedback is supplied by the C++ ideal plant; no EtherCAT position link. + +trajectory: + source: 1 + axis: + velocity: 1 + acceleration: 10 + deceleration: 10 + +input: + limit: + forward: ec0.s-1.ONE.0 + backward: ec0.s-1.ONE.0 + home: ec0.s-1.ZERO.0 + +softlimits: + enable: true + forwardEnable: true + backwardEnable: true + backward: -210 + forward: 70 + +monitoring: + target: + enable: true + tolerance: 0.01 # deg + # Consecutive cycles within tolerance: 100 ms at 1 kHz. + time: 100 + lag: + enable: false + tolerance: 0.1 + time: 100 + velocity: + enable: false + max: 0 + time: + trajectory: 100 + drive: 100 diff --git a/cfg/axis_joint4.yaml b/cfg/axis_joint4.yaml new file mode 100644 index 0000000..78c10ce --- /dev/null +++ b/cfg/axis_joint4.yaml @@ -0,0 +1,66 @@ +# Simulated rotary joints, home-relative degrees. +# WARNING: independent joint moves can leave the Cartesian workspace or cross +# singularities; use virt axes for normal tool moves. No collision checking. +axis: + id: ${AX_ID} + group: phys + type: virtual + features: + allowSrcChangeWhenEnabled: true + autoEnable: + atStartup: false + enableTimeout: 1.0 + disableTimeout: 2.0 + +epics: + name: ${AX_NAME} + precision: 4 + unit: ${AX_UNIT=deg} + motorRecord: + enable: true + description: "Arm ${AX_NAME}" + +encoder: + type: 0 + source: 1 + numerator: 1 + denominator: 1 + bits: 32 + # External feedback is supplied by the C++ ideal plant; no EtherCAT position link. + +trajectory: + source: 1 + axis: + velocity: 1 + acceleration: 10 + deceleration: 10 + +input: + limit: + forward: ec0.s-1.ONE.0 + backward: ec0.s-1.ONE.0 + home: ec0.s-1.ZERO.0 + +softlimits: + enable: true + forwardEnable: true + backwardEnable: true + backward: -180 + forward: 180 + +monitoring: + target: + enable: true + tolerance: 0.01 # deg + # Consecutive cycles within tolerance: 100 ms at 1 kHz. + time: 100 + lag: + enable: false + tolerance: 0.1 + time: 100 + velocity: + enable: false + max: 0 + time: + trajectory: 100 + drive: 100 diff --git a/cfg/axis_joint5.yaml b/cfg/axis_joint5.yaml new file mode 100644 index 0000000..d4bb52f --- /dev/null +++ b/cfg/axis_joint5.yaml @@ -0,0 +1,66 @@ +# Simulated rotary joints, home-relative degrees. +# WARNING: independent joint moves can leave the Cartesian workspace or cross +# singularities; use virt axes for normal tool moves. No collision checking. +axis: + id: ${AX_ID} + group: phys + type: virtual + features: + allowSrcChangeWhenEnabled: true + autoEnable: + atStartup: false + enableTimeout: 1.0 + disableTimeout: 2.0 + +epics: + name: ${AX_NAME} + precision: 4 + unit: ${AX_UNIT=deg} + motorRecord: + enable: true + description: "Arm ${AX_NAME}" + +encoder: + type: 0 + source: 1 + numerator: 1 + denominator: 1 + bits: 32 + # External feedback is supplied by the C++ ideal plant; no EtherCAT position link. + +trajectory: + source: 1 + axis: + velocity: 1 + acceleration: 10 + deceleration: 10 + +input: + limit: + forward: ec0.s-1.ONE.0 + backward: ec0.s-1.ONE.0 + home: ec0.s-1.ZERO.0 + +softlimits: + enable: true + forwardEnable: true + backwardEnable: true + backward: -155 + forward: 85 + +monitoring: + target: + enable: true + tolerance: 0.01 # deg + # Consecutive cycles within tolerance: 100 ms at 1 kHz. + time: 100 + lag: + enable: false + tolerance: 0.1 + time: 100 + velocity: + enable: false + max: 0 + time: + trajectory: 100 + drive: 100 diff --git a/cfg/axis_joint6.yaml b/cfg/axis_joint6.yaml new file mode 100644 index 0000000..78c10ce --- /dev/null +++ b/cfg/axis_joint6.yaml @@ -0,0 +1,66 @@ +# Simulated rotary joints, home-relative degrees. +# WARNING: independent joint moves can leave the Cartesian workspace or cross +# singularities; use virt axes for normal tool moves. No collision checking. +axis: + id: ${AX_ID} + group: phys + type: virtual + features: + allowSrcChangeWhenEnabled: true + autoEnable: + atStartup: false + enableTimeout: 1.0 + disableTimeout: 2.0 + +epics: + name: ${AX_NAME} + precision: 4 + unit: ${AX_UNIT=deg} + motorRecord: + enable: true + description: "Arm ${AX_NAME}" + +encoder: + type: 0 + source: 1 + numerator: 1 + denominator: 1 + bits: 32 + # External feedback is supplied by the C++ ideal plant; no EtherCAT position link. + +trajectory: + source: 1 + axis: + velocity: 1 + acceleration: 10 + deceleration: 10 + +input: + limit: + forward: ec0.s-1.ONE.0 + backward: ec0.s-1.ONE.0 + home: ec0.s-1.ZERO.0 + +softlimits: + enable: true + forwardEnable: true + backwardEnable: true + backward: -180 + forward: 180 + +monitoring: + target: + enable: true + tolerance: 0.01 # deg + # Consecutive cycles within tolerance: 100 ms at 1 kHz. + time: 100 + lag: + enable: false + tolerance: 0.1 + time: 100 + velocity: + enable: false + max: 0 + time: + trajectory: 100 + drive: 100 diff --git a/cfg/geometry.json b/cfg/geometry.json new file mode 100644 index 0000000..dc74919 --- /dev/null +++ b/cfg/geometry.json @@ -0,0 +1 @@ +[300, 300, 250, 80] diff --git a/cfg/libmain.so_cpp_logic.subs b/cfg/libmain.so_cpp_logic.subs new file mode 100644 index 0000000..67839e0 --- /dev/null +++ b/cfg/libmain.so_cpp_logic.subs @@ -0,0 +1,22 @@ +# Auto-generated C++ logic substitutions +# Logic: arm + +file ecmcCppLogicWaveformIn.template { + pattern { REC, PARAM, DESC, NELM, FTVL, DTYP } + { "arm-pose-set", "arm.pose_set", "arm.pose_set", "6", "DOUBLE", "asynFloat64ArrayIn" } + { "arm-pose-actual", "arm.pose_actual", "arm.pose_actual", "6", "DOUBLE", "asynFloat64ArrayIn" } + { "arm-joint-set", "arm.joint_set", "arm.joint_set", "6", "DOUBLE", "asynFloat64ArrayIn" } + { "arm-joint-actual", "arm.joint_actual", "arm.joint_actual", "6", "DOUBLE", "asynFloat64ArrayIn" } +} + +file ecmcCppLogicLongIn.template { + pattern { REC, PARAM, DESC } + { "arm-fault", "arm.fault", "arm.fault" } + { "arm-ik-iterations", "arm.ik_iterations", "arm.ik_iterations" } + { "arm-simulation", "arm.simulation", "arm.simulation" } +} + +file ecmcCppLogicAi.template { + pattern { REC, PARAM, DESC, PREC } + { "arm-ik-residual", "arm.ik_residual", "arm.ik_residual", "3" } +} diff --git a/cfg/load.cmd b/cfg/load.cmd new file mode 100644 index 0000000..3fe65fd --- /dev/null +++ b/cfg/load.cmd @@ -0,0 +1,5 @@ +# Include after ecmccfg initialization, before runtime startup. +# Axis IDs 1..12 and state-machine ID 0 must be available. +${SCRIPTEXEC} ./cfg/axes.cmd +${SCRIPTEXEC} ${ecmccfg_DIR}loadCppLogic.cmd, "DIR=./bin/,FILE=libmain.so,ASYN_PORT=CPP.ARM,REPORT=1,MACROS='COORD_FIRST=1,JOINT_FIRST=7,SIMULATION=1'" +${SCRIPTEXEC} ${ecmccfg_DIR}addMasterSlaveSM.cmd, "NAME=Arm_SM,MST_GRP_NAME=virt,SLV_GRP_NAME=phys" diff --git a/docs/arm.png b/docs/arm.png new file mode 100644 index 0000000000000000000000000000000000000000..4b6f3f2a36ba83ad6e63a770b94916712954bcd0 GIT binary patch literal 274388 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

EyRN^d&=^5-9!_G76KR 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
2r62rQHNtX~lv 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
h$Xjom13|VdXW6!z)d)q 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�mFG4`34F5Q5L zb&9)#=nM5wC$cBCBY%NTJ!@94JJ-jK8fAI4wi;B}&5_r3+Wq2;7;&6scpfOkXlVhV z5$aj4@FM~r-dS5~9M~ZgzFh)b4oyHO^mpO8-MNvS4i*v+vx@$M#7thH=-Z~Ars$D> zU$k#a+<*MW>%d0&7PY_nZ~cGh-y?iAPZ{v?&U|CBDW@Q`4!2@+3rzI>{q8f<7A++$ zv9p_;rtO$+KnbR`?o4&X^)=Nu@9Z++gr#>Lz!jm7UX4?DmHd5v#zd+n5YAxKtYXta zY!lNi8NuQ(%FdV((|?c#_6#`iw1Jl8ilC|%PS{>BD!%;cV!7r6U{BmRmvjwp#{es; zw>{vJOfSrtbFq%XZYoxAM;~mW|PbN4j!BuvzWyKMv(i|0F4b=Z6T38U;mH7+*KTF5XKlR5dq}{ z6ZwhDtjsBRl;uH5iwT*`wNX{bZL-?M9cw;qMCRL-yF6r+ z968$g=MDIoxEr|B7m9lr!ATHC$>FF9^?UR%6Bv_fLK_58u6i2=J)RW%z2eOZqS~%q zQIx*<2EVM9@nI@aekb#AEM@lrdI~#7gI0}9JEQ6>=}_yD|cV&As3bDd@_k#1n}h56i!LY?K*1nr!qn*V?jXDc$g~jwj(RK{@s=T85eAB;rR*zo-^$*4= zWpv?n;aY8(wWl>i$6;hV7B>4;;fNy?)0wm5#C~9O!9Kl18G*|wJfeN8jT*jLG;!Lr z;hWkH+`ED5hf~hQKmp*slNXIpBvw;k^%K}fDs*w`p&=8;r}Ua?jil$=cHlAdBb=g{ zf_2D!c4VUpe6CPDq@FFKO|gFVg-vUs<{082O+v!-YmoYRRWF9Z*+V=0{hfL|*pzj52L4?{6WfN_SN6`IqbNdW* zyPq91dC;7=J0?Shf$J5%EphSO{&k48`fSPPFAWu!k8|GTLcPpcOO{G8)$n}t#vwn8 zltx5Y^4j}yZKuSsfH9Y@X1p^C&$W$O-Y|L&wV3X~)YQSk;eh8Zs{Pxe&v?!2L75;@ zUmB-SAm(?^NtZ!xMrD`PV~BT!2ZG;t{_@Le_qtvWUE_nycroE$zpmt4glulk>$EiT z9XBH0m+VUf&YBlbYMd_Edh|eJER{HjR{MTbc)fgmJL$XqOBw|l?8X{mzpIVfR7*u0k_{`YKEiPix(y05(_j}mX3tlobw|AJrFffAv2HXDG}Y^7^7n(>^-PxyVru>D8if;$y+S)nYD1bh(=8y!lIhMs<*Q zTofG&HPx~#0*G5OWyu7!kF9sYl}ne*NfZQP05hvF^>37RNJwIBBMDkbgigzPN==o~ zchec`?2b+AhlL7ihZ*^YG9-G|qE13IB|e9k72eBe%D@C&c5~iyRDBRV#Gkv-Zlh4e z0LWA$>J?=haitlXGd)2FUXW==B!x% z9e@A*C{rUh`v2NH6R0ZBbKh@cG!acbvEpoO4MqeMB?^v_I3xlp$RH{>PZ8og#tEt= zRxv6l5(O0_2tt&gB8qW{iYP>lC<2OtA{xXY4j{;Me*c}Mr}wPpw7qNHb=SJLdv&Ea z!QS8Ze((D{|LHmDG0Z5qvFE7!g%CkrIpIEYR;A6uH=LH4nOU#i&!3@=YN?ZNottt% zswYr%z9-)qX`UkID2fjh82_S=K?UH?ul&wUr}CKp^6J*`Z_2S||A)UG(ec-xY+v${ zV&h}ZTU}k!Rl-}pVX*j~!d>CoA}=X1FRpXj<)W*>D}Sp*Zb)=`^r~xc-zo}`!++j_ zwJidEtrWA6QoiRPAvhL++jqMfTxKifm*eYF_5D_k#sXE}D$D(_l`Hb-tAwevkFMpv zCiU6ObrUyE)t~8=-}!GZ)<5y}H={1f9^k)~JN!T22aC6zJLi9H!}CK~RUyHp)BJ6a z12DN3cDeBol&)q4#F)n3J#H{`KQ$r2904JFrh@0iN~xnDo`7y#H3Uq;q=XUSt&OG~ z7YFlZ`CZZ3c6jztGUP3UkD|deBa{a>WWf`~hn_u~mX~)T1Gho#!(PT{m2Ws(?!GSjIz`M2WL%Os5$RiszBiTVN{ZuYHd4%O@m=93DETfx$zQ3)u9oLNzPtOmwO^ zUS%jViIMhc5N7p-3kK`N=>MG|+84cfkX>ao=o2zWNmwQO=ac{b%IG%zrcPf-$9FQm z^uz}r1z(*u>g$agyYE}Laa4;dX+y{Yl!=K|yRYXp+{~I*hG-2zzwU_57V3dv0jq08 zya3L1d)!0QlSl_@+Upi%i!!57id|MV_~QyzjeAq8pg;ShlI4_ib3qvG6E5cQeaT&1 zAn#md+0%h%@87)}g9AuOiEIgO`BF{ivv;C8zs(Pv&yKXgk%OK01{nc zJhaSUs#?Jn1qZSr48Qj+ZzJlRFMQ%Q2YyJ~5Y?%v2?2CQ$xfkg0e6y zNu5!WGj)eT_ktrqTYL3@N48Iyphe2J<;Fc+(wRBq{U}<2xwl;<$)xSXQ0!N-nR6Vw z@|!O*J;!z+LsnA)JOceQ6t~3T8&A>Ok5fC?Omj3LW;1DY0@qeiI?0NBVS67h1qxS{ zDOOP9zNnfsc@;!m!>i=bhiT7*H@|ylPE=Ol>eZJ!Cgr;B`<{h$*h zXEC4M|9-}-xpUp{dIyP6Dr(~y}?YfwU|?aR&HYBzH`I5Kx6Tp=0}rvOL7XW#^4 z6!qo8pGES2he(Y&7XYAO#ITs4B{S$prI^Hnr zCKGoOkeOH&Ip%c640Mw`2tJUmx|NyB140Tz%)%~^!5cw|2N$`y`)=-^$5tdxX?G}n*Lqg;ia%%)pOo`y z;TNwPx;Zi$PqF7*1~<+||6-FmwPUxT+4sR>HtOhtz3(tDnNWqqbL9&2LB~MU;MOSC z>mWq~5DK*=>(86<^xNw>>Cjk@Py_=%YgxLti&|6o?i7N=;E^zth z#p(2U2RWNaLtIi?v#pj#!20z&uWRcBO@8QC1d1?P?n!EArX7CT#tsBR22hsI6;*oo zDkwvI@f0MZaw}0@9RP%+5s(+IcgpBdeW@gs0Ha`4Y6c%l3rS-jx&qgZKECvb5{N0m zi=_bq;wU-Wa%K!*bFe@ioBKNca?Db8q=im$gYe#R?-yJez&WL-f3e2&AoY%*f|8U> zFo}Xn$N&W1eX!YU#%x``d-v|`h6l~*yQ$2JRI{K9Q{2d+Eq;Dd7zhDGQ5?mlJ*puX zJCM_E5UbHiPa;US1U71}(sTjXccw>dg{vRgy#I4zqF zj?KuYb`GRYgqXf<2%mxD6Kd%2fr*BgvyZ=hK2%(=EFeS$28LIFEJLnqst$$}Z#FlVck1*Rn|XN_UU%i*K=5;K&XX7kS{I{k;i-gM-g z$ty3p-`{P%5q*~A3fPi)MOie*7r~e>^SI1d7KSo4JT`zTL@bu%Nd*jV%Cti>!GHwo zeN2rLTjw;}?LovA)Z%n>s?BhuuTmyb#g{mRCQq95BMZ^0)a(p(UkMIva|y+ozcCj2MDeVnCf#DWda&G-8wto1We%D0 z8R>bN5moUrU||2rO9;`CpIuKso=BnEkig=nkvlYLP72N-z`V=V%Xr@7%-*G$%K(2K zY1IVKTVpd7MMTxIdWl2_Y^D}{`iuq_1Ye8t=5X4ej3Rm8`&PYBFxVd)6cof|ojTUB z+;1I#S~-U#T%<>g7jkP-CbWaYiF#i{q|xn8ml9`zdB%s)`Ii!-uKDxTHo_ zAxHk}8L8d z8OOu?^Eyj2Ce89tYPvJ z-Vq;gBCnb(jG#`7y0}P1Y zH2u){G0?b3vrN&i34~SGIS+i*Zf;(tm^SXa28G^u!t%DzhDPVaV8_#DqjSoZ@ENEy zrw8@cNB!`_Ki#4fXq)cqysc;AnH`>VN(Z^?+ZgFcC0n&^hn36h?7PilUeg{SQ47VI zgR&VQo?jqGQfm0cb#)E?r-A1p!S&3UUPzBEk&{q*rqewj zm3g;M)j_%k`OAsP&T#(Hr6&vfJ`z#;YyQh${?aIQJJ5OXReJFW z_f6JgvcIujd!jBN7T0NhHsg8B#a0AGw@?}zWpXTtkLQKY#1d4zQ8|3t@;qOdW7!Gm zp=M=`URZ=R&uz?@?bv`{9L*X^2&iVCvF}p&U^%|(pbdOWwhRM~wZn=!a8wmDb*e$MxOJ=w>8tN6sw|56G%` z^{Pn^TQCz%aYP7o(8ycC{>aZj?H%~A@30?z+BI<5BKq6lGNtayKc&XAU9?iRi=ydt zyOm~1`R<;b%iGfsUZtUFD`u1QGoG!q2T+QM>q&yt1C>`@niO}@!*$P7uYj3zYD(XF z;k$b6T4VbGNHFHWxHp-j!3isc7w7q-yc1)c3HKhucubv3q!A{pSD>cTQi~5=6YL&a zo~~(9_k_nayK0OVaY}EIm`hu`_TR+_5o9#LCtX7N_T&wYAZwgSX znX{;Fh9IrbtVqw+UWZS72z*XY>w4GQVaXrZg`E^4PRAL-MWnWacQPIMjzjYPHzrYi za4tYg#@ifQcj~n}Nlu24kGPXn7k=`c&D6!#3v^8_qXBzIL&UOzUpxj~cnny^fzDxpm_ z&W4x<%OWlEL4;gwC$jfM(bIll__IaIuMSIl)0RXgX@g|fNj`VWq^1~?OejbtU08H@ zc&m!1{D;kRC^d;%i$HI;5%1|tr+y#CVR99SsqMtN4d3~C#fsO2FSNUrG;8F}yeni{ za9m0im2#1eEM(CI4N3_Q_qK9&aJ=pmG3&Ekr&fFg2`RHa5~MX9z03r|mbSN2rV0h| zGEz}Wmsu{4`^jM?@5YkRUu~dygR*9qKbtH$7Z3}Z!tp89!7ms_KonS*-ONsND#?aj zl915uST$K4!b2@T;bf}@eks1@HM65zr--k?dw#ydF%!Vhw-OZ9Efs(71GPSo1l^XF z&06x=H|&^{Od7>ndcnWG>G7iDOc9V8pH?~L-lMGe9a8DBe;3jGP#}eZVZ^}@am@5* z*Rebl^t6Trlw7>;sOZv>R-4;8b(VG%(^B%ILpSK-tccSj)j&g9bc{g*?<>DfZnZUC zrx;muE5ZS|Kd4dWVaaz)-aqL+tJpXrBpI89sx{)3%ptxx%wN%83SU;66s&Yf3D?Oq z6sfF?d^WSz%mgJLErTPY6LShVU<5TPe6K4X8_Z0$7m_13XpS`umG3?4^Zgt4iDX?* zdz^bj6DJfN$ms=M9Fx8A4e8dE_05y7sUo})B7d$zQ#^`4@dHhua-t}^;|Cw{-~ZLP zpRcBcqjY2>Ju(RkhU6dIw?Vu9KRj;ex zW-W8_I?@1rvS+{iO013`3i(V-;}uU4?0v#FR6G=iRC{_qumdH%Dz1uP9H(wC`F$xL z6kQ_`<`BD^kwRGoGB3;3uPB>}Xb`V9Wxx&qITvRSZ=2CJgMy->I3J98_dpG=_zsC= zB(sJrY-}=)cQ|Cm(W$v>#;0#_i4P6-NK#8>9sd4C`Z+RDSJc3=YfK&#=*M~?4sVA-Y9n7+~rNoU!>dQ2>|tpBWH+Iap~;<#0dA&`A7>t^}1&Dvn?4nMEejfDTs)&e%)0wZ?tG{5$BC@ian8SfT+Jsj9WeKBt36r-#XjJgiri zOE0d;U>hM9bd(sgXV+^*^i;ereM&nv6Z9$Qbk1M6us6FqI~#Z!^^Ya#JaA*bYV9np zfk;b+r+7c`9(tI~5?83u2KLm>LuvBl;g{T~fi95vpU|%d*;V~L5-M{klEq$(d-e8s z@?K)s-63Jf?UbLzlRA3-*ObDV-UTd0f`%ktlWgGlcbWV?)H!|3F*AqMI|bXqUpM^Z zCGp~eDvHa$OG4fL^CaGjXKEvdn9UGc^KMK};)E~amIOy~`YDivveVqQTG1sil@tQ$ z^Yhr&V=%?Atp`*3hz2B&yF9kQ?$hiDX;Y{`IZ_`0rju7a;?wXa+1vRgc=2YjAP(O?%w z)L;R8K4BuVa?LMM7x(>3CxmJ=V;YdnhNn;)rGjF5bZk|F3rlI_@(=OuG!l~*$pS$T zTdSqb0!|JQ5z1zy98#U@wtMhpE=pQ>Q^Wv$T4WCI*mNa3rQ_&MjWI3^M-*VzLDkTm zS_YRwE)E2ST4^~&jiGbWeh(c=h3(SH$!zDS!!QR>V9OeQjtKonPBC`PjT+Kdly-ezs{7_VAC)j6K*5sqy5~{~9pjliz6)F_>if@XMeKh6XNl8F^bKiU zKL*T&)PzcF->_jrIcqRIT5Y9TI<^wna>Q6T=@wP89RYXi`+#sfj3|ri$ zraf%gW7|5vR#sj<4VX}|JM)+k1a{&a{DM*}j_#CZ-THY|eG?ObCBk;bkPX8^gCJGR zU(@E?tHo?jnj3~(X5ht}jDXU?$4)Vi_9177E1livv`LYa_#*|raP*~zw>0?d|GR=H zdEyX6rDtX)u5f$J;Idd*Sip7O51tZ__D$95NBy{B!%1WT8I++{16NY2!#IZ`k|Ur4 zI?ui{0DHrauxPJY_qnypK^-3f;d-E}TtXjermEQ+V>g zZN3oH2@?_Ut^Cy1Yjr_=yoJue`>c3!F%??b?gmt(RG%>d9?H@4zwuCp?l-}tUhpqM z7gw@%1)4Ts_a3eadUS`D%9a<b`*H2FVaan~0!ZkOj^7q_ff04?oj$kwf~sM?M>KEG~MhiU}F zN4pZvbfJ*mmoeDja%EBFE3b2z)vY@2Jyks2*6Xu(c^o=HlABh)9QL>D)yX1aeLFbl zA%jo0FEp>5`@5)*zw`G|R;Z#0g*0geD_d$u7~CG*;!b2azDV=9+=LeIN}GS;e~Zf6 zzY57}C%c-ozI%uJ8g*(_1YT#w<>q=*lw8c|Vo0|1&<>a(%hqq z>s$-i!LKWJv6|N*pC&NqHWB!|SlgX|6hg?@Tq`1r4)D63^ z`vf+ul(XxxlFE)CbO&%aAv=1eAKavR&ET$h`$Zp1W6m?{o44vVZDy8`9&MW&x1}H5 zA4zWT0)2?;q>5a2mn+mL9}ymAwV*fBF<~N^;D)gc>r}3%PJ~gq%;z&?z6o=(MJSdTeWouDKA?<+Z7Hos zCcF7T#9ue(q;~{ER;VpU@cjIfwKQFtBQhf-Dp*~hj6Y=KXoMmq8-qw}IE{y*4b68; zGRzp1deQXUCa*tC-ZIHHEdAhRnr97b0x5^_8eOjg%xnuk_$)aH@TN)6$#E!~C0&-3 zlqcY`F0Ol%i_oA=N&iG!lz`|c8hhm>{Pg?ZqjXL#Sl7$q?ik8dQF${?R4q7Gdfit` z5D4W3Y~!Zx%kkaH_e~vLLhb9zuB;JIa@XUWLJ>gnpiFZlk4Z~;5VZE#)3Ys0o&Siw z*ZrI?LZCD6b*OefZWhKRNbmYFDGL-Hxi@ci@U3O&cKx4WlkiM5uw5`ECi2kNHqdzpUExI!3POPJ6nrJT!-ZPU?{LflXmyaXji4#I*wddM;hsdwu`fhi8C~ z<6t^RW*iK|#-yZ$d*UygKYtk=0$J#q{CAGcu+c_ze}HN=l2Zna@vEAzEJ(k~f;Q>% zmQj9Dl$Y$Nsf=E+F~mxwO9FL=o_&0O150NuV!Bb|X3b)#e>@#*4YQOsNb7daC(#0? z1v_I@a;Lva@u>GB1jhqN)uUbQc9w=Jk?p@Vx)$F4HL8!q2`MJ4?sbP42y)#?@iKYT z^Bco7%aj5{kSidl1;$I`Y*dg zbvZZWH|-Mk-}$$A7XX>6j*FEfQc3b4RC^cKc~~f21ec*)Uus_f`b6*R$RkBWE(iDe z7|nVz1Bsu31dnwEOmB%70*VP=6h`uja-KS5JLhtc8t^(iUZOvLpVPnPwD@CsTjO8M z=Xm89x}K2pDT7s3uq5gJLAP;jX*SBr@A4lm(l<2N{|fW)w;Onew>JK!{&ThWfBnhH z@&7MWo`=I#ZCFB}TGhv9(r zDxR`qH}-NZN*asbq%ipju#EJdYDdtD3Fd(Wb!z2n8>YFT0=_6PLJ`qoJdRXx-I66T zQe>XEa=9F#q4@n+2z#6&9X+RDvodMpIc-uT4`e~N^ng6I1e7~Go+=w87anS2m^?Lc z6f>${2OM#R_n2?IZH}kea<7>L)?rVtNT611awEKl+#bvy0lXpINlg%0f~7!Szwx&X1slM|H*tZPYN=NXvl(sP%+==p=!V zaYeNVjp24Tk%0uqiZ90;@;TD1aid1A59aKYhLrY(4lNedJiXCyS4V^S4oOORi5F1Y zZisM2j(+{Onwjx!nnE5B)Ku{jnpi2Pke6dMD^332Estk%J&=2lLhFlSK!lwcSofZD zRVK$sEiw)mXFf>DqZ?Vvmoj!lT;V%Q9(GZlaPUFECkZQ46{5sKCRlxQMLl1hqz7v; znM~Itb7*Lpa8N@YWLl2EN6_K&o5lBV0Z?Oo0$w7}Y|9friX9+<;`M%&yVQ=*gDOWQ z9C2kl^6faD!;hVH`;QjrrKn`g6#L@DDw8}KKY)OK1XU=@m_Wo!v z2n^AXd&j+VsK)A5-i%**C?zW^$@_U32%)8A;Id{0_g>V7S7>+kNjk~Nyx`|`uHs(l z(PG!kigT_~L9q zR$gyXEmia0nsOk-u93mL8K8`&^U!01v9eTEFB4k9_)~bL*m;%xH470TTn3_7oi%ylK-W_lLP?l>=M*VkDq+g@^9gG!%7% z6+N&7FN8M*MK=?8OTAHDyS8Cg|Nm}3$#g(tqp}xyFH(VH+2w3BDzi1TP|Lc#8OTP= zqK90k=>XCo>?%#GvTX9TEMw}5|GXiqOn*ymOz`jmbQSp@G0wL*F*=5j;57_xV zm#w%>pRm6s54CqN7z_g$Tqk{x25zCQiD_^f*7;-aTOsYffE!Qm=6t&(%c87Sgasva z5qOVzspdmD2rYTRH1!|1FL^v08L+{Bjd8!y)CNtPhMnRN^8f*IPP29gn}!&vMKN*Z|rC=g6!_q&P^gCBRB0Cw;@vI zHib06s3g+%$fQR5?Y91%J_037n|r~JOAI3G6?g#Up|t}7wc(NwpRC<5JC(GgXXwII=(W?EOnWfzA~Vm1?^1@5fCf zCubaZpr$k;>m5i#erodwi~5wDY#3@F6jo5R2v-^~sv0;Te_L{}z3uolH|iG&qiIgq zkE4FUJ=kUxvkZy3*Z9mB{C&sY9+kU693$oT1G>Jw`pU%li(E+Fji#q9GK>Ol1x|W5&X8nKQ@?PAJTZ?3$YhU zHGQT}b4q2JF*wXlToNcJ#>N_L1N`8!v5gxb5Ti_zmP)~2v?~(ZOMnObyoc-|Ipgd@ z(*GI%v__I%T=$kfQkkjIP!oRkAJp~s-7qBZil*KDAM1MmM!))D_}iA-Zn$ydvW21htuO0SI}98;U|+v+EB+H|d2_7* literal 0 HcmV?d00001 diff --git a/python/epics_source.py b/python/epics_source.py new file mode 100644 index 0000000..f0b6062 --- /dev/null +++ b/python/epics_source.py @@ -0,0 +1,79 @@ +"""Read-only CA monitor cache; GUI reads never issue blocking network requests.""" +import math +from threading import Lock + + +class IocSource: + SUFFIXES = { + 'pose_set': 'arm-pose-set', + 'pose_actual': 'arm-pose-actual', + 'joint_set': 'arm-joint-set', + 'joint_actual': 'arm-joint-actual', + 'fault': 'arm-fault', + 'residual': 'arm-ik-residual', + } + ARRAYS = {'pose_set', 'pose_actual', 'joint_set', 'joint_actual'} + + def __init__(self, prefix, pv_factory=None): + prefix = prefix.rstrip(':') + ':' + if pv_factory is None: + from epics import PV + pv_factory = PV + self._lock = Lock() + self._values = {} + self._connected = {} + self._errors = {} + self.pvs = {} + for key, suffix in self.SUFFIXES.items(): + self.pvs[key] = pv_factory( + prefix + suffix, auto_monitor=True, + callback=lambda value=None, _key=key, **kw: self._update(_key, value), + connection_callback=lambda conn=False, _key=key, **kw: self._connection(_key, conn)) + + def _connection(self, key, connected): + with self._lock: + self._connected[key] = connected + if not connected: + self._values.pop(key, None) + self._errors.pop(key, None) + + def _update(self, key, value): + try: + if key in self.ARRAYS: + value = tuple(float(v) for v in value) + if len(value) != 6 or not all(math.isfinite(v) for v in value): + raise ValueError('expected six finite values') + else: + value = float(value) + if not math.isfinite(value): + raise ValueError('expected finite scalar') + if key == 'fault': + if not value.is_integer(): + raise ValueError('expected integer fault code') + value = int(value) + except (TypeError, ValueError, OverflowError) as exc: + with self._lock: + self._values.pop(key, None) + self._errors[key] = str(exc) + return + with self._lock: + self._values[key] = value + self._errors.pop(key, None) + + def snapshot(self): + # Consistent local cache copy; separate CA records are not a single IOC cycle. + with self._lock: + missing = [self.SUFFIXES[k] for k in self.SUFFIXES if not self._connected.get(k)] + if missing: + raise RuntimeError('EPICS disconnected:\n' + '\n'.join(missing)) + if self._errors: + key = next(iter(self._errors)) + raise RuntimeError(f'{self.SUFFIXES[key]}:\n{self._errors[key]}') + pending = [self.SUFFIXES[k] for k in self.SUFFIXES if k not in self._values] + if pending: + raise RuntimeError('Waiting for PV data:\n' + '\n'.join(pending)) + return dict(self._values) + + def close(self): + for pv in self.pvs.values(): + pv.disconnect() diff --git a/python/requirements-ioc.txt b/python/requirements-ioc.txt new file mode 100644 index 0000000..52cdf2c --- /dev/null +++ b/python/requirements-ioc.txt @@ -0,0 +1,2 @@ +-r requirements.txt +pyepics>=3.5 diff --git a/python/requirements.txt b/python/requirements.txt new file mode 100644 index 0000000..3cf9f81 --- /dev/null +++ b/python/requirements.txt @@ -0,0 +1 @@ +matplotlib>=3.7 diff --git a/python/viewer.py b/python/viewer.py new file mode 100644 index 0000000..12702c2 --- /dev/null +++ b/python/viewer.py @@ -0,0 +1,176 @@ +#!/usr/bin/env python3 +"""Generic six-joint arm: offline Cartesian/joint controls or read-only IOC view.""" +import argparse +import ctypes as ct +import json +import math +from pathlib import Path +import time + +ROOT = Path(__file__).resolve().parents[1] +HOME = [0., -35., 70., 0., 35., 0.] +LOWER = [-170., -120., -140., -180., -120., -180.] +UPPER = [170., 120., 140., 180., 120., 180.] + +class Model: + def __init__(self, geometry): + if len(geometry) != 4 or not all(math.isfinite(x) and x > 0 for x in geometry): + raise ValueError('Geometry requires four positive finite lengths in mm') + path = next((ROOT/'build'/('libarm.'+ext) for ext in ('so','dylib') + if (ROOT/'build'/('libarm.'+ext)).exists()), None) + if path is None: + raise RuntimeError('Build the viewer library first: make viewer-lib') + self.lib = ct.CDLL(str(path)) + ptr = ct.POINTER(ct.c_double) + self.lib.arm_forward.argtypes = [ptr]*4 + self.lib.arm_forward.restype = ct.c_int + self.lib.arm_inverse.argtypes = [ptr]*5 + self.lib.arm_inverse.restype = ct.c_int + self.geometry = (ct.c_double*4)(*geometry) + + @staticmethod + def six(values): + if len(values) != 6 or not all(math.isfinite(x) for x in values): + raise ValueError('Expected six finite numbers') + return (ct.c_double*6)(*values) + + def forward(self, joints): + pose, points = (ct.c_double*6)(), (ct.c_double*24)() + if self.lib.arm_forward(self.geometry, self.six(joints), pose, points): + raise ValueError('Invalid geometry or joint limits exceeded') + return list(pose), [list(points[i:i+3]) for i in range(0,24,3)] + + def inverse(self, pose, seed): + joints, residual = (ct.c_double*6)(), ct.c_double() + status = self.lib.arm_inverse(self.geometry,self.six(pose),self.six(seed),joints,ct.byref(residual)) + if status < 0: + raise ValueError('Invalid geometry, pose or seed') + return list(joints), residual.value, status == 0 + + +def self_test(model): + joints = [a+b for a,b in zip(HOME,[5,-4,3,2,-3,4])] + pose, points = model.forward(joints) + recovered, residual, ok = model.inverse(pose,HOME) + pose2, _ = model.forward(recovered) + if not ok or len(points) != 8 or max(abs(a-b) for a,b in zip(pose,pose2)) > 1e-4: + raise RuntimeError('Python/C++ round trip failed') + if model.inverse([10000,0,0,0,0,0],HOME)[2]: + raise RuntimeError('Unreachable pose accepted') + print(f'PASS: Python/C++ arm IK/FK; residual={residual:.3g}') + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--prefix',help='Read-only IOC view, e.g. MTEST04-MTN-ARM:') + parser.add_argument('--joints',action='store_true',help='Offline joint-space controls, home-relative degrees') + parser.add_argument('--geometry',type=Path,default=ROOT/'cfg'/'geometry.json') + parser.add_argument('--self-test',action='store_true') + parser.add_argument('--snapshot',type=Path,help='Save one offline view as PNG') + args = parser.parse_args() + if args.prefix and (args.joints or args.snapshot): + parser.error('--prefix cannot be combined with --joints or --snapshot') + model = Model(json.loads(args.geometry.read_text())) + if args.self_test: + self_test(model) + return + import matplotlib + if args.snapshot: + matplotlib.use('Agg') + import matplotlib.pyplot as plt + from matplotlib.animation import FuncAnimation + from matplotlib.widgets import Slider, Button + source = None + if args.prefix: + from epics_source import IocSource + source = IocSource(args.prefix) + fig = plt.figure(figsize=(12,9)) + ax = fig.add_axes([.04,.32,.68,.61],projection='3d') + status = fig.text(.73,.85,'',family='monospace',fontsize=9,va='top') + fig.suptitle('ecmc 6-DOF arm — generic simulation (no collision checking)') + sliders = [] + labels = [f'J{i+1} offset [deg]' for i in range(6)] if args.joints else ['X [mm]','Y [mm]','Z [mm]','Rx [deg]','Ry [deg]','Rz [deg]'] + for i,label in enumerate(labels): + limit = 45 if args.joints else (50 if i<3 else 20) + slider = Slider(fig.add_axes([.16,.25-i*.035,.46,.02]),label,-limit,limit,valinit=0) + if source: + slider.set_active(False) + sliders.append(slider) + state = dict(current=[0.]*6,start=[0.]*6,target=[0.]*6,started=time.monotonic(), + command=list(HOME),actual=list(HOME),pose=[0.]*6) + def move(_): + state.update(start=list(state['current']),target=[s.val for s in sliders],started=time.monotonic()) + button = Button(fig.add_axes([.75,.12,.2,.05]),'Move (3 seconds)') + button.on_clicked(move) + if source: + button.set_active(False) + button.label.set_text('IOC monitor') + if args.snapshot: + state.update(current=[10,-5,5,3,-3,4],start=[10,-5,5,3,-3,4],target=[10,-5,5,3,-3,4]) + for slider,value in zip(sliders,state['current']): + slider.set_val(value) + def update(_): + try: + fault, residual, ok = 0, 0., True + if source: + live = source.snapshot() + state['command'] = [h+v for h,v in zip(HOME,live['joint_set'])] + state['actual'] = [h+v for h,v in zip(HOME,live['joint_actual'])] + state['pose'] = list(live['pose_actual']) + desired_pose = live['pose_set'] + residual, fault = live['residual'], live['fault'] + else: + t = min(1.,(time.monotonic()-state['started'])/3.) + blend = t*t*t*(10+t*(-15+6*t)) + state['current'] = [a+blend*(b-a) for a,b in zip(state['start'],state['target'])] + if args.joints: + state['command'] = [h+v for h,v in zip(HOME,state['current'])] + desired_pose, _ = model.forward(state['command']) + else: + desired_pose = state['current'] + command,residual,ok = model.inverse(desired_pose,state['command']) + if ok: + state['command'] = command + # Offline ideal plant. There is no dynamics or drive model. + state['actual'] = list(state['command']) + state['pose'], _ = model.forward(state['actual']) + _, requested = model.forward(state['command']) + _, actual = model.forward(state['actual']) + ax.clear() + ax.plot(*zip(*requested),'o--',color='tab:orange',label='IK command',alpha=.7) + ax.plot(*zip(*actual),'o-',color='tab:blue',linewidth=3,label='Joint feedback') + for index,label in ((0,'J1'),(1,'J2'),(2,'J3'),(3,'J4/5/6')): + ax.text(*actual[index],label) + reach = sum(model.geometry) + ax.set(xlim=(-reach,reach),ylim=(-reach,reach),zlim=(0,reach),xlabel='X [mm]',ylabel='Y [mm]',zlabel='Z [mm]') + ax.set_box_aspect((2,2,1)) + ax.legend(loc='upper left') + text = ('IOC read-only' if source else ('Offline joint mode' if args.joints else 'Offline Cartesian mode')) + text += f'\nIK: {"OK" if ok else "NO SOLUTION"}\nWeighted residual: {residual:.3g}\nIOC fault: {fault}\n' + text += '\nJoint offsets [deg]\n IK set Actual\n' + text += '\n'.join(f'J{i+1} {a-h:8.3f} {b-h:8.3f}' for i,(h,a,b) in enumerate(zip(HOME,state['command'],state['actual']))) + text += '\n\nTool offsets [mm / deg]\n Set Actual\n' + text += '\n'.join(f'{n:2} {a:8.3f} {b:8.3f}' for n,a,b in zip(('X','Y','Z','Rx','Ry','Rz'),desired_pose,state['pose'])) + if not ok: + text += '\n\nHolding last valid joints.' + text += '\n\nNo collision checking.' + status.set_text(text) + status.set_color('black' if ok and fault==0 else 'red') + except (RuntimeError,ValueError,TypeError) as exc: + status.set_text(str(exc)) + status.set_color('red') + return () + if args.snapshot: + update(0) + args.snapshot.parent.mkdir(parents=True,exist_ok=True) + fig.savefig(args.snapshot,dpi=130) + else: + animation = FuncAnimation(fig,update,interval=50,cache_frame_data=False) + try: + plt.show() + finally: + if source: + source.close() + +if __name__ == '__main__': + main() diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..77a3c5a --- /dev/null +++ b/src/Makefile @@ -0,0 +1,11 @@ +# Optional PSI driver build: make -C src build (on the IOC development host). +include /ioc/tools/driver.makefile +MODULE = main +BUILDCLASSES = Linux +ARCH_FILTER = deb10% deb12% +EXCLUDE_VERSIONS += 3 7.0.5 7.0.6 7.0.7 +USR_CXXFLAGS += -std=c++17 +ecmc_VERSION = v11.2.0_RC1 +SOURCES = logic.cpp +HEADERS = kinematics.hpp +# The portable C API for the viewer is built separately by make viewer-lib. diff --git a/src/c_api.cpp b/src/c_api.cpp new file mode 100644 index 0000000..e827060 --- /dev/null +++ b/src/c_api.cpp @@ -0,0 +1,20 @@ +#include "kinematics.hpp" +extern "C" { +// Geometry: base height, upper-arm length, forearm length, tool length, all mm. +int arm_forward(const double* geometry,const double* joints,double* pose,double* points) { + arm::Model m({geometry[0],geometry[1],geometry[2],geometry[3]}); arm::Six q{}; + std::copy(joints,joints+6,q.begin()); + if(!m.g.valid()||!m.withinLimits(q)) return -1; + std::array p{}; m.forward(q,&p); auto result=m.pose(q); + std::copy(result.begin(),result.end(),pose); + for(int i=0;i<8;++i) for(int j=0;j<3;++j) points[i*3+j]=p[i][j]; + return 0; +} +int arm_inverse(const double* geometry,const double* pose,const double* seed,double* joints,double* residual) { + arm::Model m({geometry[0],geometry[1],geometry[2],geometry[3]}); arm::Six p{},q{}; + std::copy(pose,pose+6,p.begin()); std::copy(seed,seed+6,q.begin()); + if(!m.g.valid()||!arm::finite(p)||!m.withinLimits(q)) return -1; + auto result=m.inverse(p,q); std::copy(result.joints.begin(),result.joints.end(),joints); *residual=result.residual; + return result.converged?0:1; +} +} diff --git a/src/kinematics.hpp b/src/kinematics.hpp new file mode 100644 index 0000000..f47c2dd --- /dev/null +++ b/src/kinematics.hpp @@ -0,0 +1,120 @@ +#pragma once +#include +#include +#include + +namespace arm { +constexpr double pi=3.14159265358979323846, rad=pi/180.; +using Six=std::array; +using Vec=std::array; +using Mat=std::array; +inline bool finite(const Six& v) { for(double x:v) if(!std::isfinite(x)) return false; return true; } +inline Mat identity() { return {{{1,0,0},{0,1,0},{0,0,1}}}; } +inline Mat transpose(const Mat& a) { Mat b{}; for(int i=0;i<3;++i) for(int j=0;j<3;++j) b[i][j]=a[j][i]; return b; } +inline Mat mul(const Mat& a,const Mat& b) { Mat c{}; for(int i=0;i<3;++i) for(int j=0;j<3;++j) for(int k=0;k<3;++k) c[i][j]+=a[i][k]*b[k][j]; return c; } +inline Vec mul(const Mat& a,const Vec& b) { Vec c{}; for(int i=0;i<3;++i) for(int k=0;k<3;++k) c[i]+=a[i][k]*b[k]; return c; } +inline Mat rotation(int axis,double angle) { + Mat m=identity(); const int i=(axis+1)%3,j=(axis+2)%3; + m[i][i]=m[j][j]=std::cos(angle); m[i][j]=-std::sin(angle); m[j][i]=std::sin(angle); return m; +} +struct Transform { Vec p{}; Mat r=identity(); }; +struct Geometry { + double baseHeight=300,upperArm=300,forearm=250,tool=80; + bool valid() const { for(double x:{baseHeight,upperArm,forearm,tool}) if(!std::isfinite(x)||x<=0) return false; return true; } +}; +struct Result { Six joints{}; double residual=0; int iterations=0; bool converged=false; }; +inline bool solve(double a[6][6],double b[6],Six& x) { + for(int k=0;k<6;++k) { + int p=k; for(int i=k+1;i<6;++i) if(std::abs(a[i][k])>std::abs(a[p][k])) p=i; + if(std::abs(a[p][k])<1e-14) return false; + for(int j=k;j<6;++j) std::swap(a[k][j],a[p][j]); + std::swap(b[k],b[p]); + for(int i=k+1;i<6;++i) { const double f=a[i][k]/a[k][k]; for(int j=k;j<6;++j) a[i][j]-=f*a[k][j]; b[i]-=f*b[k]; } + } + for(int i=5;i>=0;--i) { double s=b[i]; for(int j=i+1;j<6;++j) s-=a[i][j]*x[j]; x[i]=s/a[i][i]; } return true; +} +// Rotation logarithm, including a stable branch near 180 degrees. +inline Vec logRotation(const Mat& m) { + const double angle=std::acos(std::clamp((m[0][0]+m[1][1]+m[2][2]-1)*.5,-1.,1.)); + Vec v{m[2][1]-m[1][2],m[0][2]-m[2][0],m[1][0]-m[0][1]}; + if(angle<1e-7) { for(double& x:v) x*=.5; return v; } + if(pi-angle<1e-5) { + int k=0; for(int i=1;i<3;++i) if(m[i][i]>m[k][k]) k=i; + Vec axis{}; axis[k]=std::sqrt(std::max(0.,(m[k][k]+1)*.5)); + for(int i=0;i<3;++i) if(i!=k) axis[i]=(m[i][k]+m[k][i])/(4*axis[k]); + double dot=0; for(int i=0;i<3;++i) dot+=axis[i]*v[i]; + for(int i=0;i<3;++i) v[i]=axis[i]*angle*(dot<0?-1:1); + return v; + } + for(double& x:v) x*=angle/(2*std::sin(angle)); + return v; +} +struct Model { + Geometry g; + // A generic elbow arm with a spherical X-Y-X wrist; all axes are revolute. + const Six home{0,-35,70,0,35,0}; + const Six lower{-170,-120,-140,-180,-120,-180}; + const Six upper{170,120,140,180,120,180}; + explicit Model(Geometry geometry={}):g(geometry) {} + bool withinLimits(const Six& q) const { if(!finite(q)) return false; for(int i=0;i<6;++i) if(q[i]upper[i]) return false; return true; } + Transform forward(const Six& q,std::array* points=nullptr) const { + Transform t; int n=0; + auto point=[&]() { if(points) (*points)[n]=t.p; ++n; }; + auto move=[&](Vec local) { const Vec d=mul(t.r,local); for(int i=0;i<3;++i) t.p[i]+=d[i]; }; + point(); t.r=mul(t.r,rotation(2,q[0]*rad)); move({0,0,g.baseHeight}); point(); + t.r=mul(t.r,rotation(1,q[1]*rad)); move({g.upperArm,0,0}); point(); + t.r=mul(t.r,rotation(1,q[2]*rad)); move({g.forearm,0,0}); point(); + t.r=mul(t.r,rotation(0,q[3]*rad)); point(); + t.r=mul(t.r,rotation(1,q[4]*rad)); point(); + t.r=mul(t.r,rotation(0,q[5]*rad)); point(); + move({g.tool,0,0}); point(); return t; + } + // Cartesian axes are base-frame offsets from the nominal home tool pose. + // R = Rz(Rz)*Ry(Ry)*Rx(Rx)*R_home; XYZ are added in the base frame. + Transform target(const Six& pose) const { + Transform t=forward(home); + for(int i=0;i<3;++i) t.p[i]+=pose[i]; + t.r=mul(mul(mul(rotation(2,pose[5]*rad),rotation(1,pose[4]*rad)),rotation(0,pose[3]*rad)),t.r); return t; + } + Six pose(const Six& q) const { + const auto t=forward(q),h=forward(home); Six p{}; + for(int i=0;i<3;++i) p[i]=t.p[i]-h.p[i]; + const Mat r=mul(t.r,transpose(h.r)); + p[4]=std::asin(std::clamp(-r[2][0],-1.,1.))/rad; + if(std::abs(std::cos(p[4]*rad))>1e-8) { p[3]=std::atan2(r[2][1],r[2][2])/rad; p[5]=std::atan2(r[1][0],r[0][0])/rad; } + else { p[3]=0; p[5]=std::atan2(-r[0][1],r[1][1])/rad; } + return p; + } + Six error(const Transform& desired,const Six& q) const { + auto t=forward(q); Six e{}; for(int i=0;i<3;++i) e[i]=desired.p[i]-t.p[i]; + const Vec v=logRotation(mul(desired.r,transpose(t.r))); + for(int i=0;i<3;++i) e[i+3]=v[i]*200.; // orientation weight: 200 mm/radian + return e; + } + Result inverse(const Six& pose,const Six& seed,int maxIterations=100) const { + Result out; out.joints=seed; + if(!g.valid()||!finite(pose)||!withinLimits(seed)) return out; + const Transform desired=target(pose); double damping=.1; + auto cost=[](const Six& e) { double c=0; for(double v:e)c+=v*v; return c; }; + for(int step=0;step<=maxIterations;++step) { + const Six e=error(desired,out.joints); out.residual=std::sqrt(cost(e)); out.iterations=step; + if(out.residual<1e-5) { out.converged=true; return out; } + if(step==maxIterations) break; + double j[6][6]{},a[6][6]{},b[6]{}; + for(int k=0;k<6;++k) { + Six plus=out.joints,minus=out.joints; plus[k]+=1e-5/rad; minus[k]-=1e-5/rad; + const Six ep=error(desired,plus),em=error(desired,minus); + for(int i=0;i<6;++i) j[i][k]=-(ep[i]-em[i])/(2e-5); + } + for(int k=0;k<6;++k) { for(int i=0;i<6;++i) b[k]+=j[i][k]*e[i]; for(int l=0;l<6;++l) for(int i=0;i<6;++i) a[k][l]+=j[i][k]*j[i][l]; a[k][k]+=damping; } + Six delta{}; if(!solve(a,b,delta)) return out; + double largest=0; for(double v:delta) largest=std::max(largest,std::abs(v)); + const double scale=largest>.2?.2/largest:1.; Six trial=out.joints; + for(int k=0;k<6;++k) trial[k]=std::clamp(trial[k]+scale*delta[k]/rad,lower[k],upper[k]); + if(cost(error(desired,trial)) + +struct ArmLogic : ecmcCpp::LogicBase { + arm::Model model; + arm::Six pose_set{},pose_actual{},joint_set{},joint_actual{},joint_trajectory{}; + arm::Six seed=model.home; + int32_t fault=0,ik_iterations=0,simulation=1; + double ik_residual=0; + int coordFirst=1,jointFirst=7; + ArmLogic() { + const auto macros=ecmcCpp::getMacrosString(); + coordFirst=ecmcCpp::getMacroValueInt(macros,"COORD_FIRST",1); + jointFirst=ecmcCpp::getMacroValueInt(macros,"JOINT_FIRST",7); + simulation=ecmcCpp::getMacroValueInt(macros,"SIMULATION",1); + if(simulation!=1) throw std::runtime_error("Only SIMULATION=1 is supported"); + if(coordFirst<1||jointFirst<1||std::abs(coordFirst-jointFirst)<6) throw std::runtime_error("Axis ranges must be positive and disjoint"); + auto& g=model.g; + g.baseHeight=ecmcCpp::getMacroValueDouble(macros,"BASE_HEIGHT",g.baseHeight); + g.upperArm=ecmcCpp::getMacroValueDouble(macros,"UPPER_ARM",g.upperArm); + g.forearm=ecmcCpp::getMacroValueDouble(macros,"FOREARM",g.forearm); + g.tool=ecmcCpp::getMacroValueDouble(macros,"TOOL",g.tool); + if(!g.valid()) throw std::runtime_error("Invalid geometry"); + for(int i=0;i<6;++i) { + ecmc.input("ax"+std::to_string(coordFirst+i)+".setpos",pose_set[i]); + ecmc.input("ax"+std::to_string(jointFirst+i)+".actpos",joint_actual[i]); + ecmc.input("ax"+std::to_string(jointFirst+i)+".setpos",joint_trajectory[i]); + } + epics.readOnlyArray("arm.pose_set",pose_set) + .readOnlyArray("arm.pose_actual",pose_actual) + .readOnlyArray("arm.joint_set",joint_set) + .readOnlyArray("arm.joint_actual",joint_actual) + .readOnly("arm.fault",fault) + .readOnly("arm.ik_iterations",ik_iterations) + .readOnly("arm.ik_residual",ik_residual) + .readOnly("arm.simulation",simulation); + } + void run() override { + if(fault) return; + for(int i=0;i<6;++i) if(ecmcCpp::axisHasError(coordFirst+i)||ecmcCpp::axisHasError(jointFirst+i)) { fault=4; return; } + if(!arm::finite(pose_set)||!arm::finite(joint_actual)||!arm::finite(joint_trajectory)) { fault=1; return; } + arm::Six actual{},trajectory{}; + for(int i=0;i<6;++i) { actual[i]=joint_actual[i]+model.home[i]; trajectory[i]=joint_trajectory[i]+model.home[i]; } + if(!model.withinLimits(actual)||!model.withinLimits(trajectory)) { fault=1; return; } + // Previous accepted command selects a continuous local IK branch. + const auto result=model.inverse(pose_set,seed); + ik_iterations=result.iterations; ik_residual=result.residual; + if(!result.converged) { fault=2; return; } + seed=result.joints; pose_actual=model.pose(actual); + for(int i=0;i<6;++i) joint_set[i]=result.joints[i]-model.home[i]; + for(int i=0;i<6;++i) { + int rc=ecmcCpp::axisSetExternalSetpointPos(jointFirst+i,joint_set[i]); + rc|=ecmcCpp::axisSetExternalEncoderPos(jointFirst+i,joint_trajectory[i]); + rc|=ecmcCpp::axisSetExternalEncoderPos(coordFirst+i,pose_actual[i]); + if(rc) { fault=3; return; } + } + } +}; +ECMC_CPP_LOGIC_REGISTER_DEFAULT(ArmLogic) diff --git a/tests/test_epics_source.py b/tests/test_epics_source.py new file mode 100644 index 0000000..3f65886 --- /dev/null +++ b/tests/test_epics_source.py @@ -0,0 +1,53 @@ +import sys +import unittest +from pathlib import Path +sys.path.insert(0, str(Path(__file__).resolve().parents[1] / 'python')) +from epics_source import IocSource + + +class FakePV: + def __init__(self, name, auto_monitor, callback, connection_callback): + self.name, self.callback, self.connection = name, callback, connection_callback + assert auto_monitor + def send(self, value): self.callback(value=value) + def connect(self): self.connection(conn=True) + def disconnect(self): self.connection(conn=False) + + +class SourceTest(unittest.TestCase): + def setUp(self): + self.source = IocSource('ARM:', FakePV) + def ready(self): + for key, pv in self.source.pvs.items(): + pv.connect() + pv.send([1, 2, 3, 4, 5, 6] if key in IocSource.ARRAYS else 0) + def test_prefix_normalization(self): + source = IocSource("ARM", FakePV) + self.assertEqual(source.pvs["fault"].name, "ARM:arm-fault") + def test_mapping_and_updates(self): + self.ready() + self.assertEqual(self.source.pvs['pose_actual'].name, 'ARM:arm-pose-actual') + self.assertEqual(self.source.pvs['joint_set'].name, 'ARM:arm-joint-set') + old = self.source.snapshot() + self.source.pvs['pose_actual'].send([6]*6) + self.assertEqual(self.source.snapshot()['pose_actual'], (6,)*6) + self.assertEqual(old['pose_actual'], (1,2,3,4,5,6)) + def test_disconnect_and_reconnect_waits_for_data(self): + self.ready() + pv = self.source.pvs['joint_actual'] + pv.disconnect() + with self.assertRaisesRegex(RuntimeError, 'disconnected'): self.source.snapshot() + pv.connect() + with self.assertRaisesRegex(RuntimeError, 'Waiting'): self.source.snapshot() + pv.send([0]*6) + self.assertEqual(self.source.snapshot()['joint_actual'], (0,)*6) + def test_bad_array_and_recovery(self): + self.ready() + for bad in ([1]*5, [float('nan')]*6, None): + self.source.pvs['pose_set'].send(bad) + with self.assertRaisesRegex(RuntimeError, 'arm-pose-set'): self.source.snapshot() + self.source.pvs['pose_set'].send([0]*6) + self.source.pvs['fault'].send(2) + self.assertEqual(self.source.snapshot()['fault'], 2) + +if __name__ == '__main__': unittest.main() diff --git a/tests/test_kinematics.cpp b/tests/test_kinematics.cpp new file mode 100644 index 0000000..e09a833 --- /dev/null +++ b/tests/test_kinematics.cpp @@ -0,0 +1,33 @@ +#include "kinematics.hpp" +#include +#include +#include +void check(bool ok,const char* msg) { if(!ok) throw std::runtime_error(msg); } +int main() { + arm::Model m; + arm::Six zero{}; const auto home=m.pose(m.home); + for(double x:home) check(std::abs(x)<1e-10,"home pose offsets"); + // Independent straight-arm and base-yaw geometry checks. + auto t=m.forward(zero); check(std::abs(t.p[0]-630)<1e-10 && t.p[2]==300,"straight arm dimensions"); + zero[0]=90; t=m.forward(zero); check(std::abs(t.p[0])<1e-9 && std::abs(t.p[1]-630)<1e-9,"base rotation"); + auto half=arm::logRotation(arm::rotation(0,arm::pi)); check(std::abs(std::abs(half[0])-arm::pi)<1e-8,"180 degree orientation error"); + std::mt19937 rng(42); std::uniform_real_distribution jitter(-8,8); + for(int sample=0;sample<500;++sample) { + auto q=m.home; for(double& v:q) v+=jitter(rng); + const auto pose=m.pose(q); auto r=m.inverse(pose,m.home); + check(r.converged && m.withinLimits(r.joints),"near-home IK round trip"); + check(r.residual<1e-5,"round trip residual"); + } + auto seed=m.home; + for(int i=0;i<1000;++i) { + auto q=m.home; for(int k=0;k<6;++k) q[k]+=10*std::sin(i*.005+k*.4); + auto r=m.inverse(m.pose(q),seed); check(r.converged,"continuous IK tracking"); seed=r.joints; + } + check(!m.inverse({10000,0,0,0,0,0},m.home).converged,"unreachable target"); + auto bad=m.home; bad[0]=1000; check(!m.inverse({},bad).converged,"invalid seed"); + arm::Geometry invalid; invalid.tool=-1; check(!arm::Model(invalid).inverse({},m.home).converged,"invalid geometry"); + auto nan=arm::Six{}; nan[0]=NAN; check(!m.inverse(nan,m.home).converged,"nonfinite pose"); + // Straight wrist is singular but holding its current pose must remain valid. + arm::Six singular{}; check(m.inverse(m.pose(singular),singular).converged,"singular pose hold"); + std::cout<<"PASS: geometry, orientation, 500 IK round trips, 1000 tracking samples, invalid and unreachable inputs\n"; +} diff --git a/tests/test_logic.cpp b/tests/test_logic.cpp new file mode 100644 index 0000000..b5ce3dc --- /dev/null +++ b/tests/test_logic.cpp @@ -0,0 +1,34 @@ +#include "../src/logic.cpp" +#include +#include +std::array setpoint{},encoder{}; +int badAxis=0,writeFailure=0; +int32_t error(int32_t axis) { return axis==badAxis; } +int32_t putSet(int32_t axis,double value) { setpoint.at(axis)=value; return writeFailure; } +int32_t putEnc(int32_t axis,double value) { encoder.at(axis)=value; return writeFailure; } +void check(bool ok,const char* msg) { if(!ok) throw std::runtime_error(msg); } +int main() { + ecmcCppLogicHostServices host{}; + host.get_axis_error=error; host.set_axis_ext_set_pos=putSet; host.set_axis_ext_act_pos=putEnc; + ecmcCpp::setHostServices(&host); + ArmLogic logic; logic.run(); check(!logic.fault,"zero axes represent home"); + // Verify real binding descriptors rather than relying on the mock to resolve names. + check(logic.ecmc.count()==18,"18 input bindings"); + check(std::string(logic.ecmc.data()[0].itemName)=="ax1.setpos","coordinate asyn path"); + check(std::string(logic.ecmc.data()[1].itemName)=="ax7.actpos","joint asyn path"); + logic.pose_set={5,-4,8,2,-3,4}; logic.run(); check(!logic.fault,"IK cycle"); + for(int i=0;i<6;++i) logic.joint_trajectory[i]=setpoint[i+7]; + logic.run(); + for(int i=0;i<6;++i) logic.joint_actual[i]=encoder[i+7]; + logic.run(); check(!logic.fault,"FK cycle"); + for(int i=0;i<6;++i) check(std::abs(encoder[i+1]-logic.pose_set[i])<1e-4,"coordinate FK feedback"); + ArmLogic direct; direct.joint_trajectory={1,2,3,4,5,6}; direct.run(); + for(int i=0;i<6;++i) { check(encoder[i+7]==i+1,"direct joint ideal plant"); direct.joint_actual[i]=encoder[i+7]; } + direct.run(); check(!direct.fault&&std::abs(direct.pose_actual[0])>.01,"direct joint FK"); + const auto held=setpoint; logic.pose_set[0]=10000; logic.run(); check(logic.fault==2&&setpoint==held,"IK failure holds outputs"); + logic.pose_set={}; logic.run(); check(logic.fault==2,"latched fault"); + ArmLogic limits; limits.joint_trajectory[0]=200; limits.run(); check(limits.fault==1,"joint limit"); + ArmLogic axis; badAxis=7; axis.run(); check(axis.fault==4,"axis error"); badAxis=0; + ArmLogic write; writeFailure=1; write.run(); check(write.fault==3,"host failure"); + std::cout<<"PASS: input bindings, IK/FK pipeline, direct joint plant, latched faults\n"; +}