turtlebot3-burger_150.png
turtlebot3-waffle-pi_150.png
turtlebot3-arm_150.png
walking-y2_150.png
turbot3-multi_150.png
turbot3-dl-ros1_150.png
turbot3-ai.png
turbot3-dl-ros2_150.png
turbot3-slam_150.png
turbot3-arm_150.png
turtlebot4-lite_150.png
turtlebot4-pro_150.png
turbot4-dl_150.png
turbot4-ai_150.png
aidriving-racebot_150.png
aidriving-autodrive_150.png
turtlebot-arm_150.png
openmanipulator-x_150.png
Home » ROS2与Turbot3-Multi多机协同教程 » ROS2与Turbot3-Multi多机协同教程-多机行为树导航

ROS2与Turbot3-Multi多机协同教程-多机行为树导航

纠错,疑问,交流: 请进入讨论区请点击进入页面,扫码加入微信群或Q群进行交流

获取最新文章: 扫一扫加入“创客智造”公众号

文章说明

  • 本教程主要介绍如何实现利用Turbot3-Multi套件进行多机行为树导航
  • 测试环境:Ubuntu 24.04 + ROS2 Jazzy

相关设备

操作步骤

  • [NUC] 关闭此前打开的ros程序,以免造成冲突
$ ./multi_scripts/multi_kill.sh
$ ./multi_scripts/server_kill.sh
  • [NUC] 启动多台机器人
# 根据你当前机器人的数量选择对应的命令
# 默认是启动三台机器人 
$ ./multi_scripts/multi_robot.sh
  • [NUC] 检查机器人是否正常启动
$ ros2 topic list
/parameter_events
/rosout
/tb3_0/battery_state
/tb3_0/cmd_vel
/tb3_0/imu
/tb3_0/joint_states
/tb3_0/magnetic_field
/tb3_0/odom
/tb3_0/robot_description
/tb3_0/scan
/tb3_0/sensor_state
/tb3_1/battery_state
/tb3_1/cmd_vel
/tb3_1/imu
/tb3_1/joint_states
/tb3_1/magnetic_field
/tb3_1/odom
/tb3_1/robot_description
/tb3_1/scan
/tb3_1/sensor_state
/tb3_2/battery_state
/tb3_2/cmd_vel
/tb3_2/imu
/tb3_2/joint_states
/tb3_2/magnetic_field
/tb3_2/odom
/tb3_2/robot_description
/tb3_2/scan
/tb3_2/sensor_state
/tf
/tf_static
  • [NUC] 启动3台机器人的初始化位姿的脚本,脚本编辑方法可参阅此教程
$ ./multi_scripts/multi_nav_init_pose.sh
  • 设置3台机器人tb3_0tb3_1tb3_2的起始点分别为(0,-0.8)(2.4,-0.8)(4.8,-0.8),方向一致

  • [NUC] 启动3台机器人的行为树导航的脚本

$ ./multi_scripts/multi_send_goal_with_bt_tree.sh

请输入图片描述

  • [NUC] 查看加载的multi_bt_tree.xml配置文件,可知机器人会统一向右移动0.8米,然后tb3_0和tb3_2会交换回到对面的起始点,tb3_1则回到自己原来的起始点
<RetryUntilSuccessful num_attempts="3">  <!-- Retry once fail -->
        <Parallel success_threshold="3">    <!-- threshold = number of robot -->
          <RetryUntilSuccessful num_attempts="3">
            <Fallback>
              <Sequence>
                <SubTree ID="MoveRobot" namespace="Robot0" target="Robot0_target1" />
                <SubTree ID="MoveRobot" namespace="Robot0" target="Robot2_position" />
              </Sequence>
              <SubTree ID="MoveRobot" namespace="Robot0" target="Robot0_Goal_backup" />
            </Fallback>
          </RetryUntilSuccessful>
<RetryUntilSuccessful num_attempts="3">
    <Fallback>
      <Sequence>
        <SubTree ID="MoveRobot" namespace="Robot1" target="Robot1_target1" />
        <SubTree ID="MoveRobot" namespace="Robot1" target="Robot1_position" />
      </Sequence>
      <SubTree ID="MoveRobot" namespace="Robot1" target="Robot1_Goal_backup" />
    </Fallback>
  </RetryUntilSuccessful>          

  <RetryUntilSuccessful num_attempts="3">
    <Fallback>
      <Sequence>
        <SubTree ID="MoveRobot" namespace="Robot2" target="Robot2_target1" />
        <SubTree ID="MoveRobot" namespace="Robot2" target="Robot0_position" />
      </Sequence>
      <SubTree ID="MoveRobot" namespace="Robot2" target="Robot2_Goal_backup" />
    </Fallback>
  </RetryUntilSuccessful>    
</Parallel>
`` `` ### 演示视频 <iframe height=498 width=100% src="//player.bilibili.com/player.html?isOutside=true&aid=114216920941651&bvid=BV1jToyYKEgP&cid=29045687045&p=1&high_quality=1&danmaku=0" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe>

纠错,疑问,交流: 请进入讨论区请点击进入页面,扫码加入微信群或Q群进行交流

获取最新文章: 扫一扫加入“创客智造”公众号


标签: none