Skip to content

Add Gen6 hybrid ADRC+MPCC demo (hardware + sim) - #41

Open
saeed95-lab wants to merge 16 commits into
mainfrom
feature/gen6-hybrid-adrc-mpcc
Open

Add Gen6 hybrid ADRC+MPCC demo (hardware + sim)#41
saeed95-lab wants to merge 16 commits into
mainfrom
feature/gen6-hybrid-adrc-mpcc

Conversation

@saeed95-lab

Copy link
Copy Markdown
Collaborator

Summary

  • Adds Control.AdrcMpcc (ESO/ADRC + mild deadbeat → SVPWM) and Assets/Examples/hybrid_adrc_mpcc_demo.json for Gen6 hardware comparison against FOC / LADRC.
  • Adds bring-up notes in docs/18_hybrid_adrc_mpcc_bringup.md (safe no-load iq steps, cal params, flash command).
  • Adds standalone locked-rotor hybrid simulation under Lib/Simulation/hybrid_adrc_mpcc/ (./run_hybrid.sh) plus minimal plant headers; does not change the root host-tool CMake graph build path beyond optional Simulation headers.

Test plan

  • Host tools still configure/build from a clean tree (cmake -B build -G Ninja && cmake --build build -j8)
  • Codegen/flash Assets/Examples/hybrid_adrc_mpcc_demo.json via ./Tools/build_flash_graph.sh
  • With calibrated Motor.PMSM.*, enable at iq=0 then ramp iq 1→3 A; confirm no OC and duties leave ~50%
  • Optional: Lib/Simulation/hybrid_adrc_mpcc/run_hybrid.sh and inspect results/adrc_mpcc_hybrid/
  • Compare same iq step vs foc_demo / ladrc_demo telemetry

Made with Cursor

Provides Control.AdrcMpcc, hybrid_adrc_mpcc_demo graph, bring-up docs, and a
standalone locked-rotor hybrid simulation package so colleagues can compare
against FOC/LADRC on Gen6 without the larger MPCC experiment history.

Co-authored-by: Cursor <cursoragent@cursor.com>
@datacrystals

Copy link
Copy Markdown
Contributor

seems to fail compiling, see log:
`

Generate and Flash
Graph: /home/tliao/Desktop/RTE/Assets/Examples/foc_demo.json
Build: /home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware

Building graph firmware ...
Graph: /home/tliao/Desktop/RTE/Assets/Examples/foc_demo.json
Output: /home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware

[2026-08-03 19:04:19.150] [INFO] Running RTECodeEmitter: '/home/tliao/Desktop/RTE/build/Source/RTECodeEmitter/RTECodeEmitter' '--base-src' '/home/tliao/Desktop/RTE/Images/Gen6FW' '--graph' '/home/tliao/Desktop/RTE/Assets/Examples/foc_demo.json' '--output' '/home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware-src' '--verbosity' 'INFO'
[2026-08-03 19:04:21.301] [INFO] Emitter produced firmware tree at: /home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware-src
[2026-08-03 19:04:21.301] [INFO] Detected GCC ARM toolchain: /opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin/arm-none-eabi-gcc
[2026-08-03 19:04:21.301] [INFO] Configuring firmware: export PATH='/opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin':$PATH; 'cmake' '-S' '/home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware-src' '-B' '/home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware' '-G' 'Ninja' '-DCMAKE_TOOLCHAIN_FILE=/home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware-src/cmake/gcc-arm-none-eabi.cmake' '-DCMAKE_BUILD_TYPE=Release' '-DIVP_CORE_DIR=/home/tliao/Desktop/RTE/Lib/InverterProtocol'
[2026-08-03 19:04:21.330] [INFO] Building firmware: export PATH='/opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin':$PATH; 'cmake' '--build' '/home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware' '--target' 'STM32CubeMX' '-j' '12'
[2026-08-03 19:04:27.309] [INFO] ELF: /home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware/STM32CubeMX.elf
[2026-08-03 19:04:27.309] [INFO] BIN: /home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware/STM32CubeMX.bin
[2026-08-03 19:04:27.309] [INFO] ELF size: 593892 bytes
[2026-08-03 19:04:27.309] [INFO] BIN size: 195156 bytes
[2026-08-03 19:04:27.309] [INFO] Firmware size summary: export PATH='/opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin':$PATH; '/opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin/arm-none-eabi-size' '/home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware/STM32CubeMX.elf'
[2026-08-03 19:04:27.310] [INFO] Firmware build completed successfully.

Live-flash client detected at http://127.0.0.1:18080
Uploading /home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware/STM32CubeMX.bin ...
Flash job accepted; waiting for completion ...
Client flash state: Done

Flash complete.

[finished] Operation completed successfully.

============================================================
Generate and Flash
Graph: /home/tliao/Desktop/RTE/Assets/Examples/foc_demo.json
Build: /home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware

Building graph firmware ...
Graph: /home/tliao/Desktop/RTE/Assets/Examples/foc_demo.json
Output: /home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware

[2026-08-03 19:25:19.968] [INFO] Running RTECodeEmitter: '/home/tliao/Desktop/RTE/build/Source/RTECodeEmitter/RTECodeEmitter' '--base-src' '/home/tliao/Desktop/RTE/Images/Gen6FW' '--graph' '/home/tliao/Desktop/RTE/Assets/Examples/foc_demo.json' '--output' '/home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware-src' '--verbosity' 'INFO'
[2026-08-03 19:25:22.131] [INFO] Emitter produced firmware tree at: /home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware-src
[2026-08-03 19:25:22.132] [INFO] Detected GCC ARM toolchain: /opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin/arm-none-eabi-gcc
[2026-08-03 19:25:22.132] [INFO] Configuring firmware: export PATH='/opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin':$PATH; 'cmake' '-S' '/home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware-src' '-B' '/home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware' '-G' 'Ninja' '-DCMAKE_TOOLCHAIN_FILE=/home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware-src/cmake/gcc-arm-none-eabi.cmake' '-DCMAKE_BUILD_TYPE=Release' '-DIVP_CORE_DIR=/home/tliao/Desktop/RTE/Lib/InverterProtocol'
[2026-08-03 19:25:22.165] [INFO] Building firmware: export PATH='/opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin':$PATH; 'cmake' '--build' '/home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware' '--target' 'STM32CubeMX' '-j' '12'
[2026-08-03 19:25:31.439] [INFO] ELF: /home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware/STM32CubeMX.elf
[2026-08-03 19:25:31.439] [INFO] BIN: /home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware/STM32CubeMX.bin
[2026-08-03 19:25:31.439] [INFO] ELF size: 594144 bytes
[2026-08-03 19:25:31.439] [INFO] BIN size: 195212 bytes
[2026-08-03 19:25:31.439] [INFO] Firmware size summary: export PATH='/opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin':$PATH; '/opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin/arm-none-eabi-size' '/home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware/STM32CubeMX.elf'
[2026-08-03 19:25:31.441] [INFO] Firmware build completed successfully.

Live-flash client detected at http://127.0.0.1:18080
Uploading /home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware/STM32CubeMX.bin ...
Flash job accepted; waiting for completion ...
Client flash state: Done

Flash complete.

[finished] Operation completed successfully.

============================================================
Generate and Flash
Graph: /home/tliao/Desktop/RTE/Assets/Examples/ladrc_demo.json
Build: /home/tliao/Desktop/RTE/build/nodegui/ladrc_demo-f5e48b9e/firmware

Building graph firmware ...
Graph: /home/tliao/Desktop/RTE/Assets/Examples/ladrc_demo.json
Output: /home/tliao/Desktop/RTE/build/nodegui/ladrc_demo-f5e48b9e/firmware

[2026-08-03 19:34:53.632] [INFO] Running RTECodeEmitter: '/home/tliao/Desktop/RTE/build/Source/RTECodeEmitter/RTECodeEmitter' '--base-src' '/home/tliao/Desktop/RTE/Images/Gen6FW' '--graph' '/home/tliao/Desktop/RTE/Assets/Examples/ladrc_demo.json' '--output' '/home/tliao/Desktop/RTE/build/nodegui/ladrc_demo-f5e48b9e/firmware-src' '--verbosity' 'INFO'
[2026-08-03 19:34:55.719] [INFO] Emitter produced firmware tree at: /home/tliao/Desktop/RTE/build/nodegui/ladrc_demo-f5e48b9e/firmware-src
[2026-08-03 19:34:55.720] [INFO] Detected GCC ARM toolchain: /opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin/arm-none-eabi-gcc
[2026-08-03 19:34:55.720] [INFO] Configuring firmware: export PATH='/opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin':$PATH; 'cmake' '-S' '/home/tliao/Desktop/RTE/build/nodegui/ladrc_demo-f5e48b9e/firmware-src' '-B' '/home/tliao/Desktop/RTE/build/nodegui/ladrc_demo-f5e48b9e/firmware' '-G' 'Ninja' '-DCMAKE_TOOLCHAIN_FILE=/home/tliao/Desktop/RTE/build/nodegui/ladrc_demo-f5e48b9e/firmware-src/cmake/gcc-arm-none-eabi.cmake' '-DCMAKE_BUILD_TYPE=Release' '-DIVP_CORE_DIR=/home/tliao/Desktop/RTE/Lib/InverterProtocol'
[2026-08-03 19:34:55.969] [INFO] Building firmware: export PATH='/opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin':$PATH; 'cmake' '--build' '/home/tliao/Desktop/RTE/build/nodegui/ladrc_demo-f5e48b9e/firmware' '--target' 'STM32CubeMX' '-j' '12'
[2026-08-03 19:35:03.327] [INFO] ELF: /home/tliao/Desktop/RTE/build/nodegui/ladrc_demo-f5e48b9e/firmware/STM32CubeMX.elf
[2026-08-03 19:35:03.327] [INFO] BIN: /home/tliao/Desktop/RTE/build/nodegui/ladrc_demo-f5e48b9e/firmware/STM32CubeMX.bin
[2026-08-03 19:35:03.327] [INFO] ELF size: 593760 bytes
[2026-08-03 19:35:03.327] [INFO] BIN size: 194892 bytes
[2026-08-03 19:35:03.327] [INFO] Firmware size summary: export PATH='/opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin':$PATH; '/opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin/arm-none-eabi-size' '/home/tliao/Desktop/RTE/build/nodegui/ladrc_demo-f5e48b9e/firmware/STM32CubeMX.elf'
[2026-08-03 19:35:03.329] [INFO] Firmware build completed successfully.

Live-flash client detected at http://127.0.0.1:18080
Uploading /home/tliao/Desktop/RTE/build/nodegui/ladrc_demo-f5e48b9e/firmware/STM32CubeMX.bin ...
Flash job accepted; waiting for completion ...
Client flash state: Done

Flash complete.

[finished] Operation completed successfully.

============================================================
Generate and Flash
Graph: /home/tliao/Desktop/RTE/Assets/Examples/foc_demo.json
Build: /home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware

Building graph firmware ...
Graph: /home/tliao/Desktop/RTE/Assets/Examples/foc_demo.json
Output: /home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware

[2026-08-03 19:39:21.202] [INFO] Running RTECodeEmitter: '/home/tliao/Desktop/RTE/build/Source/RTECodeEmitter/RTECodeEmitter' '--base-src' '/home/tliao/Desktop/RTE/Images/Gen6FW' '--graph' '/home/tliao/Desktop/RTE/Assets/Examples/foc_demo.json' '--output' '/home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware-src' '--verbosity' 'INFO'
[2026-08-03 19:39:23.378] [INFO] Emitter produced firmware tree at: /home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware-src
[2026-08-03 19:39:23.378] [INFO] Detected GCC ARM toolchain: /opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin/arm-none-eabi-gcc
[2026-08-03 19:39:23.379] [INFO] Configuring firmware: export PATH='/opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin':$PATH; 'cmake' '-S' '/home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware-src' '-B' '/home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware' '-G' 'Ninja' '-DCMAKE_TOOLCHAIN_FILE=/home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware-src/cmake/gcc-arm-none-eabi.cmake' '-DCMAKE_BUILD_TYPE=Release' '-DIVP_CORE_DIR=/home/tliao/Desktop/RTE/Lib/InverterProtocol'
[2026-08-03 19:39:23.408] [INFO] Building firmware: export PATH='/opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin':$PATH; 'cmake' '--build' '/home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware' '--target' 'STM32CubeMX' '-j' '12'
[2026-08-03 19:39:31.716] [INFO] ELF: /home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware/STM32CubeMX.elf
[2026-08-03 19:39:31.716] [INFO] BIN: /home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware/STM32CubeMX.bin
[2026-08-03 19:39:31.716] [INFO] ELF size: 594144 bytes
[2026-08-03 19:39:31.716] [INFO] BIN size: 195212 bytes
[2026-08-03 19:39:31.716] [INFO] Firmware size summary: export PATH='/opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin':$PATH; '/opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin/arm-none-eabi-size' '/home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware/STM32CubeMX.elf'
[2026-08-03 19:39:31.717] [INFO] Firmware build completed successfully.

Live-flash client detected at http://127.0.0.1:18080
Uploading /home/tliao/Desktop/RTE/build/nodegui/foc_demo-ac12aa7c/firmware/STM32CubeMX.bin ...
Flash job accepted; waiting for completion ...
Client flash state: Done

Flash complete.

[finished] Operation completed successfully.

============================================================
Generate and Flash
Graph: /home/tliao/Desktop/RTE/Assets/Examples/hybrid_adrc_mpcc_demo.json
Build: /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware

Building graph firmware ...
Graph: /home/tliao/Desktop/RTE/Assets/Examples/hybrid_adrc_mpcc_demo.json
Output: /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware

[2026-08-03 19:57:07.184] [INFO] Running RTECodeEmitter: '/home/tliao/Desktop/RTE/build/Source/RTECodeEmitter/RTECodeEmitter' '--base-src' '/home/tliao/Desktop/RTE/Images/Gen6FW' '--graph' '/home/tliao/Desktop/RTE/Assets/Examples/hybrid_adrc_mpcc_demo.json' '--output' '/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src' '--verbosity' 'INFO'
[2026-08-03 19:57:09.466] [INFO] Emitter produced firmware tree at: /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src
[2026-08-03 19:57:09.466] [INFO] Detected GCC ARM toolchain: /opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin/arm-none-eabi-gcc
[2026-08-03 19:57:09.466] [INFO] Configuring firmware: export PATH='/opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin':$PATH; 'cmake' '-S' '/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src' '-B' '/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware' '-G' 'Ninja' '-DCMAKE_TOOLCHAIN_FILE=/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/cmake/gcc-arm-none-eabi.cmake' '-DCMAKE_BUILD_TYPE=Release' '-DIVP_CORE_DIR=/home/tliao/Desktop/RTE/Lib/InverterProtocol'
[2026-08-03 19:57:09.709] [INFO] Building firmware: export PATH='/opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin':$PATH; 'cmake' '--build' '/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware' '--target' 'STM32CubeMX' '-j' '12'
[2026-08-03 19:57:17.311] [ERROR] Command failed with exit code 256: export PATH='/opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin':$PATH; 'cmake' '--build' '/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware' '--target' 'STM32CubeMX' '-j' '12'
[2026-08-03 19:57:17.311] [ERROR] ---- full output ----
[2026-08-03 19:57:17.311] [ERROR] [1/113] Building C object CMakeFiles/STM32CubeMX.dir/Src/sysmem.c.obj
[2026-08-03 19:57:17.311] [ERROR] [2/113] Building C object CMakeFiles/STM32CubeMX.dir/Src/syscalls.c.obj
[2026-08-03 19:57:17.311] [ERROR] [3/113] Building ASM object CMakeFiles/STM32CubeMX.dir/startup_stm32h723xx.s.obj
[2026-08-03 19:57:17.311] [ERROR] [4/113] Building C object CMakeFiles/STM32CubeMX.dir/Src/dma.c.obj
[2026-08-03 19:57:17.311] [ERROR] [5/113] Building C object CMakeFiles/STM32CubeMX.dir/Src/stm32h7xx_hal_msp.c.obj
[2026-08-03 19:57:17.311] [ERROR] [6/113] Building C object CMakeFiles/STM32CubeMX.dir/Src/stm32h7xx_it.c.obj
[2026-08-03 19:57:17.311] [ERROR] [7/113] Building C object CMakeFiles/STM32CubeMX.dir/Src/usart.c.obj
[2026-08-03 19:57:17.311] [ERROR] [8/113] Building C object CMakeFiles/STM32CubeMX.dir/home/tliao/Desktop/RTE/Lib/InverterProtocol/src/protocol.c.obj
[2026-08-03 19:57:17.311] [ERROR] [9/113] Building C object CMakeFiles/STM32CubeMX.dir/Src/tim.c.obj
[2026-08-03 19:57:17.311] [ERROR] [10/113] Building C object CMakeFiles/STM32CubeMX.dir/Src/fdcan.c.obj
[2026-08-03 19:57:17.311] [ERROR] [11/113] Building C object CMakeFiles/STM32CubeMX.dir/Src/gpio.c.obj
[2026-08-03 19:57:17.311] [ERROR] [12/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/LoopStats.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [13/113] Building C object CMakeFiles/STM32CubeMX.dir/Src/main.c.obj
[2026-08-03 19:57:17.311] [ERROR] [14/113] Building C object CMakeFiles/STM32CubeMX.dir/Src/adc.c.obj
[2026-08-03 19:57:17.311] [ERROR] [15/113] Building C object CMakeFiles/STM32CubeMX.dir/home/tliao/Desktop/RTE/Lib/InverterProtocol/src/packet_parser.c.obj
[2026-08-03 19:57:17.311] [ERROR] [16/113] Building C object CMakeFiles/STM32CubeMX.dir/home/tliao/Desktop/RTE/Lib/InverterProtocol/src/packet_builder.c.obj
[2026-08-03 19:57:17.311] [ERROR] [17/113] Building C object CMakeFiles/STM32CubeMX.dir/Src/spi.c.obj
[2026-08-03 19:57:17.311] [ERROR] [18/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Command/CommandInitializer.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [19/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Command/Commands/HelpCommand.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [20/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Control/FaultCallbacks.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [21/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Control/CommandShell.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [22/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Control/FaultManager.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [23/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Command/CommandManager.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [24/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Command/Commands/FaultCommands.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [25/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/platform_api.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [26/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Command/Commands/SensorCommands.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [27/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Command/Commands/SystemCommands.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [28/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Telemetry.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [29/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Control/VoltageVectorSchedule.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [30/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/InverterMain.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [31/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Control/VectorPIController.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [32/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Command/Commands/CanCommands.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [33/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Control/CurrentObserver.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [34/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Control/MotorParameterEstimator.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [35/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Command/Commands/CalibrationCommands.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [36/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Control/OpenLoopController.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [37/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Control/FocController.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [38/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Command/Commands/FocCommands.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [39/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Calibration/MotorCalibration.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [40/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Control/FocControlManager.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [41/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Command/Commands/ControlCommands.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [42/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Calibration/EncoderCycleCalibrator.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [43/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Calibration/Common/CalScratchBuffer.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [44/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Calibration/CalKvStore.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [45/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Control/ControlSupervisor.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [46/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Calibration/AutoCalibrationCoordinator.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [47/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Calibration/EncoderOffsetCalibrator.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/Src/Inverter/Calibration/EncoderOffsetCalibrator.cpp: In function 'bool Inverter::encoderAngleReliable()':
[2026-08-03 19:57:17.311] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/Src/Inverter/Calibration/EncoderOffsetCalibrator.cpp:228:41: warning: comparison of integer expressions of different signedness: 'int' and 'unsigned int' [-Wsign-compare]
[2026-08-03 19:57:17.311] [ERROR] 228 | (enc.sinMax() - enc.sinMin() > 10000U) &&
[2026-08-03 19:57:17.311] [ERROR] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
[2026-08-03 19:57:17.311] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/Src/Inverter/Calibration/EncoderOffsetCalibrator.cpp:229:41: warning: comparison of integer expressions of different signedness: 'int' and 'unsigned int' [-Wsign-compare]
[2026-08-03 19:57:17.311] [ERROR] 229 | (enc.cosMax() - enc.cosMin() > 10000U);
[2026-08-03 19:57:17.311] [ERROR] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
[2026-08-03 19:57:17.311] [ERROR] [48/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Calibration/Common/CalibrationHardware.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [49/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Calibration/Common/BreakawayFinder.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [50/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Calibration/EncoderLinearityCalibrator.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [51/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Calibration/Common/EncoderTracker.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [52/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Calibration/Common/CurrentLimitedRamp.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [53/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Calibration/InductanceCalibrator.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [54/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Calibration/PoleCalibrator.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [55/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Calibration/FluxLinkageCalibrator.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/Src/Inverter/Calibration/FluxLinkageCalibrator.cpp: In member function 'void Inverter::FluxLinkageCalibrator::update()':
[2026-08-03 19:57:17.311] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/Src/Inverter/Calibration/FluxLinkageCalibrator.cpp:174:25: warning: unused variable 'ramp_frac' [-Wunused-variable]
[2026-08-03 19:57:17.311] [ERROR] 174 | const float ramp_frac = (elapsed >= RAMP_MS) ? 1.0f
[2026-08-03 19:57:17.311] [ERROR] | ^~~~~~~~~
[2026-08-03 19:57:17.311] [ERROR] [56/113] Building C object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/GateDriver/gate_driver.c.obj
[2026-08-03 19:57:17.311] [ERROR] [57/113] Building C object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/CAN/can_display.c.obj
[2026-08-03 19:57:17.311] [ERROR] [58/113] Building C object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/UART/mcp2221a_driver.c.obj
[2026-08-03 19:57:17.311] [ERROR] [59/113] Building C object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/Storage/cy15b102q_driver.c.obj
[2026-08-03 19:57:17.311] [ERROR] [60/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/Storage/MotorConfigStore.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [61/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/CAN/FdcanFault.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [62/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/Storage/RteParamStore.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [63/113] Building C object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/Logging/ontime_logger.c.obj
[2026-08-03 19:57:17.311] [ERROR] [64/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Calibration/ResistanceCalibrator.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [65/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/Logging/SupplyMonitor.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [66/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/Storage/FramStore.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [67/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/Sensors/CurrentSensor.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [68/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/Sensors/CurrentSensorTest.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [69/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/Sensors/DcLinkCurrentSensor.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [70/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/Sensors/DcLinkVoltageSensor.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [71/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/Sensors/PoleEstimator.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [72/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/Sensors/EncoderADC.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [73/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/Sensors/SpikeRecorder.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [74/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/Sensors/ApplicationSensors.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [75/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/CAN/CanProtocolTransport.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [76/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/Sensors/MAX22530.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [77/113] Building CXX object CMakeFiles/STM32CubeMX.dir/generated/domain_vsense_generated.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [78/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/Sensors/SampleScheduler.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [79/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/CAN/CanBus.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [80/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/CAN/CanSession.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [81/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/PWM/pwm.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [82/113] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir///Src/system_stm32h7xx.c.obj
[2026-08-03 19:57:17.311] [ERROR] [83/113] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir///Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c.obj
[2026-08-03 19:57:17.311] [ERROR] [84/113] Building CXX object CMakeFiles/STM32CubeMX.dir/Src/Inverter/Drivers/Sensors/PhaseCurrentADC.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [85/113] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir///Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash_ex.c.obj
[2026-08-03 19:57:17.311] [ERROR] [86/113] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir///Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.c.obj
[2026-08-03 19:57:17.311] [ERROR] [87/113] Building CXX object CMakeFiles/STM32CubeMX.dir/generated/bridges_generated.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] [88/113] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir///Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.c.obj
[2026-08-03 19:57:17.311] [ERROR] [89/113] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir///Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_hsem.c.obj
[2026-08-03 19:57:17.311] [ERROR] [90/113] Building CXX object CMakeFiles/STM32CubeMX.dir/generated/domain_app_loop_generated.cpp.obj
[2026-08-03 19:57:17.311] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_app_loop_generated.cpp: In function 'void app::AppLoopStep(AppLoopState&)':
[2026-08-03 19:57:17.311] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_app_loop_generated.cpp:163:69: warning: 'au::celsius' is deprecated: celsius() is ambiguous. Use celsius_pt() for points, or celsius_qty() for quantities [-Wdeprecated-declarations]
[2026-08-03 19:57:17.311] [ERROR] 163 | const rte::Dimensionless Value = state.Temps.T_Motor.in(au::celsius);
[2026-08-03 19:57:17.311] [ERROR] | ^~~~~~~
[2026-08-03 19:57:17.311] [ERROR] In file included from /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/InverterCodegen/RteQuantity.h:7,
[2026-08-03 19:57:17.311] [ERROR] from /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_app_loop_generated.h:6,
[2026-08-03 19:57:17.311] [ERROR] from /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_app_loop_generated.cpp:3:
[2026-08-03 19:57:17.311] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/au/au.hh:12202:52: note: declared here
[2026-08-03 19:57:17.311] [ERROR] 12202 | "quantities")]] AU_DEVICE_VAR constexpr auto celsius = QuantityMaker{};
[2026-08-03 19:57:17.311] [ERROR] | ^~~~~~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_app_loop_generated.cpp:170:68: warning: 'au::celsius' is deprecated: celsius() is ambiguous. Use celsius_pt() for points, or celsius_qty() for quantities [-Wdeprecated-declarations]
[2026-08-03 19:57:17.312] [ERROR] 170 | const rte::Dimensionless Value = state.Temps.T_Inv1.in(au::celsius);
[2026-08-03 19:57:17.312] [ERROR] | ^~~~~~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/au/au.hh:12202:52: note: declared here
[2026-08-03 19:57:17.312] [ERROR] 12202 | "quantities")]] AU_DEVICE_VAR constexpr auto celsius = QuantityMaker{};
[2026-08-03 19:57:17.312] [ERROR] | ^~~~~~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_app_loop_generated.cpp:177:68: warning: 'au::celsius' is deprecated: celsius() is ambiguous. Use celsius_pt() for points, or celsius_qty() for quantities [-Wdeprecated-declarations]
[2026-08-03 19:57:17.312] [ERROR] 177 | const rte::Dimensionless Value = state.Temps.T_Inv2.in(au::celsius);
[2026-08-03 19:57:17.312] [ERROR] | ^~~~~~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/au/au.hh:12202:52: note: declared here
[2026-08-03 19:57:17.312] [ERROR] 12202 | "quantities")]] AU_DEVICE_VAR constexpr auto celsius = QuantityMaker{};
[2026-08-03 19:57:17.312] [ERROR] | ^~~~~~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_app_loop_generated.cpp:184:68: warning: 'au::celsius' is deprecated: celsius() is ambiguous. Use celsius_pt() for points, or celsius_qty() for quantities [-Wdeprecated-declarations]
[2026-08-03 19:57:17.312] [ERROR] 184 | const rte::Dimensionless Value = state.Temps.T_Inv3.in(au::celsius);
[2026-08-03 19:57:17.312] [ERROR] | ^~~~~~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/au/au.hh:12202:52: note: declared here
[2026-08-03 19:57:17.312] [ERROR] 12202 | "quantities")]] AU_DEVICE_VAR constexpr auto celsius = QuantityMaker{};
[2026-08-03 19:57:17.312] [ERROR] | ^~~~~~~
[2026-08-03 19:57:17.312] [ERROR] [91/113] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir///Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc_ex.c.obj
[2026-08-03 19:57:17.312] [ERROR] [92/113] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir///Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr.c.obj
[2026-08-03 19:57:17.312] [ERROR] [93/113] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir///Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr_ex.c.obj
[2026-08-03 19:57:17.312] [ERROR] [94/113] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir///Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.c.obj
[2026-08-03 19:57:17.312] [ERROR] [95/113] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir///Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.c.obj
[2026-08-03 19:57:17.312] [ERROR] [96/113] Building CXX object CMakeFiles/STM32CubeMX.dir/generated/domain_tim_isr_generated.cpp.obj
[2026-08-03 19:57:17.312] [ERROR] FAILED: CMakeFiles/STM32CubeMX.dir/generated/domain_tim_isr_generated.cpp.obj
[2026-08-03 19:57:17.312] [ERROR] /opt/st/stm32cubeclt_1.21.0/GNU-tools-for-STM32/bin/arm-none-eabi-g++ -DHSE_VALUE=8000000U -DSTM32H723xx -DUSE_HAL_DRIVER -DUSE_PWR_LDO_SUPPLY -I/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated -I/home/tliao/Desktop/RTE/Lib/InverterProtocol/include -I/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/Inc/Inverter -I/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/Inc/Inverter/Control -I/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/Inc/Inverter/Control/Math -I/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/Inc/Inverter/Calibration -I/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/Inc/Inverter/Calibration/Common -I/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/Inc/Inverter/Command -I/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/Inc/I
[2026-08-03 19:57:17.312] [ERROR] nverter/Drivers/GateDriver -I/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/Inc/Inverter/Drivers/CAN -I/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/Inc/Inverter/Drivers/UART -I/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/Inc/Inverter/Drivers/Storage -I/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/Inc/Inverter/Drivers/Logging -I/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/Inc/Inverter/Drivers/PWM -I/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/Inc/Inverter/Drivers/Sensors -I/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/cmake/stm32cubemx/../../Inc -I/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/cmake/stm32cubemx/../../Drivers/STM32H7xx_HAL_Driver/Inc -I/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmw
[2026-08-03 19:57:17.312] [ERROR] are-src/cmake/stm32cubemx/../../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -I/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/cmake/stm32cubemx/../../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I/home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/cmake/stm32cubemx/../../Drivers/CMSIS/Include -mcpu=cortex-m7 -mfpu=fpv5-d16 -mfloat-abi=hard -Wall -fdata-sections -ffunction-sections -fstack-usage -mcpu=cortex-m7 -mfpu=fpv5-d16 -mfloat-abi=hard -Wall -fdata-sections -ffunction-sections -fstack-usage -fno-rtti -fno-exceptions -fno-threadsafe-statics -Os -g0 -std=gnu++17 -MD -MT CMakeFiles/STM32CubeMX.dir/generated/domain_tim_isr_generated.cpp.obj -MF CMakeFiles/STM32CubeMX.dir/generated/domain_tim_isr_generated.cpp.obj.d -o CMakeFiles/STM32CubeMX.dir/generated/domain_tim_isr_generated.cpp.obj -c /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp: In function 'void app::TimIsrStep(TimIsrState&)':
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp:270:29: warning: unused variable 'DefaultValue' [-Wunused-variable]
[2026-08-03 19:57:17.312] [ERROR] 270 | rte::Dimensionless& DefaultValue = state.CfgEncSign.DefaultValue;
[2026-08-03 19:57:17.312] [ERROR] | ^~~~~~~~~~~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp:271:22: warning: unused variable 'Key' [-Wunused-variable]
[2026-08-03 19:57:17.312] [ERROR] 271 | const char*& Key = state.CfgEncSign.Key;
[2026-08-03 19:57:17.312] [ERROR] | ^~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp:279:29: warning: unused variable 'DefaultValue' [-Wunused-variable]
[2026-08-03 19:57:17.312] [ERROR] 279 | rte::Dimensionless& DefaultValue = state.CfgEncOffset.DefaultValue;
[2026-08-03 19:57:17.312] [ERROR] | ^~~~~~~~~~~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp:280:22: warning: unused variable 'Key' [-Wunused-variable]
[2026-08-03 19:57:17.312] [ERROR] 280 | const char*& Key = state.CfgEncOffset.Key;
[2026-08-03 19:57:17.312] [ERROR] | ^~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp:288:29: warning: unused variable 'DefaultValue' [-Wunused-variable]
[2026-08-03 19:57:17.312] [ERROR] 288 | rte::Dimensionless& DefaultValue = state.CfgPoles.DefaultValue;
[2026-08-03 19:57:17.312] [ERROR] | ^~~~~~~~~~~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp:289:22: warning: unused variable 'Key' [-Wunused-variable]
[2026-08-03 19:57:17.312] [ERROR] 289 | const char*& Key = state.CfgPoles.Key;
[2026-08-03 19:57:17.312] [ERROR] | ^~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp:297:29: warning: unused variable 'DefaultValue' [-Wunused-variable]
[2026-08-03 19:57:17.312] [ERROR] 297 | rte::Dimensionless& DefaultValue = state.CfgRs.DefaultValue;
[2026-08-03 19:57:17.312] [ERROR] | ^~~~~~~~~~~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp:298:22: warning: unused variable 'Key' [-Wunused-variable]
[2026-08-03 19:57:17.312] [ERROR] 298 | const char*& Key = state.CfgRs.Key;
[2026-08-03 19:57:17.312] [ERROR] | ^~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp:306:29: warning: unused variable 'DefaultValue' [-Wunused-variable]
[2026-08-03 19:57:17.312] [ERROR] 306 | rte::Dimensionless& DefaultValue = state.CfgLd.DefaultValue;
[2026-08-03 19:57:17.312] [ERROR] | ^~~~~~~~~~~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp:307:22: warning: unused variable 'Key' [-Wunused-variable]
[2026-08-03 19:57:17.312] [ERROR] 307 | const char*& Key = state.CfgLd.Key;
[2026-08-03 19:57:17.312] [ERROR] | ^~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp:315:29: warning: unused variable 'DefaultValue' [-Wunused-variable]
[2026-08-03 19:57:17.312] [ERROR] 315 | rte::Dimensionless& DefaultValue = state.CfgLq.DefaultValue;
[2026-08-03 19:57:17.312] [ERROR] | ^~~~~~~~~~~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp:316:22: warning: unused variable 'Key' [-Wunused-variable]
[2026-08-03 19:57:17.312] [ERROR] 316 | const char*& Key = state.CfgLq.Key;
[2026-08-03 19:57:17.312] [ERROR] | ^~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp:324:29: warning: unused variable 'DefaultValue' [-Wunused-variable]
[2026-08-03 19:57:17.312] [ERROR] 324 | rte::Dimensionless& DefaultValue = state.CfgPsi.DefaultValue;
[2026-08-03 19:57:17.312] [ERROR] | ^~~~~~~~~~~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp:325:22: warning: unused variable 'Key' [-Wunused-variable]
[2026-08-03 19:57:17.312] [ERROR] 325 | const char*& Key = state.CfgPsi.Key;
[2026-08-03 19:57:17.312] [ERROR] | ^~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp:353:29: warning: unused variable 'DefaultValue' [-Wunused-variable]
[2026-08-03 19:57:17.312] [ERROR] 353 | rte::Dimensionless& DefaultValue = state.CfgEnable.DefaultValue;
[2026-08-03 19:57:17.312] [ERROR] | ^~~~~~~~~~~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp:354:22: warning: unused variable 'Key' [-Wunused-variable]
[2026-08-03 19:57:17.312] [ERROR] 354 | const char*& Key = state.CfgEnable.Key;
[2026-08-03 19:57:17.312] [ERROR] | ^~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp:372:29: warning: unused variable 'DefaultValue' [-Wunused-variable]
[2026-08-03 19:57:17.312] [ERROR] 372 | rte::Dimensionless& DefaultValue = state.CfgIqSlew.DefaultValue;
[2026-08-03 19:57:17.312] [ERROR] | ^~~~~~~~~~~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp:373:22: warning: unused variable 'Key' [-Wunused-variable]
[2026-08-03 19:57:17.312] [ERROR] 373 | const char*& Key = state.CfgIqSlew.Key;
[2026-08-03 19:57:17.312] [ERROR] | ^~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp:568:13: error: 'Iq' was not declared in this scope; did you mean 'Lq'?
[2026-08-03 19:57:17.312] [ERROR] 568 | * - |Id*/Iq*| clamped to I_Max
[2026-08-03 19:57:17.312] [ERROR] | ^~
[2026-08-03 19:57:17.312] [ERROR] | Lq
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp:568:16: error: expected primary-expression before '|' token
[2026-08-03 19:57:17.312] [ERROR] 568 | * - |Id*/Iq*| clamped to I_Max
[2026-08-03 19:57:17.312] [ERROR] | ^
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp:568:18: error: 'clamped' was not declared in this scope
[2026-08-03 19:57:17.312] [ERROR] 568 | * - |Id*/Iq*| clamped to I_Max
[2026-08-03 19:57:17.312] [ERROR] | ^~~~~~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp:639:5: error: 'hy_u_alpha_prev' was not declared in this scope; did you mean 'hy_u_beta_prev'?
[2026-08-03 19:57:17.312] [ERROR] 639 | hy_u_alpha_prev = 0.0f;
[2026-08-03 19:57:17.312] [ERROR] | ^~~~~~~~~~~~~~~
[2026-08-03 19:57:17.312] [ERROR] | hy_u_beta_prev
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_tim_isr_generated.cpp:667:27: error: 'hy_u_alpha_prev' was not declared in this scope; did you mean 'hy_u_beta_prev'?
[2026-08-03 19:57:17.312] [ERROR] 667 | const float vd_prev = hy_u_alpha_prev * cos_t + hy_u_beta_prev * sin_t;
[2026-08-03 19:57:17.312] [ERROR] | ^~~~~~~~~~~~~~~
[2026-08-03 19:57:17.312] [ERROR] | hy_u_beta_prev
[2026-08-03 19:57:17.312] [ERROR] [97/113] Building CXX object CMakeFiles/STM32CubeMX.dir/generated/domain_adc_isr_generated.cpp.obj
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_adc_isr_generated.cpp: In function 'void app::AdcIsrStep(AdcIsrState&)':
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_adc_isr_generated.cpp:21:29: warning: unused variable 'Diudt' [-Wunused-variable]
[2026-08-03 19:57:17.312] [ERROR] 21 | rte::Dimensionless& Diudt = state.Currents.Diudt;
[2026-08-03 19:57:17.312] [ERROR] | ^~~~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_adc_isr_generated.cpp:22:29: warning: unused variable 'Divdt' [-Wunused-variable]
[2026-08-03 19:57:17.312] [ERROR] 22 | rte::Dimensionless& Divdt = state.Currents.Divdt;
[2026-08-03 19:57:17.312] [ERROR] | ^~~~~
[2026-08-03 19:57:17.312] [ERROR] /home/tliao/Desktop/RTE/build/nodegui/hybrid_adrc_mpcc_demo-295a724c/firmware-src/generated/domain_adc_isr_generated.cpp:23:29: warning: unused variable 'BurstTimeUs' [-Wunused-variable]
[2026-08-03 19:57:17.312] [ERROR] 23 | rte::Dimensionless& BurstTimeUs = state.Currents.BurstTimeUs;
[2026-08-03 19:57:17.312] [ERROR] | ^~~~~~~~~~~
[2026-08-03 19:57:17.312] [ERROR] [98/113] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir///Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma_ex.c.obj
[2026-08-03 19:57:17.312] [ERROR] [99/113] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir///Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c_ex.c.obj
[2026-08-03 19:57:17.312] [ERROR] [100/113] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir///Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c.obj
[2026-08-03 19:57:17.312] [ERROR] [101/113] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir///Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.c.obj
[2026-08-03 19:57:17.312] [ERROR] [102/113] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir///Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_mdma.c.obj
[2026-08-03 19:57:17.312] [ERROR] [103/113] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir///Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_exti.c.obj
[2026-08-03 19:57:17.312] [ERROR] [104/113] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir///Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.c.obj
[2026-08-03 19:57:17.312] [ERROR] [105/113] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir///Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_spi.c.obj
[2026-08-03 19:57:17.312] [ERROR] [106/113] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir///Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.c.obj
[2026-08-03 19:57:17.312] [ERROR] [107/113] Building C object cmake/stm32cubemx/CMakeFiles/STM32_Drivers.dir///Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.c.obj
[2026-08-03 19:57:17.312] [ERROR] ninja: build stopped: subcommand failed.
[2026-08-03 19:57:17.312] [ERROR] ---------------------

[finished] Operation failed (exit code 1).
`

saeedamooei and others added 12 commits August 3, 2026 20:01
The AdrcMpcc header comment used |Id*/Iq*| which terminated the C comment
early in generated domain_tim_isr code and broke the STM32 build.

Co-authored-by: Cursor <cursoragent@cursor.com>
Replace pure ADRC deadbeat with Mode-3 model feedforward plus mild clamped
ESO, add progressive current foldback, and lower bring-up defaults
(DbScale=0.20, I_Max=15, OmegaO=1200) after HybridADRCMPC-1 showed ~100 A
with almost no sustained rpm.

Co-authored-by: Cursor <cursoragent@cursor.com>
HybridADRCMPC-2 showed clean ~2 A currents but duty stuck near 50% and no
rotation: DbScale 0.20 with no integrator had almost no voltage authority on
low-L Gen6. Reuse the spinning Mode-3 structure (db~0.70, Ki=10, delay
compensation) and keep a light clamped ESO residual term.

Co-authored-by: Cursor <cursoragent@cursor.com>
The Mode-3 Ki integrators added 8 bytes of DTCM .bss and broke the Gen6
link. Keep AdrcMpcc persistent state in .dma_buffers (RAM_D1) like other
large ISR-adjacent buffers.

Co-authored-by: Cursor <cursoragent@cursor.com>
.dma_buffers is not zeroed at boot; uninitialized Ki/ESO state produced the
HybridADRCMPC-3 300–500 A current spikes. Validate a magic and zero state
on first entry.

Co-authored-by: Cursor <cursoragent@cursor.com>
Unwrap angle in OmegaDeriv and inside the hybrid ω estimate, hard-clamp
overcurrent to zero volts, and drop unused FCS work from the SVPWM path.

Co-authored-by: Cursor <cursoragent@cursor.com>
@datacrystals

Copy link
Copy Markdown
Contributor

IMG_20260803_204443.jpg

Current wave form at 50vdc above.

@datacrystals

Copy link
Copy Markdown
Contributor

IMG_20260803_201225.jpg

Earlier current waveform, very nice

@datacrystals

Copy link
Copy Markdown
Contributor

Comparison for ladrc at same voltage

IMG_20260803_205052.jpg

datacrystals and others added 3 commits August 3, 2026 20:58
Interpret IqVar as rpm when SpdMode=1, correct ψ≈0.07, ease deadbeat/Iq near
the bemf ceiling, and apply mild field-weakening so Gen6 can hold a clean
mid-speed spin without the session 5/6 sync-loss blowups.

Co-authored-by: Cursor <cursoragent@cursor.com>
SpdMode defaults to 0 so hybrid bring-up matches foc_demo (Iq in A).
Speed-loop option remains available but is not the test path.

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants