diff --git a/WATCHDOG.md b/WATCHDOG.md index 1cce153..6346ca7 100644 --- a/WATCHDOG.md +++ b/WATCHDOG.md @@ -121,8 +121,8 @@ identical to the register. | Decision | Status | Accepted on the same line (any one; case does not matter) | |---|---|---| -| BOM-ISSUE-IN-FORCE | recorded | *BOM Issue 7.3 is the canonical hardware BOM*: `supersed (superseded, supersedes)`, `replaced`, `previous`, `earlier`
*B-01 is superseded*: `supersed (superseded, supersedes)`
*BOM Issue 7.3 is the canonical hardware BOM*: `supersed (superseded, supersedes)`, `replaced`, `previous`, `earlier`, `historical`
*superseded source still cited (P-03-rev18.1 line 7); cite P-03-rev18.7*: no label; correct the line or add a decision-allow marker | -| MAST-INSTALL-HEIGHT | superseded | `supersed (superseded, supersedes)`, `legacy`, `historical`, `earlier`, `previous`, `rev 18.1 to rev 18.6` | +| BOM-ISSUE-IN-FORCE | recorded | *BOM Issue 7.6 is the canonical hardware BOM*: `supersed (superseded, supersedes)`, `replaced`, `previous`, `earlier`
*B-01 is superseded*: `supersed (superseded, supersedes)`
*BOM Issue 7.6 is the canonical hardware BOM*: `supersed (superseded, supersedes)`, `replaced`, `previous`, `earlier`, `historical`
*superseded source still cited (P-03-rev18.1 line 7); cite P-03-rev18.9*: no label; correct the line or add a decision-allow marker | +| MAST-INSTALL-HEIGHT | superseded | `supersed (superseded, supersedes)`, `legacy`, `historical`, `earlier`, `previous`, `rev 18.1 to rev 18.6`, `lift`, `L1350`, `extended`, `full stroke` | | MAST-POSITIONS | superseded | `supersed (superseded, supersedes)`, `legacy`, `historical`, `earlier`, `previous`, `rev 18.1 to rev 18.6` | | MAST-TOP-HEIGHT | superseded | `supersed (superseded, supersedes)`, `legacy`, `historical`, `earlier`, `previous`, `rev 18.1 to rev 18.6` | | MAX-ASSEMBLED-HEIGHT | recorded | *maximum assembled height is 1700 mm*: no label; correct the line or add a decision-allow marker
*1700 mm is the assembled-height envelope, not a shoulder height or mast position*: `max`, `envelope`, `not shoulder, not the shoulder`, `higher`, `supersed (superseded, supersedes)` | @@ -145,7 +145,9 @@ identical to the register. | COMPUTE | recorded | `legacy`, `historical`, `removed`, `supersed (superseded, supersedes)`, `Gate A`, `previous`, `earlier` | | NAV-LIDAR | recorded | *the 2.0 navigation LiDAR is the RPLIDAR S3 (S3M1-R2); the Hokuyo UST-10LX was dropped*: `supersed (superseded, supersedes)`, `dropped`, `legacy`, `historical`
*the 2.0 navigation LiDAR is the RPLIDAR S3 (S3M1-R2); label RPLIDAR A1 material as legacy*: `legacy`, `Gate A`, `existing robot`, `historical`, `replaced` | | RELEASE-MILESTONES | recorded | *the OpenAMRobot 2.0 final release is 18 December 2026*: `supersed (superseded, supersedes)`, `previous`, `earlier`, `historical`
*there is no v0.2 release; development cycle 2 ends 20 November 2026 with v2.0.0-rc.1, and v2.0.0 follows on 18 December 2026*: `supersed (superseded, supersedes)`, `historical`, `earlier`, `previous`
*development cycle 2 ends 20 November 2026 with v2.0.0-rc.1, not 13 November*: `supersed (superseded, supersedes)`, `historical`, `earlier`, `previous` | -| LIFT | recorded | *the lift is approved in principle for 2.0*: `supersed (superseded, supersedes)`, `historical`, `earlier`, `previous`, `no longer`, `rev 18.1 to rev 18.6`
*the fixed mast is no longer the baseline; the lift is approved in principle*: `supersed (superseded, supersedes)`, `historical`, `earlier`, `previous`, `legacy`, `replace (replaced, replacement)`, `instead of`, `no longer`, `rev 18.1 to rev 18.6`
*the lift is not deferred to 3.0; it is approved in principle for 2.0*: `supersed (superseded, supersedes)`, `historical`, `earlier`, `previous`, `no longer`, `rev 18.1 to rev 18.6` | +| LIFT | recorded | *the lift is approved in principle for 2.0*: `supersed (superseded, supersedes)`, `historical`, `earlier`, `previous`, `no longer`, `rev 18.1 to rev 18.6`
*the fixed mast is no longer the baseline; the lift is approved in principle*: `supersed (superseded, supersedes)`, `historical`, `earlier`, `previous`, `legacy`, `replace (replaced, replacement)`, `instead of`, `no longer`, `rev 18.1 to rev 18.6`
*the lift is not deferred to 3.0; it is approved in principle for 2.0*: `supersed (superseded, supersedes)`, `historical`, `earlier`, `previous`, `no longer`, `rev 18.1 to rev 18.6`
*the lift is the DOLD Hexalift V4 350 mm, BS-HM240G350530-MFF24*: `supersed (superseded, supersedes)`, `historical`, `earlier`, `previous`, `replac`, `legacy`, `rev ?18.[1-7]`
*the lift base plate has two fore-aft positions, centre and +50 mm*: `supersed (superseded, supersedes)`, `historical`, `earlier`, `previous`, `replac`, `no longer`, `rev ?18.[1-8]` | +| ARM-MOUNT | recorded | `not used`, `removed`, `upstream`, `no OpenArm body`, `supersed (superseded, supersedes)`, `historical` | +| CONFIG-IDS | recorded | `supersed (superseded, supersedes)`, `replac`, `historical`, `legacy`, `no longer` | | NO-SUSPENSION | recorded | `3.0`, `no`, `not fitted`, `without` | | DRIVE-TRACK | open | not scanned until the decision is taken | diff --git a/decisions.yaml b/decisions.yaml index 8916650..e76dada 100644 --- a/decisions.yaml +++ b/decisions.yaml @@ -53,8 +53,8 @@ schema_version: 1 in_force: - source: P-03-rev18.7 - date: 2026-10-06 + source: P-03-rev18.9 + date: 2026-10-09 sources: P-03-rev18.2: @@ -67,8 +67,14 @@ sources: P-03-rev18.4: title: P-03 Decision Addendum, revision 18.4 (earlier revision) evidence: plan-set document, not held in any repository; cited by item + P-03-rev18.9: + title: P-03 Decision Addendum, revision 18.9, 9 October 2026 (the addendum in force) + evidence: plan-set document, not held in any repository; cited by item + P-03-rev18.8: + title: P-03 Decision Addendum, revision 18.8, 8 October 2026 (earlier revision) + evidence: plan-set document, not held in any repository; cited by item P-03-rev18.7: - title: P-03 Decision Addendum, revision 18.7, 6 October 2026 (the addendum in force) + title: P-03 Decision Addendum, revision 18.7, 6 October 2026 (earlier revision) evidence: plan-set document, not held in any repository; cited by item P-03-rev18.6: title: P-03 Decision Addendum, revision 18.6 (earlier revision) @@ -85,8 +91,11 @@ sources: P-00-rev18.1: title: P-00 Master Coordination Plan, revision 18.1 evidence: plan-set document, not held in any repository; cited by text line + BOM-Issue-7.6: + title: OpenAMRobot 2.0 Detailed Hardware BOM, Issue 7.6, 9 October 2026 (canonical per P-03 rev18.9) + evidence: not held in any repository; provenance only, CI never reads it BOM-Issue-7.3: - title: OpenAMRobot 2.0 Detailed Hardware BOM, Issue 7.3 (canonical per P-03 rev18.7) + title: OpenAMRobot 2.0 Detailed Hardware BOM, Issue 7.3 (earlier issue; canonical per P-03 rev18.7) evidence: not held in any repository; provenance only, CI never reads it BOM-Issue-7: title: OpenAMRobot 2.0 Detailed Hardware BOM, Issue 7, 27 September 2026 (earlier issue; canonical per P-03 rev18.2 item 7 until Issue 7.3) @@ -110,16 +119,17 @@ exclude: decisions: - id: BOM-ISSUE-IN-FORCE title: Canonical hardware BOM issue for OpenAMRobot 2.0 - summary: "BOM Issue 7.3 is the canonical OpenAMRobot 2.0 hardware BOM." - fix_hint: "Name Issue 7.3 as canonical, or label older issues (Issue 6, Issue 7, B-01) as superseded." + summary: "BOM Issue 7.6 is the canonical OpenAMRobot 2.0 hardware BOM." + fix_hint: "Name Issue 7.6 as canonical, or label older issues (Issue 6, Issue 7 to 7.5, B-01) as superseded." kind: value status: recorded - value: OpenAMRobot 2.0 Detailed Hardware BOM, Issue 7.3 + value: OpenAMRobot 2.0 Detailed Hardware BOM, Issue 7.6 unit: none - date: 2026-10-06 - review_by: 2026-11-17 - source: {document: P-03-rev18.7, item: BOM issue in force} + date: 2026-10-09 + review_by: 2026-11-20 + source: {document: P-03-rev18.9, item: "item 16 (BOM Issue 7.6 carries the change)"} supersedes: + - {value: Issue 7.3, source: P-03-rev18.7 BOM issue in force} - {value: Issue 7, source: P-03-rev18.2 item 7} - value: Issue 6, or an explicitly approved successor source: P-03-rev18.1 line 7 @@ -129,15 +139,15 @@ decisions: check: - pattern: '(?P(?:canonical|in force|of record)[^\n]{0,40}\bIssue\s*6\b|\bIssue\s*6\b[^\n]{0,40}\b(?:canonical|in force|of record))' unless: 'supersed|replaced|previous|earlier' - message: BOM Issue 7.3 is the canonical hardware BOM (P-03 rev18.7) + message: BOM Issue 7.6 is the canonical hardware BOM (P-03 rev18.9) - pattern: '(?PB-01[^\n]{0,60}\b(?:canonical|current))' unless: 'supersed' message: B-01 is superseded - - pattern: '(?P(?:canonical|in force|of record)[^\n]{0,40}\bIssue\s*7(?!\.3)(?:\.\d+)?\b|\bIssue\s*7(?!\.3)(?:\.\d+)?\b[^\n]{0,40}\b(?:canonical|in force|of record))' + - pattern: '(?P(?:canonical|in force|of record)[^\n]{0,40}\bIssue\s*7(?!\.6)(?:\.\d+)?\b|\bIssue\s*7(?!\.6)(?:\.\d+)?\b[^\n]{0,40}\b(?:canonical|in force|of record))' unless: 'supersed|replaced|previous|earlier|historical' - message: BOM Issue 7.3 is the canonical hardware BOM (P-03 rev18.7) + message: BOM Issue 7.6 is the canonical hardware BOM (P-03 rev18.9) verification: - machine: Issue 6, Issue 7 (other than 7.3) or B-01 presented as the canonical BOM; citations of P-03 rev18.1 line 7 + machine: Issue 6, Issue 7 (other than 7.6) or B-01 presented as the canonical BOM; citations of P-03 rev18.1 line 7 human: {reviewer: platform-lead, evidence: the BOM file header and issue number in the released BOM} owner: platform-lead @@ -167,7 +177,7 @@ decisions: item: item 8 decision: LIFT citation: '(?P\bmast_1350\b[^\n]{0,60}\b(?:baseline|installation)|(?:shoulder[- ]axis|installation) height\s*(?:at|of|is|:)?\s*1350\s*mm)' - unless: 'supersed|legacy|historical|earlier|previous|rev ?18\.[1-6]\b' + unless: 'supersed|legacy|historical|earlier|previous|rev ?18\.[1-6]\b|\blift\b|L1350|extended|full stroke' verification: machine: text still presenting the superseded fixed-mast value as current (citation pattern) human: {reviewer: platform-lead, evidence: URDF/Xacro mast configuration and the general arrangement drawing at 1350 mm} @@ -204,7 +214,7 @@ decisions: - id: MAST-TOP-HEIGHT title: Mast top height above the floor (own COTS mast, one MISUMI HFS6-60120 profile; superseded by LIFT) summary: "Superseded: the 1500 mm mast top on an HFS6-60120 profile was replaced by LIFT." - fix_hint: "Describe the lift, or label the mast-top or HFS6-60120 text as superseded or historical." + fix_hint: "Describe the lift; HFS6-60120 is now the short arm profile on the lift (ARM-MOUNT), not a mast." kind: value status: superseded value: 1500 @@ -221,7 +231,7 @@ decisions: document: P-03-rev18.7 item: item 8 decision: LIFT - citation: '(?P\bmast top[^\n]{0,20}\b1500\s*mm|\bHFS6-60120\b)' + citation: '(?P\bmast top[^\n]{0,20}\b1500\s*mm|\bHFS6-60120\b[^\n]{0,60}\b(?:mast|centre bracket|center bracket)\b)' unless: 'supersed|legacy|historical|earlier|previous|rev ?18\.[1-6]\b' verification: machine: text still presenting the superseded fixed-mast value as current (citation pattern) @@ -275,7 +285,7 @@ decisions: - pattern: '(?P\bdeck top\b[^\n]{0,25}?\b(?!294\b)\d{3}\s*mm)' unless: 'supersed|historical|legacy|earlier|previous' message: the steel chassis deck top is 294 mm above the floor (P-03 rev18.7 item 15) - - pattern: '(?P\bbase[- ]plate top(?: face)?\b[^\n]{0,25}?\b(?!304\b)\d{3}\s*mm)' + - pattern: '(?P\bbase[- ]plate top(?: face)?\b\s*(?:is\s*|at\s*|of\s*|=\s*|:\s*)?(?:z\s*=?\s*)?(?!304\b)\d{3}\s*mm)' unless: 'supersed|historical|legacy|earlier|previous' message: the lift base-plate top face is 304 mm above the floor, the reference for lift and shoulder heights (P-03 rev18.7 item 15) verification: @@ -553,8 +563,9 @@ decisions: status: recorded values: - Stereolabs ZED Mini, SKU ZED-121210, supplied with the OpenArm 2.0 set - - mounted on the lift carriage - - pitch 15 to 35 degrees down in 5 degree steps, baseline 25 degrees + - mounted on the lift carriage, held at its ends by the mount supplied with the OpenArm set, on a pitch bracket on the arm-profile top + - lens 0.022 m ahead of and 0.223 m above the arm mount point, centred; 1223 mm at L1000 and 1573 mm at L1350 + - pitch 15 to 35 degrees down in 5 degree steps about the lens line, baseline 25 degrees unit: none date: 2026-10-06 review_by: 2026-11-17 @@ -792,38 +803,105 @@ decisions: - id: LIFT title: Lift approved in principle for OpenAMRobot 2.0 - summary: "The lift is approved in principle for 2.0; shoulder axis 1000 to 1350 mm; release gates open." - fix_hint: "Describe the lift as approved in principle, or label fixed-mast and 3.0 lift text as superseded." + summary: "Lift approved in principle: DOLD Hexalift V4 350 mm, shoulder 1000 to 1350 mm, base plate centre or +50 mm." + fix_hint: "Describe the DOLD V4 lift on a two-position base plate; label V1, five positions and fixed-mast text as superseded." kind: configuration status: recorded values: - lift approved in principle - - DOLD Hexalift V1 350 mm primary; TiMOTION TL3 400 mm fallback - - shoulder axis 1000 to 1350 mm - - base plate fore-aft positions centre, +50, +100, +150 and +200 mm + - DOLD Hexalift V4 350 mm (800 N push, 18 mm/s, order code BS-HM240G350530-MFF24) primary; TiMOTION TL3 400 mm fallback + - column 530 mm retracted, 880 mm extended, mounted with its 240 mm side fore-aft + - shoulder 1000 to 1350 mm (304 + 530 or 880 + 166 mm), see ARM-MOUNT + - lift base plate fore-aft positions centre and +50 mm (bp000, bp050) - lift motion only in the stowed or carry safe pose with the base stopped - hold-and-move limits 0.05 m/s (drawer reversal) and 0.3 m/s (carrying) - - "release gates: holding on E-stop and power loss, supplier CAD, base-plate geometry and the CAN3 lift interface (items 6, 8, 14, 15)" + - "release gates: written DOLD holding on E-stop and power loss, supplier CAD, weighed mass, the CAN3 lift interface and the F2S rerun" unit: none - date: 2026-10-06 - review_by: 2026-11-17 - source: {document: P-03-rev18.7, item: "item 8; release gates items 6, 8, 14, 15"} + date: 2026-10-09 + review_by: 2026-11-20 + source: {document: P-03-rev18.9, item: "items 16 and 18; motion rules item 15; release gates items 6, 8, 14, 15, 16"} supersedes: - {value: "Lift removed from OpenAMRobot 2.0; fixed mast; lift on the 3.0 roadmap (former entry LIFT-REMOVED)", source: P-00-rev18.1 txt 18} + - {value: "DOLD Hexalift V1 350 mm primary", source: P-03-rev18.7 item 15} + - {value: "base plate positions centre, +50, +100, +150 and +200 mm", source: P-03-rev18.7 item 15} applies_to: {repositories: ["*"], files: ["**/*.md", "**/*.yaml", "**/*.yml", "**/*.html", "**/package.xml", "**/*.xacro", "**/*.urdf"]} check: - pattern: '(?P\bno (?:linear |actuated )?lift\b(?=\s*(?:[.,;:)]|$|(?:in|for|on)\b)))' unless: 'supersed|historical|earlier|previous|no longer|rev ?18\.[1-6]\b' - message: the lift is approved in principle for 2.0 (P-03 rev18.7 item 8) + message: the lift is approved in principle for 2.0 (P-03 rev18.9) - pattern: '(?P\bfixed[- ]mast\b)' unless: 'supersed|historical|earlier|previous|legacy|replace|instead of|no longer|rev ?18\.[1-6]\b' - message: the fixed mast is no longer the baseline; the lift is approved in principle (P-03 rev18.7 item 8) + message: the fixed mast is no longer the baseline; the lift is approved in principle (P-03 rev18.9) - pattern: '(?P\blift\b[^\n]{0,40}\b(?:deferred|moved|postponed)\b[^\n]{0,25}\b3\.0\b|\blift\b[^\n]{0,15}\bin (?:OpenAMRobot )?3\.0\b|\blift (?:is |was )?removed\b|\blift\b[^\n]{0,40}\b(?:OpenAMRobot )?3\.0 scope\b|\b3\.0 lift\b)' unless: 'supersed|historical|earlier|previous|no longer|rev ?18\.[1-6]\b' - message: the lift is not deferred to 3.0; it is approved in principle for 2.0 (P-03 rev18.7 item 8) + message: the lift is not deferred to 3.0; it is approved in principle for 2.0 (P-03 rev18.9) + - pattern: '(?P\bHexalift V1\b|\bBS-HD240D350530\b|\bdold_v1_350\b)' + unless: 'supersed|historical|earlier|previous|replac|legacy|rev ?18\.[1-7]\b' + message: the lift is the DOLD Hexalift V4 350 mm, BS-HM240G350530-MFF24 (P-03 rev18.9 item 16) + - pattern: '(?P\bbp(?:100|150|200)\b|\bfive[- ](?:position|fore-aft|base[- ]plate)\b|\+100, \+150 and \+200)' + unless: 'supersed|historical|earlier|previous|replac|no longer|rev ?18\.[1-8]\b' + message: the lift base plate has two fore-aft positions, centre and +50 mm (P-03 rev18.9 item 18) + verification: + machine: text saying 2.0 has no lift, presenting a fixed mast as current, deferring the lift to 3.0, naming Hexalift V1 as current, or base-plate positions beyond +50 mm + human: {reviewer: platform-lead, evidence: "P-03 rev18.9 items 16 and 18, the option B drawing set and the release-gate records: DOLD holding on E-stop and power loss, supplier CAD, weighed mass, CAN3 lift interface, F2S rerun"} + owner: platform-lead + + - id: ARM-MOUNT + title: Shoulder datum and arm mount on the lift (option B) + summary: "Shoulder = height of openarm_{side}_base_link; arm mount 180 mm ahead of the column axis, y +/-31 mm." + fix_hint: "Attach the arm base links to the lift carriage as listed; the upstream openarm_body_link0 is not used." + kind: configuration + status: recorded + values: + - shoulder height is the height above the floor of the OpenArm arm mount point, frame openarm_{side}_base_link (J1_A interface); joint1 and joint2 have no vertical offset from it + - the upstream OpenArm body (openarm_body_link0, arm mounts at z 0.698 m) is not part of OpenAMRobot; the arm base links attach to the lift carriage + - arm mount points at y +/-0.031 m, roll, pitch and yaw 0, one 1 mm spacer under each J1_A plate; shoulder spacing 307 mm + - arm mount point 0.180 m ahead of the lift column axis and 0.166 m above the column top plate + - arm profile MISUMI HFS6-60120 (60 mm lateral, 120 mm fore-aft), 340 mm, end-tapped, standing on a 10 mm adapter plate on the column top + - column axis at bp000 on the drive axle (x 0 from base_link), 330 mm behind the chassis front edge; bp050 is +0.050 m + - calibrated lift stops L1000, L1175 and L1350 (shoulder height in mm); the lift height is joint state + unit: m + date: 2026-10-09 + review_by: 2026-11-20 + source: {document: P-03-rev18.9, item: "items 17 and 18"} + supersedes: + - {value: "fore-aft offset of the arm mount from the column axis 0 until CAD", source: P-03-rev18.8 item 17} + applies_to: {repositories: ["openamr-*", "openamrobot-*"], files: ["**/*.md", "**/*.yaml", "**/*.yml", "**/*.html", "**/*.xacro", "**/*.urdf"]} + check: + - pattern: '(?P(?:parent|attach\w*|mount\w*)[^\n]{0,40}\bopenarm_body_link0\b)' + unless: 'not used|removed|upstream|no OpenArm body|supersed|historical' + message: the upstream OpenArm body is not used; attach openarm_{side}_base_link to the lift carriage (P-03 rev18.9 item 17) + verification: + machine: text or a model that attaches the arms to the upstream openarm_body_link0 + human: {reviewer: software-lead, evidence: "URDF frame tree: openarm_{side}_base_link under the lift carriage at x +0.180, y +/-0.031; shoulder z = 1.000 + lift q"} + owner: platform-lead + + - id: CONFIG-IDS + title: Robot configuration identity + summary: "Configuration IDs: column, base_plate (bp000, bp050), head_pitch (hp15 to hp35), base_tilt; mast_id is gone." + fix_hint: "Use column, base_plate, head_pitch and base_tilt IDs; the lift height is joint state, not a configuration ID." + kind: configuration + status: recorded + values: + - column dold_v4_350 or tl3_400 + - base_plate bp000 or bp050 + - head_pitch hp15, hp20, hp25, hp30, hp35 (baseline hp25) + - base_tilt bt05, bt10, bt15 (baseline bt10) + - lift stops L1000, L1175, L1350 are calibration IDs; the lift height is joint state + unit: none + date: 2026-10-09 + review_by: 2026-11-20 + source: {document: P-03-rev18.9, item: "items 17 and 18"} + supersedes: + - {value: "mast_id (mast_1300 to mast_1450)", source: P-03-rev18.2 shoulder height} + applies_to: {repositories: ["openamr-*", "openamrobot-*"], files: ["**/*.md", "**/*.yaml", "**/*.yml", "**/*.xacro", "**/*.urdf", "**/*.launch.py", "**/*.py"]} + check: + - pattern: '(?P\bmast_id\b)' + unless: 'supersed|replac|historical|legacy|no longer' + message: mast_id is replaced by the column, base_plate, head_pitch and base_tilt IDs (P-03 rev18.9 item 17) verification: - machine: text saying 2.0 has no lift, presenting a fixed mast as the current baseline, or deferring the lift to 3.0 - human: {reviewer: platform-lead, evidence: "P-03 rev18.7 item 8 and the release-gate records: holding on E-stop and power loss, supplier CAD, base-plate geometry and the CAN3 lift interface"} + machine: mast_id used as a current configuration ID + human: {reviewer: software-lead, evidence: configuration hash inputs and dataset metadata carrying the four IDs} owner: platform-lead - id: NO-SUSPENSION diff --git a/profile/README.md b/profile/README.md index d87db8a..289f1ca 100644 --- a/profile/README.md +++ b/profile/README.md @@ -15,7 +15,7 @@ OpenAMRobot combines: - autonomous mobile robotics - dual-arm manipulation -- a lift for the arms, approved in principle for OpenAMRobot 2.0 (release gates still open) +- a lift for the arms, approved in principle for OpenAMRobot 2.0 (release gates still open): DOLD Hexalift V4 350 mm, shoulder 1000 to 1350 mm, lift base plate centre or +50 mm, arm profile 180 mm ahead of the column axis - AI-based perception - wearable embodied AI data collection - ROS 2 software infrastructure diff --git a/tests/test_check_decisions.py b/tests/test_check_decisions.py index e5ab32e..c092fba 100644 --- a/tests/test_check_decisions.py +++ b/tests/test_check_decisions.py @@ -383,12 +383,13 @@ def test_estop_recommendation(self): def test_bom_issue_in_force(self): self.assertEqual(self.ids("docs/a.md", "The canonical BOM is Issue 6.\n", "x"), ["BOM-ISSUE-IN-FORCE"]) self.assertEqual(self.ids("docs/a.md", "BOM per P-03 rev18.1 line 7.\n", "x"), ["BOM-ISSUE-IN-FORCE"]) - self.assertEqual(self.ids("docs/a.md", "Issue 7.3 is canonical; Issue 6 is superseded.\n", "x"), []) + self.assertEqual(self.ids("docs/a.md", "Issue 7.6 is canonical; Issue 6 is superseded.\n", "x"), []) - def test_bom_issue_7_3_in_force(self): - for text in ("The canonical BOM is Issue 7.\n", "BOM Issue 7.2 is the BOM of record.\n"): + def test_bom_issue_7_6_in_force(self): + for text in ("The canonical BOM is Issue 7.\n", "BOM Issue 7.2 is the BOM of record.\n", + "BOM Issue 7.3 is canonical.\n"): self.assertEqual(self.ids("docs/a.md", text, "x"), ["BOM-ISSUE-IN-FORCE"], text) - for text in ("BOM Issue 7.3 is canonical.\n", "Issue 7 was canonical until Issue 7.3 superseded it.\n"): + for text in ("BOM Issue 7.6 is canonical.\n", "Issue 7.3 was canonical until Issue 7.6 superseded it.\n"): self.assertEqual(self.ids("docs/a.md", text, "x"), [], text) def test_nav_lidar(self): @@ -422,13 +423,39 @@ def test_lift_approved_in_principle(self): "The linear lift is deferred to OpenAMRobot 3.0.\n", "Fixed mast (lift in 3.0), mounting plates.\n"): self.assertEqual(self.ids("docs/a.md", text, "x"), ["LIFT"], text) - for text in ("Lift approved in principle: DOLD Hexalift V1 350 mm primary, TiMOTION TL3 400 mm fallback.\n", + for text in ("Lift approved in principle: DOLD Hexalift V4 350 mm primary, TiMOTION TL3 400 mm fallback.\n", + "The Hexalift V1 was replaced by the V4 (P-03 rev18.8 item 16).\n", + "Base plate positions centre and +50 mm (bp000, bp050).\n", "Lift motion only in the stowed or carry safe pose with the base stopped.\n", "No lift motion while the base moves.\n", "The fixed mast is superseded by the lift (P-03 rev18.7 item 8).\n", "The lift column moves the shoulder axis from 1000 to 1350 mm.\n"): self.assertEqual(self.ids("docs/a.md", text, "x"), [], text) + def test_lift_v4_and_two_base_plate_positions(self): + for text in ("Lift: DOLD Hexalift V1 350 mm primary.\n", + "Column ID dold_v1_350.\n", + "Base plate: five fore-aft positions, centre to +200 mm.\n", + "Configurations bp000 to bp200, including bp150.\n", + "Positions centre, +50, +100, +150 and +200 mm.\n"): + self.assertEqual(self.ids("docs/a.md", text, "x"), ["LIFT"], text) + + def test_arm_mount_and_config_ids(self): + repo = "openamr-upperbody-sw" + self.assertEqual(self.ids("docs/a.md", "Attach the arm base links to openarm_body_link0.\n", repo), + ["ARM-MOUNT"]) + self.assertEqual(self.ids("docs/a.md", "The upstream openarm_body_link0 is not used.\n", repo), []) + self.assertEqual(self.ids("docs/a.md", "Select the robot with mast_id.\n", repo), ["CONFIG-IDS"]) + self.assertEqual(self.ids("docs/a.md", "mast_id is replaced by column and base_plate.\n", repo), []) + + def test_hfs6_arm_profile_is_current(self): + for text in ("Arm profile MISUMI HFS6-60120, 340 mm, on the lift adapter plate.\n", + "Base-plate top face, arm mount point 180 mm ahead of the column axis.\n", + "Shoulder-axis height 1350 mm at L1350 on the lift.\n"): + self.assertEqual(self.ids("docs/a.md", text, "x"), [], text) + self.assertEqual(self.ids("docs/a.md", "One HFS6-60120 profile bolted to the centre bracket as the mast.\n", "x"), + ["MAST-TOP-HEIGHT"]) + def test_datum_height_stack(self): for text in ("The steel chassis deck top is at 300 mm.\n", "Base-plate top face 310 mm above the floor.\n"): self.assertEqual(self.ids("docs/a.md", text, "x"), ["DATUM-HEIGHT-STACK"], text)