集群无人机仿真及控制系统搭建简介
操作系统:
- ROS 是用于编写机器人软件程序的一种具有高度灵活性的软件架构。它包含了大量工具软件、库代码和约定协议,旨在简化跨机器人平台创建复杂、鲁棒的机器人行为这一过程的难度与复杂度。
- ROS 采用了分布式的框架,便于模块化的修改和定制,提高了系统的容错能力。ROS 目前只支持在 Linux 系统上安装部署它的首选开发平台是 Ubuntu,选择的 Ubuntu 平台是 Ubuntu 16.04,ROS 平台是 Kinetic。
ROS系统框架:
ROS文件系统级:
- 与操作系统类似,ROS 的文件也是以一种特定的形式组织,主要包括功能包、功能包集、功能包的 manifest 文件、消息和服务描述文件
等。ROS图像系统级
- 计算图级:它主要阐述了 ROS 是如何进行通信和计算的。计算图级概念包括节点管理器(Master)、ROS 节点(Node)、参数服务器(Parameterserver)、话题(Topics)、消息(Message)、服务(Service)和消息记录(Bags)。 ROS 节点除了所示的两种通讯机制,还可通过 Actionlib 功能包实现客户端(Client)与服务器端(Server)的另一种通讯方式增加了数据反馈回传功能,可降低等待时间并增强了应用实时性。
飞控固件:
PX4主要构成
PX4 是目前最流行的开源飞控之一,其软件系统通常意义上可以分三层结构,包括驱动/系统、中间件、应用程序/飞行控制栈,PX4 的飞行控制栈有如下几部分组成
1 . 决策导航部分
2. 位置姿态估计部分
3. 位姿态控制部分
4. 控制器输出部分
PX4固定翼控制算法:
PX4 固定翼的位置控制主要涉及到两个控制算法:L1 控制和总能量控制
(Total Energy Control System, TECS)
- L1 算法主要是为了得到飞机需要偏转的滚转角和偏航角。
- TECS 算法是为了得到期望的油门和俯仰角。
- 通过这两个算法,最终得到了期望的油门、俯仰角、滚转角和偏航角,然后内环的姿态控制就交给姿态控制器。
PX4与集群无人机:
- 基于多无人机集群编队控制算法的原理,PX4 姿态控制算法是需要关注的焦点。PX4 的姿态控制算法有俯仰角控制、滚转角控制、偏航角控制三部分组成,
3D动态仿真
- 为了完成多无人机集群编队控制算法的 SITL,除了需要 PX4 和 ROS 外,还需要用到 Gazebo 仿真器和 QGroundControl 地面站。
Gazebo 3D动态仿真器
- Gazebo是一款和ROS 绑定的 3D 动态模拟器,能够准确有效地模拟机器人。首先,无论是对于 ROS 而言,还是对于 Gazebo 而言,仿真最重要的就是要看到构建的机器人,看到它的关键文件就是 urdf 文件,该文件的主要功能就是描述机器人各个部分与关节的属性。ROS 和 Gazebo 之间的桥梁 gazebo plugins 使 ROS 能够控制 Gazebo 中的机器人。
飞控地面站
QGroundControl 地面站
- QGroundControl 地面站专用于 PX4 开源无人机飞控系统,为无人机提供飞行控制以及任务规划等,支持多个平台运行例如 Windows、Linux、iOS 和 Android,提供地图功能,可以在软件上直接查看地面站的信息,相比同行软件能更好地接收数据,可以更好地查看无人机传输的内容,可以在地图上显示当前飞行的速度,可以控制飞行路线,支持每次飞行后保存遥测日志,将飞行数据自动保存。
信息交互:
MAVROS:
- 使用 ROS、PX4、Gazebo 和 QGroundControl 等进行多无人机集群编队控制算法的 SITL,还需要一个 ROS 的工具包 MAVROS,来使这些软件进行信息交互。通过 MAVROS 的服务’/cmd/arming’、’/set_mode’、’/cmd/takeoff’等,
- 可以完成对仿真器中的 PX4 无人机完成解锁、设置模式、起飞等动作。通过MAVROS 的‘/local_position/odom’、’/mavros/setpoint_raw/attitude’等得到无人机的状态和给无人机发送控制指令等。