Commit Graph

227 Commits

Author SHA1 Message Date
Oleg Kalachev 2fcf35289e Set mavlink control scale to 1 by default 2025-07-30 20:05:03 +03:00
Oleg Kalachev af86699eb3 Add support form arm/disarm mavlink command 2025-07-30 14:36:57 +03:00
Oleg Kalachev 496888903f Make rc loss timeout longer 2025-07-29 22:04:19 +03:00
Oleg Kalachev 3cde9e69c4 Fixes 2025-07-29 22:04:04 +03:00
Oleg Kalachev 310b48f856 Fix 2025-07-29 21:32:50 +03:00
Oleg Kalachev ce3e47d1ec Fix 2025-07-29 21:28:36 +03:00
Oleg Kalachev cc362c1d4b Fixes 2025-07-29 18:22:56 +03:00
Oleg Kalachev fc4feb8503 Fixed 2025-07-29 18:22:38 +03:00
Oleg Kalachev 3bbace6a1e Print armed state in rc command 2025-07-29 18:09:04 +03:00
Oleg Kalachev a090e3543c Add WIFI_UDP_ALWAYS_BROADCAST define 2025-07-29 18:08:57 +03:00
Oleg Kalachev dfceb8a6b2 Implement auto mode for automatic flight
Use arm/disarm gestures
Add arm/disarm commands
Add ratesExtra variable for 
Rename interpretRC to interpretControls
Rename controlRate to controlRates
Remove USER mode
Add invalidate methods for vector and quaternion
Add valid/invalid method for vector and quaternion
Add valid/invalid function
Print armed in rc command
Pass auto mode to heartbeat
Use actuator_control_target for motors
2025-07-29 18:02:09 +03:00
Oleg Kalachev 7e8bd3e834 Minor updates 2025-07-28 22:07:33 +03:00
Oleg Kalachev 1f47aa6d62 Add Python library (#20) 2025-07-22 14:17:08 +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 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 e389d717d6 Show unspecified core as * in sys command 2025-07-13 11:12:54 +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 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 389cfb94ab Add missing newlines to initialization prints 2025-06-19 13:19:00 +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 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 a491b28201 Make sending udp packets much faster
Turns out parsing IP address string is very slow
2025-05-06 04:32:36 +03:00
Oleg Kalachev 81037d94ec Some cli improvements
Improve loop rate formatting
Show cpu temperature in sys command
2025-05-06 03:16:45 +03:00
Oleg Kalachev 965813e8f0 Use interrupts instead of polling for main loop 2025-05-05 13:58:23 +03:00
Oleg Kalachev 94c2d399b3 Add sys command
Show ESP32 model and free heap
Show tasks table with stack and cpu usage
2025-05-05 04:32:41 +03:00
Oleg Kalachev 21dc47c472 Make mavlink print buffered
Combine all output of each step into one SERIAL_CONTROL message
2025-05-05 00:44:06 +03:00
Oleg Kalachev 4b938e8d89 Make accelerometer calibration more verbose
Print the number of each calibration step
2025-05-05 00:38:08 +03:00
Oleg Kalachev 67efcdd08a Remove unused macro
MAVLINK_CONTROL_SCALE is now parameter
2025-05-04 00:03:38 +03:00
Oleg Kalachev 5165355abc Make low pass filter formula more straightforward 2025-04-29 23:28:56 +03:00
Oleg Kalachev c14fe7c48b Add some missing operator for vector library 2025-04-29 23:21:12 +03:00
Oleg Kalachev fe98a5bf97 Minor code simplifications 2025-04-13 01:42:47 +03:00
Oleg Kalachev 94dc566643 Show landed state in imu command output 2025-03-29 16:19:23 +03:00
Oleg Kalachev 547f5087ef Pass landed state to mavlink
Using EXTENDED_SYS_STATE message
2025-03-29 16:14:37 +03:00
Oleg Kalachev 66a43ab246 Continuous gyro bias estimation (#17)
Estimate gyro bias continuously instead of calibrating the gyro at startup.
2025-03-29 12:21:40 +03:00
Oleg Kalachev 3a61dca102 Simplify and improve acc calibration command output 2025-03-29 01:05:55 +03:00
Oleg Kalachev d5148d12a1 Minor code style fix 2025-03-14 03:03:27 +03:00
Oleg Kalachev 208e50aa15 Encode if the mode in stabilized in heartbeat message 2025-03-14 03:02:43 +03:00
Oleg Kalachev 3fdebf39d8 Fix mavlink disconnection in pauses in cli commands
Implement pause function that proceeds processing mavlink.
Use temporal workaround for simulation, as micros function gives the same result on the same simulation step.
2025-02-28 19:25:41 +03:00
Oleg Kalachev 5bf2e06c5a Use natural order of ino files includes in simulation
In Arduino, ino files are included in alphabetical order.
Cleanup unused function declarations in simulation, add missing.
Rename flu to frd function to match the code style.
2025-02-28 19:06:58 +03:00
Oleg Kalachev bda44fca02 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 00:51:16 +03:00
Oleg Kalachev a2cf318189 Check target system id in mavlink messages
Skip messages addressed to other systems
2025-02-26 00:08:23 +03:00
Oleg Kalachev 83a8dcd63e Cleanup mavlink subsystem code 2025-02-24 13:06:38 +03:00