ROS2与Turbot3-Multi多机协同教程-多机行为树导航
文章说明
- 本教程主要介绍如何实现利用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>
</RetryUntilSuccessful>
演示视频
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号