Как передать действия пользователя с сервера на внешнее устройство

У меня есть веб-интерфейс, который позволяет пользователю отправлять удаленные команды 1 или 2 роботам. В настоящее время задания сохраняются в базе данных (также для ведения журнала), а робот(ы) опрашивает(ют) бэкенд django, используя GET запросы каждые 125 мс, что дает приемлемое время отклика без чрезмерной нагрузки на бэкенд. Вкратце:

Action(User) -> [Remote Control UI] -> Django -> DB (based on user input)

Для получения действий робот затем выполняет GET-запрос к Django в виде чего-то вроде:

while(ros::ok())
{
    response = requests.get(task_url, timeout=5)
    // input task(s) to state machine
    // execute task if possible
    rate.sleep();
} 
      
      

Мой вопрос: есть ли лучший способ? Пульт дистанционного управления иногда отключается, когда робот выходит за пределы Wi-Fi, поэтому решение должно обладать определенной степенью гибкости к повторному подключению, смене IP и ошибкам подключения. Я думал о возможных альтернативах, но не уверен, что они осуществимы:

  • Запросить роботов зарегистрироваться и сохранить свой IP (?) и отправить команду роботу, если он зарегистрирован
  • Многоадресная рассылка команды по всей подсети Wi-Fi (?) и позволить роботу прочитать ее
  • Использовать django channels или какую-то похожую технологию? Я нашел только примеры с [django или flask] + javascript. Я не уверен, что это возможно сделать, например, с Django на Flask или что-то подобное.
  • .

Любая обратная связь приветствуется

Поисковая мультимашина ROS поможет в этом деле.

http://wiki.ros.org/ROS/Tutorials/MultipleMachines

Кроме того, вы задаете IP других устройств в локальном файле /etc/hosts. В этом файле вы можете назначить правильные IP друг другу

Сделайте это для всех устройств.

Затем на одной машине запускается roscore

В этом roscore, у вас будет rosip видите сообщение выходящее из roscore обычно вы ядро IP адрес + 11311

Затем на второй машине установите ROS_MASTER_URI на ros IP + порт, который вы нашли.

Тогда две машины могут совместно использовать темы и службы.

Ps. если вы столкнулись с проблемой порта 22 при попытке ssh, следуя руководству. переустановите open-ssh-server и open-ssh-client

Вернуться на верх