Бесплатно, в браузере, без установки Linux и ROS

ROS 2 симулятор онлайн

Робот с лидаром, настоящие команды ros2 в терминале, карта Cartographer, навигация Nav2 и свои узлы на Python. Выберите карту и задачу — и ведите робота так же, как настоящего.

Квартира · Уборка квартиры Открыть
Симулятор: робот-пылесос в квартире, лучи лидара, карта Cartographer, терминал с командами ros2 и панель «Робот» с показаниями датчиков

Карты

Карта — где работает робот. На каждой свои задачи: от первой поездки до собственного узла ROS 2.

Готовятся

Задачи уже видны, запустить эти карты пока нельзя.

Скоро

Больница

Робот-доставщик

Длинный коридор, палаты по обе стороны, люди на пути.

  • Лекарства по палатамСредний
    Скоро
Скоро

Жилой двор

Робот-доставщик

Дома, подъезды, дорожки и пешеходы.

  • Посылка до подъездаПродвинутый
    Скоро
Скоро

Склад

Складской робот

Ряды стеллажей, метки на полках, паллеты и ворота отгрузки.

  • Инвентаризация стеллажейСредний
    Скоро
  • Паллета к воротамПродвинутый
    Скоро
Скоро

Технопарк

Беспилотная маршрутка

Кольцевая дорога, остановки и пешеходный переход.

  • Рейс по остановкамСредний
    Скоро
  • Пешеход на переходеПродвинутый
    Скоро

Как это устроено

Всё как с настоящим роботом на ROS 2, только в браузере: команды набираются в терминале, подсказки к ним — в панели «Задания».

1

Запустите мир

ros2 launch turtlebot3_gazebo turtlebot3_house.launch.py

Gazebo поднимает квартиру и робота — появляются топики /scan, /odom и /cmd_vel.

2

Поведите робота

ros2 run turtlebot3_teleop teleop_keyboard

Клавиши W, A, D и S отправляют команды скорости в /cmd_vel — пылесос едет и собирает мусор.

3

Постройте карту

ros2 launch turtlebot3_cartographer cartographer.launch.py use_sim_time:=True

Cartographer собирает карту из замеров лидара, а map_saver_cli сохраняет её в файл.

4

Отправьте по карте

ros2 launch turtlebot3_navigation2 navigation2.launch.py use_sim_time:=True

Щелчок по карте — цель для Nav2: робот сам проложит путь и объедет мебель.

Свой узел на Python

В панели «Код» — файлы с узлами ROS 2 на rclpy. Запуск — python3 файл.py в терминале или кнопкой рядом с кодом; узел появляется в ros2 node list и в графе, а Ctrl+C его останавливает.

  • Как в rclpy: Node, издатели, подписки, таймеры, параметры и логгер.
  • Сообщения: std_msgs, geometry_msgs (Twist, PoseStamped…), sensor_msgs (LaserScan, BatteryState, Imu, JointState) и nav_msgs/Odometry.
  • Образцы: talker и listener из официального урока ROS 2, пылесос, который объезжает препятствия по лидару, и сторож батареи.
  • Честно о границах: Python переводится в JavaScript прямо в браузере — основная часть языка есть, но не вся; сервисов, действий и tf2 пока нет.
def on_scan(self, scan):
    # луч 0 смотрит вперёд: 20° влево и 20° вправо
    front = scan.ranges[:20] + scan.ranges[-20:]
    cmd = Twist()
    if min(front) < 0.35:
        cmd.angular.z = 1.0   # препятствие — поворачиваем
    else:
        cmd.linear.x = 0.15   # путь свободен — едем
    self.pub.publish(cmd)

Что внутри робота

Панель «Робот» в симуляторе показывает, из чего он состоит и что чувствует прямо сейчас, — а у каждой части есть свой топик.

Лидар

LDS-01, 360 лучей пять раз в секунду. Из его замеров строится карта.

/scan

Колёса и энкодеры

Моторы крутят колёса по команде, энкодеры считают обороты — это одометрия.

/cmd_vel/odom/joint_states

IMU

Гироскоп и акселерометр: по ним уточняется курс, когда колёса проскальзывают.

/imu

Аккумулятор

Садится на ходу и заряжается на базе — следить за ним приходится всю уборку.

/battery_state

Начните с квартиры

Девять заданий по шагам: от запуска мира до уборки по карте с Nav2.

Вопросы

Нужно ли ставить Linux и ROS?

Нет. Всё работает в браузере — на школьном компьютере, ноутбуке и телефоне. Команды набираются во встроенном терминале, как в настоящей системе.

Это настоящий ROS 2?

Нет, это его модель в браузере. Команды, узлы, топики и сообщения устроены так же, как в ROS 2 с роботом TurtleBot3, и выводят то же самое. Свои узлы на Python тоже запускаются, но Python здесь переводится в JavaScript прямо в браузере: основная часть языка и rclpy есть, а сервисов, действий и tf2 пока нет.

Какие команды работают?

ros2 launch и ros2 run, ros2 topic (list, echo, hz, info, pub), ros2 node, ros2 service и ros2 param, а для своих узлов — python3 файл.py. Полный список покажет команда help в терминале.

Можно писать свои узлы на Python?

Да. В панели «Код» лежат файлы с узлами на rclpy, запускаются они командой python3 файл.py или ros2 run my_robot имя. Узел виден в ros2 node list и в графе, его топики — в ros2 topic list, Ctrl+C его останавливает. Файлы хранятся в этом браузере.

Когда появятся другие карты?

Они в работе и будут открываться по очереди. Пока карта готовится, её задачи видны, но кнопки запуска у них нет.

Работает на телефоне?

Да. Панели встают друг под другом, карта двигается пальцем, масштаб меняется кнопками «+» и «−».