Skip to content

decisions: sensor layout, base camera, IMU, column position and LiDAR mount (Alex decision 12 Oct 2026) - #46

Merged
BotshareAI merged 2 commits into
mainfrom
decisions-2026-10-12-sensors
Oct 12, 2026
Merged

BotshareAI merged 2 commits into
mainfrom
decisions-2026-10-12-sensors

Conversation

@BotshareAI

@BotshareAI BotshareAI commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • BASE-CONTROLLER-IO: 4 x MB7060 in the edge holes, 2 x TF-Luna cliff sensors in the centre holes.
  • CAMERAS: Gemini 336L centred on the old camera centre, 142.5 mm above the floor; 243 mm superseded.
  • BASE-CONTROLLER-GATES and FRAMES-REP105: ICM-42688-P is the 2.0 IMU, imu_link at x 0.195 m on the centreline.
  • ARM-MOUNT: column axis 330 mm behind the front edge, x +0.060 at bp000 and +0.110 at bp050.
  • NAV-LIDAR: 7.1 mm spacer, lidar_link (0.330, 0, 0.124), v0.0.1 body filter kept unchanged.
  • NEAR-FIELD-FRAMES: new entry with the four ultrasonic and two ToF frames, new rear centre hole.

Source: Alex decision 2026-10-12, to be recorded in P-03 rev19.0.

Follow-up commit 3d3c0c4:

  • BASE-CONTROLLER-GATES is now titled "Base-controller gates and the 2.0 IMU". Its verification.human evidence reads "Gate A test log, STM32 go/no-go record, ICM-42688-P WHO_AM_I 0x47 boot log".
  • NAV-LIDAR applies_to.files adds **/*.xacro and **/*.urdf, so a 0.335 / 0.18 LiDAR origin in a model file is now detected.

Files changed: decisions.yaml, tests/test_check_decisions.py, WATCHDOG.md (accepted-words table regenerated with python3 tools/watchdog.py --accepted-words; tests/test_watchdog.py requires it to match the register; the follow-up commit leaves it unchanged).

Changes needed to apply the list, beyond its literal wording:

  • sources: gains the key Alex decision 2026-10-12. The validator requires every source document to be listed there.
  • Every changed entry's source is now {document: "Alex decision 2026-10-12", item: "<topic>; P-03 rev19.0 to record"}. The schema has one source per entry, so values kept unchanged in those entries now sit under the new source. Their earlier sources survive only in the supersedes lists.
  • The MB7040 check message in BASE-CONTROLLER-IO said "two MaxBotix MB7060"; it now says four.
  • The verification.machine text of BASE-CONTROLLER-GATES no longer mentions the removed ICM-42688-P check. The new checks in BASE-CONTROLLER-IO, CAMERAS, ARM-MOUNT and NAV-LIDAR are added to their entries' verification.machine text.
  • NAV-LIDAR's single value becomes a values list (the original text first) so the two new values can be added.
  • NEAR-FIELD-FRAMES has one narrow check: the 20 degree ToF pitch called final, fixed, validated or confirmed, unless the line says screening, bench or until. The schema rejects a recorded entry with no check, and the decision owner chose this option. Applies to openamr-platform-* and openamrobot-docs.

Work package

Alex decision 2026-10-12, to be recorded in P-03 rev19.0. No contract change request issue is linked.

Integration Gate

Tests

New or changed tests in tests/test_check_decisions.py:

  • test_sensor_layout_alex_2026_10_12
  • test_base_camera_height_243_superseded
  • test_icm42688p_is_the_2_0_imu, for the removed check
  • test_column_axis_not_on_drive_axle
  • test_lidar_link_pose, extended in the follow-up commit with .xacro and .urdf cases
  • test_near_field_frames_tof_pitch_is_screening

Two existing negatives that now state superseded values were updated: "Two MaxBotix MB7060" became "Four", and the Gemini line moved from 243 mm to 142.5 mm.

Revert runs:

  • With decisions.yaml restored from e708c73, python3 -m pytest -q tests/test_check_decisions.py gives 6 failed, 55 passed, and the six failures are the new tests.
  • With decisions.yaml restored from a6948e9 (before the follow-up), it gives 1 failed, 60 passed. The failure is test_lidar_link_pose, because model files were not scanned.

With this head, python3 -m pytest -q tests gives 245 passed. No test reads the entry title or the human-evidence text, so the retitle needed no test change.

Evidence

Base SHA: 849e8cf
Head SHA: 18424a8

python3 -m pytest -q tests                                  -> 245 passed
python3 tools/watchdog.py --root <this clone> --report-only -> Total: 0 finding(s) (decisions, public extract, shared agent rules, workflow policy); 0 reviews due
python3 tools/check_decisions.py --decisions decisions.yaml --maintainers maintainers.yaml --validate-only
                                                            -> decisions: 30 loaded, 26 recorded and scanned, 1 open, 3 superseded
