Skip to content

JaimeParker/elegant-aerial-robotics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

空中机器人的技艺 Elegant-Aerial-Robotics

Content 目录

1. Introduction

空中机器人是一类具有飞行能力的机器人,其学习与研究涉及到多个学科,因此从0到1的学习曲线较长。

为了方便大家学习与研究空中机器人,我们整理了一个空中机器人学习的知识体系,欢迎大家补充与交流。

为什么要构建这样的大纲(每部分的作用):

  • Generalized Aerial Robots 广义空中机器人 部分主要介绍空中机器人的构型与分类,做一个科普和初步了解
  • Research 研究方向 部分主要放一些新工作和经典文章
  • Tech Stack 技术栈 部分主要放一些相关的技术与工具,介绍学习路线和好用的小工具,repo等

如何贡献(非repo协作者):

  • fork本项目,创建你自己的分支branch
  • 在你的分支上进行修改,别忘了把贡献及你想留下的信息放到Contributors
  • add, commit, push
  • 创建一个pull request到主分支

对于repo的协作者,欢迎直接在主分支上进行修改

2. Generalized Aerial Robots 广义空中机器人

从构型出发,我们首先从空中机器人本体进行介绍。

Generalized Aerial Robots

2.1 Multicopter 多旋翼

这里会对多旋翼进行一个简单介绍,所以不会罗列详细的工作,更接近于科普。

多旋翼是空中机器人中最常见的类型,通常由多个旋翼组成。 以下会介绍多旋翼的几种分类方式,做到尽可能地独立,但仍然无法避免交叉。

2.1.1 Multicopter-Configuration 按构型

这里准确想表达的是变形的能力(morphing/deformable),虽然以多旋翼为基础的空中机器人构型各式各样,但可以将其分为能够变形和不能变形两大类。

列举几个工作(若作为科普,可以直接看YouTube):

另外bi-copter的工作:

2.1.2 Multicopter-Media 按介质

多见于跨空气-水-地面(结合)介质的空中机器人。

2.1.3 Multicopter-Modal 按模态

2.1.4 Multicopter-Actuate 按驱动

以四旋翼无人机举例,传统的构型是欠驱动的,即只有四个控制输入(四个电机),而有六个自由度(x、y、z、roll、pitch、yaw)。

全驱动则可以通过改变电机位姿或其他方法来实现。

2.1.5 Multicopter-Link 按挂载

多旋翼+刚体/灵巧/软体臂的方案就很多了,以下列举一些:

2.2 (E)VTOL 垂起固定翼

2.3 Fixed-Wing 固定翼

2.4 Helicopter 直升机

2.5 Balloon 气球/飞艇

2.6 Ornithopter 扑翼机

3. Research 主要研究方向与最新研究

Aerial Robotics Research

3.1 Autonomous Flight 自主飞行

自主飞行包含感知,规划与控制等方面的工作。如果粗糙地将其分类,可以分成基于优化的和基于学习的两大类。其中,基于优化的往往采用前端+后端的方法,而基于学习的则各式各样。

近期的工作:

基于优化的工作:

3.2 Racing 竞速/大机动飞行

我了解到的主要是 Prof. Davide高飞老师的工作:

Davide 的 Agile flight 和 Racing 有点交叉,主要基于优化,RL及differential做:

高飞老师则是model-based,到与learning结合:

3.3 Flight Control 飞行控制

todo

3.4 Exploration 探索

todo

3.5 Swarm 集群

涉及到编队,协同飞行等:

3.6 State Estimation 状态估计

空中机器人的状态估计问题在于通过传感器观测数据和控制输入,在噪声干扰下推断机器人位姿、环境特征位置等。SLAM技术中,机器人不仅需要实时定位自身位姿,还需同步构建环境地图。

根据传感器类型来划分:

3.7 Aerial Manipulation 空中操作

3.8 Novel/Morphing Design 新构型设计/变形无人机

todo

4. Tech stack 技术栈

Aerial Robotics Tech Stack

4.1 General Design 总体设计

总体设计一般是从需求出发,进行设计与分析。

