Commit Graph
100 Commits
Author SHA1 Message Date
Oleg Kalachev a5504cc550 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-20 07:59:00 +03:00
Oleg Kalachev cfb0f17a9a Minor cli change 2025-07-15 01:29:25 +03:00
Oleg Kalachev d61948ec9c Rename printIMUCal to printIMUCalibration for consistency with rc 2025-07-15 01:25:10 +03:00
Oleg Kalachev 0c87d4d634 Port changes from commit 52819e4 2025-07-15 01:22:18 +03:00
Oleg Kalachev 4d1f9de872 Remove unnecessary documentation files 2025-07-10 06:14:22 +03:00
Oleg Kalachev cf3d4d7ced 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-10 06:08:37 +03:00
Oleg Kalachev 443e5213f0 Return zero rotation vector when converting neutral quaternion
Previously it would return nans
2025-07-10 06:07:16 +03:00
Oleg Kalachev f24db96b50 Add missing equals and non-equals operators for quaternion lib 2025-07-10 06:07:08 +03:00
Oleg Kalachev 86305a08f8 Add missing newlines to initialization prints 2025-07-10 06:06:46 +03:00
Oleg Kalachev 21dcb39b7e 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-07-10 06:02:38 +03:00
Oleg Kalachev c08c89f667 Minor code updates 2025-07-10 05:58:50 +03:00
Oleg Kalachev 114d2305de Make wi-fi code more consistent between the firmware and simulation 2025-07-10 05:54:52 +03:00
Oleg Kalachev a93e046117 Make sending udp packets much faster
Turns out parsing IP address string is very slow
2025-05-07 17:43:43 +03:00
Oleg Kalachev e6e4db0c4f Update ESP32-Core to 3.2.0 2025-05-07 17:41:48 +03:00
Oleg Kalachev d8fbc193c1 Make accelerometer calibration more verbose
Print the number of each calibration step
2025-05-07 17:40:31 +03:00
Oleg Kalachev dcd95176b4 Make low pass filter formula more straightforward 2025-04-30 00:16:16 +03:00
Oleg Kalachev b7cebbb3d6 Add some missing operator for vector library 2025-04-30 00:16:02 +03:00
Oleg Kalachev a6ccd236de Fix simulation build in Actions
Switched runner to Ubuntu 22.04 since Gazebo 11 now has binaries for 22.04 (amd64 only).
Changed the building tutorial to reflect that.
2025-04-29 23:02:56 +03:00
Oleg Kalachev e7a06b9413 Minor code simplifications 2025-04-29 23:01:59 +03:00
Oleg Kalachev 678bc7238e Update MAVLink-Arduino to 2.0.16 2025-04-29 23:01:46 +03:00
Oleg Kalachev 6670b4f358 Simplify and improve acc calibration command output 2025-04-29 23:01:09 +03:00
Oleg Kalachev 7f80a8a58d Remove twxs.cmake from the list of recommended extensions 2025-04-29 22:59:32 +03:00
Oleg Kalachev 2bd74e7f6f Minor code style fix 2025-04-29 22:59:09 +03:00
Oleg Kalachev d378d01dbc Encode if the mode in stabilized in heartbeat message 2025-04-29 22:58:54 +03:00
Oleg Kalachev e8341976f6 Cleanup 2025-03-01 00:02:44 +03:00
Oleg Kalachev f2aae92f1e Cleanups and updates 2025-02-28 23:58:31 +03:00
Oleg Kalachev 0a7ed1039f Rename flu to frd function to match the code style 2025-02-28 23:39:03 +03:00
Oleg Kalachev d4d1797ffc Update main readme for the minimal version 2025-02-28 23:22:03 +03:00
Oleg Kalachev 209986b9cd Change accel calibration code style a bit 2025-02-28 23:15:02 +03:00
Oleg Kalachev 32cdbba2a1 Remove dt multiplier from acc correction and increase acc weight
More classical complementary filter implementation
Increase effective accelerometer weight for faster convergence
2025-02-28 23:13:44 +03:00
Oleg Kalachev dd1ea4f604 Cleanup mavlink subsystem code 2025-02-28 23:12:57 +03:00
Oleg Kalachev 5fc30dbd8a Put last control time in RC control mavlink message instead of send time 2025-02-28 23:08:40 +03:00
Oleg Kalachev 51fa5a6cac Simplify and fix code 2025-02-28 23:07:37 +03:00
Oleg Kalachev 75127eb6f8 Remove non-nessesary printArray function 2025-02-28 23:06:12 +03:00
Oleg Kalachev 89c1ada005 Remove command parsing to simplify the code 2025-02-28 23:02:02 +03:00
Oleg Kalachev 6058e8ecab Refactor CLI submodule
Move command parsing to doCommand
Parse command with splitString instead of stringToken
Trim commands
Move cliTestMotor to the bottom
Rename parseInput to handleInput, which is more clear
Move motor test function to motors.ino
Remove parameters table functionality to simplify the code
2025-02-28 22:49:37 +03:00
Oleg Kalachev 67e4a95697 Minor fix in joystick support for simulation
Don't use channels variable as it breaks code isolation
2025-02-28 22:30:29 +03:00
Oleg Kalachev fafe630e4c Improve RC reading in calibration process 2025-02-28 22:29:36 +03:00
Oleg Kalachev 5ff44db8dd Simplify WIFI_ENABLED macro test 2025-02-28 22:28:44 +03:00
Oleg Kalachev dbfbe11478 Add test on building the firmware without Wi-Fi to Actions 2025-02-28 22:26:05 +03:00
Oleg Kalachev 41b5932a5d Move SBUS RC declaration to the top 2025-02-28 22:25:27 +03:00
Oleg Kalachev add03482aa Minor cleanups and fixes 2025-02-28 22:24:15 +03:00
Oleg Kalachev 32c4875ca1 Increase pwm frequency and resolution 2025-02-28 22:22:39 +03:00
Oleg Kalachev 07c5ae19dd Update upload-artifact action to fix build 2025-02-28 22:21:53 +03:00
Oleg Kalachev d60968ea25 Remove RC_CHANNELS macro 2025-02-28 22:19:52 +03:00
Oleg Kalachev 03c6576b72 Move controlsTime variable to rc.ino 2025-01-11 01:17:11 +03:00
Oleg Kalachev 59a8a80cce Minor cleanup 2025-01-10 07:15:38 +03:00
Oleg Kalachev 5530ad2981 Move loopRate to time.ino 2025-01-10 07:15:15 +03:00
Oleg Kalachev f9e1802bc0 Make util module header instead of .ino-file 2025-01-10 07:02:00 +03:00
Oleg Kalachev ddc46c049f Make ONE_G definition const and move to utils.ino 2025-01-09 11:31:33 +03:00
Oleg Kalachev 8c9bff0813 Make motor indexes definition const int and move them to motors.ino
Remove motor indexes definitions from flix.ino
Add motors.ino to simulation code and implement required mocks
2025-01-09 11:17:44 +03:00
Oleg Kalachev e3873c99c5 Fix getDutyCycle return type to make it possible to increase resolution 2025-01-09 11:02:57 +03:00
Oleg Kalachev fd437b96d3 Add missing const qualifiers to some quaternion methods 2025-01-09 10:03:08 +03:00
Oleg Kalachev 9a977e85c8 Implement rotate method for quaternions as replace for multiplication
Vector rotating method is renamed from `rotate` to `rotateVector` to avoid inconsistent object and argument order in different `rotate` methods
2025-01-09 10:00:16 +03:00
Oleg Kalachev e66cadbb57 Some fixes and updates to readme and other articles 2025-01-09 10:00:05 +03:00
Oleg Kalachev abfb3fea05 Update ESP32-core to 3.1.0 2025-01-09 09:59:51 +03:00
Oleg Kalachev 672149bd34 Use ubuntu-20.04 runner to build simulator in CI
The latest Ubuntu Gazebo 11 officially supports is Ubuntu 20.04
2025-01-09 09:59:40 +03:00
Oleg Kalachev 6c76d339e0 Add battery connector cable to components list 2025-01-09 09:59:31 +03:00
Oleg Kalachev a76f5a2299 Remove redundant inline specifiers
In-class defined methods are specified as inline by default
2025-01-09 09:59:10 +03:00
Oleg Kalachev 8e8c8d05bb Some minor cleanups and fixes 2025-01-09 09:58:56 +03:00
Oleg Kalachev 1582238abc Various minor fixes 2024-12-27 21:53:23 +03:00
Oleg Kalachev f7434921e5 Fix joystick work in simulation
Logic was broken as joystickGet never got called
2024-12-27 15:38:44 +03:00
Oleg Kalachev 3c28d0e950 Minor fix 2024-12-25 02:21:40 +03:00
Oleg Kalachev 77c621100f Increase motors output frequency 2024-12-25 02:19:06 +03:00
Oleg Kalachev 1ef1ed5fc4 Simplify motors duty cycle computation 2024-12-25 02:19:00 +03:00
Oleg Kalachev ce67baae89 Minor fixes 2024-12-25 02:18:52 +03:00
Oleg Kalachev ad9259810f Fix SBUS simulation logic
Don't consider zero values from not connected joystick
2024-12-25 02:17:58 +03:00
Oleg Kalachev c43624734d Move ONE_G definition to flix.ino 2024-12-25 02:17:50 +03:00
Oleg Kalachev 292b10197f Improve logic of passing channels data in simulated SBUS
Return the data the same way as on the real drone without touching channels global vairable
2024-12-25 02:17:43 +03:00
Oleg Kalachev 16c9d8fe8a Minor change 2024-12-25 02:17:28 +03:00
Oleg Kalachev 931f46b92d Don't let throttle be less than 0 in failsafe 2024-12-25 02:17:16 +03:00
Oleg Kalachev 441f82af95 Add notice on removing props in motor test commands in help 2024-12-25 02:16:34 +03:00
Oleg Kalachev 77effa5577 Rotate IMU data to support standard axes orientation in new FlixPeriph 2024-12-11 06:17:37 +03:00
Oleg Kalachev fcb426a16f Update MAVLink-Arduino to 2.0.11 2024-12-09 08:04:36 +03:00
Oleg Kalachev eea1a6a83c Minor fix in troubleshooting article 2024-12-08 07:40:24 +03:00
Oleg Kalachev 9d470cbdfa Add info on required version of Ubuntu for the simulation 2024-12-05 09:28:44 +03:00
Oleg Kalachev 6e140d673c Cleanup unused utility functions 2024-12-05 08:29:21 +03:00
Oleg Kalachev c75760e9e6 Some readme change regarding using different IMU board 2024-12-04 23:00:26 +03:00
Oleg Kalachev 172b6becc6 Use new FlixPeriph library with ICM-20948 support 2024-12-04 14:41:23 +03:00
Oleg Kalachev 475e9a87ba Configure IMU before calibrating the gyro which improves calibration 2024-12-04 12:25:07 +03:00
Oleg Kalachev ea141f851f Use 'loop rate' term instead of misleading 'loop frequency' 2024-12-04 07:00:00 +03:00
Oleg Kalachev 7fa3baa76a Add some minor clarification under the IMU orientation picture 2024-11-30 04:59:04 +03:00
Oleg Kalachev 2c5eac92ea Add diagram for IMU orientation 2024-11-29 10:14:11 +03:00
Oleg Kalachev 048a3c6375 Use the new UART2 pins for RC by default
To make it consistent with the documentation
2024-11-27 23:02:20 +03:00
Oleg Kalachev a65ec946c0 Update ESP32 core to 3.0.7 2024-11-24 01:45:41 +03:00
Oleg Kalachev 429aecbbad Temporarily disable macOS simulation build in CI 2024-11-24 01:08:03 +03:00
Oleg Kalachev a7b69f99d0 Fix non-working motor control commands 2024-11-24 00:17:47 +03:00
Oleg Kalachev b015c15a7e Remove non-working fullmot command 2024-11-24 00:10:37 +03:00
Oleg Kalachev 7a2f2d955b Minor fix to the troubleshooting 2024-11-23 18:18:19 +03:00
Oleg Kalachev c611549f67 Update link to the troubleshooting article 2024-11-23 18:16:46 +03:00
Oleg Kalachev be3c5bf312 Add troubleshooting article 2024-11-23 18:13:41 +03:00
Oleg Kalachev f6ddeb4689 Clarify GY-91 pin names 2024-11-12 21:02:47 +03:00
Oleg Kalachev f6006d3305 Fix c_cpp_properties.json to match updated ESP32 core version 2024-11-04 16:35:22 +03:00
Oleg Kalachev eca48c6546 Minor fix 2024-11-04 16:28:54 +03:00
Oleg Kalachev cd5f6721dc Updates to LED control code
Don't call digitaWrite on each setLED call
2024-11-04 16:28:43 +03:00
Oleg Kalachev e7445599cc Update core and libraries to the most recent versions 2024-11-04 16:28:13 +03:00
Oleg Kalachev 6327585754 Print accel calibration parameters in more convenient way 2024-11-04 14:37:05 +03:00
Oleg Kalachev ec832d4e37 Implement RC fail-safe 2024-11-04 11:51:17 +03:00
Oleg Kalachev 2fdad7bdb6 Remove LED horizontality signalization
It's better to control the attitude estimation using QGC
2024-11-03 17:41:13 +03:00
Oleg Kalachev c5c889679b Fix simulation build 2024-10-31 19:27:27 +03:00