一、基本技术介绍
基于PX4飞控程序,采用mavros上位机控制模式,编写ROS控制程序,实现Gazebo仿真环境下的4架无人机编队飞行基本仿真。
无人机编队采用虚拟领航员模式,4架无人机均跟随虚拟领航员飞行,并按照虚拟领航员指令做出相应的动作以及队形的变化。无人机编队内部采用人工势场法作为无人机之间避撞算法的实现,每一架无人机飞行过程中根据距离其他无人机的距离,会受到相应人工势场产生的斥力作用,保证无人机在队形切换和运动状态切换时不会相互发生碰撞。
目前程序采用键盘控制的模式,仿真启动后,用户可以使用键盘上对应的按键控制无人机编队飞行并实现无人机编队的队形切换。经过简单修改源码也可以实现特定的编队飞行任务,并可以添加额外的编队队形。
二、效果展示
B站视频:【ROS、PX4】基于虚拟领航员、人工势场法队形组织的无人机编队飞行仿真
2.1 Gazebo仿真场景

2.2 无人机生成

2.3 无人机起飞

2.4 无人机编队队形展示
2.4.1. 菱形

2.4.2. 正方形

2.4.3. 横向一字形

2.4.4. 竖向一字形

2.5 无人机编队运动
2.5.1 起飞

2.5.2 前后左右

2.5.3 上升下降

2.5.4 旋转

2.5.5 队形变换

2.5.6 运动队形变换

三、控制算法介绍
3.1 虚拟领航员领航



3.2 人工势场法编队内部避撞
四、编队队形示意图
4.1 菱形

4.2 正方形

4.3 横向一字型

4.4 竖向一字型

五、部分代码展示
5.1 虚拟领航员控制
// 小键盘控制虚拟领航员位置
// 前后左右
case 8:
pilot_vel_now.twist.linear.x = linear_vel * cos(Eular[2]);
pilot_vel_now.twist.linear.y = linear_vel * sin(Eular[2]);
break;
case 2:
pilot_vel_now.twist.linear.x = -linear_vel * cos(Eular[2]);
pilot_vel_now.twist.linear.y = -linear_vel * sin(Eular[2]);
break;