Вы не канал сбыта, а тот, кто внедряет и зарабатывает на внедрении. Значит нужны три вещи: понимание, что система сделает на чужом железе; уверенность, что данные остаются вашими; и названная граница ответственности.
Кинематика описывается URDF: звенья, шарниры, пределы, точки датчиков. Новый объект заводится файлом — не правкой нашего кода и не заявкой в нашу поддержку.
Связь с HAL идёт в две стороны по имени: как шарнир зовёт программа, так он зовётся и на пине. Никакой скрытой таблицы соответствий, известной только вендору.
Вы правите двойник — конфигурация стойки пересобирается из него. Нет расходящихся копий и нет «правьте ini руками, но осторожно».
Исполнитель — LinuxCNC, шина — EtherCAT. Форк мы не делаем и работаем со штатными механизмами. Следствие для вас: обученный наладчик остаётся нужен — он работает с тем же LinuxCNC и тем же HAL.
Тип автоматики объявляется у узла: наш язык шагов, релейная логика, событийные функциональные блоки. Практический смысл — ваш наладчик пишет на своём языке, не изучая наш.
Описание ячейки, обмен с заводскими системами, вход детали с допусками. Разобраны, цена оценена, приоритет назван — но пока не внедрены, и мы говорим это прямо.
Партнёру важнее знать границу, чем услышать «умеем всё»: по границе планируется работа, а по обещанию — только разочарование.
Сложная трёхмерная обработка поверхностей и тяжёлая пятиосевая — не наш предмет.
Своего геометрического ядра не пишем и не собираемся.
Многозвенные системы с управлением всем телом живут в другом стеке — мы не делаем вид, что заменяем его.
Ограничение там не в числе приводов, а в буквах координат; форк эту стену не переносит.
Наш предмет — вертикаль от браузера до серво плюс двойник как единственный источник правды. Остальное берём готовым либо не берём вовсе.
Обновление приходит штатным пакетом, а не «зайдите по ssh и подмените файл».
Наладочный контур судит по пинам и компонентам, а не по ответу ручки: «команда принята» и «ось поехала» различаются намеренно.
Локальный контур у оборудования продолжает работать при отсутствии канала связи.
У каждого шага явное условие завершения; дирижёр стоит на боксе, а не в облаке.
Провести её по вертикали целиком: описать оборудование двойником, породить программу, исполнить на железе, снять факт с пинов. Это тот же цикл, которым мы закрываем породы оборудования у себя, — он даёт проверяемый результат, а не презентацию.
Честно о цене входа: породы мы закрываем по одной, и на каждой находим расхождения между описанием и живым железом. Ваша ячейка не станет исключением. Разница в том, что мы говорим это заранее и чиним по факту, а не после подписания.