Oleg Kalachev
49039f752d
Refactor Wi-Fi log download
...
Use MAVLink LOG_REQUEST_DATA and LOG_DATA for download log instead of console.
Make Wi-Fi download default way of downloading the log.
Make `log` command only print the header and `log dump` dump the log.
2025-11-14 20:21:05 +03:00
Oleg Kalachev
348721acc9
Updates in documentation
...
Fixes, updates, new illustrations.
2025-11-10 20:16:14 +03:00
Oleg Kalachev
774144c430
Many updates to documentation
...
Updates to main readme.
Add much more info to usage article.
Move simulator building to simulation's readme.
Improve assembly article.
Many fixes.
Updates in diagrams.
2025-11-06 13:55:52 +03:00
Oleg Kalachev
0e6651ab82
Add Rate class for running the code at fixed rate
2025-11-06 13:41:33 +03:00
Oleg Kalachev
1a017ccb97
Keep only one floating point version of map function
...
Two variants are redundant
2025-11-02 00:02:28 +03:00
Oleg Kalachev
7170b20d1d
Simplify command for command handling
2025-10-21 19:41:10 +03:00
Oleg Kalachev
dc9aed113b
Minor code fixes
2025-10-21 19:41:05 +03:00
Oleg Kalachev
08b6123eb7
Fixes to troubleshooting
2025-10-21 19:40:54 +03:00
Oleg Kalachev
1a8b63ee04
Send only mavlink heartbeats until connected
2025-10-21 19:39:17 +03:00
Oleg Kalachev
8c49a40516
Skip attitude/rate control if thrustTarget is ineffective
...
To prevent i term windup.
2025-10-20 23:01:17 +03:00
Oleg Kalachev
ca595edce5
Refactor PID control to simplify the code and modifications
...
Each PID uses its internal dt, so may be various contexts with different rate.
PID has max dt, so no need to reset explicitly.
2025-10-20 22:54:18 +03:00
Oleg Kalachev
e50a9d5fea
Revert t variable type to float instead of double
...
For the sake of simplicity and consistency.
2025-10-19 20:46:38 +03:00
Oleg Kalachev
ebac78dc0f
Minor change
2025-10-19 20:46:26 +03:00
Oleg Kalachev
186cf88d84
Add generic Delay filter
2025-10-19 20:46:11 +03:00
Oleg Kalachev
253aae2220
Lowercase imu and rc variables
...
To make it more obvious these are variables, not classes.
2025-10-19 20:45:56 +03:00
Oleg Kalachev
6f0964fac4
Rename failsafe.ino to safety.ino
...
To aggregate all the safety related functionality.
2025-10-19 20:44:54 +03:00
Oleg Kalachev
1d034f268d
Add ESP32-S3 build to Actions
2025-10-19 20:44:46 +03:00
Oleg Kalachev
1ca7d32862
Update VSCode settings
...
Disable error squiggles as they often work incorrectly.
Decrease number of include libraries to index.
2025-10-14 11:43:55 +03:00
Oleg Kalachev
ab941e34fa
Fix Gazebo installation
...
Installation script is deprecated, install using package on Ubuntu 20.04
2025-10-13 18:56:14 +03:00
Oleg Kalachev
7bee3d1751
Improve rc failsafe logic
...
Don't trigger failsafe if there's no RC at all
Use AUTO mode for descending, instead of STAB
Increase RC loss timeout and descend time
2025-10-12 21:27:08 +03:00
Oleg Kalachev
06ec5f3160
Disarm the drone on simulator plugin reset
...
In order to reset yaw target.
2025-10-07 15:45:48 +03:00
Oleg Kalachev
c4533e3ac8
Reset yaw target when drone disarmed
...
Prevent unexpected behavior when the drone tries to restore its old yaw on takeoff.
2025-10-07 15:43:28 +03:00
Oleg Kalachev
e673b50f52
Include FlixPeriph header instead of MPU9250
...
This simplifies choosing IMU model
2025-10-07 08:43:12 +03:00
Oleg Kalachev
5151bb9133
Ensure showing correct raw data in imu command
...
Some IMUs will reset acc and gyro buffer on whoAmI() call
2025-10-07 08:43:06 +03:00
Oleg Kalachev
c08c8ad91c
pyflix@0.9
2025-10-03 06:49:44 +03:00
Oleg Kalachev
e44f32fca7
pyflix: don't quit on any sendto error
2025-10-03 06:47:56 +03:00
Oleg Kalachev
ca03bdb260
pyflix: partially fix wireless downloading logs
2025-10-03 06:46:56 +03:00
Oleg Kalachev
b3dffe99fb
pyflix: add passing event name to off method
2025-10-03 06:46:29 +03:00
Oleg Kalachev
6e6a71fa69
Remove unneeded advice from troubleshooting
2025-10-03 06:45:16 +03:00
Oleg Kalachev
838fe11f6b
Simplify mode index check in set_mode
2025-09-26 05:03:36 +03:00
Oleg Kalachev
8b36509932
pyflix@0.8
2025-09-25 16:55:06 +03:00
Oleg Kalachev
0268c8ebcf
Some fixes and updates in pyflix
...
Fix set_controls
Add set_armed method
2025-09-25 16:53:49 +03:00
Oleg Kalachev
09bf09e520
Update schematics diagram
2025-09-25 06:16:02 +03:00
Oleg Kalachev
4c89b10767
Fix fields order in psq command
2025-09-20 22:35:36 +03:00
Oleg Kalachev
a79df52959
Don't trigger rc failsafe in AUTO mode or if disamed
2025-09-20 20:36:36 +03:00
Oleg Kalachev
e88888baeb
Fix rc calibration steps enumeration again
2025-09-11 11:47:28 +03:00
Oleg Kalachev
de69b228ff
Fix rc calibration steps enumeration
2025-09-02 11:03:44 +03:00
Oleg Kalachev
f9739dcd7e
Don't arm by mavlink command if throttle is not low
2025-08-29 03:47:51 +03:00
Oleg Kalachev
708c8f04dc
Minor docs fix
2025-08-28 05:17:46 +03:00
Oleg Kalachev
2128201440
Fix simulation build
2025-08-28 01:13:38 +03:00
Oleg Kalachev
8e3c86f5ee
pyflix@0.7
2025-08-28 00:52:27 +03:00
Oleg Kalachev
40fc4b96b5
Implement AUTO mode for automatic flights
...
Support SET_ATTITUDE_TARGET, SET_ACTUATOR_CONTROL_TARGET in mavlink.
ACTUATOR_OUTPUT_STATUS is changed ACTUATOR_CONTROL_TARGET to match used message for setting motor outputs.
Add support for changing mode from mavlink.
Support automatic flights in pyflix.
2025-08-28 00:49:24 +03:00
Oleg Kalachev
10fafbc4a0
Send udp packets in unicast after connection is established
...
This makes qgc connection faster.
Add WIFI_UDP_REMOTE_ADDR macro for default remote address for both the firmware and simulation.
2025-08-27 05:01:07 +03:00
Oleg Kalachev
d47d7b8bd4
Support arm/disarm mavlink commands
...
Refactor commands handling to remove repeating ack message packing.
2025-08-27 04:45:25 +03:00
Oleg Kalachev
a7fdc2a88f
Minor change in cli help message
2025-08-27 04:43:24 +03:00
Oleg Kalachev
c1788e2c75
Refactor arming logic
...
Arm and disarm with gestures only: left stick right/down for arming, left/down for disarming.
Remove arming switch as it complicates arming gestures logic.
Remove MAV_CTRL_SCALE parameter as it complicates arming gestures logic, advise to decrease TILT_MAX when controlling with a smartphone.
Put some minimal thrust to motors to indicate armed state.
Rename build article to usage article, add flight instructions.
2025-08-27 03:19:26 +03:00
Oleg Kalachev
beb655fdcb
Add illustration for qgc proxy for pyflix
2025-08-27 03:13:28 +03:00
Oleg Kalachev
bf0cdac111
Major update of the articles
...
Reflect control subsystem refactoring.
Update dataflow diagram.
Add control subsystem diagram.
Minor updates.
2025-08-27 00:09:42 +03:00
Oleg Kalachev
b21e81a68b
Add cli commands for switching mode
...
Make mode variable int instead of enum, which is more convinient.
2025-08-26 21:55:27 +03:00
Oleg Kalachev
8418723ccc
Refactor control subsystem
...
Add interpretControls function to convert pilot commands and mode into control targets and make control functions independent from the mode.
Add ratesExtra target for rates feed-forward; remove yawMode.
Rename controlRate to controlRates to reflect rates variable name.
Remove USER mode.
2025-08-26 01:00:56 +03:00
Oleg Kalachev
a1539157b8
Show raw values in imu command
2025-08-22 17:20:33 +03:00
Oleg Kalachev
80922dc68a
Some updates to readme and build article
...
Add info on using USB gamepad
Replace KINGKONG transmitter with BetaFPV LiteRadio
Add RoboCamp video
2025-08-20 22:06:17 +03:00
Oleg Kalachev
fcd2738763
Add link to stls from robocamp
2025-08-19 15:20:24 +03:00
Oleg Kalachev
fa07ed3a4e
Minor docs change
2025-08-15 00:51:08 +03:00
Oleg Kalachev
dee4d97ab3
Add getRoll, getPitch, setRoll, setPitch methods
...
Add methods to Quaternion for consistency with getYaw and setYaw
2025-08-09 18:10:11 +03:00
Oleg Kalachev
ea35db37da
Minor code simplification
2025-08-09 17:53:06 +03:00
Oleg Kalachev
cd953f24ad
Add RoboCamp to built drones article
2025-08-07 14:29:39 +03:00
Oleg Kalachev
3f80712641
Some updates to articles
2025-08-06 23:52:35 +03:00
Oleg Kalachev
18bacb64f3
Make rc loss timeout longer
2025-07-31 12:35:28 +03:00
Oleg Kalachev
7e8bd3e834
Minor updates
2025-07-28 22:07:33 +03:00
Oleg Kalachev
bb0643e8c6
Add missing set_velocity method stub to pyflix
2025-07-28 22:06:30 +03:00
Oleg Kalachev
32f417efae
Updates in pyflix
...
Rename mav_to to system_id to match firmware naming.
Readme updates.
2025-07-24 09:15:44 +03:00
Oleg Kalachev
018a6d4fce
Add repository field to python library
2025-07-22 17:21:51 +03:00
Oleg Kalachev and GitHub
1f47aa6d62
Add Python library ( #20 )
2025-07-22 14:17:08 +03:00
Oleg Kalachev
779fa13e80
Increase connection timeout for arduino-cli as it prevents some users from downloading the core
2025-07-21 11:12:47 +03:00
Oleg Kalachev
5eccb3f0c4
Fix rates, acc and gyro coordinate frame in mavlink
...
All of them should be in frd.
Get rid of fluToFrd function - there is no big need for it.
2025-07-19 05:32:49 +03:00
Oleg Kalachev
29f1a2b22b
Minor fixes to builds list
2025-07-18 14:19:43 +03:00
Oleg Kalachev
1d4ce810a9
Add chkroko's bldc build
2025-07-18 12:14:42 +03:00
Oleg Kalachev
32874b92fd
Minor fixes
2025-07-14 12:05:16 +03:00
Oleg Kalachev
6b38070e43
Rename printIMUCal to printIMUCalibration for consistency with rc
2025-07-14 12:04:02 +03:00
Oleg Kalachev
52819e403b
Major rework of rc subsystem
...
Implement channels mapping calibration.
Store mapping in parameters.
Get rid of `controls` array and store control inputs in `controlRoll`, `controlPitch`, ... variables.
Move `channels` variable to rc.ino, channels are not involved when controled using mavlink.
'Neutral' values are renamed to 'zero' - more precise naming.
`controlsTime` is renamed to `controlTime`.
Use unsigned values for channels.
Make channel values in simulation more alike to real world: unsigned values in range [1000, 2000].
Send RC_CHANNELS_RAW instead of RC_CHANNELS_SCALED via mavlink
Don't send channels data via mavlink if rc is not used
2025-07-14 12:01:29 +03:00
Oleg Kalachev
449dd44741
Fix storing nans and infs in preferences in simulator
...
Turns out file streams cannot parse nans and infs on some platforms, so use std::stof to parse.
2025-07-14 09:52:49 +03:00
Oleg Kalachev
e389d717d6
Show unspecified core as * in sys command
2025-07-13 11:12:54 +03:00
Oleg Kalachev
ea8463ed70
Fixes in firmware variables description
2025-07-12 10:07:52 +03:00
Oleg Kalachev
85afe405cb
Improve pause function work
...
Fix disconnecting from qgc while pausing in the simulation.
Consider total delay time in micros() in simulation to increase t while delaying.
Simplify and get rid of ARDUINO macro check.
2025-07-12 09:29:47 +03:00
Oleg Kalachev
fd4bcbeb89
Minor changes
2025-07-10 07:27:53 +03:00
Oleg Kalachev
121b50d896
Increase motors pwm frequency to 78Khz
...
1000 Hz is too low frequency considering the update loop for motors signal is also 1000 Hz.
Decrease resolution as it's required to set larger pwm frequencies.
This change should vastly improve control jitter and remove audible motors noise.
2025-07-03 03:46:11 +03:00
Oleg Kalachev
48c7135efb
Return zero rotation vector when converting neutral quaternion
...
Previously it would return nans
2025-07-01 02:48:49 +03:00
Oleg Kalachev
9229b743eb
Add missing equals and non-equals operators for quaternion lib
2025-07-01 02:47:01 +03:00
Oleg Kalachev
52d31ba7a5
Add missing includes to Arduino.h to make build more portable
2025-07-01 02:38:47 +03:00
Oleg Kalachev
f11ab2dc16
Add info on mpu-6050
2025-06-30 12:29:07 +03:00
Oleg Kalachev
93383cc7f9
Add chkroko's build
2025-06-19 13:25:01 +03:00
Oleg Kalachev
389cfb94ab
Add missing newlines to initialization prints
2025-06-19 13:19:00 +03:00
Oleg Kalachev
045f2c5ed5
Minor docs changes
2025-06-19 13:19:00 +03:00
Oleg Kalachev
31f5e1efbb
Upload built firmware binaries as artifact
2025-06-02 02:32:27 +03:00
Oleg Kalachev
2d77317abc
Minor fixes in book
2025-05-31 16:56:05 +03:00
Oleg Kalachev
963cbe09dd
Minor fix in book
2025-05-31 13:15:25 +03:00
Oleg Kalachev
98fc0cf5b4
Add quaternion and vector chapter to book
2025-05-31 12:46:33 +03:00
Oleg Kalachev
6b7601c0bd
Improve vector and quaternion libraries
...
Make the order or basic methods consistent between Vector and Quaternion.
Remove `ZYX` from Euler method names as this is standard for robotics.
Rename angular rates to rotation vector, which is more correct.
Make rotation methods static, to keep the arguments order consistent.
Make `Quaternion::fromAxisAngle` accept Vector for axis.
Minor fixes.
2025-05-31 04:17:00 +03:00
Oleg Kalachev
929bdd1f35
Minor fixes in book
2025-05-31 03:29:44 +03:00
Oleg Kalachev
660913f8bb
Remove version 0 section from the readme
2025-05-23 17:17:27 +03:00
Oleg Kalachev
25e3056891
Add disclaimer to readme
2025-05-23 16:47:04 +03:00
Oleg Kalachev
be7b6ec0c9
Fix simulator build
2025-05-16 05:02:27 +03:00
Oleg Kalachev
9c8c0e2578
Minor code updates
2025-05-15 09:22:17 +03:00
Oleg Kalachev
7e5a75a01f
Revert sending mavlink udp packets in unicast
...
This requires more complex approach as client ip may change between reconnections
2025-05-10 05:45:57 +03:00
Oleg Kalachev
2bcab6edb3
Make cli command case insensitive
...
iOS QGC capitalizes the command by default, so it's more convinient
2025-05-10 05:15:54 +03:00
Oleg Kalachev
df2b10acd4
Make wi-fi code more consistent between the firmware and simulation
2025-05-10 05:13:57 +03:00
Oleg Kalachev
31d6636754
Send mavlink udp packets in unicast after connected
...
Tests and research show this is more efficient way of sending telemetry
2025-05-10 05:08:04 +03:00
Oleg Kalachev
b143c2f1b3
Add recommended 3D printing settings to readme
2025-05-09 06:55:28 +03:00
Oleg Kalachev
a491b28201
Make sending udp packets much faster
...
Turns out parsing IP address string is very slow
2025-05-06 04:32:36 +03:00