Проверяй наличие файлов и корректность вводимых путей. Интереса ради загрузил майн, проверил - всё сработало, как и задумано:
Управляющий скрипт /home/send.lua:
Микропрограмма-ресивер для робота /home/eeprom.lua:
Исполняемый код, отсылаемый роботам по сети /home/robot.lua:
Команда для отсылки:
send robot.lua
Результат:
Движение робота реализуется самим роботом, а не OpenOS. Как правило, любая ОС в OpenComputers - это софтверная оболочка, функционирующая поверх аппаратной части, и предоставляющая набор библиотек, упрощающих разработку софта. Например, в случае с роботами OpenOS оборачивает компонент robot в библиотеку robot, предоставляющую набор шорткатов. То же самое и с глобальной функцией require - её попросту нет в "голых" роботах, управляемых из-под EEPROM
Использовать ОС крайне удобно, когда речь идет об одном роботе, хранящем пользовательские скрипты и управляемом напрямую через экран/клавиатуру. Однако в случае с роем такое решение контр-продуктивно, т. к. любая ОС потребляет ресурсы и требует крафта более дорогостоящих компонентов - в частности, планок памяти и жёстких дисков. Это всё равно что ставить Debian на сеть устройств для капельного полива домашних растений - ну то есть да, это возможно, а зачем?
Разумнее прибегнуть к концепции микропрограмм на EEPROM, которые относительно дёшевы в плане крафта, а профит в виде освободившихся слотов под компоненты существенный. Заодно можно получить интересный опыт по "низкоуровневой" разработке под опенкомпы:
-- Робот с OpenOS
local robot = require("robot")
robot.moveUp()
robot.turnRight()
robot.swing()
-- Робот с EEPROM
local robot = component.proxy(component.list("robot")())
robot.move(1)
robot.turn(true)
robot.swing(3)
Таблицы component/computer/robot/unicode/bit32 являются суперглобальными и доступны сразу при запуске микропрограммы EEPROM, однако во время инициализации OpenOS они маскируются из соображений консистентности кода. Поэтому при работе из-под EEPROM вызов require не требуется, а из-под OpenOS уже требуется
Верстаки, контроллеры инвентаря и ёмкости - это аппаратные компоненты, функционирующие самостоятельно и не требующие OpenOS. Любая ОС - это просто средство доступа к компонентам, причём одно из многих:
-- Робот с OpenOS
local component = require("component")
local sides = require("sides")
local crafting = component.crafting
local inventoryController = component.inventory_controller
local tankController = component.tank_controller
crafting.craft(10)
inventoryController.dropIntoSlot(sides.front, 10)
tankController.drain()
-- Робот с EEPROM
local crafting = component.proxy(component.list("crafting")())
local inventoryController = component.proxy(component.list("inventory_controller")())
local tankController = component.proxy(component.list("tank_controller")())
crafting.craft(10)
inventoryController.dropIntoSlot(3, 10)
tankController.drain()
Как видно, разница в коде несущественна, отличие лишь в способе получения доступа к ним и в наличии упрощающих библиотек типа sides
Чтобы прояснить ситуацию: никто не призывает тебя использовать голый EEPROM вместо классического подхода с HDD/OpenOS. Разрабатывай так, как считаешь комфортным и оптимальным для себя - я лишь указал один из способов решения поставленной задачи, который использовал при выживании, и который сам считаю оптимальным
Если тебе требуется весь богатый функционал, поставляемый OpenOS для роботов, ничто не мешает модифицировать скрипт-ресивер таким образом, чтобы он работал из-под OpenOS: