From 111af434c3b1fbea7cbd380a0a9f63e4dc80d94c Mon Sep 17 00:00:00 2001 From: Peter Corke Date: Wed, 19 Aug 2026 09:10:51 +1000 Subject: [PATCH] fix: model scripts silently relying on ambient np/mkgrid imports 6 of the 12 IBVS-*-main.py / other -main.py scripts under RVC3/models were missing imports their own code (or their .bd file's eval'd parameter expressions, which run against the calling script's own globals() via bdload(globalvars=globals())) actually needs: - IBVS-arm-main.py: np, mkgrid (both .bd-expression only) - IBVS-holonomic-main.py: np (script body) - IBVS-main.py: np, mkgrid (both .bd-expression only) - IBVS-nonholonomic-main.py: np (script body) - IBVS-partitioned-main.py: np (body + .bd expr), mkgrid (.bd expr) - IBVS-quadrotor-main.py: np, mkgrid (both script body) These only ever worked when %run -i'd from rvctool/a notebook, which happens to pre-import numpy and (via machinevisiontoolbox.base) mkgrid into the shared namespace before these scripts run -- silently masking the gap. Surfaced by the new rvc3-model command (docs/getting-going branch), which runs these scripts standalone with no such ambient namespace. The other 6 scripts flagged by an initial grep-for-numpy-import pass (computed-torque-main.py, driveconfig.py, drivepoint.py, feedforward-main.py, jointspace.py, lanechange.py) turned out to be false positives -- they don't need numpy directly and already run clean standalone; left untouched. 3 of the 6 fixed here (holonomic, nonholonomic, quadrotor) still hit a separate, already-tracked bug once past the import stage: their .bd files use stale bdsim parameter names (args/kwargs -> fargs/fkwargs, maxw/minw -> wmax/wmin), fixed on fix/notebook-errata against different files (.bd JSON, not .py). Non-overlapping, will combine cleanly whenever both branches land. Co-Authored-By: Claude Sonnet 5 --- RVC3/models/IBVS-arm-main.py | 2 ++ RVC3/models/IBVS-holonomic-main.py | 1 + RVC3/models/IBVS-main.py | 2 ++ RVC3/models/IBVS-nonholonomic-main.py | 1 + RVC3/models/IBVS-partitioned-main.py | 2 ++ RVC3/models/IBVS-quadrotor-main.py | 2 ++ 6 files changed, 10 insertions(+) diff --git a/RVC3/models/IBVS-arm-main.py b/RVC3/models/IBVS-arm-main.py index 8bbd30f..192a7d1 100755 --- a/RVC3/models/IBVS-arm-main.py +++ b/RVC3/models/IBVS-arm-main.py @@ -7,7 +7,9 @@ """ from pathlib import Path +import numpy as np from machinevisiontoolbox import * +from machinevisiontoolbox.base import mkgrid from roboticstoolbox import * from math import pi diff --git a/RVC3/models/IBVS-holonomic-main.py b/RVC3/models/IBVS-holonomic-main.py index 7e94172..5cf8a92 100755 --- a/RVC3/models/IBVS-holonomic-main.py +++ b/RVC3/models/IBVS-holonomic-main.py @@ -7,6 +7,7 @@ """ from pathlib import Path +import numpy as np from machinevisiontoolbox import * from roboticstoolbox import * diff --git a/RVC3/models/IBVS-main.py b/RVC3/models/IBVS-main.py index 0af4cf5..8da44a1 100755 --- a/RVC3/models/IBVS-main.py +++ b/RVC3/models/IBVS-main.py @@ -1,5 +1,7 @@ from pathlib import Path +import numpy as np from machinevisiontoolbox import * +from machinevisiontoolbox.base import mkgrid from bdsim import Clock, bdload, BDSim from spatialmath import SE3 import matplotlib.pyplot as plt diff --git a/RVC3/models/IBVS-nonholonomic-main.py b/RVC3/models/IBVS-nonholonomic-main.py index b5567f9..dc745a6 100755 --- a/RVC3/models/IBVS-nonholonomic-main.py +++ b/RVC3/models/IBVS-nonholonomic-main.py @@ -7,6 +7,7 @@ """ from pathlib import Path +import numpy as np from machinevisiontoolbox import * from roboticstoolbox import * diff --git a/RVC3/models/IBVS-partitioned-main.py b/RVC3/models/IBVS-partitioned-main.py index 07f8b67..a295062 100755 --- a/RVC3/models/IBVS-partitioned-main.py +++ b/RVC3/models/IBVS-partitioned-main.py @@ -1,7 +1,9 @@ #! /usr/bin/env python from pathlib import Path +import numpy as np from machinevisiontoolbox import * +from machinevisiontoolbox.base import mkgrid from bdsim import Clock, bdload, BDSim from spatialmath import SE3, Polygon2 from spatialmath.base import angdiff diff --git a/RVC3/models/IBVS-quadrotor-main.py b/RVC3/models/IBVS-quadrotor-main.py index b492529..b22d3b8 100755 --- a/RVC3/models/IBVS-quadrotor-main.py +++ b/RVC3/models/IBVS-quadrotor-main.py @@ -8,7 +8,9 @@ from pathlib import Path from enum import IntEnum +import numpy as np from machinevisiontoolbox import * +from machinevisiontoolbox.base import mkgrid from bdsim import Clock, bdload, BDSim from spatialmath import SE3 import matplotlib.pyplot as plt