ROS2与Turbot3-Multi多机协同教程-多机行为树导航
纠错,疑问,交流: 请进入讨论区或 请点击进入页面,扫码加入微信群或Q群进行交流
获取最新文章: 扫一扫加入“创客智造”公众号
文章说明
- 本教程主要介绍如何实现利用Turbot3-Multi套件进行多机行为树导航
- 测试环境:
Ubuntu 24.04+ROS2 Jazzy
相关设备
- Turbot3-Multi套件:采购地址
操作步骤
- [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_0、tb3_1和tb3_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群进行交流
获取最新文章: 扫一扫加入“创客智造”公众号


















