Robotics UI - это решение для веб -интерфейса для роботов ROS 2 с использованием React и ROS 2 Iron.
Наше видение состоит в том, чтобы создать программное обеспечение, которое позволяет мгновенно добавлять веб -интерфейс к каждому роботу ROS 2, настраивая простой файл JSON.

Инструмент состоит из двух частей: бэкэнд на Python, который действует как переводчик между ROS 2 и фронталом React. Чтобы достичь этого, мы переводим сообщения ROS 2 в JSON и обратно.

На фронте мы используем конструкцию на основе окон, где каждое окно представляет собой собственную микропрограмму взаимодействия с данными JSON из бэкэнда. Это позволяет нам использовать подход в стиле плагина и для пользователя настраивать их приборную панель. Цель состоит в том, чтобы пользователи создали свои собственные плагины.
Существует также поддержка по телефону с более компактным дизайном.

Настройка железа 2 ROS 2
Чтобы использовать пакеты ROS 2, вам необходимо установить следующие пакеты:
Настройка ROS
export ROS_DISTRO=ironНастройка FASTAPI
sudo apt install python3-pip
pip install fastapi
pip install uvicorn Другие зависимости
pip install pyyamlУстановите NVM
sudo apt update
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
nvm install nodeПерейдите в свою папку SRC ROS 2 ROS -2 и загрузите пакет
cd ~ /ros2_ws/src
git clone https://github.com/sciotaio/robotics-ui.git Перейдите в папку рабочей области и установите пакет ros2_webinterface
cd ~ /ros2_ws
colcon build --packages-select ros2_webinterface && source install/setup.bashПерейдите в папку проекта React
cd ~ /ros2_ws/src/robotics-web/react/robotics_ui/Установите зависимости с NPM
npm install # test launch
ros2 launch ros2_webinterface test.launch.py
# main launch (only the webinterface)
ros2 launch ros2_webinterface webinterface.launch.py
# waypoint_manager launch (Backend for the OpenStreetMap Plugin)
ros2 launch ros2_webinterface waypoint_manager.launch.py cd ~ /ros2_ws/src/robotics-web/react/robotics_ui/
npm startTODO: Объясните, как изменить настройки хоста и прокси и как изменить адрес бэкэнд
Руководство пользователя объясняет, как настроить приложение и как его использовать в вашем проекте.
В этом руководстве объясняется, как создать и настроить файл конфигурации JSON для создания пользовательской панели инструментов.
Запустите фронт и откройте его в веб -браузере (адрес по умолчанию http: // localhost: 3000/)
Следующая страница должна открыться:

Перейдите в раздел JSON Редактор.
В редакторе JSON у вас есть несколько вариантов:

Вы можете загрузить файл конфигурации JSON или ссылка на панель инструментов.
Ссылки на панель инструментов включают в себя конфигурацию JSON как параметры ссылки. Например: http: // localhost: 3000/dashboard/settings? component = [{"id": "stringtopic", "state": false, "render_type": "string", "position": {"x": 0, "y": 0}, "size": " {"Ширина": 200, "Высота": 200}, "Тема": [{"name": "TOMA1", "TOMA": "/TOMA1", "TYPE": "String", "Route": "/subscriber/topic1"}]}] & preset_list = undfined
Чтобы применить ссылку JSON, вы можете нажать кнопку «Применить ссылку JSON».
Или вы можете использовать кнопку «Применить ссылку по умолчанию json», чтобы выбрать предварительно подтвержденную демонстрационную ссылку.
Чтобы настроить файл JSON, вы можете использовать веб -форму.
В качестве введения давайте добавим простой компонент:




В нашем случае тип рендеринга строки поставляется с предварительной темой.
Далее мы должны настроить темы компонента. Темы дают фронта информацию, необходимую для вызова API на бэкэнд, и у каждого из них есть 4 свойства:
Число и порядок тем определяются типом плагина, который мы используем, поэтому обратитесь к документации плагина для этой информации.
Если мы хотим удалить или добавить темы, мы можем использовать кнопки «Добавить тему» или «Удалить тему».
Чтобы использовать конфигурацию, у нас есть несколько вариантов:
С помощью кнопки «Generate JSON» мы можем распечатать файл JSON в консоли инструмента Dev.
С помощью кнопки «Скачать json» мы можем скачать файл JSON.
С помощью кнопки «Использовать JSON» мы можем напрямую открыть панель панели с настроенными настройками.
Если вы хотите получить доступ к одной и той же панели инструментов в будущем, вы также можете просто скопировать ссылку в разделе ссылки.
Чтобы использовать пользовательский файл конфигурации в бэкэнд, вы должны установить его в качестве свойства в своем пользовательском файле запуска.
Пример запуска файла может выглядеть примерно так:
import os
from launch import LaunchDescription
from launch_ros . actions import Node
from launch . actions import IncludeLaunchDescription
from launch . launch_description_sources import PythonLaunchDescriptionSource
from ament_index_python . packages import get_package_share_directory
def generate_launch_description ():
share_dir = get_package_share_directory ( 'ros2_webinterface' )
launch_dir = os . path . join ( share_dir , 'launch' )
webinterface = IncludeLaunchDescription (
PythonLaunchDescriptionSource (
os . path . join ( launch_dir , 'webinterface.launch.py' )
),
launch_arguments = {
"yaml_config" : "topic_list.yaml" , # Name of the YAML config
file
"json_config" : "topic_list.json" , # Name of the JSON config file
"config_folder" : 'default' , # Path to the folder
# or 'default' to use the
# standard config folder
}. items (),
)
ld = LaunchDescription ()
ld . add_action ( webinterface )
return ldФайл YAML может быть пустым - он автоматически перезаписывается с помощью правильного запуска конфигурации.
Плагины позволяют настраивать панель инструментов еще дальше.
В настоящее время приложение поставляется с 3 разными плагинами.

Руководство по плагинам открытой уличной карты
Центр Open Street Map позволяет отслеживать своего робота на карте и отправлять инструкции по путевой точке GPS с помощью простого щелчка.
Вы также можете сосредоточиться на роботе с помощью центральной кнопки, а также удалить и установить путевые точки.

Этот плагин позволяет просто отображать входящие данные JSON.
Пожалуйста, пришлите нам свои предложения для плагинов.
Руководство по установке и настройке плагинов:
Гид плагина
std_msgs.msg
sensor_msgs.msg
std_msgs.msg
Больше форматов поступают в будущих обновлениях.