bash rollout/verify.sh (at a6948e9)                         -> Tests executed: 245 of 245 (skipped 0); PASS: all detected verification stages

Consumer impact, from main of each repository scanned with the register before and after this change. These are new findings in other repositories, reported here and not fixed:

  • openamr-platform-sw @6be7439: +5 NAV-LIDAR findings for the old LiDAR pose ("0.335 ... 0.18"):

    • docs/navigation/01_architecture.md:89
    • docs/troubleshooting/diagnostics.md:81
    • ros2/src/openamrobot_bringup/README.md:140
    • ros2/src/openamrobot_bringup/launch/real_bringup.launch.py:70 and :71

    chore: navigation LiDAR is the RPLIDAR S3 (P-03 rev18.4 item 13) openamr-platform-sw#45 labels all five as Gate A unit.

  • openamr-platform-hw @169a613: +1 NAV-LIDAR finding at electrical/sensors/lidar.md:34.

  • openamr-platform-fw, openamrobot-docs, openamr-upperbody-sw, openamr-upperbody-hw and openamrobot-manipulation: no change.

  • The .xacro and .urdf scope in the follow-up adds no findings on main of openamr-platform-sw, openamr-platform-hw, openamr-platform-fw or openamrobot-docs.

Dependencies

None.

Safety impact

None. Register text, checker patterns and tests only. The ultrasonic and ToF sensors are recorded as layout and frame values; nothing here describes them as safety devices.

STATE.md

No change: this repository has no STATE.md, and the task limited the change to the listed register entries.

Not verified

  • No value was checked against the Rev B panel drawing, option B drawing sheet 2 rev A, the URDF, the LiDAR mount or the robot. The scan proves textual consistency only.
  • The decision itself has no source document in the plan set yet (P-03 rev19.0 is pending), and the "Changing a decision" process (change request issue, owner approval) has not been completed.
  • No ICM-42688-P WHO_AM_I boot log, Gate A test log or STM32 go/no-go record has been reviewed; the new evidence text only names them.
  • bash rollout/verify.sh was not re-run on 3d3c0c4; the pytest suite and the watchdog report were.
  • The consumer findings in openamr-platform-hw are not fixed.

AI disclosure

Claude Code (Anthropic) edited decisions.yaml and the tests from the decision owner's change list, regenerated the WATCHDOG.md table with the repository tool, ran the commands above and drafted this description. Needs human review.

Contribution terms

  • Every commit is signed off under the DCO.
  • I am covered by an accepted Contributor Agreement. (to be confirmed by the author)
  • Third-party material is identified with source and licence.
  • No confidential, personal, credential or export-controlled information is included.
  • No partner, customer or private person is named; the application is Use_Case_1.

🤖 Generated with Claude Code

https://claude.ai/code/session_01E4uoP2BE9MeeJDGK9EYzqD

BotshareAI added a commit to openAMRobot/openamr-platform-sw that referenced this pull request Oct 12, 2026
Mark the measured base_to_lidar static TF (x 0.335, z 0.18, yaw pi) as
the Gate A unit in real_bringup.launch.py (comment and call), the
bringup README, the architecture TF tree and the diagnostics notes.
Values unchanged. Matches the NAV-LIDAR check in openAMRobot/.github#46;
the 2.0 pose is lidar_link (0.330, 0, 0.124), yaw pi.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E4uoP2BE9MeeJDGK9EYzqD
Signed-off-by: Alex Reznichenko <info@botshare.ai>
Base automatically changed from decisions-rev18.9 to main October 12, 2026 18:19
BotshareAI and others added 2 commits October 12, 2026 18:28
… mount

Record the Alex decision of 2026-10-12 (to be recorded in P-03 rev19.0):
four MB7060 and two TF-Luna cliff sensors, Gemini 336L at 142.5 mm,
ICM-42688-P as the 2.0 IMU with imu_link at x 0.195 m, the column axis
at x +0.060 (bp000) and +0.110 (bp050), the LiDAR spacer mount and
pose, and the new NEAR-FIELD-FRAMES entry. Superseded values move to
supersedes. Tests cover each added, changed or removed check; the
WATCHDOG.md accepted-words table is regenerated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E4uoP2BE9MeeJDGK9EYzqD
Signed-off-by: Alex Reznichenko <info@botshare.ai>
BASE-CONTROLLER-GATES is titled "Base-controller gates and the 2.0 IMU"
and its human evidence names the ICM-42688-P WHO_AM_I 0x47 boot log.
NAV-LIDAR applies_to.files gains **/*.xacro and **/*.urdf, with a test
that a 0.335 / 0.18 LiDAR origin in a model file is detected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E4uoP2BE9MeeJDGK9EYzqD
Signed-off-by: Alex Reznichenko <info@botshare.ai>
@BotshareAI
BotshareAI force-pushed the decisions-2026-10-12-sensors branch from 3d3c0c4 to 18424a8 Compare October 12, 2026 18:29
@BotshareAI
BotshareAI marked this pull request as ready for review October 12, 2026 18:32
@BotshareAI
BotshareAI merged commit 13796dc into main Oct 12, 2026
6 checks passed
@BotshareAI
BotshareAI deleted the decisions-2026-10-12-sensors branch October 12, 2026 18:32
BotshareAI added a commit to openAMRobot/openamr-platform-sw that referenced this pull request Oct 13, 2026
* chore: navigation LiDAR is the RPLIDAR S3 (P-03 rev18.4 item 13)

