OpenPilot com stm32f103vet6, FreeRTOS e USB HID
O Openpilot é um projeto para criação de UAVs.
O projeto faz uso de microcontroladores STM32.
O modelo mais básico usa um stm32f103cb com 20kb de ram e 128kb de flash, um sensor mpu6050 e mais uma memória spi de 8mb para logs de vôo.
O software é baseado no FreeRTOS que é um RTOS de código aberto que apenas 3 arquivos C provê threads, mutex, queues, e muito mais. Também possui um bootloader que faz isso da porta USB como dispositivo HID.
Em teoria qualquer stm32 com configuração maior ou igual ao stm32f103cb pode rodar o software do Openpilot e sair voando por ai.
Comecei um teste usando o stm32f103vet6 que tem 64kb de ram e 512kb de flash, um sensor mpu6050, e removendo a memória spi de 8mb do projeto inicial.
Segue os passos do experimento feito no Ubuntu 14.04:
# obter o código fonte
git clone https://github.com/openpilot/OpenPilot.git
cd OpenPilot
------------------------------------------------------------------------------
1) No ubuntu
Instalar o GNU ARM embedded que é mantido pela própria ARM.
(ARM employees are maintaining this project.)
https://launchpad.net/gcc-arm-embedded
Step1: Inside Ubuntu, open a terminal and input
"sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded"
Step2: Continue to input
"sudo apt-get update"
Step3: Continue to input to install toolchain
"sudo apt-get install gcc-arm-none-eabi"
2) No ArchLinux
# instala o toolchain para cross compilar com o GNU ARM embedded
make arm_sdk_install
no Archlinux é preciso habilitar o repositorio multilib e instalar o skype ou wine para instalar as lib32* que o U ARM Embedded depende.
# muda o path se necessário
export PATH=$PWD/tools/gcc-arm-none-eabi-4_8-2014q1/bin/:$PATH
------------------------------------------------------------------------------
Observações finais:
O Openpilot é muito bem estruturado.
Também é ótimo para quem quiser aprender a programar multi-linguagens (C, C++, Java).
A Control Ground Station (GCS) em Qt5 é muito completa e suporta plugins para estender ainda mais.
Também conta com Control Ground Station (GCS) para Android, então dá para pilot usando o telefone ou tablet pelo WiFi.
O firmware para placas STM32F1 (legado) e STM32F4 (atual),
contam com ajuda do FreeRTOS (que é um sistema operacional de real - RTOS - em apenas 3 arquivos),
também faz uso das placas USB configuradas como dispositivos HID,
possuem um bootloader com suporte USB.
O controle de vôo implementa um filtro estendido de Kalman (EKF) rodando a 500Hz é uma das melhores, senão a melhor solução conhecida.
O projeto faz uso de microcontroladores STM32.
O modelo mais básico usa um stm32f103cb com 20kb de ram e 128kb de flash, um sensor mpu6050 e mais uma memória spi de 8mb para logs de vôo.
O software é baseado no FreeRTOS que é um RTOS de código aberto que apenas 3 arquivos C provê threads, mutex, queues, e muito mais. Também possui um bootloader que faz isso da porta USB como dispositivo HID.
Em teoria qualquer stm32 com configuração maior ou igual ao stm32f103cb pode rodar o software do Openpilot e sair voando por ai.
Comecei um teste usando o stm32f103vet6 que tem 64kb de ram e 512kb de flash, um sensor mpu6050, e removendo a memória spi de 8mb do projeto inicial.
Segue os passos do experimento feito no Ubuntu 14.04:
# obter o código fonte
git clone https://github.com/openpilot/OpenPilot.git
cd OpenPilot
------------------------------------------------------------------------------
Instalar o GNU ARM embedded que é mantido pela própria ARM.
(ARM employees are maintaining this project.)
https://launchpad.net/gcc-arm-embedded
Step1: Inside Ubuntu, open a terminal and input
"sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded"
Step2: Continue to input
"sudo apt-get update"
Step3: Continue to input to install toolchain
"sudo apt-get install gcc-arm-none-eabi"
2) No ArchLinux
# instala o toolchain para cross compilar com o GNU ARM embedded
make arm_sdk_install
no Archlinux é preciso habilitar o repositorio multilib e instalar o skype ou wine para instalar as lib32* que o U ARM Embedded depende.
export PATH=$PWD/tools/gcc-arm-none-eabi-4_8-2014q1/bin/:$PATH
------------------------------------------------------------------------------
#limpar tudo
21:16:11 murix@localhost:~/workspace/OpenPilot$make all_clean
CLEAN build
# gerar o firmware completo (bootloader+app)
Making bootloader for CopterControl, board revision 0x02
Use BOARD_REVISION=1 for CC, BOARD_REVISION=2 for CC3D (default)
AS flight/pios/stm32f10x/startup_stm32f10x_MD_CC.S
CC flight/pios/stm32f10x/libraries/CMSIS/Core/CM3/system_stm32f10x.c
CC flight/pios/stm32f10x/pios_adc.c
CC flight/pios/stm32f10x/pios_bkp.c
CC flight/pios/stm32f10x/pios_bl_helper.c
CC flight/pios/stm32f10x/pios_debug.c
CC flight/pios/stm32f10x/pios_delay.c
CC flight/pios/stm32f10x/pios_dsm.c
CC flight/pios/stm32f10x/pios_eeprom.c
CC flight/pios/stm32f10x/pios_exti.c
CC flight/pios/stm32f10x/pios_flash_internal.c
CC flight/pios/stm32f10x/pios_gpio.c
CC flight/pios/stm32f10x/pios_i2c.c
CC flight/pios/stm32f10x/pios_irq.c
CC flight/pios/stm32f10x/pios_ppm.c
CC flight/pios/stm32f10x/pios_ppm_out.c
CC flight/pios/stm32f10x/pios_pwm.c
CC flight/pios/stm32f10x/pios_rtc.c
CC flight/pios/stm32f10x/pios_servo.c
CC flight/pios/stm32f10x/pios_spi.c
CC flight/pios/stm32f10x/pios_sys.c
CC flight/pios/stm32f10x/pios_tim.c
CC flight/pios/stm32f10x/pios_usart.c
CC flight/pios/stm32f10x/pios_usb.c
CC flight/pios/stm32f10x/pios_usb_cdc.c
CC flight/pios/stm32f10x/pios_usb_hid.c
CC flight/pios/stm32f10x/pios_usb_hid_istr.c
CC flight/pios/stm32f10x/pios_usb_hid_pwr.c
CC flight/pios/stm32f10x/pios_usb_rctx.c
CC flight/pios/stm32f10x/pios_usbhook.c
CC flight/pios/stm32f10x/pios_wdg.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/misc.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c
CC flight/pios/stm32f10x/libraries/STM32_USB-FS-Device_Driver/src/usb_core.c
CC flight/pios/stm32f10x/libraries/STM32_USB-FS-Device_Driver/src/usb_init.c
CC flight/pios/stm32f10x/libraries/STM32_USB-FS-Device_Driver/src/usb_int.c
CC flight/pios/stm32f10x/libraries/STM32_USB-FS-Device_Driver/src/usb_mem.c
CC flight/pios/stm32f10x/libraries/STM32_USB-FS-Device_Driver/src/usb_regs.c
CC flight/pios/stm32f10x/libraries/STM32_USB-FS-Device_Driver/src/usb_sil.c
CC flight/targets/boards/coptercontrol/pios_usb_board_data.c
CC flight/targets/boards/coptercontrol/bootloader/main.c
CC flight/targets/boards/coptercontrol/bootloader/pios_board.c
CC flight/pios/common/pios_board_info.c
CC flight/pios/common/pios_com_msg.c
CC flight/pios/common/pios_iap.c
CC flight/pios/common/pios_usb_desc_hid_only.c
CC flight/pios/common/pios_usb_util.c
CC flight/pios/common/pios_led.c
CC flight/libraries/op_dfu.c
CC flight/libraries/printf-stdarg.c
LD build/bl_coptercontrol/bl_coptercontrol.elf
BIN/HEX build/bl_coptercontrol/bl_coptercontrol.bin
compiling ../../ground/uavobjgenerator/main.cpp
compiling ../../ground/uavobjgenerator/uavobjectparser.cpp
compiling ../../ground/uavobjgenerator/generators/generator_io.cpp
compiling ../../ground/uavobjgenerator/generators/java/uavobjectgeneratorjava.cpp
compiling ../../ground/uavobjgenerator/generators/flight/uavobjectgeneratorflight.cpp
compiling ../../ground/uavobjgenerator/generators/gcs/uavobjectgeneratorgcs.cpp
compiling ../../ground/uavobjgenerator/generators/matlab/uavobjectgeneratormatlab.cpp
compiling ../../ground/uavobjgenerator/generators/python/uavobjectgeneratorpython.cpp
compiling ../../ground/uavobjgenerator/generators/wireshark/uavobjectgeneratorwireshark.cpp
compiling ../../ground/uavobjgenerator/generators/generator_common.cpp
linking uavobjgenerator
- OpenPilot UAVObject Generator -
Done: processed 101 XML files and generated 101 objects with no ID collisions. Total size of the data fields is 3923 bytes.
generating flight code
AS flight/pios/stm32f10x/startup_stm32f10x_MD_CC.S
CC flight/libraries/notification.c
CC flight/pios/stm32f10x/libraries/CMSIS/Core/CM3/system_stm32f10x.c
CC flight/targets/boards/coptercontrol/pios_usb_board_data.c
CC flight/modules/System/systemmod.c
CC flight/targets/boards/coptercontrol/firmware/coptercontrol.c
CC flight/targets/boards/coptercontrol/firmware/pios_board.c
CC flight/libraries/alarms.c
CC flight/libraries/instrumentation.c
CC flight/uavtalk/uavtalk.c
CC flight/uavobjects/uavobjectmanager.c
CC flight/uavobjects/eventdispatcher.c
CC build/uavobject-synthetics/flight/accessorydesired.c
CC build/uavobject-synthetics/flight/objectpersistence.c
CC build/uavobject-synthetics/flight/gcstelemetrystats.c
CC build/uavobject-synthetics/flight/flighttelemetrystats.c
CC build/uavobject-synthetics/flight/faultsettings.c
CC build/uavobject-synthetics/flight/flightstatus.c
CC build/uavobject-synthetics/flight/systemstats.c
CC build/uavobject-synthetics/flight/systemalarms.c
CC build/uavobject-synthetics/flight/systemsettings.c
CC build/uavobject-synthetics/flight/stabilizationdesired.c
CC build/uavobject-synthetics/flight/stabilizationsettings.c
CC build/uavobject-synthetics/flight/stabilizationsettingsbank1.c
CC build/uavobject-synthetics/flight/stabilizationsettingsbank2.c
CC build/uavobject-synthetics/flight/stabilizationsettingsbank3.c
CC build/uavobject-synthetics/flight/stabilizationstatus.c
CC build/uavobject-synthetics/flight/stabilizationbank.c
CC build/uavobject-synthetics/flight/actuatorcommand.c
CC build/uavobject-synthetics/flight/actuatordesired.c
CC build/uavobject-synthetics/flight/actuatorsettings.c
CC build/uavobject-synthetics/flight/accelstate.c
CC build/uavobject-synthetics/flight/accelgyrosettings.c
CC build/uavobject-synthetics/flight/gyrostate.c
CC build/uavobject-synthetics/flight/attitudestate.c
CC build/uavobject-synthetics/flight/manualcontrolcommand.c
CC build/uavobject-synthetics/flight/i2cstats.c
CC build/uavobject-synthetics/flight/watchdogstatus.c
CC build/uavobject-synthetics/flight/manualcontrolsettings.c
CC build/uavobject-synthetics/flight/flightmodesettings.c
CC build/uavobject-synthetics/flight/mixersettings.c
CC build/uavobject-synthetics/flight/firmwareiapobj.c
CC build/uavobject-synthetics/flight/attitudesettings.c
CC build/uavobject-synthetics/flight/camerastabsettings.c
CC build/uavobject-synthetics/flight/cameradesired.c
CC build/uavobject-synthetics/flight/gpspositionsensor.c
CC build/uavobject-synthetics/flight/gpsvelocitysensor.c
CC build/uavobject-synthetics/flight/gpssettings.c
CC build/uavobject-synthetics/flight/hwsettings.c
CC build/uavobject-synthetics/flight/gcsreceiver.c
CC build/uavobject-synthetics/flight/receiveractivity.c
CC build/uavobject-synthetics/flight/relaytuningsettings.c
CC build/uavobject-synthetics/flight/relaytuning.c
CC build/uavobject-synthetics/flight/taskinfo.c
CC build/uavobject-synthetics/flight/callbackinfo.c
CC build/uavobject-synthetics/flight/mixerstatus.c
CC build/uavobject-synthetics/flight/ratedesired.c
CC build/uavobject-synthetics/flight/barosensor.c
CC build/uavobject-synthetics/flight/txpidsettings.c
CC build/uavobject-synthetics/flight/airspeedstate.c
CC build/uavobject-synthetics/flight/mpu6000settings.c
CC build/uavobject-synthetics/flight/perfcounter.c
CC flight/pios/common/libraries/FreeRTOS/Source/croutine.c
CC flight/pios/common/libraries/FreeRTOS/Source/event_groups.c
CC flight/pios/common/libraries/FreeRTOS/Source/list.c
CC flight/pios/common/libraries/FreeRTOS/Source/queue.c
CC flight/pios/common/libraries/FreeRTOS/Source/tasks.c
CC flight/pios/common/libraries/FreeRTOS/Source/timers.c
CC flight/pios/stm32f10x/pios_adc.c
CC flight/pios/stm32f10x/pios_bkp.c
CC flight/pios/stm32f10x/pios_bl_helper.c
CC flight/pios/stm32f10x/pios_debug.c
CC flight/pios/stm32f10x/pios_delay.c
CC flight/pios/stm32f10x/pios_dsm.c
CC flight/pios/stm32f10x/pios_eeprom.c
CC flight/pios/stm32f10x/pios_exti.c
CC flight/pios/stm32f10x/pios_flash_internal.c
CC flight/pios/stm32f10x/pios_gpio.c
CC flight/pios/stm32f10x/pios_i2c.c
CC flight/pios/stm32f10x/pios_irq.c
CC flight/pios/stm32f10x/pios_ppm.c
CC flight/pios/stm32f10x/pios_ppm_out.c
CC flight/pios/stm32f10x/pios_pwm.c
CC flight/pios/stm32f10x/pios_rtc.c
CC flight/pios/stm32f10x/pios_servo.c
CC flight/pios/stm32f10x/pios_spi.c
CC flight/pios/stm32f10x/pios_sys.c
CC flight/pios/stm32f10x/pios_tim.c
CC flight/pios/stm32f10x/pios_usart.c
CC flight/pios/stm32f10x/pios_usb.c
CC flight/pios/stm32f10x/pios_usb_cdc.c
CC flight/pios/stm32f10x/pios_usb_hid.c
CC flight/pios/stm32f10x/pios_usb_hid_istr.c
CC flight/pios/stm32f10x/pios_usb_hid_pwr.c
CC flight/pios/stm32f10x/pios_usb_rctx.c
CC flight/pios/stm32f10x/pios_usbhook.c
CC flight/pios/stm32f10x/pios_wdg.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/misc.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c
CC flight/pios/stm32f10x/libraries/STM32_USB-FS-Device_Driver/src/usb_core.c
CC flight/pios/stm32f10x/libraries/STM32_USB-FS-Device_Driver/src/usb_init.c
CC flight/pios/stm32f10x/libraries/STM32_USB-FS-Device_Driver/src/usb_int.c
CC flight/pios/stm32f10x/libraries/STM32_USB-FS-Device_Driver/src/usb_mem.c
CC flight/pios/stm32f10x/libraries/STM32_USB-FS-Device_Driver/src/usb_regs.c
CC flight/pios/stm32f10x/libraries/STM32_USB-FS-Device_Driver/src/usb_sil.c
CC flight/pios/common/libraries/FreeRTOS/Source/portable/GCC/ARM_CM3/port.c
CC flight/pios/common/libraries/FreeRTOS/Source/portable/MemMang/heap_1.c
CC flight/pios/common/pios_adxl345.c
CC flight/pios/common/pios_bma180.c
CC flight/pios/common/pios_bmp085.c
CC flight/pios/common/pios_etasv3.c
CC flight/pios/common/pios_gcsrcvr.c
CC flight/pios/common/pios_hcsr04.c
CC flight/pios/common/pios_hmc5843.c
CC flight/pios/common/pios_hmc5883.c
CC flight/pios/common/pios_i2c_esc.c
CC flight/pios/common/pios_l3gd20.c
CC flight/pios/common/pios_mpu6000.c
CC flight/pios/common/pios_mpxv.c
CC flight/pios/common/pios_ms4525do.c
CC flight/pios/common/pios_ms5611.c
CC flight/pios/common/pios_oplinkrcvr.c
CC flight/pios/common/pios_video.c
CC flight/pios/common/pios_wavplay.c
CC flight/pios/common/pios_iap.c
CC flight/pios/common/pios_com.c
CC flight/pios/common/pios_com_msg.c
CC flight/pios/common/pios_crc.c
CC flight/pios/common/pios_flashfs_logfs.c
CC flight/pios/common/pios_flash_jedec.c
CC flight/pios/common/pios_debuglog.c
CC flight/pios/common/pios_deltatime.c
CC flight/pios/common/pios_rcvr.c
CC flight/pios/common/pios_rfm22b.c
CC flight/pios/common/pios_rfm22b_com.c
CC flight/pios/common/pios_sbus.c
CC flight/pios/common/pios_sdcard.c
CC flight/pios/common/pios_led.c
CC flight/pios/common/pios_usb_desc_hid_cdc.c
CC flight/pios/common/pios_usb_desc_hid_only.c
CC flight/pios/common/pios_usb_util.c
CC flight/pios/common/pios_task_monitor.c
CC flight/pios/common/pios_callbackscheduler.c
CC flight/pios/common/pios_notify.c
CC flight/pios/common/pios_instrumentation.c
CC flight/pios/common/pios_mem.c
CC flight/libraries/fifo_buffer.c
CC flight/libraries/sanitycheck.c
CC flight/libraries/CoordinateConversions.c
CC flight/libraries/math/sin_lookup.c
CC flight/libraries/math/pid.c
CC flight/libraries/math/mathmisc.c
CC flight/libraries/printf-stdarg.c
CC flight/modules/Attitude/attitude.c
CC flight/modules/Stabilization/altitudeloop.c
CC flight/modules/Stabilization/cruisecontrol.c
CC flight/modules/Stabilization/innerloop.c
CC flight/modules/Stabilization/outerloop.c
CC flight/modules/Stabilization/relay_tuning.c
CC flight/modules/Stabilization/stabilization.c
CC flight/modules/Stabilization/virtualflybar.c
CC flight/modules/Actuator/actuator.c
CC flight/modules/Receiver/receiver.c
CC flight/modules/ManualControl/armhandler.c
CC flight/modules/ManualControl/manualcontrol.c
CC flight/modules/ManualControl/manualhandler.c
CC flight/modules/ManualControl/pathfollowerhandler.c
CC flight/modules/ManualControl/pathplannerhandler.c
CC flight/modules/ManualControl/stabilizedhandler.c
CC flight/modules/ManualControl/takeofflocationhandler.c
CC flight/modules/FirmwareIAP/firmwareiap.c
CC flight/modules/Telemetry/telemetry.c
CC flight/modules/CameraStab/camerastab.c
CC flight/modules/ComUsbBridge/ComUsbBridge.c
CC flight/modules/GPS/GPS.c
CC flight/modules/GPS/NMEA.c
CC flight/modules/GPS/UBX.c
CC flight/modules/TxPID/txpid.c
CC flight/modules/Osd/osdoutput/osdoutput.c
LD build/fw_coptercontrol/fw_coptercontrol.elf
BIN/HEX build/fw_coptercontrol/fw_coptercontrol.bin
FWINFO build/fw_coptercontrol/fw_coptercontrol.bin.firmware_info.c
CC build/fw_coptercontrol/fw_coptercontrol.bin.firmware_info.c
BIN/HEX build/fw_coptercontrol/fw_coptercontrol.bin.firmware_info.bin
OPFW build/fw_coptercontrol/fw_coptercontrol.opfw
FLASH_IMG /home/murix/workspace/OpenPilot/build/ef_coptercontrol/ef_coptercontrol.bin
21:18:16 murix@localhost:~/workspace/OpenPilot$
#gravar por SWD
st-flash write build/ef_coptercontrol/ef_coptercontrol.bin 0x08000000
Testando também o fork TauLabs (no Ubuntu 14.04 e no Archlinux)
https://github.com/TauLabs/TauLabs
# compila tudo
make package -j4
# gera imagem inteira da flash (bootloader+dados+app)
make ef_coptercontrol
# gravar a imagem no stm32f103vet6 com o stlink via SWD (pinos PA13 e PA14)
st-flash write build/ef_coptercontrol/ef_coptercontrol.bin 0x08000000
21:16:11 murix@localhost:~/workspace/OpenPilot$make all_clean
CLEAN build
# gerar o firmware completo (bootloader+app)
21:17:07 murix@localhost:~/workspace/OpenPilot$make ef_coptercontrol
Use BOARD_REVISION=1 for CC, BOARD_REVISION=2 for CC3D (default)
AS flight/pios/stm32f10x/startup_stm32f10x_MD_CC.S
CC flight/pios/stm32f10x/libraries/CMSIS/Core/CM3/system_stm32f10x.c
CC flight/pios/stm32f10x/pios_adc.c
CC flight/pios/stm32f10x/pios_bkp.c
CC flight/pios/stm32f10x/pios_bl_helper.c
CC flight/pios/stm32f10x/pios_debug.c
CC flight/pios/stm32f10x/pios_delay.c
CC flight/pios/stm32f10x/pios_dsm.c
CC flight/pios/stm32f10x/pios_eeprom.c
CC flight/pios/stm32f10x/pios_exti.c
CC flight/pios/stm32f10x/pios_flash_internal.c
CC flight/pios/stm32f10x/pios_gpio.c
CC flight/pios/stm32f10x/pios_i2c.c
CC flight/pios/stm32f10x/pios_irq.c
CC flight/pios/stm32f10x/pios_ppm.c
CC flight/pios/stm32f10x/pios_ppm_out.c
CC flight/pios/stm32f10x/pios_pwm.c
CC flight/pios/stm32f10x/pios_rtc.c
CC flight/pios/stm32f10x/pios_servo.c
CC flight/pios/stm32f10x/pios_spi.c
CC flight/pios/stm32f10x/pios_sys.c
CC flight/pios/stm32f10x/pios_tim.c
CC flight/pios/stm32f10x/pios_usart.c
CC flight/pios/stm32f10x/pios_usb.c
CC flight/pios/stm32f10x/pios_usb_cdc.c
CC flight/pios/stm32f10x/pios_usb_hid.c
CC flight/pios/stm32f10x/pios_usb_hid_istr.c
CC flight/pios/stm32f10x/pios_usb_hid_pwr.c
CC flight/pios/stm32f10x/pios_usb_rctx.c
CC flight/pios/stm32f10x/pios_usbhook.c
CC flight/pios/stm32f10x/pios_wdg.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/misc.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c
CC flight/pios/stm32f10x/libraries/STM32_USB-FS-Device_Driver/src/usb_core.c
CC flight/pios/stm32f10x/libraries/STM32_USB-FS-Device_Driver/src/usb_init.c
CC flight/pios/stm32f10x/libraries/STM32_USB-FS-Device_Driver/src/usb_int.c
CC flight/pios/stm32f10x/libraries/STM32_USB-FS-Device_Driver/src/usb_mem.c
CC flight/pios/stm32f10x/libraries/STM32_USB-FS-Device_Driver/src/usb_regs.c
CC flight/pios/stm32f10x/libraries/STM32_USB-FS-Device_Driver/src/usb_sil.c
CC flight/targets/boards/coptercontrol/pios_usb_board_data.c
CC flight/targets/boards/coptercontrol/bootloader/main.c
CC flight/targets/boards/coptercontrol/bootloader/pios_board.c
CC flight/pios/common/pios_board_info.c
CC flight/pios/common/pios_com_msg.c
CC flight/pios/common/pios_iap.c
CC flight/pios/common/pios_usb_desc_hid_only.c
CC flight/pios/common/pios_usb_util.c
CC flight/pios/common/pios_led.c
CC flight/libraries/op_dfu.c
CC flight/libraries/printf-stdarg.c
LD build/bl_coptercontrol/bl_coptercontrol.elf
BIN/HEX build/bl_coptercontrol/bl_coptercontrol.bin
compiling ../../ground/uavobjgenerator/main.cpp
compiling ../../ground/uavobjgenerator/uavobjectparser.cpp
compiling ../../ground/uavobjgenerator/generators/generator_io.cpp
compiling ../../ground/uavobjgenerator/generators/java/uavobjectgeneratorjava.cpp
compiling ../../ground/uavobjgenerator/generators/flight/uavobjectgeneratorflight.cpp
compiling ../../ground/uavobjgenerator/generators/gcs/uavobjectgeneratorgcs.cpp
compiling ../../ground/uavobjgenerator/generators/matlab/uavobjectgeneratormatlab.cpp
compiling ../../ground/uavobjgenerator/generators/python/uavobjectgeneratorpython.cpp
compiling ../../ground/uavobjgenerator/generators/wireshark/uavobjectgeneratorwireshark.cpp
compiling ../../ground/uavobjgenerator/generators/generator_common.cpp
linking uavobjgenerator
- OpenPilot UAVObject Generator -
Done: processed 101 XML files and generated 101 objects with no ID collisions. Total size of the data fields is 3923 bytes.
generating flight code
AS flight/pios/stm32f10x/startup_stm32f10x_MD_CC.S
CC flight/libraries/notification.c
CC flight/pios/stm32f10x/libraries/CMSIS/Core/CM3/system_stm32f10x.c
CC flight/targets/boards/coptercontrol/pios_usb_board_data.c
CC flight/modules/System/systemmod.c
CC flight/targets/boards/coptercontrol/firmware/coptercontrol.c
CC flight/targets/boards/coptercontrol/firmware/pios_board.c
CC flight/libraries/alarms.c
CC flight/libraries/instrumentation.c
CC flight/uavtalk/uavtalk.c
CC flight/uavobjects/uavobjectmanager.c
CC flight/uavobjects/eventdispatcher.c
CC build/uavobject-synthetics/flight/accessorydesired.c
CC build/uavobject-synthetics/flight/objectpersistence.c
CC build/uavobject-synthetics/flight/gcstelemetrystats.c
CC build/uavobject-synthetics/flight/flighttelemetrystats.c
CC build/uavobject-synthetics/flight/faultsettings.c
CC build/uavobject-synthetics/flight/flightstatus.c
CC build/uavobject-synthetics/flight/systemstats.c
CC build/uavobject-synthetics/flight/systemalarms.c
CC build/uavobject-synthetics/flight/systemsettings.c
CC build/uavobject-synthetics/flight/stabilizationdesired.c
CC build/uavobject-synthetics/flight/stabilizationsettings.c
CC build/uavobject-synthetics/flight/stabilizationsettingsbank1.c
CC build/uavobject-synthetics/flight/stabilizationsettingsbank2.c
CC build/uavobject-synthetics/flight/stabilizationsettingsbank3.c
CC build/uavobject-synthetics/flight/stabilizationstatus.c
CC build/uavobject-synthetics/flight/stabilizationbank.c
CC build/uavobject-synthetics/flight/actuatorcommand.c
CC build/uavobject-synthetics/flight/actuatordesired.c
CC build/uavobject-synthetics/flight/actuatorsettings.c
CC build/uavobject-synthetics/flight/accelstate.c
CC build/uavobject-synthetics/flight/accelgyrosettings.c
CC build/uavobject-synthetics/flight/gyrostate.c
CC build/uavobject-synthetics/flight/attitudestate.c
CC build/uavobject-synthetics/flight/manualcontrolcommand.c
CC build/uavobject-synthetics/flight/i2cstats.c
CC build/uavobject-synthetics/flight/watchdogstatus.c
CC build/uavobject-synthetics/flight/manualcontrolsettings.c
CC build/uavobject-synthetics/flight/flightmodesettings.c
CC build/uavobject-synthetics/flight/mixersettings.c
CC build/uavobject-synthetics/flight/firmwareiapobj.c
CC build/uavobject-synthetics/flight/attitudesettings.c
CC build/uavobject-synthetics/flight/camerastabsettings.c
CC build/uavobject-synthetics/flight/cameradesired.c
CC build/uavobject-synthetics/flight/gpspositionsensor.c
CC build/uavobject-synthetics/flight/gpsvelocitysensor.c
CC build/uavobject-synthetics/flight/gpssettings.c
CC build/uavobject-synthetics/flight/hwsettings.c
CC build/uavobject-synthetics/flight/gcsreceiver.c
CC build/uavobject-synthetics/flight/receiveractivity.c
CC build/uavobject-synthetics/flight/relaytuningsettings.c
CC build/uavobject-synthetics/flight/relaytuning.c
CC build/uavobject-synthetics/flight/taskinfo.c
CC build/uavobject-synthetics/flight/callbackinfo.c
CC build/uavobject-synthetics/flight/mixerstatus.c
CC build/uavobject-synthetics/flight/ratedesired.c
CC build/uavobject-synthetics/flight/barosensor.c
CC build/uavobject-synthetics/flight/txpidsettings.c
CC build/uavobject-synthetics/flight/airspeedstate.c
CC build/uavobject-synthetics/flight/mpu6000settings.c
CC build/uavobject-synthetics/flight/perfcounter.c
CC flight/pios/common/libraries/FreeRTOS/Source/croutine.c
CC flight/pios/common/libraries/FreeRTOS/Source/event_groups.c
CC flight/pios/common/libraries/FreeRTOS/Source/list.c
CC flight/pios/common/libraries/FreeRTOS/Source/queue.c
CC flight/pios/common/libraries/FreeRTOS/Source/tasks.c
CC flight/pios/common/libraries/FreeRTOS/Source/timers.c
CC flight/pios/stm32f10x/pios_adc.c
CC flight/pios/stm32f10x/pios_bkp.c
CC flight/pios/stm32f10x/pios_bl_helper.c
CC flight/pios/stm32f10x/pios_debug.c
CC flight/pios/stm32f10x/pios_delay.c
CC flight/pios/stm32f10x/pios_dsm.c
CC flight/pios/stm32f10x/pios_eeprom.c
CC flight/pios/stm32f10x/pios_exti.c
CC flight/pios/stm32f10x/pios_flash_internal.c
CC flight/pios/stm32f10x/pios_gpio.c
CC flight/pios/stm32f10x/pios_i2c.c
CC flight/pios/stm32f10x/pios_irq.c
CC flight/pios/stm32f10x/pios_ppm.c
CC flight/pios/stm32f10x/pios_ppm_out.c
CC flight/pios/stm32f10x/pios_pwm.c
CC flight/pios/stm32f10x/pios_rtc.c
CC flight/pios/stm32f10x/pios_servo.c
CC flight/pios/stm32f10x/pios_spi.c
CC flight/pios/stm32f10x/pios_sys.c
CC flight/pios/stm32f10x/pios_tim.c
CC flight/pios/stm32f10x/pios_usart.c
CC flight/pios/stm32f10x/pios_usb.c
CC flight/pios/stm32f10x/pios_usb_cdc.c
CC flight/pios/stm32f10x/pios_usb_hid.c
CC flight/pios/stm32f10x/pios_usb_hid_istr.c
CC flight/pios/stm32f10x/pios_usb_hid_pwr.c
CC flight/pios/stm32f10x/pios_usb_rctx.c
CC flight/pios/stm32f10x/pios_usbhook.c
CC flight/pios/stm32f10x/pios_wdg.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/misc.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c
CC flight/pios/stm32f10x/libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c
CC flight/pios/stm32f10x/libraries/STM32_USB-FS-Device_Driver/src/usb_core.c
CC flight/pios/stm32f10x/libraries/STM32_USB-FS-Device_Driver/src/usb_init.c
CC flight/pios/stm32f10x/libraries/STM32_USB-FS-Device_Driver/src/usb_int.c
CC flight/pios/stm32f10x/libraries/STM32_USB-FS-Device_Driver/src/usb_mem.c
CC flight/pios/stm32f10x/libraries/STM32_USB-FS-Device_Driver/src/usb_regs.c
CC flight/pios/stm32f10x/libraries/STM32_USB-FS-Device_Driver/src/usb_sil.c
CC flight/pios/common/libraries/FreeRTOS/Source/portable/GCC/ARM_CM3/port.c
CC flight/pios/common/libraries/FreeRTOS/Source/portable/MemMang/heap_1.c
CC flight/pios/common/pios_adxl345.c
CC flight/pios/common/pios_bma180.c
CC flight/pios/common/pios_bmp085.c
CC flight/pios/common/pios_etasv3.c
CC flight/pios/common/pios_gcsrcvr.c
CC flight/pios/common/pios_hcsr04.c
CC flight/pios/common/pios_hmc5843.c
CC flight/pios/common/pios_hmc5883.c
CC flight/pios/common/pios_i2c_esc.c
CC flight/pios/common/pios_l3gd20.c
CC flight/pios/common/pios_mpu6000.c
CC flight/pios/common/pios_mpxv.c
CC flight/pios/common/pios_ms4525do.c
CC flight/pios/common/pios_ms5611.c
CC flight/pios/common/pios_oplinkrcvr.c
CC flight/pios/common/pios_video.c
CC flight/pios/common/pios_wavplay.c
CC flight/pios/common/pios_iap.c
CC flight/pios/common/pios_com.c
CC flight/pios/common/pios_com_msg.c
CC flight/pios/common/pios_crc.c
CC flight/pios/common/pios_flashfs_logfs.c
CC flight/pios/common/pios_flash_jedec.c
CC flight/pios/common/pios_debuglog.c
CC flight/pios/common/pios_deltatime.c
CC flight/pios/common/pios_rcvr.c
CC flight/pios/common/pios_rfm22b.c
CC flight/pios/common/pios_rfm22b_com.c
CC flight/pios/common/pios_sbus.c
CC flight/pios/common/pios_sdcard.c
CC flight/pios/common/pios_led.c
CC flight/pios/common/pios_usb_desc_hid_cdc.c
CC flight/pios/common/pios_usb_desc_hid_only.c
CC flight/pios/common/pios_usb_util.c
CC flight/pios/common/pios_task_monitor.c
CC flight/pios/common/pios_callbackscheduler.c
CC flight/pios/common/pios_notify.c
CC flight/pios/common/pios_instrumentation.c
CC flight/pios/common/pios_mem.c
CC flight/libraries/fifo_buffer.c
CC flight/libraries/sanitycheck.c
CC flight/libraries/CoordinateConversions.c
CC flight/libraries/math/sin_lookup.c
CC flight/libraries/math/pid.c
CC flight/libraries/math/mathmisc.c
CC flight/libraries/printf-stdarg.c
CC flight/modules/Attitude/attitude.c
CC flight/modules/Stabilization/altitudeloop.c
CC flight/modules/Stabilization/cruisecontrol.c
CC flight/modules/Stabilization/innerloop.c
CC flight/modules/Stabilization/outerloop.c
CC flight/modules/Stabilization/relay_tuning.c
CC flight/modules/Stabilization/stabilization.c
CC flight/modules/Stabilization/virtualflybar.c
CC flight/modules/Actuator/actuator.c
CC flight/modules/Receiver/receiver.c
CC flight/modules/ManualControl/armhandler.c
CC flight/modules/ManualControl/manualcontrol.c
CC flight/modules/ManualControl/manualhandler.c
CC flight/modules/ManualControl/pathfollowerhandler.c
CC flight/modules/ManualControl/pathplannerhandler.c
CC flight/modules/ManualControl/stabilizedhandler.c
CC flight/modules/ManualControl/takeofflocationhandler.c
CC flight/modules/FirmwareIAP/firmwareiap.c
CC flight/modules/Telemetry/telemetry.c
CC flight/modules/CameraStab/camerastab.c
CC flight/modules/ComUsbBridge/ComUsbBridge.c
CC flight/modules/GPS/GPS.c
CC flight/modules/GPS/NMEA.c
CC flight/modules/GPS/UBX.c
CC flight/modules/TxPID/txpid.c
CC flight/modules/Osd/osdoutput/osdoutput.c
LD build/fw_coptercontrol/fw_coptercontrol.elf
BIN/HEX build/fw_coptercontrol/fw_coptercontrol.bin
FWINFO build/fw_coptercontrol/fw_coptercontrol.bin.firmware_info.c
CC build/fw_coptercontrol/fw_coptercontrol.bin.firmware_info.c
BIN/HEX build/fw_coptercontrol/fw_coptercontrol.bin.firmware_info.bin
OPFW build/fw_coptercontrol/fw_coptercontrol.opfw
FLASH_IMG /home/murix/workspace/OpenPilot/build/ef_coptercontrol/ef_coptercontrol.bin
21:18:16 murix@localhost:~/workspace/OpenPilot$
st-flash write build/ef_coptercontrol/ef_coptercontrol.bin 0x08000000
STM32F103VET6 com Openpilot detectado como USB HID |
Openpilot Ground Control station (GCS) bootloader reconhecido, problema com o firmware que está resetando |
Testando também o fork TauLabs (no Ubuntu 14.04 e no Archlinux)
https://github.com/TauLabs/TauLabs
# compila tudo
make package -j4
# gera imagem inteira da flash (bootloader+dados+app)
make ef_coptercontrol
# gravar a imagem no stm32f103vet6 com o stlink via SWD (pinos PA13 e PA14)
st-flash write build/ef_coptercontrol/ef_coptercontrol.bin 0x08000000
# executa a ground control station
./build/ground/gcs/bin/taulabsgcsObservações finais:
O Openpilot é muito bem estruturado.
Também é ótimo para quem quiser aprender a programar multi-linguagens (C, C++, Java).
A Control Ground Station (GCS) em Qt5 é muito completa e suporta plugins para estender ainda mais.
Também conta com Control Ground Station (GCS) para Android, então dá para pilot usando o telefone ou tablet pelo WiFi.
O firmware para placas STM32F1 (legado) e STM32F4 (atual),
contam com ajuda do FreeRTOS (que é um sistema operacional de real - RTOS - em apenas 3 arquivos),
também faz uso das placas USB configuradas como dispositivos HID,
possuem um bootloader com suporte USB.
O controle de vôo implementa um filtro estendido de Kalman (EKF) rodando a 500Hz é uma das melhores, senão a melhor solução conhecida.