.. _tutorial_uav_leader_follower_zh: 无人机Leader follower集群编队实现 ======================================= .. figure:: ../img/swarmuav_leaderfollower/swarm_sitl_3uav_leader_follower.png :height: 450 px :width: 750 px :scale: 100 % :align: center Leader-Follower 模型是多智能体系统中普遍接受的研究范式,其中一个智能体被指定为 Leader (领队者),而其他智能体则充当 Follower (跟随者)并与其邻域保持相对距离以实现编队。 在本教程中,我们将向读者展示一个执行无人机 Leader-Follower 集群编队实现的示例。 1.任务说明 -------------- 根据 Leader-Follower 模型,可以通过控制 Leader 飞到指定位置来实现无人机群飞行任务。Leader 可以接受自主服务呼叫的命令或仅来自手动控制的命令。 该演示是在状态机的基础上构建的,S_FORMATION_LEADER_FOLLOWER 子任务枚举表示无人机集群处于 leader-follower 机动状态。 2.如何运行 ------------ .. hint:: DASA 代码库正在快速开发迭代中,因此建议用户参考我们产品随附的最新用户手册。 2.1 SITL 虚拟仿真 ^^^^^^^^^^^^^^^^^^^^ SITL仿真可以在基于虚拟环境的Gazebo引擎中进行(参考 :ref:`tutorial_swarm_sim`)。 在目录 ~/DASA_space/catkinws_swarmdemo/scripts 中提供了3 台无人机集群虚拟仿真的启动脚本。 首先必须使用 Gazebo 引擎启动 SITL 节点: :: cd ~/DASA_space/catkinws_swarmdemo/scripts/sitl bash start_sitl_nodes_3uavs.sh 用户只有在Gazebo界面出现后才能启动其他swarm节点: :: cd ~/DASA_space/catkinws_swarmdemo/scripts/sitl bash start_leaderfollower_mission_swarm_nodes_3uavs.sh 然后无人机群将自动启动任务。 用户可以使用 RequestLeaderVehicleCmd 服务向 Leader 发送请求。 以下命令将请求 Leader (uav1) 移动到位置 [5.0, 5.0, 5.0]。 :: cd ~/DASA_space/catkinws_swarmdemo/ source devel/setup.bash rosservice call /uav1/swarm_mission/request_leader_cmd "leader_behavior_id: 1 params:[5.0, 5.0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]" 2.2 飞行测试 ^^^^^^^^^^^^^^^^ 首先在飞行测试之前完成定位设置(参考 :ref:`tutorial_indoor_loco`:)。用户远程登录这些飞行器后,可以使用以下脚本启动 3 架无人机的 leader-follower 任务节点: :: cd ~/DASA_space/catkinws_swarmdemo/scripts/test bash start_indoor_leaderfollower_mission_3uavs.sh 然后可以通过将这些机器设置为offboard和解锁状态来启动任务。 3.视频演示 ------------- 以下视频包含 SITL 虚拟仿真 和飞行测试的演示: .. raw:: html