
Комментарии 7
Я правильно понимаю, что вы по сути взяли робота из Китая и перепрошили его (а-ля, как jailbreak на IPhone) для того, чтобы он работал на вашей инфраструктуре? Это ли не пиратство? Вендор в целом дал разрешения на все указанные в статье манипуляции?
Не совсем. Робота не перепрошивали и чужое ПО не копировали. На нём изначально стоят Linux, ROS и SDK, а мы установили собственный Edge и backend, сохранив штатные контроллеры и навигацию.
Это не iPhone, а промышленная платформа, которую обычно и покупают для интеграции и доработки. Клиент законно приобрёл робота, но производитель не предоставил ни нормальной документации, ни поддержки, ни готовности к работе вне Китая. Довести такую платформу до реальной эксплуатации и есть работа интегратора. Называть это пиратством некорректно.
А даже если бы и перепрошили, то какие проблемы? Право собственности на робота у производителя абсолютно безусловно закончилось в момент продажи - и то, что он считает иначе это сугубо его личные проблемы, не подкрепленные ни моральными соображениями, ни копирайтными законами.
Ребят, я без претензий. Просто для меня «мы купили физического робота» ≠ «мы получили право делать с любым ПО внутри него всё, что хотим».
В статье прямо сказано:
в SDK нашли
SshClientUtil, извлекли зашифрованные константы логина и пароля, восстановили алгоритм расшифровки и получили учётную записьnvidia.
Вот это уже не просто интеграция API. Само исследование SDK может быть допустимо: правомерный пользователь ПО имеет право изучать его функционирование. Но ст. 1280 ГК РФ отдельно ограничивает декомпиляцию и использование полученной информации целями совместимости. (КонсультантПлюс)
Ну и тут возникает вопрос: Для чего именно был извлечён пароль?
Если:
«нам нужно было понять протокол взаимодействия и написать независимый софт»
это одна ситуация.
Если:
«мы нашли в чужом SDK секрет и использовали его для получения административного доступа к системе»
это уже гораздо менее очевидная история.
Кроме того есть вопросы к получению доступа через уязвимость JDWP, к тому как получили sudo, Docker и фактически root-доступ, изменение штатных файлов / конфигурации и так далее...
При покупке робота мы не подписывали лицензионных соглашений и не принимали EULA. Вместе с оборудованием получили только отгрузочные документы: никаких условий, запрещающих настройку, доступ к установленному Linux или интеграцию со своим ПО, производитель нам не предоставил.
Доступ использовался исключительно на принадлежащем клиенту роботе, чтобы обеспечить его штатную работу и совместимость с нашей системой. Мы не копировали и не распространяли ПО производителя, не обходили платные функции и не получали доступ к чужим устройствам. Поэтому называть такую интеграцию «пиратством» оснований не вижу. Авторское право на ПО, конечно, сохраняется, но это не означает автоматического запрета владельцу настраивать купленное оборудование.
И ещё важная фактическая поправка: SDK мы не декомпилировали. Это поставленный вместе с роботом комплект для интеграции, с которым и работали по назначению.
При этом робот имеет четыре камеры, лидары и постоянный непрозрачный LTE-канал в китайское облако. Мы не могли достоверно установить, какие именно данные туда уходят. Если передаются изображения людей или иные персональные данные, возникают уже вопросы к оператору и требованиям о трансграничной передаче данных. Поэтому перевод управления и телеметрии в подконтрольную клиенту инфраструктуру был не «пиратством», а одной из основных задач проекта.
На мокрой траве проблема глубже, чем буксование: энкодеры колёс продолжают считать обороты, одометрия расходится с реальностью, и фильтр локализации молча дрейфует по карте. Робот к этому моменту не "застрял" – он перестал понимать, где стоит. Отключение привода при пробуксовке спасает и моторы от перегрузки по току, и SLAM от рассинхронизации.
Именно так и есть. Поэтому пришлось переписать эту часть. Работа колес на значит перемещение робота. Мы Поправили эту часть. Дополнительно сделали зоны пониженной проходимости на карте. В этих зонах роботу запрещено разворачиваться на месте. Разворот на маршрут он должен делать по дуге, если есть место, или как автомобиль на узкой дороге - резкими итерациями вперёд назад, чтобы не завязнуть. Кроме того этой зоне дали большую стоимость, чтобы робот предпочитал ездить по дорожкам, если есть дорожки, а не напрямую. Фактически написали плагин у планировщику и SDK для изменения поведения.
Робот доставщик дороже автомобиля, мокрая трава и открытый JDWP