4.1.1 Self-Design 自主设计

  • CAD设计与仿真:SolidWorks, Fusion 360, CATIA
  • 机械结构仿真与分析:ANSYS, ABAQUS
  • 快速原型制作:3D打印
  • 设计翼型,根据需求确定桨叶升力系数等参数
  • 根据需求和重量要求选择电机,电调,桨叶,电池等

4.1.2 Buy-as-Needed 采购

根据需求,参考飞行评测Fast Drone 250

4.2 Dynamics 动力学

4.2.1 Fluid Mechanics流体力学

推荐听余文胜老师的课。

4.2.2 Aerodynamics空气动力学

  • 气动建模与分析:XFLR5(简单构型)

4.2.3 Flight Dynamics飞行力学

4.3 Mechanics 机械

4.4 Embedded 嵌入式

4.4.1 STM32

4.4.2 NuttX

实时操作系统,支持Pixhawk开源飞控平台

4.4.3 Pixhawk

4.4.4 Other Flight Hardware

4.5 Communication 通信

4.5.1 Communication Basics 通信原理

4.5.2 UART

4.5.3 CAN

4.5.4 ROS及功能包

4.6 Sensing/Perception 传感/感知

4.6.1 Sensors 传感器

4.6.2 State Estimation 状态估计

4.6.3 Tracking 目标跟踪

4.7 Control 控制

4.7.1 Control Basics 控制原理

4.7.2 Control Methods 控制方法

4.7.3 PX4-Autopilot PX4飞控

官方资源:

推荐走issue和discord两条路,论坛基本没人看也没人回复。相比之下,discord更活跃一些,channels也比较全面。另外一定要多看doc,其实很多东西已经写在里面了(注意看对应版本的,会有很多参数的定义变化,比如EKF2_AID_MASKEV_CTRL)。

其他资源:

PX4的版本不是越新越好,大家普遍用的还是1.13,尽管后续版本出了很多功能;但是如果你能接受1.13里混乱的mixer,这个版本的issue与debug信息应该是最多的。

PX4的clone与编译可以参考make px4

如果只是对控制算法或某个模块算法进行改进,那么你需要c++的继承派生虚函数等知识(写的很优雅,其实叫自动驾驶仪,飞控窄了);如果是对飞控的整体架构进行改进,那么你需要了解PX4的整体架构,尤其是模块间的通信机制。

4.7.4 Optimal Control and Optimization 最优控制与优化

(来自于科研时长两年半的硕士升博士生,主要研究中包含间接法最优控制)

4.7.4.1 Introduction 简要概述

最优控制方法主要分成间接法最优控制和直接法最优控制。间接法和直接法最主要的区别我认为是是否引入协态变量以及是否把各个时间点离散出来(直接法中的单次打靶法除外),具体来说直接法会需要把初始时刻、终端时刻、以及中间部分时间节点的状态(有时候也会把控制量拎出来)结合起来形成一个巨大的状态矩阵。除此之外,最优控制问题和一般的优化问题的主要区别在于,最优控制问题需要考虑动力学方程或者是运动学方程,它是作为一个全时间段上的约束存在的。

4.7.4.2 Indirect Method 间接法

推荐书籍:飞行器最优控制 —— 西工大出版社、Optimal Control with Engineering Application(Hans.P.Geering)

  • 间接法最优控制主要是以变分法(Variation)为基础,庞特里亚金极大值(也有说是极小值的)原理为理论指导的最优控制方法,优势在于其得出的解一定符合一阶最优性条件(即一定是极值点),缺点在于协态初值需要猜,而且全局最优解和这个猜的初值有关(即不一定是最值点)。
  • 具体推导可以看《飞行器最优控制》(毕竟是中文版,遇到不懂的再看后面那本,前者基本上讲的很清楚),引入了协态量,从我的视角来看它就是并列于状态量的一个概念(所以英文叫costate),然后围绕状态量和协态量有一个微分方程组,即一个augmented的动力学方程。除此之外,围绕一阶最优性条件会导出很多关于协态的边界条件(称为横截条件transversal condition),再加上原本状态量的约束,就构成了所有的边界条件。另外,控制量可以基于一阶最优性条件,使得哈密顿函数取到极大值来得到(一般存在解析解,是可以用协态和状态表达的)。如此以后,就成功地把求最优的问题改写成了一个普通的求初始值(初始的协态和状态,需要猜)的问题。另外,如果有等式形式的初始和终端状态约束,比如x+y=R(R为常数)这种,《飞行器最优控制》这本书也有提到,能够很方便的引入刚刚转化好的方程中。
  • 当整个优化过程有全时间域的路径约束(比如x>R)这种,可以看第二本书,这本书的第二章有具体推导,可以看一下。

4.7.4.3 Direct Method 直接法

  • 直接法的话我了解的不是很多,主要是跟着学校的课程学的
  • 直接法的分类,对直接法的各个类别有非常详细的分类,肯定比我厉害。

4.7.4.4 常见的优化算法

另外我想在这补充一些常见的优化算法以及用这些算法的C++和Matlab库,虽然现在的包啊库啊整合的都挺好,但是有一些底层的原理如果有感兴趣的也可以自己去看一看。

当然,这些只是目前我看的一些,只是之前科研的时候突然感兴趣简单搜索了一下,肯定还有很多别的算法,感兴趣的话可以在这里补充。

最优控制说到底是一个优化问题,拿到解析解或数值解(数值优化方法)。另外机器人学的数值优化推荐看汪博在深蓝学院讲的。

4.8 Planning 规划

推荐课程:移动机器人运动规划

4.8.1 Path Planning 路径规划

一定要区分path和trajectory,path是空间上依次排列的点集,而trajectory是时间参数化后的,时间的函数。

4.8.2 Trajectory Planning 轨迹规划

4.8.3 Motion Planning 运动规划

4.8.4 Task Planning 任务规划

4.9 Simulation 仿真

4.9.1 Gazebo

4.9.2 AirSim

4.9.3 Flightmare

4.9.4 Rotors Simulation

4.9.5 Isaac Sim

4.9.5.1 安装配置

  • 官方教程:
    • Installation
    • 这个安装教程看着有点麻烦,其实如果主要是使用IsaacLab进行训练,可以直接看isaaclab documentation里面的isaacsim安装部分,简单明了。
  • 注意事项:
    • 建议下载asset在本地部署
    • 第一次运行isaacsim一般都会卡住然后显示isaacsim no responding,一般就是等一段时间或者重新启动几次就会好。

4.9.5.2 IsaacLab

  • Isaac Lab 是基于 NVIDIA Isaac Sim 构建的一个开源机器人学习与控制研究平台,主要用于做RL训练。
  • 安装:
  • 环境:
    • Available Environments
    • 环境类型:
      • Manager-based: 模块化、可扩展、结构化的工作流,适合构建复杂环境、多个组件协同工作的仿真任务。
      • Direct Workflow: 更加灵活,从底层对环境进行定义。一般自定义环境用direct workflow较多,但是缺点是不便于维护和协作,不适合做大项目。

4.9.5.3 相关资源(非官方)

4.9.6 Aerial Gym

4.10 Real Flight 实机

4.10.1 Remote Control 遥控

4.10.2 QGC

4.10.3 Flight Log 飞行日志

什么?你不看飞行日志?

PX4官网有专门的介绍:Flight Log Analysis

在这些工具之中,我强推Plotjuggler(Grazie Davide Faconti!):

  • 跨平台,linux上体验更好,可以和ros联动,你会爱上他的republish功能的
  • 每次打开都有奇奇怪怪的图
  • 还有教程,支持插件,github

4.10.4 Companion Computer 上位机

4.11 NN Methods learning方法

4.11.1 Reinforcement Learning 强化学习

4.11.2 Generative Models 生成模型

4.11.3 (M)LLMs (视觉等模态)大语言模型

5. Labs and Homepages

注:所有顺序无意义

5.1 Domestic(PRC) 国内

5.1.1 Mainland PRC 中国大陆

5.1.2 Hongkong, China 中国香港

5.2 Overseas(Out of PRC) 国外

5.2.1 North America 北美

5.2.2 Europe 欧洲

5.2.3 Asia 亚洲

About

The tech&art of aerial robotics;空中机器人学习与研究

Topics

Resources

License

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •