diff --git a/README.md b/README.md
index 58e490a..bf62098 100644
--- a/README.md
+++ b/README.md
@@ -138,10 +138,10 @@ You can see a user-contributed [variant of complete circuit diagram](https://mir
|Motor|Position|Direction|Prop type|Motor wires|GPIO|
|-|-|-|-|-|-|
- |Motor 0|Rear left|Counter-clockwise|B|Black & White|GPIO12 (*TDI*)|
- |Motor 1|Rear right|Clockwise|A|Blue & Red|GPIO13 (*TCK*)|
- |Motor 2|Front right|Counter-clockwise|B|Black & White|GPIO14 (*TMS*)|
- |Motor 3|Front left|Clockwise|A|Blue & Red|GPIO15 (*TD0*)|
+ |Motor 0|Rear left|Counter-clockwise|B|Black & White|GPIO12 *(TDI)*|
+ |Motor 1|Rear right|Clockwise|A|Blue & Red|GPIO13 *(TCK)*|
+ |Motor 2|Front right|Counter-clockwise|B|Black & White|GPIO14 *(TMS)*|
+ |Motor 3|Front left|Clockwise|A|Blue & Red|GPIO15 *(TD0)*|
Clockwise motors have blue & red wires and correspond to propeller type A (marked on the propeller).
Counter-clockwise motors have black & white wires correspond to propeller type B.
diff --git a/docs/assembly.md b/docs/assembly.md
index 5f5d6d5..b23c113 100644
--- a/docs/assembly.md
+++ b/docs/assembly.md
@@ -41,10 +41,10 @@ Motors connection table:
|Motor|Position|Direction|Prop type|Motor wires|GPIO|
|-|-|-|-|-|-|
-|Motor 0|Rear left|Counter-clockwise|B|Black & White|GPIO12 (*TDI*)|
-|Motor 1|Rear right|Clockwise|A|Blue & Red|GPIO13 (*TCK*)|
-|Motor 2|Front right|Counter-clockwise|B|Black & White|GPIO14 (*TMS*)|
-|Motor 3|Front left|Clockwise|A|Blue & Red|GPIO15 (*TD0*)|
+|Motor 0|Rear left|Counter-clockwise|B|Black & White|GPIO12 *(TDI)*|
+|Motor 1|Rear right|Clockwise|A|Blue & Red|GPIO13 *(TCK)*|
+|Motor 2|Front right|Counter-clockwise|B|Black & White|GPIO14 *(TMS)*|
+|Motor 3|Front left|Clockwise|A|Blue & Red|GPIO15 *(TD0)*|
## Motors tightening
diff --git a/docs/book/geometry.md b/docs/book/geometry.md
index 3523725..65df08d 100644
--- a/docs/book/geometry.md
+++ b/docs/book/geometry.md
@@ -110,7 +110,7 @@ float angle = Vector::angleBetween(a, b); // 1.57 (90 градусов)
#### Скалярное произведение
-Скалярное произведение векторов (*dot product*) — это произведение длин двух векторов на косинус угла между ними. В математике оно обозначается знаком `·` или слитным написанием векторов. Интуитивно, результат скалярного произведения показывает, насколько два вектора *сонаправлены*.
+Скалярное произведение векторов *(dot product)* — это произведение длин двух векторов на косинус угла между ними. В математике оно обозначается знаком `·` или слитным написанием векторов. Интуитивно, результат скалярного произведения показывает, насколько два вектора *сонаправлены*.
В Flix используется статический метод `Vector::dot()`:
@@ -124,7 +124,7 @@ float dotProduct = Vector::dot(a, b); // 32
#### Векторное произведение
-Векторное произведение (*cross product*) позволяет найти вектор, перпендикулярный двум другим векторам. В математике оно обозначается знаком `×`, а в прошивке используется статический метод `Vector::cross()`:
+Векторное произведение *(cross product)* позволяет найти вектор, перпендикулярный двум другим векторам. В математике оно обозначается знаком `×`, а в прошивке используется статический метод `Vector::cross()`:
```cpp
Vector a(1, 2, 3);
@@ -144,9 +144,9 @@ Vector crossProduct = Vector::cross(a, b); // -3, 6, -3
В прошивке углы Эйлера сохраняются в обычный объект `Vector` (хоть и, строго говоря, не являются вектором):
-* Угол по крену (*roll*) — `vector.x`.
-* Угол по тангажу (*pitch*) — `vector.y`.
-* Угол по рысканию (*yaw*) — `vector.z`.
+* Угол по крену *(roll)* — `vector.x`.
+* Угол по тангажу *(pitch)* — `vector.y`.
+* Угол по рысканию *(yaw)* — `vector.z`.
Особенности углов Эйлера:
@@ -162,8 +162,8 @@ Vector crossProduct = Vector::cross(a, b); // -3, 6, -3
Помимо углов Эйлера, любую ориентацию в трехмерном пространстве можно представить в виде вращения вокруг некоторой оси на некоторый угол. В геометрии это доказывается, как **теорема вращения Эйлера**. В таком представлении ориентация задается двумя величинами:
-* **Ось вращения** (*axis*) — единичный вектор, определяющий ось вращения.
-* **Угол поворота** (*angle* или *θ*) — угол, на который нужно повернуть объект вокруг этой оси.
+* **Ось вращения** *(axis)* — единичный вектор, определяющий ось вращения.
+* **Угол поворота** *(angle* или *θ)* — угол, на который нужно повернуть объект вокруг этой оси.
В Flix ось вращения задается объектом `Vector`, а угол поворота — числом типа `float` в радианах:
@@ -177,7 +177,7 @@ float angle = radians(45);
### Вектор вращения
-Если умножить вектор *axis* на угол поворота *θ*, то получится **вектор вращения** (*rotation vector*). Этот вектор играет важную роль в алгоритмах управления ориентацией летательного аппарата.
+Если умножить вектор *axis* на угол поворота *θ*, то получится **вектор вращения** *(rotation vector)*. Этот вектор играет важную роль в алгоритмах управления ориентацией летательного аппарата.
Вектор вращения обладает замечательным свойством: если угловые скорости объекта (в собственной системе координат) в каждый момент времени совпадают с компонентами этого вектора, то за единичное время объект придет к заданной этим вектором ориентации. Это свойство позволяет использовать вектор вращения для управления ориентацией объекта посредством управления угловыми скоростями.
@@ -198,7 +198,7 @@ Vector rotation = radians(45) * Vector(1, 2, 3);
quaternion.h.
-Вектор вращения удобен, но еще удобнее использовать **кватернион**. В Flix кватернионы задаются объектами `Quaternion` из библиотеки `quaternion.h`. Кватернион состоит из четырех значений: *w*, *x*, *y*, *z* и рассчитывается из вектора оси вращения (*axis*) и угла поворота (*θ*) по формуле:
+Вектор вращения удобен, но еще удобнее использовать **кватернион**. В Flix кватернионы задаются объектами `Quaternion` из библиотеки `quaternion.h`. Кватернион состоит из четырех значений: *w*, *x*, *y*, *z* и рассчитывается из вектора оси вращения *(axis)* и угла поворота *(θ)* по формуле:
\\[ q = \left( \begin{array}{c} w \\\\ x \\\\ y \\\\ z \end{array} \right) = \left( \begin{array}{c} \cos\left(\frac{\theta}{2}\right) \\\\ axis\_x \cdot \sin\left(\frac{\theta}{2}\right) \\\\ axis\_y \cdot \sin\left(\frac{\theta}{2}\right) \\\\ axis\_z \cdot \sin\left(\frac{\theta}{2}\right) \end{array} \right) \\]
diff --git a/docs/book/gyro.md b/docs/book/gyro.md
index 5034343..e5dc223 100644
--- a/docs/book/gyro.md
+++ b/docs/book/gyro.md
@@ -177,7 +177,7 @@ imu.setDLPF(imu.DLPF_MAX);
## Калибровка гироскопа
-Как и любое измерительное устройство, гироскоп вносит искажения в измерения. Наиболее простая модель этих искажений делит их на статические смещения (*bias*) и случайный шум (*noise*):
+Как и любое измерительное устройство, гироскоп вносит искажения в измерения. Наиболее простая модель этих искажений делит их на статические смещения *(bias)* и случайный шум *(noise)*:
\\[ gyro_{xyz}=rates_{xyz}+bias_{xyz}+noise \\]
diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md
index 918116c..1d5293e 100644
--- a/docs/troubleshooting.md
+++ b/docs/troubleshooting.md
@@ -13,10 +13,10 @@ Do the following:
Do the following:
* **Check the battery voltage**. Use a multimeter to measure the battery voltage. It should be in range of 3.7-4.2 V.
-* **Check if there are some startup errors**. Connect the ESP32 to the computer and check the Serial Monitor output. Use the Reset button to make sure you see the whole ESP32 output.
+* **Check if there are some startup errors**. Connect the ESP32 to the computer and check the Serial Monitor output. Use the Reset button to make sure you see the whole ESP32 startup output.
* **Check the baudrate is correct**. If you see garbage characters in the Serial Monitor, make sure the baudrate is set to 115200.
* **Make sure correct IMU model is chosen**. If using ICM-20948/MPU-6050 board, change `MPU9250` to `ICM20948`/`MPU6050` in the `imu.ino` file.
-* **Check if the console is working**. Perform `help` command in Serial Monitor. You should see the list of available commands. You can also access the console using QGroundControl (*Vehicle Setup* ⇒ *Analyze Tools* ⇒ *MAVLink Console*).
+* **Check if the console is working**. Perform `help` command in Serial Monitor. You should see the list of available commands. You can also access the console using QGroundControl *(Vehicle Setup* ⇒ *Analyze Tools* ⇒ *MAVLink Console)*.
* **Configure QGroundControl correctly before connecting to the drone** if you use it to control the drone. Go to the settings and enable *Virtual Joystick*. *Auto-Center Throttle* setting **should be disabled**.
* **If QGroundControl doesn't connect**, you might need to disable the firewall and/or VPN on your computer.
* **Check the IMU is working**. Perform `imu` command and check its output:
diff --git a/docs/usage.md b/docs/usage.md
index 5265fa9..3e993ed 100644
--- a/docs/usage.md
+++ b/docs/usage.md
@@ -250,8 +250,8 @@ You can configure the Wi-Fi using parameters and console commands.
The Wi-Fi mode is chosen using `WIFI_MODE` parameter in QGroundControl or in the console:
* `0` — Wi-Fi is disabled.
-* `1` — Access Point mode (*AP*) — the drone creates a Wi-Fi network.
-* `2` — Client mode (*STA*) — the drone connects to an existing Wi-Fi network.
+* `1` — Access Point mode *(AP)* — the drone creates a Wi-Fi network.
+* `2` — Client mode *(STA)* — the drone connects to an existing Wi-Fi network.
* `3` — *ESP-NOW (not implemented yet)*.
> [!WARNING]
diff --git a/tools/pyflix/README.md b/tools/pyflix/README.md
index c336275..4ffb794 100644
--- a/tools/pyflix/README.md
+++ b/tools/pyflix/README.md
@@ -92,17 +92,17 @@ Full list of events:
|-----|-----------|----------------|
|`connected`|Connected to the drone||
|`disconnected`|Connection is lost||
-|`armed`|Armed state update|Armed state (*bool*)|
-|`mode`|Flight mode update|Flight mode (*str*)|
-|`landed`|Landed state update|Landed state (*bool*)|
+|`armed`|Armed state update|Armed state *(bool)*|
+|`mode`|Flight mode update|Flight mode *(str)*|
+|`landed`|Landed state update|Landed state *(bool)*|
|`print`|The drone prints text to the console|Text|
-|`attitude`|Attitude update|Attitude quaternion (*list*)|
-|`attitude_euler`|Attitude update|Euler angles (*list*)|
-|`rates`|Angular rates update|Angular rates (*list*)|
-|`channels`|Raw RC channels update|Raw RC channels (*list*)|
-|`motors`|Motor outputs update|Motor outputs (*list*)|
-|`acc`|Accelerometer update|Accelerometer output (*list*)|
-|`gyro`|Gyroscope update|Gyroscope output (*list*)|
+|`attitude`|Attitude update|Attitude quaternion *(list)*|
+|`attitude_euler`|Attitude update|Euler angles *(list)*|
+|`rates`|Angular rates update|Angular rates *(list)*|
+|`channels`|Raw RC channels update|Raw RC channels *(list)*|
+|`motors`|Motor outputs update|Motor outputs *(list)*|
+|`acc`|Accelerometer update|Accelerometer output *(list)*|
+|`gyro`|Gyroscope update|Gyroscope output *(list)*|
|`mavlink`|Received MAVLink message|Message object|
|`mavlink.`|Received specific MAVLink message|Message object|
|`mavlink.`|Received specific MAVLink message|Message object|
@@ -277,7 +277,3 @@ logger = logging.getLogger('flix')
logger.setLevel(logging.DEBUG) # be more verbose
logger.setLevel(logging.WARNING) # be less verbose
```
-
-## Stability
-
-The library is in development stage. The API is not stable.