< >
Home » ROS2与Open-RMF仿真教程#Jazzy版# » ROS2与Open-RMF仿真教程#Jazzy版#-多台turtlebot3使用free_fleet

ROS2与Open-RMF仿真教程#Jazzy版#-多台turtlebot3使用free_fleet

文章说明

  • 本教程主要说明如何结合多台turtlebot3使用free_fleet

前提准备

  • 本次例程使用的nav2中内置的tb3仿真
$ sudo apt update && sudo apt install ros-jazzy-nav2-bringup ros-jazzy-turtlebot3-simulations

操作步骤

  • 本次的多机器人仿真示例仅用于测试,因为其设置方式与free_fleet的预期使用方式不同
  • 在该示例中,仿真会生成两个带命名空间的TB3机器人,而free_fleet的架构设计要求是:一个不带命名空间的机器人节点,与一个带命名空间的机器人节点,通过zenoh-bridge-ros2dds进行配对通信

请输入图片描述

  • 在这个示例中,两个机器人共用同一个未带命名空间的Zenoh
  • 该桥输出的zenoh消息,与为每个机器人分别运行独立的(带命名空间对应的)zenoh 桥时的输出是等效的
  • 这种设计使得free_fleet_adapter可以在同一个仿真环境中同时控制这两个机器人,实现协同工作

请输入图片描述

  • 启动tb3仿真
$ export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
$ export TURTLEBOT3_MODEL=waffle

# Launch the simulation
$ ros2 launch nav2_bringup unique_multi_tb3_simulation_launch.py autostart:=true
  • 启动zenoh
$ zenohd
  • 启动zenoh-bridge-ros2dds桥接通信,加载对应配置文件
$ zenoh-bridge-ros2dds -c ~/ros2_free_fleet_ws/src/free_fleet/free_fleet_examples/config/zenoh/nav2_unique_multi_tb3_zenoh_bridge_ros2dds_client_config.json5
  • 同时可以通过不同ROS_DOMAIN_ID的机器上启动RMF,如果在不同机器上启动,也需提前装好open-rmf环境
$ export ROS_DOMAIN_ID=55

$ ros2 launch free_fleet_examples turtlebot3_world_rmf_common.launch.xml
  • free_fleet_adapter加载当前示例配置,验证nav2_tb3环境是否已被添加进去
$ export ROS_DOMAIN_ID=55
$ ros2 launch free_fleet_examples nav2_unique_multi_tb3_simulation_fleet_adapter.launch.xml
  • 使用dispatch_patrol脚本方式创建任务
$ export ROS_DOMAIN_ID=55
# robot1 to run clockwise around the map
$ ros2 run rmf_demos_tasks dispatch_patrol \
  -p north_west north_east south_east south_west \
  -n 3 \
  -st 0 \
  -F turtlebot3 \
  -R robot1

# robot2 to run anti-clockwise around the map
$ ros2 run rmf_demos_tasks dispatch_patrol \
  -p south_west south_east north_east north_west \
  -n 3 \
  -st 0 \
  -F turtlebot3 \
  -R robot2
  • 或者通过rmf-web方式创建任务
# 新开终端,启动rmf-web的后端程序
$ cd ~/ros2_rmf_ws/src/rmf-web/packages/api-server
$ pnpm start

# 新开终端,启动rmf-web的前端程序
$ cd ~/ros2_rmf_ws/src/rmf-web/packages/rmf-dashboard-framework
$ pnpm start:example examples/demo

请输入图片描述

  • 可参照视频里的操作,创建巡逻任务

请输入图片描述

参考资料

演示视频

  • 视频中的示例均是在ROS_DOMAIN_ID=0的环境下进行,但经后续测试在不同ROS_DOMAIN_ID环境下也是能正常通信的

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: none