Обновить

Робот доставщик дороже автомобиля, мокрая трава и открытый JDWP

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели5.9K
Всего голосов 10: ↑10 и ↓0+14
Комментарии7

Комментарии 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 для изменения поведения.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации