四轴飞行器基础知识总结

概述

四轴飞行器(Quadrotor)是一种多旋翼飞行器。四轴飞行器的四个螺旋桨都是电机直连的简单机构,十字形的布局允许飞行器通过改变电机转速获得旋转机身的力,从而调整自身姿态。本文就基本原理做一些总结,并以 esp-drone 开源项目作为示例。

模拟器

使用大疆的 Fight Simulator 模拟器。

注意使用 SD 4个键同时按下启动无人机,然后可以使用手柄控制。

实践

ESP-Drone 是基于乐鑫 ESP32/ESP32-S2/ESP32-S3 开发的小型无人机解决方案,可使用手机 APP 或游戏手柄通过 Wi-Fi 网络进行连接和控制。

关于手柄

在 Linux 系统上一般会生成 /dev/input/js0 的设备,直接读取该字符设备的内容:

1
2
3
4
5
6
7
8
9
10
$ sudo cat /dev/input/js0 | hexdump
0000000 893c 0f5d 0000 0081 893c 0f5d 0000 0181
0000010 893c 0f5d 0000 0281 893c 0f5d 0000 0381
0000020 893c 0f5d 0000 0481 893c 0f5d 0000 0581
0000030 893c 0f5d 0000 0681 893c 0f5d 0000 0781
0000040 893c 0f5d 0000 0881 893c 0f5d 0000 0981
0000050 893c 0f5d 0000 0a81 893c 0f5d 0000 0082
0000060 893c 0f5d 0000 0182 893c 0f5d 8001 0282
0000070 893c 0f5d 0000 0382 893c 0f5d 0000 0482
0000080 893c 0f5d 8001 0582 893c 0f5d 0000 0682

也可以使用测试套件 joystick 中的命令 jstest 来进行测试,可以将读取的数据对应到具体的按钮:

1
2
3
4
5
6
$ sudo jstest /dev/input/js0
Driver version is 2.1.0.
Joystick (Microsoft X-Box 360 pad) has 8 axes (X, Y, Z, Rx, Ry, Rz, Hat0X, Hat0Y)
and 11 buttons (BtnA, BtnB, BtnX, BtnY, BtnTL, BtnTR, BtnSelect, BtnStart, BtnMode, BtnThumbL, BtnThumbR).
Testing ... (interrupt to exit)
Axes: 0: 0 1: 0 2:-32767 3: 0 4: 0 5:-32767 6: 0 7: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off