Для linux, если вы root-пользователь, а затем скопируйте его в терминал
apt-get install python3-dev mercurial
apt-get install libsdl-image1.2-dev libsdl2-dev libsdl-ttf2.0-dev
apt-get install libsdl-mixer1.2-dev libportmidi-dev
apt-get install python-numpy
pip3 install --user hg+http://bitbucket.org/pygame/pygame
Если вы не используете пользователя root, используйте sudo перед началом каждой строки.
Любая конкретная причина, по которой вы хотите, чтобы SF размещал клиента, а не наоборот?
Выполняя то, что вы предлагаете, я думаю, вы столкнетесь с большими проблемами, чтобы заставить SF найти эти устройства в вашей сети и отслеживать их, например, межсетевой экран, IP-адреса, NAT, плановое обслуживание, сбои, проблемы с подключением, если вы не планируете делать это вручную.
Из краткого описания, которое я видел в документах, предоставленных вами о сервере rosbridge я мог понять, что вы должны размещать его на сервере (например, с сервисом службы), и ваши устройства будут подключаться к нему, в этом случае ваши устройства должны были установить ROS, чтобы сделать это сообщение.
Что касается вашей озабоченности в отношении связи, сервисные сервисные услуги - это просто исполняемые программы, которые вы обычно запускаете на своей локальной машине, если они работают, скорее всего, будут работать на среде с сервисом, исходя из предпосылки, беспокоиться о внешнем доступе к кластеру (если в лазури или сети ork) и обнаружение службы.
На мой взгляд, вы должны использовать SF в качестве центральной точки связи, и каждое устройство будет подключаться к службам SF. Другим подходом было бы использование Azure IoT Hub для соединения связи между ними. Существует хороший Iot Hub + Service Fabric Sample , который может быть подходящим для ваших нужд.
Поскольку вы хотите избежать Azure, вы могли бы в этом случае заменить концентратор IoT другой платформой обмена сообщениями или реализовать rosbridge в своей службе для обработки вызовов.
Надеюсь, я все понял правильно.
О препятствиях:
Я думаю, что главная проблема здесь заключается в том, что между service replica можно установить двунаправленное соединение и робота.
У этого есть две основные проблемы:
О WebSockets
Это выглядит возможным, реализуя пользовательские ICommunicationListener и другие вещи с помощью WebSockets.
ICommunicationListener
? SF в этой архитектуре будет размещать клиент websocket, а не слушатель (роботы будут слушать подключения от меня - я не могу контролировать это, как бы назад это не звучало). В этом случае, поскольку мне не нужно делать какие-либо URI, доступные для поиска службой именования, требуется ICommunicationListener
? Вот почему я думаю, что репликация не представляет проблемы. Если время жизни клиента управляется в методе RunAsync
службы состояния, робот должен видеть только серию закрытых и открытых соединений, если первичный движется.
– FolksymAndrew
16 July 2018 в 13:50
ICommunicationListener
. Установление соединения в RunAsync
также звучит довольно разумно. Главное, чтобы обработать срок службы службы работоспособности , чтобы правильно открыть и закрыть соединение с роботом.
– Oleg Karasik
16 July 2018 в 14:56