BSD 3-Clause "New" or "Revised" License

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

深度解析:GAAS - 通用自主航空系统

项目背景与痛点

GAAS (Generalized Autonomy Aviation System) 是一个针对垂直起降车辆(VTOL,即飞车)及无人机开发的开源程序。随着自动驾驶技术的快速发展以及无人机在物流、测绘、巡检等多种应用场景中的广泛使用,这些设备在实现高可靠性和高精度自动操作方面的技术需求也在不断提高。GAAS 引入了先进的算法和设计模式来满足这些需求,它是行业内的先行者之一。

核心技术揭秘

GAAS 将一系列成熟的技术有机结合,形成其独特的核心竞争力。该系统在系统架构设计中使用了面向服务的架构(SOA)模式,将整体功能分解成相对独立的服务模块。每个模块具有各自的功能,又通过消息队列互相通信,维持了扩展性和松耦合性。

此外,GAAS 还在多个技术和系统层面进行优化:

  1. 高性能计算:系统采用高性能的计算平台和算法优化,以实现实时的飞行路径规划、避障和高精度定位。
  2. 数据驱动决策:基于传感器积累的海量数据,GAAS 利用机器学习方法进行飞行状态分析、环境感知等关键决策过程精细化。
  3. 安全机制:设有多层次的冗余机制,确保系统在面对突发情况时不会失灵。
graph TD A[用户请求] --> B{"参数校验"} B -->|"通过"| C[飞行路径生成] B -->|"失败"| D[返回错误信息] C --> E[环境感知] E --> F[避障计算] F --> G[飞行指令输出] G --> H[执行飞行任务] G --> I[状态反馈]

功能亮点与差异

相比同类产品,GAAS 独特的设计之处在于其对数据驱动的依赖和多级系统安全架构。此外,GAAS 开源的特性也使其具备了强大的社区支持潜力。开源模型鼓励更多开发者针对特定任务进行二次开发和定制化调整,推动整个生态系统的发展。

应用场景与落地建议

在实际应用中,GAAS 适用于各种自动化飞行任务执行场景,例如快递配送、农业监控或城市空中运输。部署时,需要对特定环境条件下的设备进行定制化测试和验证,确保其在实际运行中的安全性和稳定性。同时,考虑到行业监管政策的不同,使用 GAAS 前需要进行充分的法规审查和合规性测试。

综合评价

GAAS 凭借其灵活性高、扩展性强和开源度高等特点,在市场和学术界获得了良好的反响。其卓越的系统设计和强大的安全机制,无疑使其在高度竞争的垂直起降飞行器和无人机领域中占据了一席之地。然而,作为开源项目,它当前的完善度和易用性仍有改进空间,社区支持和技术文档会是后续发展的关键。

关于

GitHub 原始描述(英文)

GAAS is an open-source program designed for fully autonomous VTOL(a.k.a flying cars) and drones. GAAS stands for Generalized Autonomy Aviation System.

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

语言占比

C
C++
CMake
CSS
Cuda
Dockerfile
HTML
JavaScript
MATLAB
Makefile
Meson
Python
Shell

Release

README

GAAS: Towards L5 Autonomous Flying Cars, a Robust Framework Extends GAAS with Lidars!

StarforkwatchBSD-3twitter

About GAAS

GAAS is an open-source program designed for fully autonomous VTOL(a.k.a flying cars) and drones. GAAS stands for Generalized Autonomy Aviation System. We hope to accelerate human use of the sky through the full autonomy of flying vehicles. This project started in 2016 as a hobby for two students. 2019 we open-source the project and hope to develop GAAS full time in the long term.

GAAS provides a fully autonomous flight platform based on lidar, HD-map relocalization, path planning, and other modules for aircraft. In contrast to the autopilot technology previously available only for consumer-grade drones, GAAS aims for robust fully autonomous flight for human-carrying, and can be easily combined with national air traffic control. At GAAS you can see many of the automotive-grade(AG) technologies that were previously only available in self-driving cars. The whole framework is coupled loosely so you can customize your own modules and easily add them to GAAS.

Previews:

image

image

image

image

A video has been uploaded to show the whole pipeline. You may need to download this video.

Differences between GAAS deprecated and new GAAS:

We use lidars, as main sensor, rather than vision algorithms.

GAAS deprecated is based on computer vision(CV), but fully vision-algorithms-based framework is not robust enough for autonomous flying.