- openamrobot_drivers: switch the LiDAR driver from rplidar_ros to Slamtec
  sllidar_ros2 (sllidar_node). New launch argument lidar_model: s3 (default,
  OpenAMRobot 2.0; serial 1000000 baud, DenseBoost, angle_compensate, per
  upstream sllidar_s3_launch.py at 34300099) or a1 (legacy, existing robot;
  115200 baud, scan mode Standard as used so far). Other values are rejected.
  frame_id lidar_link, /scan, respawn kept; lidar_port default unchanged
  (existing unit's CP2102 by-id path, to confirm on the S3 unit).
- package.xml: exec_depend rplidar_ros -> sllidar_ros2 (no Jazzy binary;
  build from source).
- Add a launch-introspection test for the model selection.
- Docs and comments: the A1 stays as legacy (existing robot) where they
  describe measured history; LiDAR-dependent values are unchanged and to be
  retuned on the S3 (laser_max_range 12.0 kept, comment updated).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DeSLcD827exxSw3xL9zyiU
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* drivers: lidar_model defaults to a1 until the S3 is mounted; bringup passes it through

- openamrobot_drivers: lidar_model default is a1 (RPLIDAR A1, legacy (existing
  robot)) until the RPLIDAR S3 is physically mounted; s3 stays a prepared choice
  with unchanged settings. The default flips to s3 in the change that mounts the S3.
- openamrobot_bringup real_bringup.launch.py declares lidar_model (choices a1/s3,
  default a1) and passes it to the drivers include via launch_arguments.
- Tests: drivers default starts exactly one sllidar_node with A1 params; s3 still
  selectable; new bringup test checks the declaration and the pass-through.
- Docs/READMEs no longer claim s3 is the default.

Signed-off-by: Alex Reznichenko <info@botshare.ai>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DeSLcD827exxSw3xL9zyiU

* docs: label the 0.335 / 0.18 LiDAR pose as the Gate A unit

Mark the measured base_to_lidar static TF (x 0.335, z 0.18, yaw pi) as
the Gate A unit in real_bringup.launch.py (comment and call), the
bringup README, the architecture TF tree and the diagnostics notes.
Values unchanged. Matches the NAV-LIDAR check in openAMRobot/.github#46;
the 2.0 pose is lidar_link (0.330, 0, 0.124), yaw pi.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E4uoP2BE9MeeJDGK9EYzqD
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* drivers, bringup: pinned sllidar_ros2 install path and hardware-free CI

Review point 1: ros2/src/openamrobot_drivers/README.md documents the
standalone install of Slamtec sllidar_ros2 at commit
34300099fadfc772965962dec837bf436706188f: checkout, rosdep, colcon build
and overlay commands, and the expected executables. This repository has
no .repos file; the manifest entry for the same commit is proposed in
openamrobot-manifest PR #11.

Review point 2: new workflow drivers-bringup-tests.yml (ros:jazzy-ros-base,
actions pinned to commit SHAs). Job drivers-bringup-launch-tests builds
sllidar_ros2 at the pinned commit, builds openamrobot_drivers and
openamrobot_bringup, runs the seven driver and two bringup launch tests
(default a1, s3, invalid model rejected, lidar_model passed through) and
fails unless exactly nine tests ran. Job drivers-bringup-lint reports the
ament flake8, pep257 and copyright tests per package in its own job;
openamrobot_bringup has lint findings on main that predate it.

Findings introduced by this branch are fixed: the merged base_to_lidar
line is wrapped (E501), the two new launch test files carry the MIT
header, and the lidar comment in real_bringup is labelled Gate A unit
(Watchdog NAV-LIDAR).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KRaT7dAzwGzf5nNYyN7KW5
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* drivers: state the Docker image is simulation only

The Docker quickstart copies only ros2/src and does not fetch
sllidar_ros2, so it does not install the real LiDAR driver. Say so next
to the pinned install path (review point 1).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KRaT7dAzwGzf5nNYyN7KW5
Signed-off-by: Alex Reznichenko <info@botshare.ai>

---------

Signed-off-by: Alex Reznichenko <info@botshare.ai>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant