Работает
Квартира
Робот-пылесосГостиная, кухня, спальня, прихожая и ванная. База для зарядки — в прихожей.
Робот с лидаром, настоящие команды ros2 в терминале, карта Cartographer, навигация Nav2 и свои узлы на Python. Выберите карту и задачу — и ведите робота так же, как настоящего.
Карта — где работает робот. На каждой свои задачи: от первой поездки до собственного узла ROS 2.
Работает
Гостиная, кухня, спальня, прихожая и ванная. База для зарядки — в прихожей.
Шесть комнат, ковры и лестница на второй этаж. База — в холле у входной двери.
Задачи уже видны, запустить эти карты пока нельзя.
Длинный коридор, палаты по обе стороны, люди на пути.
Дома, подъезды, дорожки и пешеходы.
Ряды стеллажей, метки на полках, паллеты и ворота отгрузки.
Кольцевая дорога, остановки и пешеходный переход.
Всё как с настоящим роботом на ROS 2, только в браузере: команды набираются в терминале, подсказки к ним — в панели «Задания».
ros2 launch turtlebot3_gazebo turtlebot3_house.launch.pyGazebo поднимает квартиру и робота — появляются топики /scan, /odom и /cmd_vel.
ros2 run turtlebot3_teleop teleop_keyboardКлавиши W, A, D и S отправляют команды скорости в /cmd_vel — пылесос едет и собирает мусор.
ros2 launch turtlebot3_cartographer cartographer.launch.py use_sim_time:=TrueCartographer собирает карту из замеров лидара, а map_saver_cli сохраняет её в файл.
ros2 launch turtlebot3_navigation2 navigation2.launch.py use_sim_time:=TrueЩелчок по карте — цель для Nav2: робот сам проложит путь и объедет мебель.
В панели «Код» — файлы с узлами ROS 2 на rclpy. Запуск — python3 файл.py в терминале или кнопкой рядом с кодом; узел появляется в ros2 node list и в графе, а Ctrl+C его останавливает.
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Садится на ходу и заряжается на базе — следить за ним приходится всю уборку.
/battery_stateДевять заданий по шагам: от запуска мира до уборки по карте с Nav2.
Нет. Всё работает в браузере — на школьном компьютере, ноутбуке и телефоне. Команды набираются во встроенном терминале, как в настоящей системе.
Нет, это его модель в браузере. Команды, узлы, топики и сообщения устроены так же, как в 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 в терминале.
Да. В панели «Код» лежат файлы с узлами на rclpy, запускаются они командой python3 файл.py или ros2 run my_robot имя. Узел виден в ros2 node list и в графе, его топики — в ros2 topic list, Ctrl+C его останавливает. Файлы хранятся в этом браузере.
Они в работе и будут открываться по очереди. Пока карта готовится, её задачи видны, но кнопки запуска у них нет.
Да. Панели встают друг под другом, карта двигается пальцем, масштаб меняется кнопками «+» и «−».