For flying cars and large cargo drones, vision-based algorithms suffer from:

  1. Lack of robustness, especially at night or over-exposed conditions. When air vehicles are flying at high speed, the localization is not stable enough which may cause severe accidents(vital to large air vehicles).

  2. Computer vision is computationally expensive and does not easily run in real-time on mobile devices.

  3. The neural network-based approach is accident-prone in extreme scenarios, and the failures are not easily reproducible.

These problems are not allowed to occur in manned flight scenarios.

Therefore, the introduction of LIDAR seems to be necessary at present. That’s why we make new GAAS from scratch, and refactored all modules in cpp.

Build with:

Tested on OS: Ubuntu 18.04; PX4(for simulation only) 1.8.0.

step<1> Check your network status

wget www.google.com

step<2> tools

(optional) install cuda 10.2 for all gpu-based algorithms, like icp_lidar_localization and the gpu version of ndt_localization.

You may need to upgrade cmake to at least 3.13 for building package icp_lidar_localization.

sudo apt install vim bwm-ng htop tmux git net-tools cmake-gui iotop curl

step<3> docker(for simulation only)

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

sudo usermod -aG docker [your username]

docker pull gaas/mavros-gazebo7-px4

step<4> ros_melodic

./install_ros_melodic.sh

step<5> opencv 3.4.5

sudo apt install cmake-qt-gui

[Download opencv 3.4.5 and unzip]

cd opencv-3.4.5/
mkdir build&&cd build&&cmake-gui ..

[Configure your opencv cmake options in cmake-gui]

make -j4&&sudo make install

step<6> glog

git clone https://github.com/google/glog.git
cd glog
git checkout -b v0.4.0
mkdir build&&cd build
cmake ..
make 
sudo make install

step<7> pcl 1.8.0 build from source

[Download pcl 1.8.0 and unzip]

cd pcl-1.8.0
mkdir build&&cd build&&cmake-gui ..

[Configure your pcl cmake options in cmake-gui]

make -j4
sudo make install

step<8> (optional) upgrade your gazebo for simulation

cd GAAS/simulation
./upgrade_gazebo.sh

Getting Started

To build the project, setup all dependencies, run:

./build_all.sh

To run GAAS_contrib algorithms:

cd algorithms
./run_gaas_contrib_algorithms.sh

Start simulation (or play a rosbag instead):

cd simulation&&./scripts/prepare_simulation.sh

or:

rosbag play --clock [path_to_your_rosbag]

And checkout your L5 flying car demo in simulation environment!

License

GAAS is under BSD 3-Clause License.

Features

  1. Simulation env with 32 lines lidar and stereo cameras.

  2. Spinning lidar mapping and NDT matching localization.

Check out simulation/README.md to get more details of simulation env setup.

Roadmap:

1. Gazebo simulation env construction, including spinning lidars and non-repetitive lidars and stereo cameras.

(1). Livox Horizon + Forward Stereo Camera --Done.

(2). Velodyne HDL-32 + Forward Stereo Camera --Done.

2. Accelerate compiling and deployment of GAAS.
3. Implement some LIDAR (mechanical/solid-state) based algorithms, and implement one key start in the simulation environment.

Checklist:

(1). Lidar Points to Image Projection-- Done.

(2). Euclidean Cluster Extraction. --Done.

(3). Global Coordinate based HD-Map Building. --Done.

(4). NDT Lidar Localization(CPU/Cuda) --Done.

(5). Downsampling Node --Done.

(6). A* Path Planner --Done.

(7). Refactored px4 Offboard Commander --Done.

(8). Dynamic Obstacles Generation and Replanning --Done.

(9). Jetson AGX Xavier Adaptation --Done.

(10). Interactive GUI Target Selector in HD-maps --Done.

(11). Multiple Submaps Switching --TODO

(12). IMU-Preintegration and High-Frequency Localization --Done.

(13). VTOL Mode Switching --TODO.

(14). Decentralized Robust Ground Control Station --TODO.

(15). Generalized Flight Controller State Management --Done.

(16). PX4 State Reporter --Done.

(17). HUD Module --Done.

(18). Cuda-based Multiple Lidar Pointclouds ICP Localization --Done.

(19). Ground Points Removal Preprocessing --Done.

(20). System State Surveillance Service --Done.

(21). HTTP Server on Ground Control Station --TODO.

(22). Multiple Spinning Lidar Support --Done.

(23). Airsim Simulation Env Support --Done.

Current status:

Adding logics for flight stage manager module. Including flight stage transfer service clients(triggered by mission config file) and servers(including localization module, flight control commander module and target navigation module.)

评论

暂无评论